diff --git a/.gitignore b/.gitignore index f47b63a..cad6e94 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,8 @@ hs_err_pid* /reverse/ /client/ /logs/ + +openvape.zip + +/dist/ +/injector/target/ diff --git a/build-injector.ps1 b/build-injector.ps1 new file mode 100644 index 0000000..9a9258d --- /dev/null +++ b/build-injector.ps1 @@ -0,0 +1,15 @@ +# Builds the Prestige payload jar (remapped for the production Fabric runtime), then the Rust injector and loader DLL, +# and collects PrestigeInjector.exe + prestige_native.dll in dist\. +$ErrorActionPreference = 'Stop' +Set-Location $PSScriptRoot +if (Test-Path 'C:\Program Files\Eclipse Adoptium\jdk-21.0.12.101-hotspot') { $env:JAVA_HOME = 'C:\Program Files\Eclipse Adoptium\jdk-21.0.12.101-hotspot' } +& .\gradlew.bat remapJar --console=plain +if ($LASTEXITCODE -ne 0) { throw 'gradle remapJar failed' } +# cargo reports progress on stderr, which PowerShell would treat as an error under 'Stop' +$ErrorActionPreference = 'Continue' +cargo build --release --manifest-path injector\Cargo.toml +if ($LASTEXITCODE -ne 0) { throw 'cargo build failed' } +$ErrorActionPreference = 'Stop' +New-Item -ItemType Directory -Force dist | Out-Null +Copy-Item injector\target\release\PrestigeInjector.exe, injector\target\release\prestige_native.dll dist\ -Force +Write-Host 'Done: dist\PrestigeInjector.exe + dist\prestige_native.dll' diff --git a/docs/CODE_MAP.md b/docs/CODE_MAP.md new file mode 100644 index 0000000..e920a24 --- /dev/null +++ b/docs/CODE_MAP.md @@ -0,0 +1,646 @@ +# Code map + +Every class of the client, grouped by package, with a one-line description. +Package paths are relative to `src/main/java/dev/zprestige/prestige/`. + +## `(root)` — Core API: module/setting model, event bus, module manager (names here are used by the UI bridge via reflection). + +- **BoolSetting** — Boolean (on/off) module setting. +- **Category** — ClickGUI category of a module (Combat, Misc, Movement, Visual, Mace, Spear, Menu). +- **ColorSetting** — Color (java.awt.Color) module setting. +- **EnumSetting** — Single-choice module setting whose value is one of a fixed list of string options. +- **EventBus** — Copy-on-write event bus: registers @Subscribe methods as MethodHandles and dispatches events by exact event class. +- **FloatSetting** — Float slider module setting with a min/max range. +- **Gamemode** — PvP game modes a module is tagged for (Crystal, Mace, Sword, Spear, UHC, Cart, Any); used by the UI gamemode filter. +- **IntSetting** — Integer slider module setting with a min/max range. +- **KeybindSetting** — Key/mouse-button bind setting (mouse buttons encoded as 9999 - button) with an optional hold/toggle mode. +- **ListenerEntry** — One registered event listener: the @Subscribe method, its owner object, the event type and a bound invoker handle. +- **MenuModule** — Pseudo-module holding the ClickGUI settings: menu key, description mode, rounded corners, accent colour. +- **Module** — Base class of every feature module: enabled/keybind core settings, metadata, toggling and event-bus (un)registration. +- **ModuleManager** — Holds the module list and menu module and runs onEnable/onDisable calls that were queued while no world was loaded. +- **MultiSetting** — Multi-select module setting: a list of string options each with its own on/off flag. +- **Native** — Empty stubs for the JNI functions of the removed native companion module (bound by @NativeId UUID): module registration, external menu toggling/query and opaque data calls. +- **RangeSetting** — Low/high range setting that can roll a random value inside the range (used for randomized delays). +- **Setting** — Base class of all module settings: name, value, description and a visibility predicate on the value. +- **SettingHolder** — Owns a list of settings and offers factory methods that create and register them (base of Module). +- **Subscribe** — Marks an event-handler method; EventBus registers @Subscribe methods by their single event parameter type. +- **TextSetting** — Free-text module setting with a placeholder hint. + +## `client` — Mod entrypoint and the client-wide singletons. + +- **Prestige** — Fabric mod entrypoint: creates the event bus, module manager and all client-wide singletons and hooks the HUD/world render callbacks. + +## `module/*` — The modules, one package per ClickGUI category. + +### `module/combat` + +- **AimAssist** — Frame-based aim assist that smoothly pulls the camera yaw/pitch toward the best player or end-crystal target inside the FOV/range, with reaction delay, jitter, smoothing and movement prediction. +- **AnchorExploder** — Combat module that charges the respawn anchor under the crosshair with glowstone and detonates it from a chosen hotbar slot (optionally only your own anchors, with swap-back, enemy damage-tick timing and silent aim), and flags while it is looking at an anchor so vanilla item use is suppressed. +- **AnchorMacro** — Combat macro that places a respawn anchor at the crosshair while Place Bind is held, charges anchors with glowstone and explodes them from a chosen hotbar slot, each step with None/Swap/Silent swapping, and flags while it is acting so other anchor modules and item use stand down. +- **AnchorPearlCatch** — Combat module that predicts where an enemy's thrown ender pearl will land, pre-places a respawn anchor (optionally behind a safe cover block) beside the landing spot, charges it with glowstone and detonates it as the thrower arrives. +- **AnchorPlacer** — Combat module that places a respawn anchor where you aim (or silently aims at the nearest placeable spot), charges empty anchors with glowstone and detonates charged ones while holding a totem, in One-Shot or Persistent fire mode, flagging for two ticks after each action. +- **AntiAction** — Cancels accidental actions that hurt a PvP fight: double-charging anchors, opening ender chests with combat items, misplacing glowstone, ground fireworks, and sword hits into a raised shield. +- **AntiBot** — Flags server-side bots for BotFilter by position-packet validation counts, UUID version, missing tab-list entries and sustained zero ping. +- **AntiWeb** — Escapes cobwebs by placing a water bucket on top of the web column, waiting for the webs to wash away and scooping the water back up, either crosshair-triggered (Legit) or via silent rotations (Blatant). +- **AutoAnchor** — Fully automatic anchor-PvP module: picks the nearest enemy, scores candidate anchor spots by predicted target and self damage (with an optional glowstone/obsidian blast cover), then runs a place -> safe-cover -> charge -> detonate state machine with randomized stage delays, optional silent rotations, swap-back and fading box renders. +- **AutoCart** — TNT-minecart module: places a rail and TNT minecart at the crosshair or at the predicted landing of your bow/crossbow shot (on bow shot, on the trigger bind, or overload-stacked several carts), optionally drops a safe block, then ignites the cart with a bow/crossbow shot or auto-hits placed carts, using silent arc-aim rotations. +- **AutoCrystal** — Crystal-PvP module that breaks the end crystal under the crosshair (or, with Head Bob, a reachable crystal on the last base by adjusting pitch) and places crystals on the obsidian/bedrock you look at, with randomized delays, damage-tick gating and an optional last break before disabling. +- **AutoDrain** — Crystal-PvP module that drains water/lava sources near an enemy with an empty bucket (or covers them with cobweb as a fallback), either on the crosshair block (Legit) or via silent-aim rotations, then swaps back. +- **AutoElytra** — Combat module that swaps an elytra into the chest slot (inventory clicks or hotbar use), jumps and starts gliding with optional firework boosts, then swaps the chestplate and rockets back; also fires a rocket when Space is pressed mid-glide. +- **AutoHitCrystal** — Hit-crystal macro: places obsidian at the crosshair, switches to and places an end crystal on it, then breaks it (single tap, double tap or infinite), optionally synced to the enemy's damage ticks and using silent pitch changes. +- **AutoObbyCrystal** — Fully automatic obsidian-crystal module: picks the closest enemy, scores nearby crystal bases by predicted target/self damage, momentum and yaw change, then runs a PLACE_OBSIDIAN -> PLACE_CRYSTAL -> BREAK_CRYSTAL sequence with (silent) rotations, hotbar swapping, mid-sequence abort checks and fading box rendering. +- **AutoSafeCart** — Detects TNT minecarts that would deal enough damage to you (optionally only your own or only enemy carts) and places cover blocks (logs/planks/cobblestone/obsidian) next to you or the cart, either silently aimed or only at the crosshair in Legit mode. +- **AutoShield** — Sword/UHC module that holds the use key to block with a shield while a close enemy's swing cooldown is ready or they move towards you, lets go for your own falling crits, and tracks the ~5s axe shield-disable lockout (optionally swapping to a sword). +- **AutoShieldBreaker** — Sword module that swaps to an axe (hotbar, or silently pulled from the inventory) and hits a shield-blocking player to disable the shield, either when you click (On Hit) or automatically with optional silent aim, then swaps back. +- **AutoTotem** — Re-totems after a pop: Crystal mode double-hands a hotbar totem and runs an inventory routine that moves totems into the offhand/hotbar (optionally hover-only or with humanized robot mouse paths, dynamic danger-scaled delay and anti-TotemGuard checks); SMP mode swaps a totem into the offhand at low health or on a mace dive and swaps it back afterwards. +- **Backtrack** — Delays all incoming packets by a random latency while the attacked player moves away, tracking the target's real server position and rendering an interpolated box where it actually is. +- **CartAura** — Aura that hits nearby TNT minecarts placed by others: acquires a cart within the target FOV, tracks it with silent (optionally jittered) rotations, swaps to a sword and attacks after randomized reaction/attack delays, then swaps back. +- **CartPearlCatch** — Combat module that predicts an enemy pearl's landing spot, places a rail and TNT minecart within blast range of it, and detonates the cart with a flaming crossbow shot (through flint-and-steel fire) or a bow shot timed to the pearl's arrival. +- **CobwebPlacer** — Places cobwebs on enemies: Manual mode webs the block you look at, Auto mode predicts where the closest enemy will stand or land, aims there with silent rotations and places a web, pulling it from the hotbar or inventory and switching back afterwards via a deferred switch-back task. +- **DoubleAnchor** — Module that, when you right-click a charged anchor while holding another anchor, instantly re-places a second anchor in the blast spot (by chance, optionally charging it with glowstone after a delay), plus a Macro Bind that runs the full place/charge/explode+double-place/charge/explode sequence with damage-tick waiting and swap-back. +- **GhostPlace** — Crystal-PvP helper that, while you right-click an enemy, raycasts past them and places the held block (cobweb by default) on the block behind instead of interacting with the entity. +- **HitFix** — Holds back swings/attacks on players that are still in hurt time or airborne and lands the queued hit through a silent rotation once the target is hittable again (gives up after one second). +- **HitFlick** — Cancels each attack, flicks the silent rotation sideways by a random angle for one tick, then snaps back onto the target and lands the hit to obscure aim patterns. +- **Hitboxes** — Expands entity hitboxes, either directly through the bounding-box hook or (Grim/Vulcan mode) by turning air swings that would hit the expanded box into silent-rotation hits, and renders the boxes. +- **InstantCrossbow** — One-shot module that swaps to a crossbow (hotbar, or pulled from the inventory), holds use until it is charged, and restores the previous slot and disables itself once the crossbow leaves the hand. +- **InstantShield** — Keybind-driven module that swaps to a shield (hotbar, or pulled from the inventory) and holds block, swapping back on the next press (or on key release in hold mode). +- **KeepSprint** — After a sprint hit, releases the forward key and re-presses it after a random tick delay so the server-side sprint state is restored (stays out of the way while WTap is tapping). +- **KillAura** — Silent-rotation kill aura that locks the closest valid entity inside the target FOV, aims at the nearest enabled anatomy point of its hitbox and attacks when cooldown, reach and line of sight allow (optional axe swap against shields, miss chance and aim-dot rendering). +- **NoMissDelay** — Keeps the attack cooldown and hides the swing animation on missed sword/axe swings, with a humanize chance to behave like vanilla and an optional in-combat-only gate. +- **PearlFollow** — Combat module that simulates where an enemy's ender pearl will land and throws your own pearl at a solved pitch so it lands on the same spot, then swaps back to the previous hotbar slot. +- **PredictDoubleHand** — Crystal-PvP module that pre-emptively selects a hotbar totem when ThreatAssessor predicts lethal anchor/crystal/obsidian/mace damage from the closest enemy, on low-HP sword pops, or when throwing a pearl. +- **SafeAnchor** — Module that shields you from your own respawn-anchor blast by placing a glowstone/obsidian cover block between you and the anchor (Legit: the anchor you just placed, via your crosshair; Blatant: any nearby anchor via silent rotations), and reports when a cover is pending so the other anchor modules hold off detonating. +- **SilentAim** — Redirects missed sword/axe/mace swings (and block clicks) onto the closest nearby target through a silent rotation toward its nearest enabled aim point, optionally tracking continuously and rendering the aim dot. +- **SwapHit** — When attacking a player without a sword, swaps to a hotbar sword (or an axe against a raised shield), hits after the swap delay and swaps back after the swap-back delay. +- **TotemHit** — When hitting a player while holding a totem, re-issues the attack with a hotbar sword through a temporary slot swap. +- **Triggerbot** — Attacks the entity under the crosshair (or the ExtendedReach target) once the randomized delay and cooldown windows pass, with sticky targeting, crit timing, crystal rules, TPS-synced cooldown, miss chance and rate-limited debug logging of rejected targets. +- **XbowCart** — One-shot crossbow cart combo: places a rail and TNT minecart at the crosshair, lights fire with flint and steel on the arrow's path, then fires an arrow-loaded crossbow through the fire to detonate the cart and disables itself. + +### `module/mace` + +- **AutoMace** — Mace PvP assistant: swaps to the best Density/Breach mace once falling far enough, optionally auto-hits the target (trigger / silent aim), axe stun-slams shield-blocking targets before the mace hit, expands the target hitbox, swaps the elytra for a chestplate before impact and swaps back to the previous slot afterwards. +- **AutoPearlCatch** — Throws an ender pearl straight up and then a wind charge (forward-speed compensated) to catch it, either with a smoothed real-camera rotation (legit) or a silent server-side rotation lock, then disables itself. +- **AutoReMace** — After a mace hit on a player, re-enables AutoElytra and smoothly steers the camera above and then back onto the same target to chain another elytra mace dive. +- **BreachSwap** — On manual or automated attacks while holding a sword (and not falling), rolls a chance to swap to the highest-Breach mace for the hit and swaps back to the previous slot one tick later. +- **DiagonalPearlCatch** — Throws a pearl along the view direction and catches it with a wind charge, either after a fixed macro delay or by simulating the player, pearl and wind-charge trajectories to find the best intercept tick and angle, using a silent rotation lock for each throw. +- **ElytraWindCharge** — Equips and deploys the elytra, then throws a wind charge steeply downward whenever the glide gets close to the ground (threshold lowered by forward speed) to boost back up; disables if the player switches to a chestplate. +- **FastPearlCatch** — Pearl-and-wind-charge catch thrown back-to-back at configurable angles, either by swapping hotbar slots (silent lock or legit camera rotation) or by pre-loading the wind charge into the offhand and restoring the original offhand item and slot afterwards. +- **KeyWindCharge** — One-shot module that throws a wind charge when enabled, either by switching the hotbar with randomized delays and switching back (Normal) or via an instant silent slot swap (Silent), then disables itself. +- **MacePot** — Throws Speed and Strength splash potions downward (silent pitch) when those effects are missing, pulling potions from the main inventory into the hotbar when needed and swapping them back once both effects are active. +- **MacePrediction** — Renders the closest enemy's predicted airborne arc (with a landing marker) or on-ground movement path as boxes/outlines, plus range circles at the current or predicted landing position, to help time mace hits. +- **PearlWindCharge** — Throws an ender pearl and, as soon as the server teleports the player (pearl landed), throws a wind charge straight down at the feet (optionally jumping) and disables itself. +- **ShieldDrain** — Spams several attacks per tick on a shield-blocking player (crosshair target or nearest within horizontal range) to drain the shield, optionally auto-swapping to a mace and back; publishes a static per-tick draining flag that AutoMace checks. +- **ShortWindCharge** — Throws a wind charge at the player's feet, either through a staged legit sequence (switch slot, smoothly look down, throw, look back, switch back) or with a silent server-side pitch, optionally jumping as it is thrown. +- **WindChargeAura** — Silently rotates to and attacks other players' wind charges within reach to deflect them, with optional humanized aim jitter, a max-yaw cap and an in-air-only option. + +### `module/misc` + +- **AntiTrap** — Hides trap-bait entities (armor stands, minecarts, item frames, boats, crystals) near the player by dropping their spawn packets or discarding loaded ones, and blocks forced sign-edit screens. +- **AutoArmor** — Equips the highest-scoring armor piece (material tier plus weighted enchantments) from the inventory into each armor slot, gated by mode (always, inventory open, or held key) and a swap delay. +- **AutoClicker** — Left/right auto clicker: Interval mode clicks at a fixed rate, Ghost mode clicks at a randomized CPS with a Gaussian human reaction delay whenever the crosshair acquires a new entity. +- **AutoLoot** — While the inventory screen is open and the loot key is held, throws out surplus totems and ender pearls beyond the configured minimums to make room for looted items. +- **AutoPickaxe** — Switches to the best pickaxe (hotbar, or silently swapped in from the inventory) while the player mines the block beneath them, and switches back afterwards. +- **AutoPot** — Throws splash healing potions at the configured pitch, either automatically at low health or whenever a potion is held. +- **AutoText** — One-shot module that sends the configured chat message or slash command when enabled, then turns itself off. +- **AutoTool** — While the attack key is held on a block, selects the hotbar tool with the best mining speed plus Efficiency level and returns to the previous slot afterwards. +- **CartRefill** — Keeps a chosen hotbar slot stocked with a TNT minecart by swapping one in from the main inventory while the inventory is open or the refill key is held. +- **CartStealer** — Shift-clicks TNT minecarts out of an open shulker box at a randomized delay and optionally closes it when none are left or the inventory is full. +- **ChestStealer** — While the activate key is held, shift-clicks every item out of an open chest at a randomized delay and optionally closes it once empty. +- **Criticals** — Turns melee hits into critical hits, either by sending fake position packets (Silent) or by delaying the attack until after a real jump or micro-hop (Legit/Minimal). +- **CrystalOptimizer** — Removes an end crystal client-side as soon as it is attacked (unless the player has Weakness) instead of waiting for the server to confirm. +- **EnemyFaker** — Disguises the nearest non-friend player under a fake name, skin and tier/gamemode nametag, fetching the fake skin from Mojang on demand. +- **FastEXP** — Throws experience bottles quickly, either while right-click is held (Manual) or automatically swapping to bottles and looking down to mend damaged Mending gear (Automatic), as a silent rotation provider. +- **FastPlace** — Lowers the client's item-use cooldown to a random value in the configured range each tick so blocks (or any items) can be placed faster. +- **Friends** — Friend handling: highlights friend names in aqua in rendered text and blocks attacks, swings and attack-cooldown resets aimed at friends. +- **KeyPearl** — One-shot module that switches to an ender pearl in the hotbar, throws it and switches back to the previous slot with randomized delays, then disables itself. +- **MiddleClickFriend** — Adds or removes the player under the crosshair as a friend when the middle mouse button is clicked. +- **NameHider** — Replaces the local player's username in rendered text with a custom name or a periodically re-rolled random one. +- **PotionRefill** — While the inventory screen is open, shift-clicks splash potions (optionally healing only) from the main inventory into empty hotbar slots at a randomized delay. +- **Reach** — Randomly extends the player's attack reach by an amount from the configured range, with a configurable chance per hit. +- **Refill** — Tops off low stackable hotbar stacks with matching items from the main inventory while the inventory is open or the refill key is held. +- **RightClicker** — Schedules right clicks at a random CPS between the configured minimum and maximum while no screen is open and no item is being used. +- **SelfDestruct** — Panic switch that disables, disposes and unbinds every module, clears the module list and marks the client as self-destructed. +- **StreamerMode** — Masks every other player's name in nametags and rendered text with a stable numbered or random alias, optionally skipping friends and the local player. +- **Teams** — Tracks players whose display-name color matches the local player's as teammates so FriendManager treats them as friends (no attacking teammates). + +### `module/movement` + +- **AutoJumpReset** — Presses jump (by chance) on the tick you take a hit from a player while on ground, performing a jump reset to reduce knockback. +- **AutoShortPearl** — Anti-knockback module that, after you are hit by a player, waits a random delay and throws an ender pearl straight down at your feet using a silent ~90 degree pitch rotation. +- **FakeLag** — Holds outgoing packets in a queue and releases them manually, on a timer, by enemy distance, dynamically or after knockback (and on selected actions/explosions), drawing a ring at the last flushed position. +- **FastBridge** — Holds sneak automatically while looking down with a block in hand and standing over air, so you can bridge quickly at block edges. +- **Freecam** — Detaches the camera into a free-flying view driven by the movement keys while freezing the player's real position/rotation for the server, optionally drawing a box where the body stays. +- **NoJumpDelay** — Resets the player's jumping cooldown every tick to remove the delay between jumps. +- **Parkour** — Automatically jumps when the player is about to walk off a block edge (randomised edge distance). +- **ShortPearl** — One-shot module that throws an ender pearl at your feet at a steep pitch, either through a staged legit camera rotation (swap, rotate, throw, rotate back, switch back) or a silent server-side rotation. +- **Sprint** — Keeps the sprint key pressed while moving forward. +- **Velocity** — Scales incoming knockback by random vertical/horizontal percentages (with a chance), optionally skipping while you are still airborne from an explosion's knockback. +- **WTap** — After hitting a player while sprinting forward, waits a reaction delay and releases W for a random time to reset server-side sprint for extra knockback. + +### `module/spear` + +- **ExtendedReach** — Spear-mode module that, when attacking with a selected sword/axe/mace, briefly swaps to a non-Lunge spear for its longer reach and swaps back a tick later; also exposes the extended-reach raycast target to Triggerbot. +- **InstantLunge** — One-shot spear module that swaps to a Lunge-enchanted spear, fires the lunge (stab packet or piercing attack) immediately, and optionally swaps back after a random delay before disabling itself. +- **SpearDamageIndicator** — HUD overlay shown while charging a netherite spear that estimates the kinetic charge damage against the closest enemy and draws it as an animated text + bar panel below the crosshair. +- **SpearMaceDoubleTap** — Spear+mace combo module: when a KINETIC_ATTACK entity status (spear charge hit) arrives while falling farther than the trigger distance, stops the spear charge, swaps to the best Density/Breach mace and hits the crosshair target again on the next tick. + +### `module/visual` + +- **Ambience** — Visual module that overrides fog distances/color, the sky color and the client-side time of day. +- **Animations** — Visual module that replaces the first-person swing animation with one of three custom styles, can slow swings down and suppresses the item re-equip animation. +- **AntiResourcePack** — Module that cancels server resource-pack requests while replying that the pack was accepted and loaded. +- **ESP** — Shader ESP module: picks the outline/chams/aura post shader and the entity types to highlight for EspShaderManager, and holds the thread-local render layer captured by the model-render hook. +- **FreeLook** — Module that detaches the camera rotation from the player so you can look around (optionally in third person) without turning. +- **HealthIndicators** — Module that appends a color-coded health plus absorption value to player name tags. +- **HitEffect** — Visual module that spawns glowing physics particles when you hit an entity or a player pops a totem. +- **HudEditor** — Module that opens the HUD editor screen and holds the global HUD scale setting (percent). +- **ItemESP** — Item ESP module: collects dropped item entities within range every tick and draws "name xCount" labels above them on the 2D overlay. +- **JumpCircles** — Visual module that draws expanding glow rings where players jump. +- **NameTags** — Name Tags module: suppresses vanilla player labels and draws custom cards with name, totem pops, distance, a smoothed health bar, held/armor items and short enchantment labels. +- **NoBounce** — Module that cancels the hotbar item bobbing animation (e.g. while crystal modules swap items). +- **OreSimulation** — Ore Simulation module: re-runs vanilla ore and scattered-ore feature generation for loaded chunks from the entered world seed and outlines the predicted ore blocks around the player. +- **PearlTrajectory** — Pearl Trajectory module: simulates the flight of every thrown ender pearl, draws the predicted path in 3D and shows a landing tag with a pearl icon and the flight time at the predicted landing point. +- **RenderOptimizer** — Module that removes assorted visuals (hurt cam, fire overlay, particles, GUI background tint, weather, terrain loading screen, scoreboard, titles, hotbar item names) and can force full bright. +- **ShieldRenderer** — Module that publishes the shield overlay render settings (offset, scale, colors, mode) and tracks per-player shield blocking and break state. +- **StorageESP** — Storage ESP module: collects selected storage block entities (chests, shulkers, barrels, hoppers, furnaces, ...) every tick and renders them into a mask that StorageOutlineRenderer turns into colored glow outlines/fills. +- **TargetRenderer** — Visual module that highlights the current combat target with an orbiting ghost glow or a spinning square marker. +- **TotemAnimation** — Module that speeds up the totem-pop floating item animation by adding extra ticks. +- **Trails** — Visual module that leaves fading footstep, ring or particle trails behind players. +- **Trajectories** — Trajectories module: simulates the held bow, charged crossbow (including multishot spread) or ender pearl with dummy projectiles and renders the predicted path as an animated beam with an impact marker. +- **TwoDESP** — 2D ESP module: projects nearby players' bounding boxes to screen space and draws fading boxes/corners/brackets with optional glow, fill, animated gradient, health bar, name tag and distance label. +- **Weather** — Visual module that renders custom client-side rain, snow, firefly or ember particles around the player. +- **XRay** — XRay module: hides every block except a fixed list of ores, valuables and utility blocks via BlockVisibilityEvent, reloads chunk meshes on toggle and optionally forces full-bright lighting. + +## `event` — Event types posted on the EventBus (fired from the hooks in `mixin/` through `util/HookBridge`). + +- **AddParticleEvent** — Fired from ParticleManager.addParticle; cancelling drops the particle. +- **AntiBotQueryEvent** — Query posted by the bot filter; the AntiBot module cancels it to signal that bot filtering is active. +- **AttackEntityEvent** — Fired from ClientPlayerInteractionManager.attackEntity when the local player attacks; cancellable. +- **AutoAttackEvent** — Posted by combat modules right before they attack a player themselves (lets BreachSwap swap weapons first). +- **BlockStateUpdateEvent** — Fired after WorldChunk.setBlockState with the changed position and new block state. +- **BlockVisibilityEvent** — X-ray query fired from Block.shouldDrawSide, chunk occlusion and ambient-occlusion hooks: whether a block face should be drawn. +- **BotCheckEvent** — Query posted by the bot filter; AntiBot cancels it when the player looks like a bot. +- **BoundingBoxEvent** — Fired from Entity.getBoundingBox; when cancelled the returned box is replaced (used by Hitboxes). +- **CameraPositionEvent** — Fired from Camera.setPos; when cancelled the camera is moved to the event position instead (used by Freecam). +- **CameraRotationEvent** — Fired from Camera.setRotation; when cancelled the camera uses the event yaw/pitch (used by FreeLook). +- **ChunkDataEvent** — Fired after a chunk data packet has been applied, with the loaded chunk. +- **ClientTickEvent** — Main per-tick event, posted from MinecraftClient.tick (after the HUD tick) while a world and player exist. +- **DoAttackEvent** — Fired from MinecraftClient.doAttack (attack key); cancelling blocks the attack. +- **DoItemUseEvent** — Fired from MinecraftClient.doItemUse (use key); cancelling blocks the item use. +- **EntityAddRemoveEvent** — Fired when the client world adds (PRE phase) or removes (POST phase) an entity. +- **Event** — Base class of all client events: optional PRE/POST phase, a cancelled flag and post() to dispatch it on the event bus. +- **ExplosionEvent** — Fired from ServerWorld.createExplosion (integrated server) with the explosion power and position. +- **ExtendedReachAttackEvent** — Posted by Triggerbot before it clicks on a target found through ExtendedReach (lets the spear swap happen first). +- **FireOverlayEvent** — Fired while rendering the first-person fire overlay; cancelling hides it. +- **FloatingItemTickEvent** — Fired at GameRenderer.tick; the floating-item (totem) animation timer is advanced by the extra ticks set by listeners. +- **FogEvent** — Fired from FogRenderer.applyFog; when cancelled the fog color, start/end distances and sky end come from the event. +- **FrameEvent** — Posted once per rendered frame with the 2D render context (null context when no render pass ran); used for per-frame logic and notifications. +- **FrustumSetupEvent** — Fired after WorldRenderer.setupFrustum with the new view frustum (for visibility checks of 2D/3D overlays). +- **FullBrightEvent** — Fired from the lightmap update and EntityRenderer.getSkyLight; cancelling forces full brightness. +- **GameJoinEvent** — Fired after the client handles the GameJoin packet (joining a server or changing world); listeners reset per-world state. +- **HandSwingDurationEvent** — Fired from LivingEntity.getHandSwingDuration; when cancelled the event duration is returned (used by Animations). +- **HandleBlockBreakingEvent** — Fired from MinecraftClient.handleBlockBreaking; cancelling stops block breaking for that tick. +- **HealthIndicatorEvent** — Asks for a suffix (e.g. health) to append to a player's name label (used by HealthIndicators). +- **HurtCamEvent** — Fired from GameRenderer.tiltViewWhenHurt; cancelling removes the hurt camera shake. +- **ItemBobbingEvent** — Fired from ItemStack get/setBobbingAnimationTime; cancelling disables the item pickup bounce (used by NoBounce). +- **KeyEvent** — Fired from Keyboard.onKey with the GLFW key code and action; cancellable. +- **KeyboardInputTickEvent** — Fired PRE/POST around KeyboardInput.tick. +- **LabelTextEvent** — Lets modules rewrite the name label of a player (entity renderer and text-display hooks). +- **LoadingScreenEvent** — Cancellable event for skipping the downloading-terrain screen (RenderOptimizer); currently never posted. +- **ModuleStateSync** — Per-tick sync of module enabled state changed outside toggle() (e.g. by the UI), plus hiding the vanilla status-effect overlay while HUD elements are drawn. +- **MouseButtonEvent** — Fired from Mouse.onMouseButton with the button and action. +- **MouseUpdateEvent** — Fired from Mouse.updateMouse with the cursor delta; cancelling stops the vanilla camera turn (used by FreeLook). +- **MovementYawEvent** — Fired from Entity.updateVelocity and the sprint-jump boost of LivingEntity.jump; when cancelled movement uses the event yaw (silent rotation). +- **OverlayMessageEvent** — Fired from InGameHud.renderOverlayMessage; cancelling hides the action-bar/hotbar text. +- **PacketReceiveEvent** — Fired from ClientConnection.handlePacket for every incoming packet; cancelling drops it. +- **PacketSendEvent** — Fired from ClientConnection.send for every outgoing packet; cancelling drops it. +- **PlayerRenderStateEvent** — Fired PRE/POST around EntityRenderer.getAndUpdateRenderState for the local player so the server-side rotation can be shown on the model. +- **PreTickEvent** — Fired at the head of every MinecraftClient.tick, also without a world. +- **RainGradientEvent** — Fired from World.getRainGradient; cancelling removes rain and snow. +- **ReachEvent** — Fired from GameRenderer.updateCrosshairTarget; when cancelled the extra reach is added to the crosshair raycast distance. +- **Render2DEvent** — 2D HUD overlay render event, posted each frame while no screen (other than chat) is open. +- **Render3DEvent** — World-space render event posted from WorldRenderer.render with the world camera matrices. +- **RenderCrosshairEvent** — Fired from InGameHud.renderCrosshair; cancelling hides the vanilla crosshair. +- **RenderLabelEvent** — Fired before an entity name label is rendered; cancelling hides the vanilla label (used by NameTags). +- **RenderScoreboardEvent** — Fired from InGameHud.renderScoreboardSidebar; cancelling hides the scoreboard. +- **RenderStatusEffectsEvent** — Fired from InGameHud.renderStatusEffectOverlay; cancelling hides the vanilla status effect icons. +- **ResetAttackCooldownEvent** — Fired from PlayerEntity.resetTicksSince (attack cooldown reset); cancelling keeps the cooldown progress. +- **ResolutionChangedEvent** — Fired after MinecraftClient.onResolutionChanged with the game window. +- **ScreenBackgroundEvent** — Fired from Screen.renderBackground/renderBackgroundTexture; cancelling removes the dark GUI background tint. +- **SendMovementPacketsEvent** — Fired PRE/POST around ClientPlayerEntity.sendMovementPackets; PRE may change the rotation sent to the server, the real rotation is restored after POST. +- **ShieldBreakEvent** — Fired from LivingEntity.handleStatus when an entity's shield is broken (status 30). +- **ShieldRenderSettingsEvent** — Query event that the ShieldRenderer module fills with its overlay settings (offset, scale, mode, colors). +- **SkinTexturesEvent** — Fired when a player's skin textures are looked up (player list entry / client player); when cancelled the event skin is used. +- **SkyColorEvent** — Fired from SkyRendering.updateRenderState so modules can override the sky and sunrise/sunset colors. +- **SwingArmEvent** — Fired from HeldItemRenderer.swingArm so swing animations can be replaced (used by Animations). +- **SwingHandEvent** — Fired (PRE, then POST) from ClientPlayerEntity.swingHand; cancelling suppresses the swing, skipPost suppresses the POST phase. +- **TextReplaceEvent** — Fired for every visited text string; when cancelled occurrences of the target are replaced with the event text (name hiding). +- **TimeOfDayEvent** — Fired from World.getTimeOfDay; when cancelled the event time is returned (used by Ambience). +- **TravelEvent** — Fired PRE/POST around LivingEntity.travel for the local player so movement uses the silent rotation; the real rotation is restored afterwards. +- **VelocityUpdateEvent** — Fired from Entity.setVelocityClient for the local player (server knockback); cancelling applies the modified velocity. +- **WorldRendererReloadEvent** — Fired at the start of WorldRenderer.reload. + +## `mixin` — ClassTransform hook classes injected into Minecraft (applied by `engine/EnginePlugin`). + +- **AbstractBlockStateMixin** — ClassTransform hook into AbstractBlockState.getAmbientOcclusionLightLevel that lets the ambient-occlusion visibility event force full AO light (XRay). +- **AbstractClientPlayerEntityMixin** — ClassTransform hook into AbstractClientPlayerEntity.getSkin that lets SkinTexturesEvent replace a player's skin textures. +- **BlockMixin** — ClassTransform hook into Block.shouldDrawSide that lets the draw-side visibility event override face culling (XRay). +- **CameraMixin** — ClassTransform hook into Camera.setPos/setRotation that lets camera position and rotation events override the camera transform. +- **ChunkOcclusionDataBuilderMixin** — ClassTransform hook into ChunkOcclusionDataBuilder.markClosed that can skip occlusion marking so hidden blocks keep rendering (XRay). +- **ClientConnectionMixin** — ClassTransform hook into ClientConnection that posts cancellable packet receive/send events and feeds outgoing packets to the inventory swap queue. +- **ClientPlayNetworkHandlerMixin** — ClassTransform hook into ClientPlayNetworkHandler that posts GameJoinEvent and ChunkDataEvent after the vanilla packet handlers. +- **ClientPlayerEntityMixin** — ClassTransform hook into ClientPlayerEntity that posts swing-hand events and spoofs, then restores, the rotation sent in movement packets. +- **ClientPlayerInteractionManagerMixin** — ClassTransform hook into ClientPlayerInteractionManager.attackEntity that posts a cancellable AttackEntityEvent for the local player. +- **ClientWorldMixin** — ClassTransform hook into ClientWorld that posts entity added and removed events. +- **EntityMixin** — ClassTransform hook into Entity that applies silent-rotation movement and aim fixes and lets events override bounding boxes and client-set velocity. +- **EntityRendererMixin** — ClassTransform hook into EntityRenderer that applies the visual rotation to the local player's render state, forces full entity sky light and rewrites name labels. +- **FogRendererMixin** — ClassTransform hook into FogRenderer that lets FogEvent rewrite the fog uniform buffer and the returned fog color. +- **GameRendererMixin** — ClassTransform hook into GameRenderer that runs the client's HUD render pass, captures camera matrices, cancels hurt cam, speeds up the floating totem item and extends reach in crosshair targeting. +- **HeightContextMixin** — ClassTransform hook into HeightContext's constructor that accepts a null chunk generator (client-side ore simulation) by using unbounded height limits. +- **HeldItemRendererMixin** — ClassTransform hook into HeldItemRenderer.swingArm that posts SwingArmEvent so modules can replace the first-person swing animation. +- **InGameHudMixin** — ClassTransform hook into InGameHud that lets events hide the status effect overlay, crosshair, scoreboard sidebar and overlay message. +- **InGameOverlayRendererMixin** — ClassTransform hook into InGameOverlayRenderer.renderFireOverlay that lets FireOverlayEvent hide the fire overlay. +- **InactivityFpsLimiterMixin** — ClassTransform hook into InactivityFpsLimiter.update that keeps the full FPS limit while the ClickGUI is open. +- **ItemStackMixin** — ClassTransform hook into ItemStack that lets the item bobbing events suppress the hotbar bobbing animation time. +- **KeyboardInputMixin** — ClassTransform hook into KeyboardInput.tick that posts input tick pre/post events and blocks movement input (then restores sprint) around inventory swaps. +- **KeyboardMixin** — ClassTransform hook into Keyboard.onKey that posts a cancellable KeyEvent. +- **LightmapTextureManagerMixin** — ClassTransform hook into LightmapTextureManager.update that clears the lightmap to white for full bright. +- **LivingEntityMixin** — ClassTransform hook into LivingEntity that spoofs the rotation during travel, overrides hand swing duration, posts shield-break events and applies the silent jump yaw. +- **LivingEntityRendererMixin** — ClassTransform hook into LivingEntityRenderer.isVisible that forces invisible ESP-targeted entities to render. +- **MinecraftClientMixin** — ClassTransform hook into MinecraftClient that posts client tick, pre-tick, resolution change, item use, attack and block breaking events. +- **ModelCommandRendererMixin** — ClassTransform hook into ModelCommandRenderer that tracks the render layer being drawn and wraps model vertex consumers with the ESP outline consumer. +- **MouseMixin** — ClassTransform hook into Mouse that posts a cancellable mouse move event and mouse button events. +- **NamespaceResourceManagerMixin** — ClassTransform hook into NamespaceResourceManager.getResource that serves resources in the prestige namespace from the client jar. +- **ParticleManagerMixin** — ClassTransform hook into ParticleManager.addParticle that posts a cancellable AddParticleEvent. +- **PlayerEntityMixin** — ClassTransform hook into PlayerEntity.resetTicksSince that posts a cancellable attack-cooldown reset event. +- **PlayerListEntryMixin** — ClassTransform hook into PlayerListEntry.getSkinTextures that lets SkinTexturesEvent replace tab-list skins. +- **PostEffectProcessorMixin** — Empty transformer for PostEffectProcessor (its hook bodies were not recovered); kept because the engine checks the hooked-class count against prestige-engine/targets.*.list. +- **ReloadableResourceManagerImplMixin** — ClassTransform hook into ReloadableResourceManagerImpl.getResource that serves prestige resources and the client's own glow, blur and rounded-rect shader files. +- **ScreenMixin** — ClassTransform hook into Screen that lets ScreenBackgroundEvent hide the menu background and background texture. +- **ServerWorldMixin** — ClassTransform hook into ServerWorld.createExplosion that posts an ExplosionEvent (integrated server). +- **SkyRenderingMixin** — ClassTransform hook into SkyRendering.updateRenderState that lets SkyColorEvent override the sky and horizon colors. +- **TextDisplayEntityRendererMixin** — ClassTransform hook into TextDisplayEntityRenderer.getLines that lets the label text event rewrite text-display lines naming a player. +- **TextVisitFactoryMixin** — ClassTransform hook into TextVisitFactory.visitFormatted that applies TextReplaceEvent replacements to rendered text. +- **WorldChunkMixin** — ClassTransform hook into WorldChunk.setBlockState that posts a BlockStateUpdateEvent for client-side block changes. +- **WorldMixin** — ClassTransform hook into World that lets events override the rain gradient and the time of day. +- **WorldRendererMixin** — ClassTransform hook into WorldRenderer that runs the client's 3D render pass after the frame graph and posts frustum setup and renderer reload events. + +## `util` — Hook bridge between the injected game hooks and the client, keybinds, simulated clicks, notifications. + +- **FrameDeltaTimer** — Measures the time between rendered frames (capped at 30 ms) and exposes it as an animation delta factor used for smooth rotations. +- **HookBridge** — Static trampolines called by the ClassTransform hook classes in mixin/: each creates, queries or posts one client event for a hooked Minecraft method, plus resource loading for prestige assets/shaders and the GUI/world render-pass plumbing. +- **LruCache** — Access-ordered LinkedHashMap that evicts its eldest entry once it holds more than maxSize entries. +- **NotificationManager** — Queues toast notifications (title, message, duration, type) and renders them stacked in the bottom-right corner every frame, dismissing duplicates. +- **SimulatedClickManager** — Tracks simulated mouse-button presses (button -> remaining hold ticks), releases them when they expire or the window loses focus, and suppresses vanilla attack/use/block-breaking while a simulated click is held. + +## `combat` — Targeting, rotations, damage and threat calculation. + +- **BotFilter** — AntiBot backend: keeps the set of position-packet-validated players and answers (cached per tick) whether an entity is a valid, non-bot target. +- **ClickScheduler** — Schedules a simulated mouse-button click after a delay and releases it after a randomized hold time (used by AutoClicker/RightClicker). +- **EquipmentSlotSwitchMap** — Compiler-generated enum switch map translating EquipmentSlot ordinals to AutoArmor switch cases. +- **ExplosionDamageCalculator** — Computes end-crystal, respawn-anchor and TNT-minecart explosion damage to an entity (exposure raycasts, armor, protection, resistance, difficulty) with a per-tick cache. +- **HudStyle** — Shared HUD style constants (text scales, paddings, corner radius, palette) and row/card height helpers used by HUD elements and nametags. +- **ItemUseCooldownAccessor** — Reflective accessor that reads and writes MinecraftClient.itemUseCooldown (used by FastPlace). +- **JumpCooldownAccessor** — Reflective accessor that writes LivingEntity.jumpingCooldown (used by NoJumpDelay). +- **NameTagEntry** — Per-player snapshot rendered by the NameTags module (name, pop count, health ratios and texts, measured widths, equipment and enchantment labels). +- **PearlFollowSimulatedPearl** — Client-side simulated ender pearl used by PearlFollow to predict where a pearl lands; stops and snaps to the hit position on collision. +- **PearlTrajectorySimulatedPearl** — Client-side simulated ender pearl stepped by the PearlTrajectory module to trace a thrown pearl's flight path. +- **PotionDisplayEntry** — Per-status-effect row state of the Potion Display HUD element (name, level, color, durations and fade animation). +- **TargetSelector** — Static target-selection helpers: closest enemy player/entity (optionally within an aim angle), player detection and shield-blocking checks. +- **TargetTracker** — Remembers the enemy player the local player last attacked (directly or via a nearby crystal) and forgets it after 5 s, death or 15 blocks. +- **ThreatAssessor** — Finds the most dangerous incoming damage source around an enemy (crystals, charged anchors, obsidian crystal spots, mace smashes) for totem prediction. +- **TrajectoriesSimulatedPearl** — Client-side simulated ender pearl stepped by the Trajectories module to preview the local player's pearl throw. +- **TwoDEspTarget** — Per-tick snapshot of a player shown by the 2D ESP module (name, health, size, distance, friend flag). +- **VisualRotationManager** — Smoothly interpolates the server-side rotation and temporarily applies it to the local player model while its render state is built, restoring the real rotation afterwards. + +## `inventory` — Hotbar/inventory search and swapping. + +- **AnchorUseGuard** — Decides whether vanilla item use should be cancelled while an anchor module is active and the player holds or aims at a respawn anchor. +- **DeathLootDetector** — Detects valuable PvP loot (gear, totems, gapples, crystals...) dropped near a position, i.e. a fresh kill, for the Pause On Kill options. +- **EnchantmentLabel** — Short enchantment label (e.g. "pro 4") drawn above an item in the NameTags module. +- **HeldItemRendererAccessor** — Reflective accessor for HeldItemRenderer equip progress and held stacks (used by the Animations module). +- **InventoryUtil** — Static inventory and hotbar helpers: weapon/item type checks, slot clicks and swaps, hotbar slot search/selection and splash potion lookup. +- **ItemEspLabel** — Label text and stack of a dropped item rendered by the ItemESP module. +- **PlayerInteractions** — Static helpers that perform player interactions (use block/item, attack, start gliding) and query reach distance and shield/usable-item state. + +## `world` — Raycasts, block placement checks, rotation math, Minecraft accessors. + +- **BlockUtil** — Block queries for combat placement: clickable blocks, crystal spots, entity occupancy, nearby block scans, respawn-anchor charges and cobweb-in-line-of-sight checks. +- **ClientChunkManagerAccessor** — Reflective accessor for ClientChunkManager's private chunk map. +- **ClientChunkMapAccessor** — Reflective accessor for ClientChunkMap's private chunk array. +- **CobwebSwitchBackTask** — Deferred task queued on the rotation handler that retries CobwebPlacer's hotbar switch-back on the next tick and re-queues itself while it is still pending. +- **CountPlacementModifierAccessor** — Reflective accessor for CountPlacementModifier's count provider (Ore Simulation). +- **DifficultySwitchMap** — Compiler-generated switch table mapping Difficulty ordinals to case numbers (used by DamageUtil). +- **HeightContextAccessor** — Reflective setter for HeightContext's minY and height fields (used when a HeightContext is built without a chunk generator). +- **HeightRangePlacementModifierAccessor** — Reflective accessor for HeightRangePlacementModifier's height provider (Ore Simulation). +- **HitParticlePhysics** — Base motion model for Hit Effect particles (legacy/pop variants): advances a particle and provides the passable-block test used for its block collisions. +- **LoadedChunkIterator** — Iterator over the client world's loaded chunks (read through the chunk-map accessors), optionally skipping chunks whose four neighbours are not loaded yet. +- **MeshBuilder** — Chainable mesh-building interface implemented by render/TextRenderer (MappedMeshBuilder): writes positions, colors, float attributes and indices, tracks a base-vertex offset and generates indices per GL primitive. +- **OreDefinition** — Ore-generation parameters of one placed ore feature (generation step, feature index, count, height range, rarity, vein size, discard-on-air chance, targets) plus display name and color, used by Ore Simulation. +- **PositionUtil** — Static helpers for entity positions (current/last tick), elytra gliding, game-profile names and a player's height above the ground. +- **RarityFilterPlacementModifierAccessor** — Reflective accessor for RarityFilterPlacementModifier's chance (Ore Simulation). +- **RaycastContextAccessor** — Reflective setter for RaycastContext's private start/end/shape/fluid/shape-context fields so one context object can be reused for many raycasts. +- **RaycastUtil** — Finds a point on a block's faces (or only its top face) that the player can see and reach within 4.25 blocks without blocks or entities in the way. +- **RotationUtil** — Rotation math: yaw/pitch toward points (optionally yaw-limited or jittered), angle distances, smoothed camera rotation, rotation direction vectors and raycasts along a rotation. +- **SimulatedBowArrow** — Client-only arrow entity ticked manually by the Trajectories module to trace bow/crossbow flight paths, recording whether the arrow hit an entity. + +## `math` — Math helpers, particles, interpolation. + +- **AutoCrystalRenderer** — Renders AutoCrystal's animated, fading target-block box that glides towards the current placement position. +- **BlockChangeTracker** — Tracks recently cleared blocks, explosions and our own block placements so anchor modules avoid acting on stale or just-exploded positions. +- **HitParticle** — A glow particle spawned by the HitEffect module on hits/totem pops, moved by a mode-specific motion model. +- **JumpCircle** — A ground ring spawned by the JumpCircles module where a player jumped, with its spawn time and lifetime. +- **LegacyParticlePhysics** — Legacy hit-particle motion model: slow gravity, damping and block-bounce collisions. +- **MotionState** — One predicted tick of the local player's motion (eye position, velocity, on-ground) used by DiagonalPearlCatch. +- **ObbyCrystalCandidate** — A scored AutoObbyCrystal placement candidate: base block, obsidian support block/side, aim point and whether obsidian must be placed or a crystal broken. +- **PearlLandingMarker** — Predicted landing point of a thrown ender pearl with its flight time and fade alpha, drawn by the PearlTrajectory module. +- **PopParticlePhysics** — Totem-pop hit-particle motion model: stronger gravity, damping and block-bounce collisions. +- **RenderCacheUtil** — Render helpers for LRU caches, quarter-step quantized cache keys and ARGB channel unpacking. +- **SettingValueParser** — Parses and validates textual config values and applies them to module settings of every setting type. +- **TexturedDrawModeKey** — Cache key (texture, corner radii, blend mode, depth test) for RoundedTextureShader draw modes. +- **TrailMark** — A single trail mark (footstep, ring or particle) spawned by the Trails module with its lifetime, yaw and motion. +- **TrailTracker** — Per-player state of the Trails module: last position a mark was dropped at and which foot steps next. +- **TwoDEspBox** — Animated screen-space box of a 2D ESP target (bounds, fade alpha, last frame seen, target snapshot). +- **UiMath** — UI math helpers (accent color, alpha, clamp, smooth approach, decimal flooring, special key names) plus an unused positioned-label component. +- **Vec3dMutator** — Reflectively overwrites the final x/y/z fields of a Vec3d so it can be reused as a scratch vector. +- **WeatherParticle** — A rain/snow/firefly/ember particle of the Weather module with position, velocity, age and flicker phase. + +## `network` — Packet sending/queueing, ping and server-tick tracking. + +- **BlockChangeListener** — Packet listener feeding BlockChangeTracker with cleared blocks, explosion centers and our own block placements, pruning old entries. +- **InteractItemPacketAccessor** — Reflectively overwrites the yaw/pitch of a PlayerInteractItemC2SPacket for silent rotations. +- **InventorySwapQueue** — Queues inventory slot-swap clicks until the player is stationary and not sprinting server-side, holding movement input meanwhile and running completion callbacks. +- **PacketSender** — Sends a packet through the client's network handler. +- **SilentSlotManager** — Silently switches the server-side selected hotbar slot, blocks vanilla slot packets while spoofing and restores the real slot before interactions. +- **TotemPopManager** — Counts totem pops per player from entity-status packets, clearing counts on death, despawn and world join. + +## `render` — Custom renderer: shaders, GPU buffers, 2D/3D drawing, fonts, ESP outlines. + +- **ApplyCallbackState** — Pipeline state that runs a callback when the render pass is applied (e.g. to bind a texture). +- **AuraOutlineShader** — ESP post shader for the 'Aura' mode: draws entity models into the mask texture and composites it with aura_outline.frag (crisp core line plus soft halo). +- **AxisSwitchMap** — Compiler-generated switch map over Axis. +- **BlurredRoundedRectShader** — Frosted-glass panel renderer: draws a rounded rectangle that samples the GaussianBlur of the main framebuffer (rounded_texture_blurred.frag), caching one blur per blur radius and one DrawMode per corner-radius set. +- **BoundMethod** — MethodAccessor bound to a target instance so it can be invoked with just the arguments. +- **BufferSource** — Per-DrawMode pool of GPU vertex/index buffers (like vanilla's VertexConsumerProvider.Immediate): hands out a mesh builder per draw mode during a render event and draws every requested mode on flush. +- **CallbackDrawCommand** — Draw command whose vertices are produced by a lambda (depth, builder), for a given pipeline and optional scissor rect. +- **ChamsOutlineShader** — ESP post shader for the 'Chams' mode: composites the entity mask with chams_outline.frag as a flat translucent fill with a darker rim. +- **ConfigReport** — Counters collected while saving or loading a config (sections, values, warnings, errors) with a compact summary string. +- **ConfigureCallbackState** — Pipeline state that runs a callback on the render-pass builder before the pass is built. +- **CooldownProgress** — Progress value (0..1) of the current item use or attack cooldown shown by the cooldown indicator HUD element. +- **CoreShaders** — Shared shader programs: position-color, position-color-texture, rounded rect, gaussian blur and MSDF text. +- **CornerRadii** — Rounded-rect corner radii quantized to 0.25 px (shader component order x=top-right, y=bottom-right, z=top-left, w=bottom-left); hashable so it can key the rounded-rect pipeline cache. +- **CornerRadiiUniform** — Pipeline state that uploads quantized per-corner radii to the rounded_pos_color shader's 'roundness' vec4 uniform. +- **DamageSample** — Timestamped amount of health lost, kept by AutoTotem to estimate the recent damage rate. +- **DelayTimer** — One-shot timer that reports once a fixed delay (ms) has passed since creation; SafeAnchor keeps one per anchor as a randomized reaction delay. +- **DrawCommand** — Deferred 2D draw command: emits its vertices into a vertex builder at a given depth and exposes the batch key (pipeline + scissor) used for batching. +- **DrawCommandQueue** — Deferred 2D draw queue: collects draw commands with increasing depth, batches consecutive commands sharing pipeline and scissor, and draws them from shared vertex/index buffers. +- **DrawPipeline** — Immutable draw pipeline: vertex format, GL primitive mode, entity-mask flag and the pipeline states that are configured, applied and reset around each indexed draw. +- **DrawPipelines** — Predefined DrawModes for the pos_col shader (triangles/lines with or without depth test and culling) plus a cache of rounded-rectangle DrawModes keyed by corner radii. +- **EntityTypeSet** — Thread-safe set (with a read-only view) of the entity types selected as shader-ESP targets. +- **EspShaderManager** — Global state of the shader ESP: active post shader, enabled/force-invisible flags, target entity types and caches mapping entity model classes to those types; hooks the shader into the render events. +- **FontManager** — Loads and caches MSDF fonts by name; the default font is 'inter'. +- **FullscreenPassChain** — Ordered list of fullscreen shader passes (shared static screen quad), each with a target framebuffer and a uniform-setup callback; used for post-processing (outlines, blur, storage glow). +- **GameRendererAccessor** — Reflective accessor for GameRenderer's overlayRenderer field. +- **GaussianBlur** — Two-pass separable Gaussian blur of Minecraft's main colour buffer into its own textures (horizontal then vertical pass), re-run at most once per frame or on resize; its output texture backs the frosted-glass HUD panels. +- **GlBuffer** — Cleaner-managed OpenGL buffer object (bound as GL_ARRAY_BUFFER) supporting allocation, mapped ranges and unmapping. +- **GlFramebuffer** — Cleaner-managed OpenGL framebuffer object with helpers to attach textures and clear its color buffer. +- **GlPrimitiveSwitchMap** — Compiler-generated switch map over GlPrimitive used by the vertex builder's index generation, plus that interface's assertion flag. +- **GlRenderPass** — One OpenGL draw pass: binds a target framebuffer, optionally clears colour/depth, uses a shader program, uploads the projection/view matrices and issues indexed draws. +- **GlRenderPassBuilder** — Builder for a RenderPass: target framebuffer (id or supplier), optional clear color/depth and the shader program. +- **GlStateSnapshot** — Snapshot of the OpenGL state (capabilities, program, VAO/buffers, texture bindings, blend, scissor, read/draw framebuffers) captured before custom rendering and restored afterwards. +- **GlTextureHandle** — Wrapper around an OpenGL texture object (owned and Cleaner-deleted, or wrapping an existing GL/Minecraft texture) with one-time storage allocation, sub-image uploads and filter/wrap parameters. +- **GlyphQuadCommand** — Draw command for one textured MSDF glyph quad: screen rect, atlas UVs, ABGR color and optional transform matrix. +- **GlyphVisitor** — Callback invoked for each glyph while iterating a string; returning false stops the iteration. +- **GuiRendererAccessor** — Reflective accessor for GuiRenderer's guiProjectionMatrix field. +- **JumpKeyPresser** — Presses the jump key programmatically for two ticks (used by elytra/wind-charge modules) and releases it again unless the player is physically holding it. +- **JumpKeyReleaser** — Client-tick listener for JumpKeyPresser that counts down the forced jump press and releases the key when it expires. +- **KeyBindingAccessor** — Reflective accessor for a KeyBinding's bound key. +- **MappedMeshBuilder** — Mesh builder (the only WorldContract implementation) that writes vertex attributes and indices straight into mapped GPU vertex/index buffers, growing them on demand and tracking a base vertex for index generation. +- **MinecraftAccess** — Interface exposing the MinecraftClient instance as the constant 'mc' to modules, HUD elements, managers and render helpers. +- **ModuleToast** — Toast entry of the module-notifications HUD element: title, message, type, creation time, fade animation and dismissed flag. +- **MouseAccessor** — Reflectively invokes Mouse.onMouseButton to simulate mouse button presses and releases. +- **MsdfFont** — MSDF atlas font loaded from assets/prestige/font/.json/.png; measures text and queues glyph quads into the deferred 2D draw queue. +- **Notification** — Animated on-screen notification (icon, title, message, timed progress bar) drawn and stacked by the notification manager. +- **NotificationTypeSwitchMap** — Compiler-generated switch map over NotificationType. +- **OutlineShader** — ESP post shader for the 'Normal' mode: composites the entity mask with outline.frag (glowing outline with optional fill). +- **PearlThrowSolution** — Best pearl throw found by DiagonalPearlCatch: throw tick, yaw/pitch, closest miss distance and the target-path tick of closest approach. +- **PostShader** — Base class of the ESP post-processing shaders: entity models are drawn into an offscreen mask texture, which is then composited onto the screen by a full-screen pass with shader-specific uniforms. +- **ProjectionMatrixAccessor** — Reflectively calls ProjectionMatrix2.getMatrix(width, height). +- **QueuedSlotSelect** — Deferred hotbar slot selection run by the rotation manager, limited to one slot switch per tick (re-queues itself otherwise). +- **QueuedSwapClick** — Inventory SWAP click (slot, hotbar button, owner, completion callback) queued by PacketQueue until it can be sent. +- **RainbowOutlineShader** — ESP post shader that composites the entity mask with rainbow_outline.frag (animated rainbow outline and glow). +- **RandomUtil** — Shared Random plus helpers for a random float/int within a range (used for humanised delays, chances and jitter). +- **Render2D** — Static 2D/overlay render helpers: per-frame projection/model-view/camera matrices and viewport, world-to-screen projection, tick interpolation, wave colors and convenience draw calls (rects, circles, textures, item icons). +- **RenderCallback** — Listener type of RenderEvents, called with the per-pipeline buffer cache and the camera matrices. +- **RenderCore** — Core of the custom renderer: GL-resource Cleaner, global BufferSource, render-thread task queue and executor, frame counter, main-framebuffer queries, camera-relative transforms, and dispatch of the world/HUD render events. +- **RenderEvents** — Fabric events fired by the render hooks (2D/HUD pass, world pass, and after the HUD pass), each receiving the per-pipeline buffer cache and the camera matrices. +- **RenderLayerAccessor** — Reflective accessor for a RenderLayer's renderSetup field. +- **RenderLayerUtil** — Helpers for the entity-outline ESP hook: reads the GL texture id of a vanilla RenderLayer and tees a model's VertexConsumer into the ESP outline shader's buffer. +- **RenderStateElement** — One piece of GL pipeline state of a DrawMode (target framebuffer, shader, capability toggle, blend, depth mask/func, scissor, uniforms): configures the pass builder, applies before the draw and restores afterwards; static factories create the standard elements. +- **Rotation** — Yaw/pitch rotation, flagged as clamped when the yaw step towards the target was limited by the maximum rotation speed. +- **RotationProvider** — Implemented by modules that want to control the player's rotation; the rotation manager polls registered providers by priority every tick. +- **RoundedOutlineShader** — Draws anti-aliased rounded-rectangle outlines (rounded_outline_pos_color.frag) on the 2D draw queue, emitting only the four edge strips when the rectangle is large enough. +- **RoundedRectShader** — Draws filled anti-aliased rounded rectangles (rounded_pos_color shader, SDF corners) on the 2D draw queue, caching one DrawMode per corner-radius set. +- **RoundedTextureShader** — Draws textures inside rounded rectangles with a tint blend mode (rounded_texture shader): 2D icons/sprite regions on the draw queue and world-space (optionally per-corner tinted) quads through the BufferSource. +- **ScheduledClick** — Simulated mouse click scheduled by AimManager: button, creation time, press delay, hold duration and whether it is already pressed. +- **Shader** — Linked OpenGL shader program handle (freed via the Cleaner) with cached projMat/viewMat uniform locations and uniform helpers. +- **ShaderBase** — Abstract base for renderers that own one GLSL program loaded from a vertex/fragment resource pair; also exposes the client and a start timestamp for time-based uniforms. +- **ShaderCompiler** — Compiles GLSL vertex/fragment sources from the classpath and links them into a Shader program (SPIR-V path removed). +- **ShapeRenderer** — Static shape-drawing API: world-space paths, discs, glow rings and boxes written into the BufferSource, and 2D triangles, rects, (gradient) rounded rects, circles and rings queued on the shared 2D draw queue; also ARGB->ABGR colour helpers. +- **SilentRotationManager** — Server-side (silent) rotation manager (Prestige.o): collects rotation requests from registered providers, applies them to movement packets/travel/jump and item-use packets, supports an owner-held rotation lock, tracks whether an action was already performed this tick and runs scheduled tasks and hotbar switches on the next tick. +- **SnapGuide** — HUD-editor snap guide line along one axis at a fixed coordinate. +- **StopWatch** — Millisecond stopwatch used for click/place delays (fixed or randomized via a RangeSetting). +- **StorageOutlineRenderer** — StorageESP glow effect: renders storage-block geometry into an offscreen mipmapped framebuffer and composites it onto the screen with the storage_outline post shader (quality/radius/fill). +- **SwapBackTracker** — Global owner-tracked record of the hotbar slot that was selected before a module started swapping, so the owning module can swap back when it is done. +- **TextureLoader** — Loads PNG/JPEG classpath resources into GL textures via STBImage, with optional mipmaps and anisotropic filtering. +- **ThreatAssessment** — Most dangerous nearby damage source (crystal/anchor/obsidian/mace) with raw and confidence-weighted damage, used for totem decisions. +- **ToggleAnimation** — Time-based eased animation between an off and an on state that reverses smoothly from its current progress when toggled. +- **VertexArray** — Cleaner-managed OpenGL vertex array object that tracks and updates its vertex attribute bindings. +- **VertexLayout** — Vertex layout: ordered attribute elements with computed byte offsets and stride; creates per-attribute buffer bindings for a VAO. +- **VertexLayouts** — Predefined vertex layouts matching the shaders (position, position+colour, +uv, +normal, rounded-rect uv/size/colour, fullscreen uv). +- **VirtualKeyMapper** — Translates Windows virtual-key codes (how keybinds are stored) into GLFW key codes. + +## `hud` — Draggable HUD widgets. + +- **CartHelperElement** — Cart-PvP HUD panel showing trigger readiness (rail, TNT minecarts and a bow or charged crossbow in the hotbar), the crossbow charge state/bar and the TNT-minecart stock. +- **CooldownIndicatorElement** — Themed cooldown bar under the crosshair that replaces the vanilla attack indicator and shows attack cooldown, item cooldowns and bow/crossbow/trident charge with fade and ready-flash animations. +- **CrosshairElement** — Custom crosshair widget that cancels the vanilla crosshair and draws an accent-colored dot and pulsing ring that flashes white while the aimed-at entity is hurt. +- **FPSElement** — HUD panel showing the client's frame rate with a smoothed, color-graded value and a 24-sample history bar graph. +- **HudElement** — Base class of every draggable HUD widget: stores its name, enabled toggle and screen rectangle, resolves an edge/center anchor + offset layout (persisted in the config), and implements the HUD-editor row, dragging with snap guides and keyboard nudging. +- **KeybindsElement** — HUD panel listing every enabled module that has a keybind, each row showing the key name and module name with fade-in/out animations. +- **LatencyElement** — HUD panel showing the player's own ping from the tab list with a smoothed, color-graded value and a 24-sample history bar graph. +- **ModuleListElement** — Array-list HUD widget showing all enabled modules sorted by name width, with slide/fade animations and a brief highlight when a module gets enabled. +- **ModuleNotificationsElement** — Toast-notification HUD widget (global instance) that stacks module toggle and module status messages with type icons, colors and a lifetime bar. +- **OffscreenArrowElement** — Draws a glowing arrowhead around the screen center pointing toward the closest player while that player is outside the view cone. +- **PotionDisplayElement** — HUD panel listing the player's active status effects with roman-numeral level badges, remaining duration (blinking when low) and a duration progress bar. +- **ResourcesElement** — HUD panel counting gapples, totems, end crystals and XP bottles in the inventory and raising a warning toast when a count drops below its threshold. +- **TPSElement** — HUD panel estimating the server tick rate from the interval between WorldTimeUpdate packets, with a smoothed, color-graded value and a 24-sample history graph. +- **TargetElement** — Target HUD card for the current combat target (or yourself in the editor) with skin face, name, distance, armor/held items and an animated health bar with damage trail and hurt flash. +- **TimeElement** — HUD clock panel showing the weekday, HH:MM with a blinking colon, small seconds and a bar tracking progress through the current minute. +- **WatermarkElement** — HUD watermark panel with the client logo and a pulsing accent-colored "Prestige Client" title. +- **WebsiteElement** — HUD panel showing the client website address in a pulsing accent color. + +## `gui` — ClickGUI / HUD-editor screens. + +- **BaseScreen** — Minimal Minecraft Screen with an empty title that Prestige's own screens extend. +- **ClickGuiScreen** — Placeholder Minecraft screen for the ClickGUI: on first render it opens the native GUI overlay and it closes itself (and the overlay) when the overlay is dismissed or the screen is closed. +- **HandledScreenAccessor** — Reflective accessor that reads a HandledScreen's private focusedSlot (the inventory slot under the mouse). +- **HudEditorScreen** — Owner of all HUD elements and the HUD editor screen: renders enabled elements in-game and, while editing, draws the grid, the draggable element-list panel, snap guide lines and key hints, handling dragging, toggling, arrow-key nudging and layout reset. +- **LockedInventoryScreen** — InventoryScreen variant that ignores mouse clicks and hotbar number keys, opened by AutoTotem so the player cannot interfere with its scripted totem slot clicks. + +## `config` — Config (de)serialisation and resource loading. + +- **ClasspathResource** — Normalized classpath resource path (e.g. a font's .json/.png under assets/prestige) that can open itself as an InputStream from the mod jar. +- **ClasspathResourcePack** — Stub ResourcePack whose static factories wrap mod-jar classpath files as Minecraft Resources/InputSuppliers, used by resource-manager mixins to inject Prestige shaders and assets. +- **ConfigManager** — Serializes the Menu, every module's settings/enabled state and the HUD layout into a JSON snapshot and applies such snapshots back (size/depth checks, lifecycle rollback, unknown-key warnings), reporting results as a config toast. +- **MsdfFontMetrics** — Font-wide metrics (em size, line height, ascender/descender, underline position/thickness) parsed from the 'metrics' block of an msdf-atlas-gen font JSON for the MSDF text renderer. +- **MsdfGlyph** — One glyph entry of an msdf-atlas-gen font JSON: its unicode code point, advance, and plane (layout) and atlas (texture) bounds used to build glyph quads. + +## `reflect` — Reflection/MethodHandle access to private Minecraft members. + +- **BoundField** — A FieldAccessor bound to one target instance, exposing get() and set(value). +- **CameraAccessor** — Wraps a Camera and calls its protected setPos/setRotation through statically cached, remapped MethodAccessors. +- **FieldAccessor** — Fast get/set accessor for one resolved (possibly private/final) field using Unsafe offsets, a VarHandle or plain reflection, with factories that remap Yarn field names to runtime names and can bind it to an instance. +- **FieldCacheKey** — Cache key (owner class, Yarn field name, field type, target runtime class) for remapped FieldAccessor lookups. +- **MappedField** — Field handle resolved once from a Yarn field name (kept in static finals) offering fast Unsafe/VarHandle/reflective setDouble/setFloat/set/get, falling back to a per-call remapped lookup when resolution failed. +- **MethodAccessor** — Invoker for a resolved (possibly private) method through a cached MethodHandle spreader, with factories that remap Yarn method names to runtime names, cache the results and bind to an instance. +- **ReflectionBase** — Shared reflection core for the accessors: obtains sun.misc.Unsafe, forces accessibility, strips final modifiers, parses type descriptors and caches resolved fields and methods across class hierarchies. +- **ResolvedField** — Immutable result of resolving a field: the reflective Field, whether it is static, its Unsafe static base and offset, and an optional VarHandle. +- **ResolvedMethod** — Immutable result of resolving a method: the reflective Method, its unreflected MethodHandle and whether it is static. + +## `data` — Small records and value holders. + +- **AnchorCandidate** — AutoAnchor candidate anchor position with placement click, charge count, distances to the target and a heuristic score. +- **AnchorCatchPearlLanding** — AnchorPearlCatch prediction of where an enemy ender pearl lands and in how many ticks. +- **AuraCartPlacement** — CartAura record of a TNT minecart the player placed (position and time). +- **AutoAnchorPlaceTarget** — AutoAnchor placement click: the neighbouring block to click and the hit vector on its face. +- **AutoAnchorPlan** — AutoAnchor plan: chosen anchor position with its placement click and an optional blocker that shields the player. +- **BlendFuncState** — Render-state element that enables blending with a custom separate blend function and restores the blend flag afterwards. +- **BlendToggleState** — Render-state element that enables standard alpha blending (or disables blending) for a pass and restores it afterwards. +- **CameraMatrices** — Matrices for a render pass: projection, model-view and the camera (null for the 2D HUD pass). +- **CartBlockerPlacement** — AutoSafeCart candidate block placement that shields the player from a TNT minecart, with the resulting self damage. +- **CartCatchPearlLanding** — CartPearlCatch prediction of where an enemy ender pearl lands and in how many ticks. +- **CartThreat** — AutoSafeCart threat: a TNT minecart, where it would explode, its horizontal speed and the damage it would deal. +- **DelayedPacket** — Backtrack packet held back until its release time. +- **DepthFuncState** — Render-state element that sets glDepthFunc for a pass and restores the previous function afterwards. +- **DepthMaskState** — Render-state element that sets glDepthMask for a pass and restores the previous value afterwards. +- **DimensionChunkKey** — OreSimulation map key: dimension registry key plus packed chunk position. +- **DrawBatchKey** — Key that groups queued 2D draws into one batch: optional scissor rectangle and draw mode. +- **DrawModeBuffers** — Per-draw-mode GPU resources of the batching buffer source: vertex/index buffers, vertex array and the builder currently writing into them. +- **ExplosionDamageKey** — Per-tick cache key for explosion damage calculations (target, explosion position and calculation options). +- **FramebufferBindState** — Render-state element that selects the target framebuffer (via an id supplier) for a pass. +- **GlCapabilityState** — Render-state element that glEnables/glDisables a capability (cull face, depth test, ...) for a pass and restores it afterwards. +- **KeybindListEntry** — Row of the keybinds HUD element: module, bound key name and fade-in alpha. +- **MeshInfo** — Size of a built mesh: vertex layout, vertex count and index count. +- **MethodLookupKey** — Cache key for reflective method accessors (owner, name, return type, parameter types, receiver class). +- **MsdfFontState** — Render-state element that binds an MSDF font atlas texture and uploads its unitRange uniform. +- **OutlineCaptureConsumer** — VertexConsumer that copies positions and UVs of vanilla geometry into the outline shader mesh with a fixed mask color. +- **PearlCatchAnchorPlan** — AnchorPearlCatch plan: where to place/charge the anchor near the pearl landing and an optional blocker that shields the player. +- **PearlCatchPlaceTarget** — AnchorPearlCatch placement click: the neighbouring block to click and the hit vector on its face. +- **PearlFollowLanding** — PearlFollow simulation result of a pearl throw: landing position, flight ticks and peak height. +- **PearlThrowOption** — PearlFollow candidate pearl throw: pitch, landing distance to the followed pearl, flight time and peak height. +- **PendingModuleActivation** — Config loading: a module whose saved Enabled state is applied after all settings have been loaded. +- **ProgramUniforms** — Fluent uniform setter for a GL shader program with a per-program cache of uniform locations. +- **QueuedCrystalAttack** — AutoCrystal crystal attack queued for a later tick together with the rotation it was aimed with. +- **QueuedDraw** — A queued 2D draw call with the depth value that keeps submission order when batches are flushed. +- **QueuedRenderPass** — A configured render pass queued in a vertex buffer together with the callback that draws into it. +- **RoundedOutlineKey** — Cache key for rounded-outline draw modes: per-corner radii and outline thickness. +- **SafeCartPlacement** — AutoSafeCart record of a TNT minecart the player placed (position and time) so own carts are not treated as threats. +- **ScissorState** — Render-state element that sets (or disables) the GL scissor rectangle for a pass and restores the scissor flag afterwards. +- **ShaderBindState** — Render-state element that selects the shader program used by a pass. +- **StorageBlockMarker** — StorageESP marker for one storage block: block coordinates and the packed ABGR color to draw it with. +- **TrajectoryPath** — Simulated projectile path for the Trajectories module: the points and whether the projectile hit something. +- **UniformCallbackState** — Render-state element that hands the pass shader program's uniform setter to a callback. +- **VertexAttributeBinding** — Binding of one vertex attribute to a GPU buffer (element format, stride and byte offset) inside a vertex array object. +- **VertexElement** — One element of a vertex layout: component count, GL component type, bytes per component and normalization flag. + +## `type` — Enums. + +- **AnchorCatchState** — State machine of the AnchorPearlCatch module. +- **AnimationMode** — Animation style of the HitEffect module. +- **ArmorState** — Armor swap state of the AutoTotem module (none, equip, restore). +- **AutoAnchorState** — State machine of the AutoAnchor module. +- **AutoCartState** — State machine of the AutoCart module. +- **BlendMode** — Color blend mode for textures/shaders (multiply, overlay, replace, add, screen). +- **CartCatchState** — State machine of the CartPearlCatch module. +- **CartIgnitionMode** — How AutoCart ignites the TNT minecart: wait passively or shoot it with a bow. +- **CobwebPlaceState** — Placement progress of the CobwebPlacer module. +- **DiagonalPearlState** — State machine of the DiagonalPearlCatch module. +- **DoubleAnchorState** — State machine of the DoubleAnchor module. +- **Easing** — Standard easing curves (sine, cubic, quad, ..., back) applied to a 0..1 progress value. +- **EventPhase** — Phase of an event: PRE, NONE or POST. +- **FastPearlCatchStage** — Stages of the FastPearlCatch module. +- **GlPrimitive** — Primitive type of a mesh draw (quads, triangles, fan, line strip, lines). +- **GuideAxis** — Axis of a HUD-editor snapping guide line. +- **HitFlickState** — State machine of the HitFlick module (idle, flick, attack). +- **HudAlignment** — Horizontal/vertical alignment of a HUD element (start, center, end). +- **HudAnchor** — Screen corner a HUD element is anchored to. +- **NotificationType** — Notification severity with its accent color. +- **ObbyCrystalState** — State machine of the AutoObbyCrystal module. +- **ScoopState** — State machine of the AntiWeb module (place water, wait, scoop it back). +- **ShaderMode** — ESP outline style and the post-processing shader that renders it. +- **SwapQueueResult** — Outcome of an inventory swap request: done immediately, queued or rejected. +- **ThreatType** — Kinds of incoming damage threats (crystal, anchor, obsidian+crystal, mace) with a confidence weight for totem prediction. +- **XbowCartState** — State machine of the XbowCart module. + +## `social` — Friends and Mojang profile lookups. + +- **FriendManager** — Stores friend names (teammates count as friends) and lists online non-friend players. +- **MojangApi** — Looks up player UUIDs and signed game profiles (with skin properties) from the Mojang web APIs. + +## `input` — Mouse/keyboard input handling. + +- **KeybindManager** — Turns key and mouse-button events into module keybind toggles, opens the click GUI on the menu key (or when the native side requests it) and applies a pending GUI scale change each frame. + +## `annotation` — Marker annotations left by the original build. + +- **Chainable** — Marker annotation for API methods that the native module calls/chains into. +- **NativeId** — Annotation carrying the UUID that binds a Java stub to a function of the native module. + +## `engine` — Loader glue: applies the ClassTransform hooks from inside Sponge Mixin (written for the open-source build). + +- **EngineDev** +- **EnginePlugin** +- **EngineState** + +## `ui` — Dear ImGui ClickGUI and the reflection bridge to the client (written for the open-source build). + +- **ConfigsPage** +- **CreateConfigPage** +- **Data** +- **DetailPage** +- **DevCmd** +- **Glow** +- **Input** +- **KeybindsPage** +- **Lib** +- **LocalConfigs** +- **ModulesPage** +- **SettingsPage** +- **SocialsPage** +- **Theme** +- **ThemesPage** +- **Ui** +- **WidgetsPage** + +## `ui/bridge` + +- **Bootstrap** +- **Bridge** +- **DumpHook** + +## `ui/mc` + +- **Entry** +- **Icons** +- **Overlay** +- **Skid** + +## `ui/mixin` + +- **EventBusStatsMixin** +- **KeyboardHandlerMixin** +- **MouseHandlerMixin** +- **RenderSystemMixin** + +`engine/mixin/I00..I41` and `N00..N41` are empty anchor mixins (one per hooked Minecraft class, intermediary/named); `EnginePlugin` addresses them by index, so they keep numeric names. diff --git a/docs/REFACTOR.md b/docs/REFACTOR.md new file mode 100644 index 0000000..8252760 --- /dev/null +++ b/docs/REFACTOR.md @@ -0,0 +1,50 @@ +# Readability refactor + +The decompiled tree was still Zelix-KlassMaster-shaped: methods took a packed `Object[]` plus a fake `long` key, +every class carried unused reflection helpers, and almost every identifier was `a`, `b_float____`, `var12` or +`RenderHelper27`. This pass turned it into normal, readable Java without changing behaviour. + +## What changed + +**Structure** (done with a javac-driven tool, so every call site was resolved by the compiler, not by text matching): +- `m(Object[] a) { T x = (T) a[0]; long key = (Long) a[1]; ... }` called as `m(new Object[]{v, key})` became + `m(T x)` called as `m(v)` — 1,488 method families, 7,262 call sites; constructors lost their trailing key too. +- The key plumbing (`long k2 = key ^ 0x...L;`, `var1 = 0L;`) is gone (~5,300 statements). +- Removed: ~1,500 unused per-class reflection helpers, 445 no-op string-table calls (`Event.b();`), 1,302 redundant + casts (`(Float) floatSetting.getValue()`), unused locals/imports, and 30 dead classes — including the obfuscator's + key-generator runtime that an earlier pass had misnamed `BufferBuilder`/`RenderHelper33`/`VertexSink`. +- Decompiler stack temporaries (`float var10002 = ...; f(var10002)`) were inlined back into expressions wherever the + evaluation order provably stays the same; constant tables recovered by the previous pipeline were folded into literals. + +**Names**: ~276 classes, ~2,400 fields, ~2,200 method families (overrides renamed together) and ~8,300 locals/parameters +now have descriptive names. Module setting fields are named after their UI display names, event classes after the game +hook that fires them, `@Subscribe` handlers `on`, hook handlers after the hooked method and injection point. +`docs/CODE_MAP.md` describes every class; `docs/rename_log.tsv` maps each old class/field/method name to its new one. +(`docs/classmap*.tsv`, `docs/mapping.tsv` and `docs/notes/` describe the tree *before* this refactor.) + +**Runtime contracts updated alongside** (these bind by string, so the compiler cannot check them): +- `prestige_ui/manifest_live.json` — setting `field` names rewritten for all 686 settings. +- `ui/bridge/Bridge` — calls `Module.toggle()` without the old packed argument. +- `ui/mixin/EventBusStatsMixin` — targets `post(Event)` instead of the old `post(Object[])` descriptor. +- `ui/DevCmd` — uses compile-checked references instead of reflection on obfuscated names. +- `prestige-engine/transformers.list` — three empty `MinecraftClient` transformers removed, the remaining one renamed. + +## Bug fixed: modules switching off when the menu closes +The client's keybind flag means **hold** (active only while the key is down, switched off whenever a screen opens), but +the previous pipeline had named it `toggleMode` and the ImGui menu was built on that name, so it showed the flag as +"Toggle" and set it when a key was bound. Every key bound in the menu became a hold bind; closing the menu with the menu +key (whose release briefly opens the legacy `ClickGuiScreen`) then switched those modules off. The flag is now +`KeybindSetting.holdMode` and `ui/bridge/Bridge` inverts it for the menu. The config format (`key.hold`) is unchanged; +binds saved while the bug existed show as "Hold" and can be switched back to "Toggle" in the menu. + +## How it was verified +- Every pass recompiled the full tree with 0 errors; `gradlew build` succeeds. +- Each rename pass re-attributed the tree and compared all ~122,000 references: every one still resolves to the same + declaration as before (no shadowing, overload capture or accidental overrides). +- A contract check loads the compiled classes and verifies every reflective name the UI bridge, `Bootstrap`, the manifest, + the mixin configs, the transformer list and the Fabric entrypoints rely on. + +## Known leftovers +- Raw types (`List`, `Set`, `Map`) and some casts on lambdas are decompiler output and were left as they are. +- A few names are best guesses where the original code is ambiguous or partly stripped (e.g. the empty `Native` stubs). +- `engine/mixin/I00..N41` keep numeric names on purpose: `EnginePlugin` generates those names by index. diff --git a/docs/rename_log.tsv b/docs/rename_log.tsv new file mode 100644 index 0000000..0f2dc29 --- /dev/null +++ b/docs/rename_log.tsv @@ -0,0 +1,4905 @@ +# kind old key new name (appended by each rename pass) +C dev.zprestige.prestige.render.RenderHelper27 StopWatch +F dev.zprestige.prestige.render.RenderHelper27#a startTime +M dev.zprestige.prestige.render.RenderHelper27#a(float) hasElapsed +M dev.zprestige.prestige.render.RenderHelper27#a_float__________________() elapsed +M dev.zprestige.prestige.render.RenderHelper27#b(dev.zprestige.prestige.RangeSetting) hasElapsedRandom +M dev.zprestige.prestige.render.RenderHelper27#a_void_____________________() reset +M dev.zprestige.prestige.render.StopWatch#elapsed() getElapsed +C dev.zprestige.prestige.combat.AimManager ClickScheduler +C dev.zprestige.prestige.combat.AutoArmorHelper EquipmentSlotSwitchMap +C dev.zprestige.prestige.combat.CombatHelper PotionDisplayEntry +C dev.zprestige.prestige.combat.CombatHelper2 JumpCooldownAccessor +C dev.zprestige.prestige.combat.CombatHelper3 ItemUseCooldownAccessor +C dev.zprestige.prestige.combat.CombatUtil TargetSelector +C dev.zprestige.prestige.combat.CombatUtil2 ThreatAssessor +C dev.zprestige.prestige.combat.DamageUtil ExplosionDamageCalculator +C dev.zprestige.prestige.combat.NameTags NameTagEntry +C dev.zprestige.prestige.combat.NameTagsUtil HudStyle +C dev.zprestige.prestige.combat.PearlFollowHelper PearlFollowSimulatedPearl +C dev.zprestige.prestige.combat.PearlTrajectoryHelper PearlTrajectorySimulatedPearl +C dev.zprestige.prestige.combat.RotationManager VisualRotationManager +C dev.zprestige.prestige.combat.TargetManager BotFilter +C dev.zprestige.prestige.combat.TrajectoriesHelper TrajectoriesSimulatedPearl +C dev.zprestige.prestige.combat.TwoDESPHelper TwoDEspTarget +C dev.zprestige.prestige.config.ConfigHelper MsdfFontMetrics +C dev.zprestige.prestige.config.ConfigHelper2 MsdfGlyph +C dev.zprestige.prestige.config.ConfigHelper3 ClasspathResource +C dev.zprestige.prestige.config.ConfigUtil ClasspathResourcePack +C dev.zprestige.prestige.data.BoolData DepthMaskState +C dev.zprestige.prestige.data.BoolData2 BlendToggleState +C dev.zprestige.prestige.data.BoolData3 TrajectoryPath +C dev.zprestige.prestige.data.BoolIntData BlendFuncState +C dev.zprestige.prestige.data.BoolIntData2 ScissorState +C dev.zprestige.prestige.data.BufferData DrawModeBuffers +C dev.zprestige.prestige.data.BufferQuadIntData VertexAttributeBinding +C dev.zprestige.prestige.data.ConsumerData OutlineCaptureConsumer +C dev.zprestige.prestige.data.ConsumerData2 UniformCallbackState +C dev.zprestige.prestige.data.DoubleBoolData ExplosionDamageKey +C dev.zprestige.prestige.data.DoubleData CartBlockerPlacement +C dev.zprestige.prestige.data.DrawFloatData QueuedDraw +C dev.zprestige.prestige.data.FloatData QueuedCrystalAttack +C dev.zprestige.prestige.data.FloatDoubleIntData PearlThrowOption +C dev.zprestige.prestige.data.FontFloatData MsdfFontState +C dev.zprestige.prestige.data.IntBoolData VertexElement +C dev.zprestige.prestige.data.IntBoolData2 GlCapabilityState +C dev.zprestige.prestige.data.IntData ProgramUniforms +C dev.zprestige.prestige.data.IntData2 DepthFuncState +C dev.zprestige.prestige.data.IntData3 StorageBlockMarker +C dev.zprestige.prestige.data.IntSupplierData FramebufferBindState +C dev.zprestige.prestige.data.LongData DimensionChunkKey +C dev.zprestige.prestige.data.LongData2 SafeCartPlacement +C dev.zprestige.prestige.data.LongData3 DelayedPacket +C dev.zprestige.prestige.data.LongData4 AuraCartPlacement +C dev.zprestige.prestige.data.MatrixCameraData CameraMatrices +C dev.zprestige.prestige.data.ModuleStringBoolData PendingModuleActivation +C dev.zprestige.prestige.data.ModuleStringFloatData KeybindListEntry +C dev.zprestige.prestige.data.PassConsumerData QueuedRenderPass +C dev.zprestige.prestige.data.ShaderData ShaderBindState +C dev.zprestige.prestige.data.StringData MethodLookupKey +C dev.zprestige.prestige.data.VecBoolData PearlCatchAnchorPlan +C dev.zprestige.prestige.data.VecBoolData2 AutoAnchorPlan +C dev.zprestige.prestige.data.VecBoolIntData AnchorCandidate +C dev.zprestige.prestige.data.VecData PearlCatchPlaceTarget +C dev.zprestige.prestige.data.VecData2 AutoAnchorPlaceTarget +C dev.zprestige.prestige.data.VecDoubleData CartThreat +C dev.zprestige.prestige.data.VecIntData AnchorCatchPearlLanding +C dev.zprestige.prestige.data.VecIntData2 CartCatchPearlLanding +C dev.zprestige.prestige.data.VecIntDoubleData PearlFollowLanding +C dev.zprestige.prestige.data.VectorData DrawBatchKey +C dev.zprestige.prestige.data.VectorFloatData RoundedOutlineKey +C dev.zprestige.prestige.data.VertexIntData MeshInfo +C dev.zprestige.prestige.event.BlockBoolEvent BlockVisibilityEvent +C dev.zprestige.prestige.event.BlockPosBlockEvent BlockStateUpdateEvent +C dev.zprestige.prestige.event.BoolEvent SwingHandEvent +C dev.zprestige.prestige.event.BoolPositionEvent ShieldRenderSettingsEvent +C dev.zprestige.prestige.event.ColorEvent SkyColorEvent +C dev.zprestige.prestige.event.DoubleEvent CameraPositionEvent +C dev.zprestige.prestige.event.DoubleEvent2 MouseUpdateEvent +C dev.zprestige.prestige.event.DoubleEvent3 VelocityUpdateEvent +C dev.zprestige.prestige.event.EntityEvent AttackEntityEvent +C dev.zprestige.prestige.event.EntityEvent2 BoundingBoxEvent +C dev.zprestige.prestige.event.EntityEvent3 EntityAddRemoveEvent +C dev.zprestige.prestige.event.EntityEvent4 PlayerRenderStateEvent +C dev.zprestige.prestige.event.EntityEvent5 LabelTextEvent +C dev.zprestige.prestige.event.EntityEvent6 RenderLabelEvent +C dev.zprestige.prestige.event.EventManager ModuleStateSync +C dev.zprestige.prestige.event.FloatColorEvent FogEvent +C dev.zprestige.prestige.event.FloatDoubleEvent ExplosionEvent +C dev.zprestige.prestige.event.FloatEvent CameraRotationEvent +C dev.zprestige.prestige.event.FloatEvent2 SendMovementPacketsEvent +C dev.zprestige.prestige.event.FloatEvent3 TravelEvent +C dev.zprestige.prestige.event.FloatEvent4 ReachEvent +C dev.zprestige.prestige.event.FloatEvent5 SwingArmEvent +C dev.zprestige.prestige.event.FloatPositionEvent MovementYawEvent +C dev.zprestige.prestige.event.IntEvent FloatingItemTickEvent +C dev.zprestige.prestige.event.IntEvent2 KeyEvent +C dev.zprestige.prestige.event.IntEvent3 HandSwingDurationEvent +C dev.zprestige.prestige.event.IntEvent4 MouseButtonEvent +C dev.zprestige.prestige.event.LivingEvent ShieldBreakEvent +C dev.zprestige.prestige.event.LongEvent TimeOfDayEvent +C dev.zprestige.prestige.event.PacketEvent PacketReceiveEvent +C dev.zprestige.prestige.event.PacketEvent2 PacketSendEvent +C dev.zprestige.prestige.event.PlayerEvent BotCheckEvent +C dev.zprestige.prestige.event.PlayerStringEvent HealthIndicatorEvent +C dev.zprestige.prestige.event.StringEvent SkinTexturesEvent +C dev.zprestige.prestige.event.StringEvent2 TextReplaceEvent +C dev.zprestige.prestige.event.TickEvent FireOverlayEvent +C dev.zprestige.prestige.event.TickEvent10 HandleBlockBreakingEvent +C dev.zprestige.prestige.event.TickEvent11 ItemBobbingEvent +C dev.zprestige.prestige.event.TickEvent12 AutoAttackEvent +C dev.zprestige.prestige.event.TickEvent13 ChunkDataEvent +C dev.zprestige.prestige.event.TickEvent14 RenderCrosshairEvent +C dev.zprestige.prestige.event.TickEvent15 ExtendedReachAttackEvent +C dev.zprestige.prestige.event.TickEvent16 KeyboardInputTickEvent +C dev.zprestige.prestige.event.TickEvent17 RenderStatusEffectsEvent +C dev.zprestige.prestige.event.TickEvent18 LoadingScreenEvent +C dev.zprestige.prestige.event.TickEvent19 ClientTickEvent +C dev.zprestige.prestige.event.TickEvent2 FullBrightEvent +C dev.zprestige.prestige.event.TickEvent20 HurtCamEvent +C dev.zprestige.prestige.event.TickEvent21 AddParticleEvent +C dev.zprestige.prestige.event.TickEvent22 FrustumSetupEvent +C dev.zprestige.prestige.event.TickEvent23 RainGradientEvent +C dev.zprestige.prestige.event.TickEvent24 FrameEvent +C dev.zprestige.prestige.event.TickEvent25 Render2DEvent +C dev.zprestige.prestige.event.TickEvent26 OverlayMessageEvent +C dev.zprestige.prestige.event.TickEvent27 Render3DEvent +C dev.zprestige.prestige.event.TickEvent28 ResetAttackCooldownEvent +C dev.zprestige.prestige.event.TickEvent29 ResolutionChangedEvent +C dev.zprestige.prestige.event.TickEvent3 GameJoinEvent +C dev.zprestige.prestige.event.TickEvent30 WorldRendererReloadEvent +C dev.zprestige.prestige.event.TickEvent31 RenderScoreboardEvent +C dev.zprestige.prestige.event.TickEvent4 PreTickEvent +C dev.zprestige.prestige.event.TickEvent5 DoItemUseEvent +C dev.zprestige.prestige.event.TickEvent6 AntiBotQueryEvent +C dev.zprestige.prestige.event.TickEvent7 DoAttackEvent +C dev.zprestige.prestige.event.TickEvent8 ScreenBackgroundEvent +C dev.zprestige.prestige.gui.GuiHelper HandledScreenAccessor +C dev.zprestige.prestige.gui.InventoryScreenOverride LockedInventoryScreen +C dev.zprestige.prestige.input.MouseManager KeybindManager +C dev.zprestige.prestige.inventory.ArmorUtil AnchorUseGuard +C dev.zprestige.prestige.inventory.InventoryHelper HeldItemRendererAccessor +C dev.zprestige.prestige.inventory.InventoryUtil2 PlayerInteractions +C dev.zprestige.prestige.inventory.InventoryUtil3 DeathLootDetector +C dev.zprestige.prestige.inventory.ItemESPHelper ItemEspLabel +C dev.zprestige.prestige.inventory.ItemLabel EnchantmentLabel +C dev.zprestige.prestige.math.AutoCrystalHelper AutoCrystalRenderer +C dev.zprestige.prestige.math.AutoObbyCrystalHelper ObbyCrystalCandidate +C dev.zprestige.prestige.math.HitEffectHelper HitParticle +C dev.zprestige.prestige.math.JumpCirclesHelper JumpCircle +C dev.zprestige.prestige.math.MathHelper2 MotionState +C dev.zprestige.prestige.math.MathHelper3 Vec3dMutator +C dev.zprestige.prestige.math.MathHelper4 UiMath +C dev.zprestige.prestige.math.MathHelper6 TexturedDrawModeKey +C dev.zprestige.prestige.math.MathUtil LegacyParticlePhysics +C dev.zprestige.prestige.math.MathUtil2 PopParticlePhysics +C dev.zprestige.prestige.math.MathUtil3 BlockChangeTracker +C dev.zprestige.prestige.math.MathUtil4 RenderCacheUtil +C dev.zprestige.prestige.math.MathUtil5 SettingValueParser +C dev.zprestige.prestige.math.PearlTrajectoryHelper PearlLandingMarker +C dev.zprestige.prestige.math.Point3D TwoDEspBox +C dev.zprestige.prestige.math.TrailsHelper TrailTracker +C dev.zprestige.prestige.math.TrailsHelper2 TrailMark +C dev.zprestige.prestige.math.WeatherHelper WeatherParticle +C dev.zprestige.prestige.network.NetworkHelper2 InteractItemPacketAccessor +C dev.zprestige.prestige.network.NetworkUtil PacketSender +C dev.zprestige.prestige.network.NetworkUtil2 BlockChangeListener +C dev.zprestige.prestige.network.PacketManager SilentSlotManager +C dev.zprestige.prestige.network.PacketQueue InventorySwapQueue +C dev.zprestige.prestige.network.PingManager TotemPopManager +C dev.zprestige.prestige.reflect.FieldSpec ResolvedField +C dev.zprestige.prestige.reflect.FieldValue BoundField +C dev.zprestige.prestige.reflect.MethodHandleCache CameraAccessor +C dev.zprestige.prestige.reflect.MethodSpec ResolvedMethod +C dev.zprestige.prestige.reflect.MethodValue MappedField +C dev.zprestige.prestige.reflect.ReflectDescriptor FieldCacheKey +C dev.zprestige.prestige.render.AutoTotemHelper DamageSample +C dev.zprestige.prestige.render.ColorUniform CornerRadiiUniform +C dev.zprestige.prestige.render.ColorValue CornerRadii +C dev.zprestige.prestige.render.DrawContext GlRenderPassBuilder +C dev.zprestige.prestige.render.DrawMode DrawPipeline +C dev.zprestige.prestige.render.ESPHelper EntityTypeSet +C dev.zprestige.prestige.render.ESPUtil EspShaderManager +C dev.zprestige.prestige.render.Font MsdfFont +C dev.zprestige.prestige.render.FontRenderer GlTextureHandle +C dev.zprestige.prestige.render.Framebuffer GlFramebuffer +C dev.zprestige.prestige.render.GlPrimitiveTable GlPrimitiveSwitchMap +C dev.zprestige.prestige.render.GlState GlStateSnapshot +C dev.zprestige.prestige.render.GpuBuffer GlBuffer +C dev.zprestige.prestige.render.MatrixStack Render2D +C dev.zprestige.prestige.render.RenderBatch Rotation +C dev.zprestige.prestige.render.RenderContract GlyphVisitor +C dev.zprestige.prestige.render.RenderContract2 MinecraftAccess +C dev.zprestige.prestige.render.RenderContract3 RotationProvider +C dev.zprestige.prestige.render.RenderContract4 DrawCommand +C dev.zprestige.prestige.render.RenderContract5 RenderEvents +C dev.zprestige.prestige.render.RenderContract6 RenderCallback +C dev.zprestige.prestige.render.RenderHelper10 ScheduledClick +C dev.zprestige.prestige.render.RenderHelper11 ConfigReport +C dev.zprestige.prestige.render.RenderHelper12 CooldownProgress +C dev.zprestige.prestige.render.RenderHelper13 CallbackDrawCommand +C dev.zprestige.prestige.render.RenderHelper15 QueuedSwapClick +C dev.zprestige.prestige.render.RenderHelper16 BoundMethod +C dev.zprestige.prestige.render.RenderHelper18 NotificationTypeSwitchMap +C dev.zprestige.prestige.render.RenderHelper19 AxisSwitchMap +C dev.zprestige.prestige.render.RenderHelper20 ModuleToast +C dev.zprestige.prestige.render.RenderHelper21 SnapGuide +C dev.zprestige.prestige.render.RenderHelper22 CoreShaders +C dev.zprestige.prestige.render.RenderHelper23 Notification +C dev.zprestige.prestige.render.RenderHelper24 QueuedSlotSelect +C dev.zprestige.prestige.render.RenderHelper26 ThreatAssessment +C dev.zprestige.prestige.render.RenderHelper28 ApplyCallbackState +C dev.zprestige.prestige.render.RenderHelper29 ConfigureCallbackState +C dev.zprestige.prestige.render.RenderHelper3 PearlThrowSolution +C dev.zprestige.prestige.render.RenderHelper30 DrawCommandQueue +C dev.zprestige.prestige.render.RenderHelper31 VertexArray +C dev.zprestige.prestige.render.RenderHelper32 GameRendererAccessor +C dev.zprestige.prestige.render.RenderHelper34 GuiRendererAccessor +C dev.zprestige.prestige.render.RenderHelper35 KeyBindingAccessor +C dev.zprestige.prestige.render.RenderHelper36 MouseAccessor +C dev.zprestige.prestige.render.RenderHelper40 ProjectionMatrixAccessor +C dev.zprestige.prestige.render.RenderHelper41 RenderLayerAccessor +C dev.zprestige.prestige.render.RenderHelper5 ToggleAnimation +C dev.zprestige.prestige.render.RenderHelper6 GlyphQuadCommand +C dev.zprestige.prestige.render.RenderHelper7 GaussianBlur +C dev.zprestige.prestige.render.RenderHelper8 BufferSource +C dev.zprestige.prestige.render.RenderPass GlRenderPass +C dev.zprestige.prestige.render.RenderState ShapeRenderer +C dev.zprestige.prestige.render.RenderTarget BlurredRoundedRectShader +C dev.zprestige.prestige.render.RenderUtil RenderCore +C dev.zprestige.prestige.render.RenderUtil2 JumpKeyPresser +C dev.zprestige.prestige.render.RenderUtil3 JumpKeyReleaser +C dev.zprestige.prestige.render.RenderUtil4 VirtualKeyMapper +C dev.zprestige.prestige.render.RenderUtil5 RandomUtil +C dev.zprestige.prestige.render.RenderUtil6 SwapBackTracker +C dev.zprestige.prestige.render.Renderer2D SilentRotationManager +C dev.zprestige.prestige.render.RoundedOutlinePosColorShader RoundedOutlineShader +C dev.zprestige.prestige.render.RoundedPosColorShader RoundedRectShader +C dev.zprestige.prestige.render.SafeAnchorHelper DelayTimer +C dev.zprestige.prestige.render.ShaderProgram ShaderCompiler +C dev.zprestige.prestige.render.StorageESPHelper StorageOutlineRenderer +C dev.zprestige.prestige.render.TextRenderer MappedMeshBuilder +C dev.zprestige.prestige.render.TextureUtil TextureLoader +C dev.zprestige.prestige.render.Uniform RenderStateElement +C dev.zprestige.prestige.render.UniformCache DrawPipelines +C dev.zprestige.prestige.render.VertexAttribute VertexLayouts +C dev.zprestige.prestige.render.VertexBuffer FullscreenPassChain +C dev.zprestige.prestige.render.VertexFormat VertexLayout +C dev.zprestige.prestige.social.AltManager MojangApi +C dev.zprestige.prestige.type.AnchorState AnchorCatchState +C dev.zprestige.prestige.type.Axis GuideAxis +C dev.zprestige.prestige.type.BlockBreakType ThreatType +C dev.zprestige.prestige.type.BowMode CartIgnitionMode +C dev.zprestige.prestige.type.CartState XbowCartState +C dev.zprestige.prestige.type.CrystalState ObbyCrystalState +C dev.zprestige.prestige.type.FireState CartCatchState +C dev.zprestige.prestige.type.KillAuraState HitFlickState +C dev.zprestige.prestige.type.PacketResult SwapQueueResult +C dev.zprestige.prestige.type.PearlStage FastPearlCatchStage +C dev.zprestige.prestige.type.PearlState DiagonalPearlState +C dev.zprestige.prestige.type.PlaceState CobwebPlaceState +C dev.zprestige.prestige.type.RailState AutoCartState +C dev.zprestige.prestige.type.SettingFlag HudAlignment +C dev.zprestige.prestige.type.TrajectoryType HudAnchor +C dev.zprestige.prestige.util.BindManager SimulatedClickManager +C dev.zprestige.prestige.util.ClientUtil HookBridge +C dev.zprestige.prestige.util.Timer FrameDeltaTimer +C dev.zprestige.prestige.util.TpsTimer NotificationManager +C dev.zprestige.prestige.world.CobwebPlacerHelper CobwebSwitchBackTask +C dev.zprestige.prestige.world.OreColorUtil OreDefinition +C dev.zprestige.prestige.world.OreSimulationHelper LoadedChunkIterator +C dev.zprestige.prestige.world.PlacementCheck HitParticlePhysics +C dev.zprestige.prestige.world.TrajectoriesHelper SimulatedBowArrow +C dev.zprestige.prestige.world.WorldContract MeshBuilder +C dev.zprestige.prestige.world.WorldHelper DifficultySwitchMap +C dev.zprestige.prestige.world.WorldHelper10 RaycastContextAccessor +C dev.zprestige.prestige.world.WorldHelper3 ClientChunkManagerAccessor +C dev.zprestige.prestige.world.WorldHelper4 ClientChunkMapAccessor +C dev.zprestige.prestige.world.WorldHelper5 CountPlacementModifierAccessor +C dev.zprestige.prestige.world.WorldHelper7 HeightContextAccessor +C dev.zprestige.prestige.world.WorldHelper8 HeightRangePlacementModifierAccessor +C dev.zprestige.prestige.world.WorldHelper9 RarityFilterPlacementModifierAccessor +C dev.zprestige.prestige.world.WorldUtil RotationUtil +C dev.zprestige.prestige.world.WorldUtil2 BlockUtil +F dev.zprestige.prestige.EventBus#c LISTENER_TYPE +F dev.zprestige.prestige.EventBus#d LOGGED_FAILURES +F dev.zprestige.prestige.EventBus#e registrationBlockers +F dev.zprestige.prestige.EventBus#g LISTENER_ERROR_PREFIX +F dev.zprestige.prestige.ModuleManager#f headTickFallback +F dev.zprestige.prestige.Native#a callbackClass +F dev.zprestige.prestige.client.Prestige#a initialized +F dev.zprestige.prestige.client.Prestige#c fontManager +F dev.zprestige.prestige.client.Prestige#e configManager +F dev.zprestige.prestige.client.Prestige#f damageCalculator +F dev.zprestige.prestige.client.Prestige#g friendManager +F dev.zprestige.prestige.client.Prestige#h frameDeltaTimer +F dev.zprestige.prestige.client.Prestige#i botFilter +F dev.zprestige.prestige.client.Prestige#j clickScheduler +F dev.zprestige.prestige.client.Prestige#k clickGuiScreen +F dev.zprestige.prestige.client.Prestige#l hudEditorScreen +F dev.zprestige.prestige.client.Prestige#m moduleStateSync +F dev.zprestige.prestige.client.Prestige#n targetTracker +F dev.zprestige.prestige.client.Prestige#o silentRotationManager +F dev.zprestige.prestige.client.Prestige#p visualRotationManager +F dev.zprestige.prestige.client.Prestige#q simulatedClickManager +F dev.zprestige.prestige.client.Prestige#r totemPopManager +F dev.zprestige.prestige.client.Prestige#s keybindManager +F dev.zprestige.prestige.client.Prestige#t silentSlotManager +F dev.zprestige.prestige.client.Prestige#u inventorySwapQueue +F dev.zprestige.prestige.client.Prestige#v notificationManager +F dev.zprestige.prestige.client.Prestige#w selfDestructed +F dev.zprestige.prestige.combat.AimManager#a pendingClick +F dev.zprestige.prestige.combat.AutoArmorHelper#a SWITCH_MAP +F dev.zprestige.prestige.combat.CombatHelper#a name +F dev.zprestige.prestige.combat.CombatHelper#b levelText +F dev.zprestige.prestige.combat.CombatHelper#c color +F dev.zprestige.prestige.combat.CombatHelper#d duration +F dev.zprestige.prestige.combat.CombatHelper#e maxDuration +F dev.zprestige.prestige.combat.CombatHelper#f infinite +F dev.zprestige.prestige.combat.CombatHelper#g visibility +F dev.zprestige.prestige.combat.CombatHelper2#a entity +F dev.zprestige.prestige.combat.CombatHelper2#c JUMPING_COOLDOWN_FIELD +F dev.zprestige.prestige.combat.CombatHelper3#a client +F dev.zprestige.prestige.combat.CombatUtil2#a mc +F dev.zprestige.prestige.combat.CombatUtil2#d NO_THREAT +F dev.zprestige.prestige.combat.DamageUtil#a scratchPos +F dev.zprestige.prestige.combat.DamageUtil#d raycastContext +F dev.zprestige.prestige.combat.DamageUtil#e cacheTime +F dev.zprestige.prestige.combat.DamageUtil#f damageCache +F dev.zprestige.prestige.combat.DamageUtil#g ENCHANTMENT_BUFFER +F dev.zprestige.prestige.combat.DamageUtil#i NO_CACHE_TIME +F dev.zprestige.prestige.combat.NameTags#a name +F dev.zprestige.prestige.combat.NameTags#b nameColor +F dev.zprestige.prestige.combat.NameTags#c pops +F dev.zprestige.prestige.combat.NameTags#d popText +F dev.zprestige.prestige.combat.NameTags#e healthRatio +F dev.zprestige.prestige.combat.NameTags#f displayedHealthRatio +F dev.zprestige.prestige.combat.NameTags#g healthColor +F dev.zprestige.prestige.combat.NameTags#h healthText +F dev.zprestige.prestige.combat.NameTags#i nameWidth +F dev.zprestige.prestige.combat.NameTags#j popTextWidth +F dev.zprestige.prestige.combat.NameTags#k healthTextWidth +F dev.zprestige.prestige.combat.NameTags#l items +F dev.zprestige.prestige.combat.NameTags#m enchantLabels +F dev.zprestige.prestige.combat.NameTagsUtil#a SCALE_SMALL +F dev.zprestige.prestige.combat.NameTagsUtil#b SCALE_MEDIUM +F dev.zprestige.prestige.combat.NameTagsUtil#c SCALE_ROW +F dev.zprestige.prestige.combat.NameTagsUtil#d SCALE_TITLE +F dev.zprestige.prestige.combat.NameTagsUtil#e SCALE_VALUE +F dev.zprestige.prestige.combat.NameTagsUtil#f SCALE_NORMAL +F dev.zprestige.prestige.combat.NameTagsUtil#g CORNER_RADIUS +F dev.zprestige.prestige.combat.NameTagsUtil#h PADDING_Y +F dev.zprestige.prestige.combat.NameTagsUtil#i BADGE_PADDING +F dev.zprestige.prestige.combat.NameTagsUtil#j BLUR_RADIUS +F dev.zprestige.prestige.combat.NameTagsUtil#k PADDING_X +F dev.zprestige.prestige.combat.NameTagsUtil#l DIVIDER_INSET +F dev.zprestige.prestige.combat.NameTagsUtil#m ROW_SPACING +F dev.zprestige.prestige.combat.NameTagsUtil#n LINE_GAP +F dev.zprestige.prestige.combat.NameTagsUtil#o DIVIDER_WIDTH +F dev.zprestige.prestige.combat.NameTagsUtil#p BAR_HEIGHT +F dev.zprestige.prestige.combat.NameTagsUtil#q BAR_GAP +F dev.zprestige.prestige.combat.NameTagsUtil#r BACKGROUND_COLOR +F dev.zprestige.prestige.combat.NameTagsUtil#s TEXT_COLOR +F dev.zprestige.prestige.combat.NameTagsUtil#t SECONDARY_TEXT_COLOR +F dev.zprestige.prestige.combat.NameTagsUtil#u MUTED_TEXT_COLOR +F dev.zprestige.prestige.combat.NameTagsUtil#v DIVIDER_COLOR +F dev.zprestige.prestige.combat.PearlFollowHelper#a landed +F dev.zprestige.prestige.combat.PearlTrajectoryHelper#a landed +F dev.zprestige.prestige.combat.RotationManager#d initialized +F dev.zprestige.prestige.combat.RotationManager#e renderYaw +F dev.zprestige.prestige.combat.RotationManager#f renderPitch +F dev.zprestige.prestige.combat.RotationManager#g prevRenderYaw +F dev.zprestige.prestige.combat.RotationManager#h prevRenderPitch +F dev.zprestige.prestige.combat.RotationManager#i applied +F dev.zprestige.prestige.combat.RotationManager#j savedYaw +F dev.zprestige.prestige.combat.RotationManager#k savedPitch +F dev.zprestige.prestige.combat.RotationManager#l savedBodyYaw +F dev.zprestige.prestige.combat.RotationManager#m savedHeadYaw +F dev.zprestige.prestige.combat.RotationManager#n savedLastYaw +F dev.zprestige.prestige.combat.RotationManager#o savedLastPitch +F dev.zprestige.prestige.combat.RotationManager#p savedLastBodyYaw +F dev.zprestige.prestige.combat.RotationManager#q savedLastHeadYaw +F dev.zprestige.prestige.combat.TargetManager#a validatedPlayers +F dev.zprestige.prestige.combat.TargetManager#c validityCache +F dev.zprestige.prestige.combat.TargetTracker#a target +F dev.zprestige.prestige.combat.TargetTracker#c lastAttackTime +F dev.zprestige.prestige.combat.TrajectoriesHelper#a landed +F dev.zprestige.prestige.combat.TwoDESPHelper#a player +F dev.zprestige.prestige.combat.TwoDESPHelper#b name +F dev.zprestige.prestige.combat.TwoDESPHelper#c health +F dev.zprestige.prestige.combat.TwoDESPHelper#d maxHealth +F dev.zprestige.prestige.combat.TwoDESPHelper#e width +F dev.zprestige.prestige.combat.TwoDESPHelper#f height +F dev.zprestige.prestige.combat.TwoDESPHelper#g distance +F dev.zprestige.prestige.combat.TwoDESPHelper#h friend +F dev.zprestige.prestige.config.ConfigHelper#a emSize +F dev.zprestige.prestige.config.ConfigHelper#b lineHeight +F dev.zprestige.prestige.config.ConfigHelper#c ascender +F dev.zprestige.prestige.config.ConfigHelper#d descender +F dev.zprestige.prestige.config.ConfigHelper#e underlineY +F dev.zprestige.prestige.config.ConfigHelper#f underlineThickness +F dev.zprestige.prestige.config.ConfigHelper2#a codePoint +F dev.zprestige.prestige.config.ConfigHelper2#b advance +F dev.zprestige.prestige.config.ConfigHelper2#c planeLeft +F dev.zprestige.prestige.config.ConfigHelper2#d planeBottom +F dev.zprestige.prestige.config.ConfigHelper2#e planeRight +F dev.zprestige.prestige.config.ConfigHelper2#f planeTop +F dev.zprestige.prestige.config.ConfigHelper2#g atlasLeft +F dev.zprestige.prestige.config.ConfigHelper2#h atlasBottom +F dev.zprestige.prestige.config.ConfigHelper2#i atlasRight +F dev.zprestige.prestige.config.ConfigHelper2#j atlasTop +F dev.zprestige.prestige.config.ConfigHelper3#a path +F dev.zprestige.prestige.config.ConfigHelper3#c NOT_FOUND_MESSAGE +F dev.zprestige.prestige.config.ConfigManager#a GSON +F dev.zprestige.prestige.config.ConfigManager#d lastCompleteSnapshot +F dev.zprestige.prestige.config.ConfigManager#e lastLoadReport +F dev.zprestige.prestige.config.ConfigManager#m NOTIFICATION_DURATION_MS +F dev.zprestige.prestige.data.BoolData#bP depthWrite +F dev.zprestige.prestige.data.BoolData#bQ restoreDepthWrite +F dev.zprestige.prestige.data.BoolData3#b_ landed +F dev.zprestige.prestige.data.BoolIntData#bH enabled +F dev.zprestige.prestige.data.BoolIntData#bI restoreEnabled +F dev.zprestige.prestige.data.BoolIntData#bJ srcRgb +F dev.zprestige.prestige.data.BoolIntData#bK dstRgb +F dev.zprestige.prestige.data.BoolIntData#bL srcAlpha +F dev.zprestige.prestige.data.BoolIntData#bM dstAlpha +F dev.zprestige.prestige.data.BoolIntData2#bU enabled +F dev.zprestige.prestige.data.BoolIntData2#bV restoreEnabled +F dev.zprestige.prestige.data.BoolIntData2#bW x +F dev.zprestige.prestige.data.BoolIntData2#bX y +F dev.zprestige.prestige.data.BoolIntData2#bY width +F dev.zprestige.prestige.data.BoolIntData2#bZ height +F dev.zprestige.prestige.data.BufferData#au vertexBuffer +F dev.zprestige.prestige.data.BufferData#av indexBuffer +F dev.zprestige.prestige.data.BufferData#aw vertexArray +F dev.zprestige.prestige.data.BufferData#ax activeBuilder +F dev.zprestige.prestige.data.BufferQuadIntData#cc buffer +F dev.zprestige.prestige.data.BufferQuadIntData#cd element +F dev.zprestige.prestige.data.BufferQuadIntData#ce stride +F dev.zprestige.prestige.data.BufferQuadIntData#cf offset +F dev.zprestige.prestige.data.ConsumerData#bp writer +F dev.zprestige.prestige.data.DoubleBoolData#aG target +F dev.zprestige.prestige.data.DoubleBoolData#aH x +F dev.zprestige.prestige.data.DoubleBoolData#aI y +F dev.zprestige.prestige.data.DoubleBoolData#aJ z +F dev.zprestige.prestige.data.DoubleBoolData#aK predictMovement +F dev.zprestige.prestige.data.DoubleBoolData#aL obsidianPos +F dev.zprestige.prestige.data.DoubleBoolData#aM ignoreTerrain +F dev.zprestige.prestige.data.DoubleData#al pos +F dev.zprestige.prestige.data.DoubleData#am hitResult +F dev.zprestige.prestige.data.DoubleData#an damage +F dev.zprestige.prestige.data.DrawFloatData#ca drawable +F dev.zprestige.prestige.data.DrawFloatData#cb depth +F dev.zprestige.prestige.data.FloatData#ag entity +F dev.zprestige.prestige.data.FloatData#ah yaw +F dev.zprestige.prestige.data.FloatData#ai pitch +F dev.zprestige.prestige.data.FloatDoubleIntData#bt pitch +F dev.zprestige.prestige.data.FloatDoubleIntData#bu distanceToTarget +F dev.zprestige.prestige.data.FloatDoubleIntData#bv flightTicks +F dev.zprestige.prestige.data.FloatDoubleIntData#bw peakY +F dev.zprestige.prestige.data.FontFloatData#a UNIT_RANGE_LOCATION +F dev.zprestige.prestige.data.FontFloatData#bc font +F dev.zprestige.prestige.data.FontFloatData#bd unitRangeX +F dev.zprestige.prestige.data.FontFloatData#be unitRangeY +F dev.zprestige.prestige.data.IntBoolData#cg componentCount +F dev.zprestige.prestige.data.IntBoolData#ch glType +F dev.zprestige.prestige.data.IntBoolData#ci componentSize +F dev.zprestige.prestige.data.IntBoolData#cj normalized +F dev.zprestige.prestige.data.IntBoolData2#bR capability +F dev.zprestige.prestige.data.IntBoolData2#bS enabled +F dev.zprestige.prestige.data.IntBoolData2#bT restoreEnabled +F dev.zprestige.prestige.data.IntData#a LOCATION_CACHE +F dev.zprestige.prestige.data.IntData#bz programId +F dev.zprestige.prestige.data.IntData2#bN depthFunc +F dev.zprestige.prestige.data.IntData2#bO restoreDepthFunc +F dev.zprestige.prestige.data.LongData#bn dimension +F dev.zprestige.prestige.data.LongData#bo chunkPos +F dev.zprestige.prestige.data.LongData2#aj pos +F dev.zprestige.prestige.data.LongData2#ak time +F dev.zprestige.prestige.data.LongData3#as packet +F dev.zprestige.prestige.data.LongData3#at releaseTime +F dev.zprestige.prestige.data.LongData4#ay pos +F dev.zprestige.prestige.data.LongData4#az time +F dev.zprestige.prestige.data.MatrixCameraData#bA projection +F dev.zprestige.prestige.data.MatrixCameraData#bB modelView +F dev.zprestige.prestige.data.MatrixCameraData#bC camera +F dev.zprestige.prestige.data.ModuleStringBoolData#aC module +F dev.zprestige.prestige.data.ModuleStringBoolData#aD sectionName +F dev.zprestige.prestige.data.ModuleStringBoolData#aE enabledValue +F dev.zprestige.prestige.data.ModuleStringBoolData#aF alreadyApplied +F dev.zprestige.prestige.data.ModuleStringFloatData#a_ module +F dev.zprestige.prestige.data.ModuleStringFloatData#ba keyName +F dev.zprestige.prestige.data.ModuleStringFloatData#bb alpha +F dev.zprestige.prestige.data.PassConsumerData#bx renderPass +F dev.zprestige.prestige.data.PassConsumerData#by drawCallback +F dev.zprestige.prestige.data.StringData#bi ownerClass +F dev.zprestige.prestige.data.StringData#bj methodName +F dev.zprestige.prestige.data.StringData#bk returnType +F dev.zprestige.prestige.data.StringData#bl parameterTypes +F dev.zprestige.prestige.data.StringData#bm receiverClass +F dev.zprestige.prestige.data.VecBoolData#c anchorPos +F dev.zprestige.prestige.data.VecBoolData#d anchorSupportPos +F dev.zprestige.prestige.data.VecBoolData#e anchorHitVec +F dev.zprestige.prestige.data.VecBoolData#f blockerPos +F dev.zprestige.prestige.data.VecBoolData#g blockerSupportPos +F dev.zprestige.prestige.data.VecBoolData#h blockerHitVec +F dev.zprestige.prestige.data.VecBoolData#i anchorExists +F dev.zprestige.prestige.data.VecBoolData2#l anchorPos +F dev.zprestige.prestige.data.VecBoolData2#m anchorSupportPos +F dev.zprestige.prestige.data.VecBoolData2#n anchorHitVec +F dev.zprestige.prestige.data.VecBoolData2#o anchorExists +F dev.zprestige.prestige.data.VecBoolData2#p blockerPos +F dev.zprestige.prestige.data.VecBoolData2#q blockerSupportPos +F dev.zprestige.prestige.data.VecBoolData2#r blockerHitVec +F dev.zprestige.prestige.data.VecBoolIntData#aa scanIndex +F dev.zprestige.prestige.data.VecBoolIntData#ab targetDistance +F dev.zprestige.prestige.data.VecBoolIntData#ac predictedTargetDistance +F dev.zprestige.prestige.data.VecBoolIntData#ad score +F dev.zprestige.prestige.data.VecBoolIntData#s anchorPos +F dev.zprestige.prestige.data.VecBoolIntData#t supportPos +F dev.zprestige.prestige.data.VecBoolIntData#u hitVec +F dev.zprestige.prestige.data.VecBoolIntData#v anchorExists +F dev.zprestige.prestige.data.VecBoolIntData#w charges +F dev.zprestige.prestige.data.VecBoolIntData#x distance +F dev.zprestige.prestige.data.VecBoolIntData#y sameLevel +F dev.zprestige.prestige.data.VecBoolIntData#z adjacent +F dev.zprestige.prestige.data.VecData#j supportPos +F dev.zprestige.prestige.data.VecData#k hitVec +F dev.zprestige.prestige.data.VecData2#ae supportPos +F dev.zprestige.prestige.data.VecData2#af hitVec +F dev.zprestige.prestige.data.VecDoubleData#ao cart +F dev.zprestige.prestige.data.VecDoubleData#ap explosionPos +F dev.zprestige.prestige.data.VecDoubleData#aq horizontalSpeed +F dev.zprestige.prestige.data.VecDoubleData#ar damage +F dev.zprestige.prestige.data.VecIntData#a landingPos +F dev.zprestige.prestige.data.VecIntData#b ticksUntilLanding +F dev.zprestige.prestige.data.VecIntData2#aA landingPos +F dev.zprestige.prestige.data.VecIntData2#aB ticksUntilLanding +F dev.zprestige.prestige.data.VecIntDoubleData#bq landingPos +F dev.zprestige.prestige.data.VecIntDoubleData#br flightTicks +F dev.zprestige.prestige.data.VecIntDoubleData#bs peakY +F dev.zprestige.prestige.data.VectorData#bD scissorRect +F dev.zprestige.prestige.data.VectorData#bE drawMode +F dev.zprestige.prestige.data.VectorFloatData#bF cornerRadii +F dev.zprestige.prestige.data.VectorFloatData#bG outlineThickness +F dev.zprestige.prestige.data.VertexIntData#bf layout +F dev.zprestige.prestige.data.VertexIntData#bg vertexCount +F dev.zprestige.prestige.data.VertexIntData#bh indexCount +F dev.zprestige.prestige.event.BlockBoolEvent#a block +F dev.zprestige.prestige.event.BlockBoolEvent#b visible +F dev.zprestige.prestige.event.BlockPosBlockEvent#a pos +F dev.zprestige.prestige.event.BlockPosBlockEvent#b state +F dev.zprestige.prestige.event.BoolEvent#b skipPost +F dev.zprestige.prestige.event.BoolPositionEvent#a overlay +F dev.zprestige.prestige.event.BoolPositionEvent#b enabled +F dev.zprestige.prestige.event.BoolPositionEvent#c renderSelf +F dev.zprestige.prestige.event.BoolPositionEvent#d offset +F dev.zprestige.prestige.event.BoolPositionEvent#e scale +F dev.zprestige.prestige.event.BoolPositionEvent#f renderMode +F dev.zprestige.prestige.event.BoolPositionEvent#g defaultColor +F dev.zprestige.prestige.event.BoolPositionEvent#h brokenColor +F dev.zprestige.prestige.event.ColorEvent#a skyColor +F dev.zprestige.prestige.event.ColorEvent#b horizonColor +F dev.zprestige.prestige.event.DoubleEvent#a applyingOverride +F dev.zprestige.prestige.event.DoubleEvent#b x +F dev.zprestige.prestige.event.DoubleEvent#c y +F dev.zprestige.prestige.event.DoubleEvent#d z +F dev.zprestige.prestige.event.DoubleEvent2#a deltaX +F dev.zprestige.prestige.event.DoubleEvent2#b deltaY +F dev.zprestige.prestige.event.DoubleEvent3#a velocityX +F dev.zprestige.prestige.event.DoubleEvent3#b velocityY +F dev.zprestige.prestige.event.DoubleEvent3#c velocityZ +F dev.zprestige.prestige.event.EntityEvent#a target +F dev.zprestige.prestige.event.EntityEvent2#a entity +F dev.zprestige.prestige.event.EntityEvent2#b box +F dev.zprestige.prestige.event.EntityEvent3#a entity +F dev.zprestige.prestige.event.EntityEvent4#a entity +F dev.zprestige.prestige.event.EntityEvent5#a entity +F dev.zprestige.prestige.event.EntityEvent5#b text +F dev.zprestige.prestige.event.EntityEvent6#a originalText +F dev.zprestige.prestige.event.EntityEvent6#b displayText +F dev.zprestige.prestige.event.EntityEvent6#c entity +F dev.zprestige.prestige.event.Event#a phase +F dev.zprestige.prestige.event.Event#b cancelled +F dev.zprestige.prestige.event.EventManager#a hudDrawn +F dev.zprestige.prestige.event.FloatColorEvent#a start +F dev.zprestige.prestige.event.FloatColorEvent#b end +F dev.zprestige.prestige.event.FloatColorEvent#c color +F dev.zprestige.prestige.event.FloatColorEvent#d skyEnd +F dev.zprestige.prestige.event.FloatDoubleEvent#a power +F dev.zprestige.prestige.event.FloatDoubleEvent#b x +F dev.zprestige.prestige.event.FloatDoubleEvent#c y +F dev.zprestige.prestige.event.FloatDoubleEvent#d z +F dev.zprestige.prestige.event.FloatEvent#a applyingOverride +F dev.zprestige.prestige.event.FloatEvent#b yaw +F dev.zprestige.prestige.event.FloatEvent#c pitch +F dev.zprestige.prestige.event.FloatEvent2#a yaw +F dev.zprestige.prestige.event.FloatEvent2#b pitch +F dev.zprestige.prestige.event.FloatEvent2#c savedYaw +F dev.zprestige.prestige.event.FloatEvent2#d savedPitch +F dev.zprestige.prestige.event.FloatEvent3#a yaw +F dev.zprestige.prestige.event.FloatEvent3#b pitch +F dev.zprestige.prestige.event.FloatEvent3#c savedYaw +F dev.zprestige.prestige.event.FloatEvent3#d savedPitch +F dev.zprestige.prestige.event.FloatEvent4#a extraReach +F dev.zprestige.prestige.event.FloatEvent5#a matrices +F dev.zprestige.prestige.event.FloatEvent5#b arm +F dev.zprestige.prestige.event.FloatEvent5#c swingProgress +F dev.zprestige.prestige.event.FloatEvent5#d equipProgress +F dev.zprestige.prestige.event.FloatPositionEvent#a yaw +F dev.zprestige.prestige.event.FloatPositionEvent#b movementInput +F dev.zprestige.prestige.event.IntEvent#a extraTicks +F dev.zprestige.prestige.event.IntEvent2#a key +F dev.zprestige.prestige.event.IntEvent2#b action +F dev.zprestige.prestige.event.IntEvent3#a duration +F dev.zprestige.prestige.event.IntEvent4#a button +F dev.zprestige.prestige.event.IntEvent4#b action +F dev.zprestige.prestige.event.LivingEvent#a entity +F dev.zprestige.prestige.event.LongEvent#a time +F dev.zprestige.prestige.event.PacketEvent#a packet +F dev.zprestige.prestige.event.PacketEvent2#a packet +F dev.zprestige.prestige.event.PlayerEvent#a player +F dev.zprestige.prestige.event.PlayerStringEvent#a player +F dev.zprestige.prestige.event.PlayerStringEvent#b suffix +F dev.zprestige.prestige.event.StringEvent#a skinTextures +F dev.zprestige.prestige.event.StringEvent#b playerName +F dev.zprestige.prestige.event.StringEvent2#a target +F dev.zprestige.prestige.event.StringEvent2#b text +F dev.zprestige.prestige.event.TickEvent13#a chunk +F dev.zprestige.prestige.event.TickEvent22#a frustum +F dev.zprestige.prestige.event.TickEvent24#a renderer +F dev.zprestige.prestige.event.TickEvent24#b context +F dev.zprestige.prestige.event.TickEvent25#a renderer +F dev.zprestige.prestige.event.TickEvent25#b context +F dev.zprestige.prestige.event.TickEvent27#a renderer +F dev.zprestige.prestige.event.TickEvent27#b context +F dev.zprestige.prestige.event.TickEvent29#a window +F dev.zprestige.prestige.gui.ClickGuiScreen#a nativeGuiShown +F dev.zprestige.prestige.gui.ClickGuiScreen#b guiClosed +F dev.zprestige.prestige.gui.GuiHelper#a screen +F dev.zprestige.prestige.gui.GuiHelper#c FOCUSED_SLOT_FIELD +F dev.zprestige.prestige.gui.HudEditorScreen#a elements +F dev.zprestige.prestige.gui.HudEditorScreen#b snapLines +F dev.zprestige.prestige.gui.HudEditorScreen#c draggingPanel +F dev.zprestige.prestige.gui.HudEditorScreen#d panelDragOffsetX +F dev.zprestige.prestige.gui.HudEditorScreen#e panelDragOffsetY +F dev.zprestige.prestige.gui.HudEditorScreen#f panelX +F dev.zprestige.prestige.gui.HudEditorScreen#g panelY +F dev.zprestige.prestige.gui.HudEditorScreen#h pendingClick +F dev.zprestige.prestige.gui.HudEditorScreen#i defaultPositionsApplied +F dev.zprestige.prestige.gui.HudEditorScreen#j selectedElement +F dev.zprestige.prestige.gui.HudEditorScreen#k EDITOR_KEYS +F dev.zprestige.prestige.gui.HudEditorScreen#l keyRepeatAt +F dev.zprestige.prestige.gui.HudEditorScreen#m keyWasDown +F dev.zprestige.prestige.gui.HudEditorScreen#n fadeProgress +F dev.zprestige.prestige.gui.HudEditorScreen#o lastFrameTime +F dev.zprestige.prestige.hud.CartHelperElement#i READY_COLOR +F dev.zprestige.prestige.hud.CartHelperElement#j ALERT_COLOR +F dev.zprestige.prestige.hud.CartHelperElement#k BAR_TRACK_COLOR +F dev.zprestige.prestige.hud.CartHelperElement#l RAIL_ITEMS +F dev.zprestige.prestige.hud.CartHelperElement#r statusText +F dev.zprestige.prestige.hud.CartHelperElement#s ready +F dev.zprestige.prestige.hud.CartHelperElement#t crossbowState +F dev.zprestige.prestige.hud.CartHelperElement#u crossbowCharge +F dev.zprestige.prestige.hud.CartHelperElement#v cartCount +F dev.zprestige.prestige.hud.CartHelperElement#w iconStacks +F dev.zprestige.prestige.hud.CartHelperElement#x iconsInitialized +F dev.zprestige.prestige.hud.CooldownIndicatorElement#j savedAttackIndicator +F dev.zprestige.prestige.hud.CooldownIndicatorElement#k lastFrameTime +F dev.zprestige.prestige.hud.CooldownIndicatorElement#l stateChangeTime +F dev.zprestige.prestige.hud.CooldownIndicatorElement#n vanillaIndicatorHidden +F dev.zprestige.prestige.hud.CooldownIndicatorElement#o visibilityAtChange +F dev.zprestige.prestige.hud.CooldownIndicatorElement#p visibility +F dev.zprestige.prestige.hud.CooldownIndicatorElement#q cooldownActive +F dev.zprestige.prestige.hud.CooldownIndicatorElement#r readyFlashTime +F dev.zprestige.prestige.hud.CooldownIndicatorElement#t smoothedProgress +F dev.zprestige.prestige.hud.CooldownIndicatorElement#u lastProgress +F dev.zprestige.prestige.hud.CrosshairElement#H UNSET_TIME +F dev.zprestige.prestige.hud.CrosshairElement#a lastFrameTime +F dev.zprestige.prestige.hud.CrosshairElement#g hitAnimation +F dev.zprestige.prestige.hud.FPSElement#d iconTexture +F dev.zprestige.prestige.hud.FPSElement#g fpsHistory +F dev.zprestige.prestige.hud.FPSElement#h historyIndex +F dev.zprestige.prestige.hud.FPSElement#i lastSampleTime +F dev.zprestige.prestige.hud.FPSElement#j lastFrameTime +F dev.zprestige.prestige.hud.FPSElement#k smoothedFps +F dev.zprestige.prestige.hud.FPSElement#l colorRed +F dev.zprestige.prestige.hud.FPSElement#o colorGreen +F dev.zprestige.prestige.hud.FPSElement#p colorBlue +F dev.zprestige.prestige.hud.FPSElement#t lastWidth +F dev.zprestige.prestige.hud.HudElement#A ENABLED_SETTING_NAME +F dev.zprestige.prestige.hud.HudElement#a name +F dev.zprestige.prestige.hud.HudElement#c description +F dev.zprestige.prestige.hud.HudElement#d enabledSetting +F dev.zprestige.prestige.hud.HudElement#e x +F dev.zprestige.prestige.hud.HudElement#f y +F dev.zprestige.prestige.hud.HudElement#g width +F dev.zprestige.prestige.hud.HudElement#h height +F dev.zprestige.prestige.hud.HudElement#i anchorX +F dev.zprestige.prestige.hud.HudElement#j anchorY +F dev.zprestige.prestige.hud.HudElement#k offsetX +F dev.zprestige.prestige.hud.HudElement#l offsetY +F dev.zprestige.prestige.hud.HudElement#n positionPending +F dev.zprestige.prestige.hud.HudElement#o pendingX +F dev.zprestige.prestige.hud.HudElement#p pendingY +F dev.zprestige.prestige.hud.HudElement#q xClamped +F dev.zprestige.prestige.hud.HudElement#r yClamped +F dev.zprestige.prestige.hud.HudElement#s dragging +F dev.zprestige.prestige.hud.HudElement#t dragOffsetX +F dev.zprestige.prestige.hud.HudElement#u dragOffsetY +F dev.zprestige.prestige.hud.KeybindsElement#H UNSET_TIME +F dev.zprestige.prestige.hud.KeybindsElement#g moduleAnimations +F dev.zprestige.prestige.hud.KeybindsElement#h iconTexture +F dev.zprestige.prestige.hud.KeybindsElement#i lastFrameTime +F dev.zprestige.prestige.hud.KeybindsElement#k animatedWidth +F dev.zprestige.prestige.hud.KeybindsElement#l animatedKeyWidth +F dev.zprestige.prestige.hud.KeybindsElement#o lastHeight +F dev.zprestige.prestige.hud.KeybindsElement#p lastWidth +F dev.zprestige.prestige.hud.LatencyElement#d iconTexture +F dev.zprestige.prestige.hud.LatencyElement#g pingHistory +F dev.zprestige.prestige.hud.LatencyElement#h historyIndex +F dev.zprestige.prestige.hud.LatencyElement#i lastSampleTime +F dev.zprestige.prestige.hud.LatencyElement#j lastFrameTime +F dev.zprestige.prestige.hud.LatencyElement#k smoothedPing +F dev.zprestige.prestige.hud.LatencyElement#l colorRed +F dev.zprestige.prestige.hud.LatencyElement#o colorGreen +F dev.zprestige.prestige.hud.LatencyElement#p colorBlue +F dev.zprestige.prestige.hud.LatencyElement#t lastWidth +F dev.zprestige.prestige.hud.ModuleListElement#a moduleAnimations +F dev.zprestige.prestige.hud.ModuleListElement#c lastEnabledStates +F dev.zprestige.prestige.hud.ModuleListElement#d enableTimes +F dev.zprestige.prestige.hud.ModuleListElement#l lastHeight +F dev.zprestige.prestige.hud.ModuleListElement#m animationDelta +F dev.zprestige.prestige.hud.ModuleListElement#o lastWidth +F dev.zprestige.prestige.hud.ModuleNotificationsElement#a instance +F dev.zprestige.prestige.hud.ModuleNotificationsElement#k notifications +F dev.zprestige.prestige.hud.ModuleNotificationsElement#l iconTextures +F dev.zprestige.prestige.hud.ModuleNotificationsElement#n lastFrameTime +F dev.zprestige.prestige.hud.ModuleNotificationsElement#o lastHeight +F dev.zprestige.prestige.hud.ModuleNotificationsElement#p lastWidth +F dev.zprestige.prestige.hud.OffscreenArrowElement#k arrowAngle +F dev.zprestige.prestige.hud.OffscreenArrowElement#l arrowVisibility +F dev.zprestige.prestige.hud.OffscreenArrowElement#n angleInitialized +F dev.zprestige.prestige.hud.OffscreenArrowElement#o lastFrameTime +F dev.zprestige.prestige.hud.PotionDisplayElement#a effectEntries +F dev.zprestige.prestige.hud.PotionDisplayElement#c iconTexture +F dev.zprestige.prestige.hud.PotionDisplayElement#g animatedWidth +F dev.zprestige.prestige.hud.PotionDisplayElement#h lastHeight +F dev.zprestige.prestige.hud.PotionDisplayElement#k lastWidth +F dev.zprestige.prestige.hud.ResourcesElement#a TRACKED_ITEMS +F dev.zprestige.prestige.hud.ResourcesElement#c RESOURCE_NAMES +F dev.zprestige.prestige.hud.ResourcesElement#d LOW_THRESHOLDS +F dev.zprestige.prestige.hud.ResourcesElement#j counts +F dev.zprestige.prestige.hud.ResourcesElement#k previousCounts +F dev.zprestige.prestige.hud.ResourcesElement#l nextWarningTimes +F dev.zprestige.prestige.hud.ResourcesElement#m iconStacks +F dev.zprestige.prestige.hud.ResourcesElement#n warningsArmed +F dev.zprestige.prestige.hud.ResourcesElement#q iconsInitialized +F dev.zprestige.prestige.hud.TPSElement#d iconTexture +F dev.zprestige.prestige.hud.TPSElement#g tpsHistory +F dev.zprestige.prestige.hud.TPSElement#h historyIndex +F dev.zprestige.prestige.hud.TPSElement#i lastTimeUpdate +F dev.zprestige.prestige.hud.TPSElement#j lastFrameTime +F dev.zprestige.prestige.hud.TPSElement#k measuredTps +F dev.zprestige.prestige.hud.TPSElement#l smoothedTps +F dev.zprestige.prestige.hud.TPSElement#o colorRed +F dev.zprestige.prestige.hud.TPSElement#p colorGreen +F dev.zprestige.prestige.hud.TPSElement#t colorBlue +F dev.zprestige.prestige.hud.TPSElement#u lastWidth +F dev.zprestige.prestige.hud.TargetElement#d showAnimation +F dev.zprestige.prestige.hud.TargetElement#g skinTexture +F dev.zprestige.prestige.hud.TargetElement#h skinTextureId +F dev.zprestige.prestige.hud.TargetElement#i targetName +F dev.zprestige.prestige.hud.TargetElement#j distance +F dev.zprestige.prestige.hud.TargetElement#k health +F dev.zprestige.prestige.hud.TargetElement#l displayedHealth +F dev.zprestige.prestige.hud.TargetElement#m targetUuid +F dev.zprestige.prestige.hud.TargetElement#n lastDamageTime +F dev.zprestige.prestige.hud.TargetElement#o healthFraction +F dev.zprestige.prestige.hud.TargetElement#p displayedHealthFraction +F dev.zprestige.prestige.hud.TargetElement#q armorStacks +F dev.zprestige.prestige.hud.TargetElement#r mainHandStack +F dev.zprestige.prestige.hud.TargetElement#s offHandStack +F dev.zprestige.prestige.hud.TargetElement#t damageTrailFraction +F dev.zprestige.prestige.hud.TargetElement#u lastRawHealth +F dev.zprestige.prestige.hud.TargetElement#v lastFrameTime +F dev.zprestige.prestige.hud.TargetElement#w frameTimeMs +F dev.zprestige.prestige.hud.TimeElement#H BLINK_PERIOD_MS +F dev.zprestige.prestige.hud.TimeElement#a iconTexture +F dev.zprestige.prestige.hud.WatermarkElement#c logoTexture +F dev.zprestige.prestige.input.MouseManager#a pendingScaleFactor +F dev.zprestige.prestige.input.MouseManager#c MOUSE_KEYCODE_TO_BUTTON +F dev.zprestige.prestige.input.MouseManager#d lastGuiPollTime +F dev.zprestige.prestige.inventory.InventoryHelper#a renderer +F dev.zprestige.prestige.inventory.ItemESPHelper#a label +F dev.zprestige.prestige.inventory.ItemESPHelper#b stack +F dev.zprestige.prestige.inventory.ItemLabel#a stack +F dev.zprestige.prestige.inventory.ItemLabel#b text +F dev.zprestige.prestige.math.AutoCrystalHelper#a module +F dev.zprestige.prestige.math.AutoCrystalHelper#b targetPos +F dev.zprestige.prestige.math.AutoCrystalHelper#c renderBox +F dev.zprestige.prestige.math.AutoCrystalHelper#d alpha +F dev.zprestige.prestige.math.AutoCrystalHelper#e frameDelta +F dev.zprestige.prestige.math.AutoCrystalHelper#f lastFrameTime +F dev.zprestige.prestige.math.AutoObbyCrystalHelper#a basePos +F dev.zprestige.prestige.math.AutoObbyCrystalHelper#b supportPos +F dev.zprestige.prestige.math.AutoObbyCrystalHelper#c placeSide +F dev.zprestige.prestige.math.AutoObbyCrystalHelper#d hitVec +F dev.zprestige.prestige.math.AutoObbyCrystalHelper#e needsObsidian +F dev.zprestige.prestige.math.AutoObbyCrystalHelper#f hasCrystal +F dev.zprestige.prestige.math.AutoObbyCrystalHelper#g score +F dev.zprestige.prestige.math.HitEffectHelper#a ageTimer +F dev.zprestige.prestige.math.HitEffectHelper#b origin +F dev.zprestige.prestige.math.HitEffectHelper#c pos +F dev.zprestige.prestige.math.HitEffectHelper#d velocity +F dev.zprestige.prestige.math.HitEffectHelper#e prevPos +F dev.zprestige.prestige.math.HitEffectHelper#f motionModel +F dev.zprestige.prestige.math.HitEffectHelper#g mode +F dev.zprestige.prestige.math.JumpCirclesHelper#a pos +F dev.zprestige.prestige.math.JumpCirclesHelper#b spawnTime +F dev.zprestige.prestige.math.JumpCirclesHelper#c lifetimeMs +F dev.zprestige.prestige.math.MathHelper2#a pos +F dev.zprestige.prestige.math.MathHelper2#b velocity +F dev.zprestige.prestige.math.MathHelper2#c onGround +F dev.zprestige.prestige.math.MathHelper3#a X_FIELD +F dev.zprestige.prestige.math.MathHelper3#b Y_FIELD +F dev.zprestige.prestige.math.MathHelper3#c Z_FIELD +F dev.zprestige.prestige.math.MathHelper3#d target +F dev.zprestige.prestige.math.MathHelper4#a x +F dev.zprestige.prestige.math.MathHelper4#b y +F dev.zprestige.prestige.math.MathHelper4#c width +F dev.zprestige.prestige.math.MathHelper4#d height +F dev.zprestige.prestige.math.MathHelper4#e label +F dev.zprestige.prestige.math.MathHelper6#a texture +F dev.zprestige.prestige.math.MathHelper6#b radius +F dev.zprestige.prestige.math.MathHelper6#c blendMode +F dev.zprestige.prestige.math.MathHelper6#d depthTest +F dev.zprestige.prestige.math.MathUtil3#f CLEARED_BLOCKS +F dev.zprestige.prestige.math.MathUtil3#g EXPLOSIONS +F dev.zprestige.prestige.math.MathUtil3#h PLACED_BLOCKS +F dev.zprestige.prestige.math.MathUtil3#i listenerRegistered +F dev.zprestige.prestige.math.MathUtil4#b NO_INSTANCE_MESSAGE +F dev.zprestige.prestige.math.PearlTrajectoryHelper#a landingPos +F dev.zprestige.prestige.math.PearlTrajectoryHelper#b flightSeconds +F dev.zprestige.prestige.math.PearlTrajectoryHelper#c alpha +F dev.zprestige.prestige.math.Point3D#a minX +F dev.zprestige.prestige.math.Point3D#b minY +F dev.zprestige.prestige.math.Point3D#c maxX +F dev.zprestige.prestige.math.Point3D#d maxY +F dev.zprestige.prestige.math.Point3D#e alpha +F dev.zprestige.prestige.math.Point3D#f lastFrame +F dev.zprestige.prestige.math.Point3D#g target +F dev.zprestige.prestige.math.TrailsHelper#a lastPos +F dev.zprestige.prestige.math.TrailsHelper#b leftFoot +F dev.zprestige.prestige.math.TrailsHelper2#a pos +F dev.zprestige.prestige.math.TrailsHelper2#b spawnTime +F dev.zprestige.prestige.math.TrailsHelper2#c lifetimeMs +F dev.zprestige.prestige.math.TrailsHelper2#d mode +F dev.zprestige.prestige.math.TrailsHelper2#e yawRadians +F dev.zprestige.prestige.math.TrailsHelper2#f leftFoot +F dev.zprestige.prestige.math.TrailsHelper2#g velocity +F dev.zprestige.prestige.math.TrailsHelper2#h randomOffset +F dev.zprestige.prestige.math.TrailsHelper2#i colorBlend +F dev.zprestige.prestige.math.WeatherHelper#a pos +F dev.zprestige.prestige.math.WeatherHelper#b velocity +F dev.zprestige.prestige.math.WeatherHelper#c age +F dev.zprestige.prestige.math.WeatherHelper#d maxAge +F dev.zprestige.prestige.math.WeatherHelper#e phase +F dev.zprestige.prestige.math.WeatherHelper#f colorBlend +F dev.zprestige.prestige.network.NetworkHelper2#a YAW_FIELD +F dev.zprestige.prestige.network.NetworkHelper2#b PITCH_FIELD +F dev.zprestige.prestige.network.NetworkHelper2#c packet +F dev.zprestige.prestige.network.PacketManager#a spoofedSlot +F dev.zprestige.prestige.network.PacketManager#c sendingOwnPacket +F dev.zprestige.prestige.network.PacketQueue#a queueingEnabled +F dev.zprestige.prestige.network.PacketQueue#d pendingSwaps +F dev.zprestige.prestige.network.PacketQueue#e pendingCallbacks +F dev.zprestige.prestige.network.PacketQueue#f serverSprinting +F dev.zprestige.prestige.network.PacketQueue#g serverMoving +F dev.zprestige.prestige.network.PacketQueue#h wasSprinting +F dev.zprestige.prestige.network.PacketQueue#i holdingInput +F dev.zprestige.prestige.network.PacketQueue#j resumeSprint +F dev.zprestige.prestige.network.PacketQueue#k waitTicks +F dev.zprestige.prestige.network.PingManager#a popCounts +F dev.zprestige.prestige.network.PingManager#c presentPlayers +F dev.zprestige.prestige.network.PingManager#e TOTEM_POP_STATUS +F dev.zprestige.prestige.reflect.FieldAccessor#b field +F dev.zprestige.prestige.reflect.FieldAccessor#c isStaticField +F dev.zprestige.prestige.reflect.FieldAccessor#d staticBase +F dev.zprestige.prestige.reflect.FieldAccessor#e fieldOffset +F dev.zprestige.prestige.reflect.FieldAccessor#f varHandle +F dev.zprestige.prestige.reflect.FieldAccessor#g boundInstance +F dev.zprestige.prestige.reflect.FieldAccessor#h MAPPED_FIELD_ACCESSORS +F dev.zprestige.prestige.reflect.FieldSpec#a field +F dev.zprestige.prestige.reflect.FieldSpec#b isStatic +F dev.zprestige.prestige.reflect.FieldSpec#c staticBase +F dev.zprestige.prestige.reflect.FieldSpec#d offset +F dev.zprestige.prestige.reflect.FieldSpec#e varHandle +F dev.zprestige.prestige.reflect.FieldValue#a target +F dev.zprestige.prestige.reflect.FieldValue#b accessor +F dev.zprestige.prestige.reflect.MethodAccessor#a method +F dev.zprestige.prestige.reflect.MethodAccessor#b methodHandle +F dev.zprestige.prestige.reflect.MethodAccessor#c isStaticMethod +F dev.zprestige.prestige.reflect.MethodAccessor#d boundTarget +F dev.zprestige.prestige.reflect.MethodAccessor#e spreadInvoker +F dev.zprestige.prestige.reflect.MethodAccessor#f spreadInvokerResolved +F dev.zprestige.prestige.reflect.MethodAccessor#g NO_ARGS +F dev.zprestige.prestige.reflect.MethodAccessor#h MAPPED_METHOD_ACCESSORS +F dev.zprestige.prestige.reflect.MethodHandleCache#a SET_POS +F dev.zprestige.prestige.reflect.MethodHandleCache#b SET_ROTATION +F dev.zprestige.prestige.reflect.MethodHandleCache#c camera +F dev.zprestige.prestige.reflect.MethodSpec#a method +F dev.zprestige.prestige.reflect.MethodSpec#b handle +F dev.zprestige.prestige.reflect.MethodSpec#c isStatic +F dev.zprestige.prestige.reflect.MethodValue#a resolved +F dev.zprestige.prestige.reflect.MethodValue#b offset +F dev.zprestige.prestige.reflect.MethodValue#c staticBase +F dev.zprestige.prestige.reflect.MethodValue#d isStatic +F dev.zprestige.prestige.reflect.MethodValue#e useUnsafe +F dev.zprestige.prestige.reflect.MethodValue#f varHandle +F dev.zprestige.prestige.reflect.MethodValue#g field +F dev.zprestige.prestige.reflect.MethodValue#h owner +F dev.zprestige.prestige.reflect.MethodValue#i name +F dev.zprestige.prestige.reflect.MethodValue#j type +F dev.zprestige.prestige.reflect.ReflectDescriptor#aN owner +F dev.zprestige.prestige.reflect.ReflectDescriptor#aO name +F dev.zprestige.prestige.reflect.ReflectDescriptor#aP type +F dev.zprestige.prestige.reflect.ReflectDescriptor#aQ targetClass +F dev.zprestige.prestige.reflect.ReflectionBase#a UNSAFE +F dev.zprestige.prestige.reflect.ReflectionBase#b RESOLVED_FIELDS +F dev.zprestige.prestige.reflect.ReflectionBase#c RESOLVED_METHODS +F dev.zprestige.prestige.render.AuraOutlineShader#a color +F dev.zprestige.prestige.render.AuraOutlineShader#b quality +F dev.zprestige.prestige.render.AuraOutlineShader#c radius +F dev.zprestige.prestige.render.AuraOutlineShader#f fill +F dev.zprestige.prestige.render.AuraOutlineShader#i lineWidth +F dev.zprestige.prestige.render.AuraOutlineShader#k haloOpacity +F dev.zprestige.prestige.render.AuraOutlineShader#l coreBoost +F dev.zprestige.prestige.render.AutoTotemHelper#a timestamp +F dev.zprestige.prestige.render.AutoTotemHelper#b damage +F dev.zprestige.prestige.render.ChamsOutlineShader#a color +F dev.zprestige.prestige.render.ColorUniform#a radii +F dev.zprestige.prestige.render.ColorValue#a topRight +F dev.zprestige.prestige.render.ColorValue#b bottomRight +F dev.zprestige.prestige.render.ColorValue#c topLeft +F dev.zprestige.prestige.render.ColorValue#d bottomLeft +F dev.zprestige.prestige.render.DrawContext#a framebuffer +F dev.zprestige.prestige.render.DrawContext#b clearColor +F dev.zprestige.prestige.render.DrawContext#c clearDepth +F dev.zprestige.prestige.render.DrawContext#d shader +F dev.zprestige.prestige.render.DrawMode#a vertexFormat +F dev.zprestige.prestige.render.DrawMode#b primitiveMode +F dev.zprestige.prestige.render.DrawMode#c entityMask +F dev.zprestige.prestige.render.DrawMode#d states +F dev.zprestige.prestige.render.DrawMode#e ASSERTIONS_DISABLED +F dev.zprestige.prestige.render.ESPHelper#a elements +F dev.zprestige.prestige.render.ESPHelper#b readOnlyView +F dev.zprestige.prestige.render.ESPUtil#a activeShader +F dev.zprestige.prestige.render.ESPUtil#c modelMatchCache +F dev.zprestige.prestige.render.ESPUtil#d targetTypes +F dev.zprestige.prestige.render.ESPUtil#e enabled +F dev.zprestige.prestige.render.ESPUtil#f renderInvisible +F dev.zprestige.prestige.render.ESPUtil#g rendererModelCache +F dev.zprestige.prestige.render.ESPUtil#h MISSING_MODEL +F dev.zprestige.prestige.render.Font#a FORMATTING_COLORS +F dev.zprestige.prestige.render.Font#b distanceRange +F dev.zprestige.prestige.render.Font#c atlasWidth +F dev.zprestige.prestige.render.Font#d atlasHeight +F dev.zprestige.prestige.render.Font#e fontSize +F dev.zprestige.prestige.render.Font#f texelWidth +F dev.zprestige.prestige.render.Font#g texelHeight +F dev.zprestige.prestige.render.Font#h glyphs +F dev.zprestige.prestige.render.Font#i widthCache +F dev.zprestige.prestige.render.Font#j metrics +F dev.zprestige.prestige.render.Font#k atlasTexture +F dev.zprestige.prestige.render.Font#l pipelineCustomizer +F dev.zprestige.prestige.render.Font#m drawQueueProvider +F dev.zprestige.prestige.render.Font#n pipeline +F dev.zprestige.prestige.render.Font#o batchKey +F dev.zprestige.prestige.render.FontManager#b fonts +F dev.zprestige.prestige.render.FontManager#c defaultFont +F dev.zprestige.prestige.render.FontRenderer#a glId +F dev.zprestige.prestige.render.FontRenderer#b cleanable +F dev.zprestige.prestige.render.FontRenderer#c target +F dev.zprestige.prestige.render.FontRenderer#d allocated +F dev.zprestige.prestige.render.FontRenderer#e internalFormat +F dev.zprestige.prestige.render.Framebuffer#a glId +F dev.zprestige.prestige.render.Framebuffer#b cleanable +F dev.zprestige.prestige.render.GlPrimitiveTable#a ASSERTIONS_DISABLED +F dev.zprestige.prestige.render.GlPrimitiveTable#b SWITCH_MAP +F dev.zprestige.prestige.render.GlState#a TEXTURE_UNITS +F dev.zprestige.prestige.render.GlState#a0 boundTextures +F dev.zprestige.prestige.render.GlState#a1 blendEquationRgb +F dev.zprestige.prestige.render.GlState#a2 blendEquationAlpha +F dev.zprestige.prestige.render.GlState#a3 blendSrcRgb +F dev.zprestige.prestige.render.GlState#a4 blendDstRgb +F dev.zprestige.prestige.render.GlState#a5 blendSrcAlpha +F dev.zprestige.prestige.render.GlState#a6 blendDstAlpha +F dev.zprestige.prestige.render.GlState#a7 scissorBox +F dev.zprestige.prestige.render.GlState#a8 readFramebuffer +F dev.zprestige.prestige.render.GlState#a9 drawFramebuffer +F dev.zprestige.prestige.render.GlState#aR depthTest +F dev.zprestige.prestige.render.GlState#aS cullFace +F dev.zprestige.prestige.render.GlState#aT blend +F dev.zprestige.prestige.render.GlState#aU scissorTest +F dev.zprestige.prestige.render.GlState#aV program +F dev.zprestige.prestige.render.GlState#aW vertexArray +F dev.zprestige.prestige.render.GlState#aX arrayBuffer +F dev.zprestige.prestige.render.GlState#aY elementArrayBuffer +F dev.zprestige.prestige.render.GlState#aZ activeTexture +F dev.zprestige.prestige.render.GpuBuffer#a LOGGER +F dev.zprestige.prestige.render.GpuBuffer#b glId +F dev.zprestige.prestige.render.GpuBuffer#c size +F dev.zprestige.prestige.render.GpuBuffer#d cleanable +F dev.zprestige.prestige.render.GpuBuffer#e usage +F dev.zprestige.prestige.render.MatrixStack#a drawContext +F dev.zprestige.prestige.render.MatrixStack#b client +F dev.zprestige.prestige.render.MatrixStack#c matrices +F dev.zprestige.prestige.render.MatrixStack#d projectionMatrix +F dev.zprestige.prestige.render.MatrixStack#e modelViewMatrix +F dev.zprestige.prestige.render.MatrixStack#f cameraRotationMatrix +F dev.zprestige.prestige.render.MatrixStack#g currentBuffers +F dev.zprestige.prestige.render.MatrixStack#h currentContext +F dev.zprestige.prestige.render.MatrixStack#i viewport +F dev.zprestige.prestige.render.MatrixStack#j viewportCaptured +F dev.zprestige.prestige.render.MatrixStack#k projectionViewScratch +F dev.zprestige.prestige.render.MatrixStack#l modelViewScratch +F dev.zprestige.prestige.render.MatrixStack#m screenPosScratch +F dev.zprestige.prestige.render.MatrixStack#n viewPosScratch +F dev.zprestige.prestige.render.MatrixStack#o lastFrameIndex +F dev.zprestige.prestige.render.MatrixStack#p frameTimeMillis +F dev.zprestige.prestige.render.MatrixStack#q matrixScratch +F dev.zprestige.prestige.render.MatrixStack#r hsbScratch +F dev.zprestige.prestige.render.MatrixStack#s cachedHsbRgb +F dev.zprestige.prestige.render.MatrixStack#t radiiScratch +F dev.zprestige.prestige.render.MatrixStack#u TRANSPARENT +F dev.zprestige.prestige.render.MatrixStack#v ITEM_BAR_BACKGROUND +F dev.zprestige.prestige.render.MatrixStack#y ITEMS_ATLAS +F dev.zprestige.prestige.render.OutlineShader#a color +F dev.zprestige.prestige.render.PostShader#c compositePasses +F dev.zprestige.prestige.render.PostShader#d maskWidth +F dev.zprestige.prestige.render.PostShader#e maskHeight +F dev.zprestige.prestige.render.PostShader#f initialized +F dev.zprestige.prestige.render.PostShader#g maskFramebuffer +F dev.zprestige.prestige.render.PostShader#h maskTexture +F dev.zprestige.prestige.render.PostShader#j pipelineCache +F dev.zprestige.prestige.render.PostShader#k uniformOverride +F dev.zprestige.prestige.render.PostShader#l maskDrawn +F dev.zprestige.prestige.render.RainbowOutlineShader#a rainbowSpeed +F dev.zprestige.prestige.render.RainbowOutlineShader#c saturation +F dev.zprestige.prestige.render.RainbowOutlineShader#f brightness +F dev.zprestige.prestige.render.RainbowOutlineShader#i glowSize +F dev.zprestige.prestige.render.RenderBatch#a yaw +F dev.zprestige.prestige.render.RenderBatch#b pitch +F dev.zprestige.prestige.render.RenderBatch#c clamped +F dev.zprestige.prestige.render.RenderContract2#b mc +F dev.zprestige.prestige.render.RenderContract5#a HUD_RENDER +F dev.zprestige.prestige.render.RenderContract5#b WORLD_RENDER +F dev.zprestige.prestige.render.RenderContract5#c AFTER_HUD_RENDER +F dev.zprestige.prestige.render.RenderHelper10#a button +F dev.zprestige.prestige.render.RenderHelper10#b scheduledAt +F dev.zprestige.prestige.render.RenderHelper10#c pressDelay +F dev.zprestige.prestige.render.RenderHelper10#d holdDuration +F dev.zprestige.prestige.render.RenderHelper10#e pressed +F dev.zprestige.prestige.render.RenderHelper11#a operation +F dev.zprestige.prestige.render.RenderHelper11#b valueCount +F dev.zprestige.prestige.render.RenderHelper11#c sectionCount +F dev.zprestige.prestige.render.RenderHelper11#d errorCount +F dev.zprestige.prestige.render.RenderHelper11#e warningCount +F dev.zprestige.prestige.render.RenderHelper12#a progress +F dev.zprestige.prestige.render.RenderHelper13#a vertexEmitter +F dev.zprestige.prestige.render.RenderHelper13#b batchKey +F dev.zprestige.prestige.render.RenderHelper15#a owner +F dev.zprestige.prestige.render.RenderHelper15#b slotId +F dev.zprestige.prestige.render.RenderHelper15#c hotbarSlot +F dev.zprestige.prestige.render.RenderHelper15#d callback +F dev.zprestige.prestige.render.RenderHelper16#a target +F dev.zprestige.prestige.render.RenderHelper16#b accessor +F dev.zprestige.prestige.render.RenderHelper18#a SWITCH_MAP +F dev.zprestige.prestige.render.RenderHelper19#a SWITCH_MAP +F dev.zprestige.prestige.render.RenderHelper20#a title +F dev.zprestige.prestige.render.RenderHelper20#b message +F dev.zprestige.prestige.render.RenderHelper20#c type +F dev.zprestige.prestige.render.RenderHelper20#d createdAt +F dev.zprestige.prestige.render.RenderHelper20#e animation +F dev.zprestige.prestige.render.RenderHelper20#f dismissed +F dev.zprestige.prestige.render.RenderHelper21#a axis +F dev.zprestige.prestige.render.RenderHelper21#b position +F dev.zprestige.prestige.render.RenderHelper22#a POS_COLOR +F dev.zprestige.prestige.render.RenderHelper22#b POS_COLOR_TEX +F dev.zprestige.prestige.render.RenderHelper22#c ROUNDED_RECT +F dev.zprestige.prestige.render.RenderHelper22#d GAUSSIAN_BLUR +F dev.zprestige.prestige.render.RenderHelper22#e MSDF_TEXT +F dev.zprestige.prestige.render.RenderHelper23#a title +F dev.zprestige.prestige.render.RenderHelper23#b message +F dev.zprestige.prestige.render.RenderHelper23#c durationMs +F dev.zprestige.prestige.render.RenderHelper23#d createdAt +F dev.zprestige.prestige.render.RenderHelper23#e animation +F dev.zprestige.prestige.render.RenderHelper23#f appearing +F dev.zprestige.prestige.render.RenderHelper23#g dismissing +F dev.zprestige.prestige.render.RenderHelper23#h finished +F dev.zprestige.prestige.render.RenderHelper23#i iconTexture +F dev.zprestige.prestige.render.RenderHelper23#j iconPath +F dev.zprestige.prestige.render.RenderHelper23#k accentColor +F dev.zprestige.prestige.render.RenderHelper24#a slot +F dev.zprestige.prestige.render.RenderHelper24#b rotationManager +F dev.zprestige.prestige.render.RenderHelper26#a source +F dev.zprestige.prestige.render.RenderHelper26#b rawDamage +F dev.zprestige.prestige.render.RenderHelper26#c weightedDamage +F dev.zprestige.prestige.render.RenderHelper28#a callback +F dev.zprestige.prestige.render.RenderHelper29#a callback +F dev.zprestige.prestige.render.RenderHelper3#a throwTick +F dev.zprestige.prestige.render.RenderHelper3#b yaw +F dev.zprestige.prestige.render.RenderHelper3#c pitch +F dev.zprestige.prestige.render.RenderHelper3#d missDistance +F dev.zprestige.prestige.render.RenderHelper3#e interceptTick +F dev.zprestige.prestige.render.RenderHelper30#a vertexBuffer +F dev.zprestige.prestige.render.RenderHelper30#b indexBuffer +F dev.zprestige.prestige.render.RenderHelper30#c vertexArray +F dev.zprestige.prestige.render.RenderHelper30#d initialized +F dev.zprestige.prestige.render.RenderHelper30#e commands +F dev.zprestige.prestige.render.RenderHelper30#f nextDepth +F dev.zprestige.prestige.render.RenderHelper31#a glId +F dev.zprestige.prestige.render.RenderHelper31#b bindings +F dev.zprestige.prestige.render.RenderHelper31#c cleanable +F dev.zprestige.prestige.render.RenderHelper31#d bindingCount +F dev.zprestige.prestige.render.RenderHelper31#e ASSERTIONS_DISABLED +F dev.zprestige.prestige.render.RenderHelper31#g TOO_MANY_BINDINGS_PREFIX +F dev.zprestige.prestige.render.RenderHelper32#a gameRenderer +F dev.zprestige.prestige.render.RenderHelper34#a PROJECTION_MATRIX_FIELD +F dev.zprestige.prestige.render.RenderHelper34#b guiRenderer +F dev.zprestige.prestige.render.RenderHelper35#a keyBinding +F dev.zprestige.prestige.render.RenderHelper35#c BOUND_KEY_FIELD +F dev.zprestige.prestige.render.RenderHelper36#a mouse +F dev.zprestige.prestige.render.RenderHelper36#c MOUSE_BUTTON_METHOD +F dev.zprestige.prestige.render.RenderHelper40#a GET_MATRIX_METHOD +F dev.zprestige.prestige.render.RenderHelper40#b projectionMatrix +F dev.zprestige.prestige.render.RenderHelper41#a renderLayer +F dev.zprestige.prestige.render.RenderHelper41#c RENDER_SETUP_FIELD +F dev.zprestige.prestige.render.RenderHelper5#a duration +F dev.zprestige.prestige.render.RenderHelper5#b initialState +F dev.zprestige.prestige.render.RenderHelper5#c easing +F dev.zprestige.prestige.render.RenderHelper5#d startTime +F dev.zprestige.prestige.render.RenderHelper5#e state +F dev.zprestige.prestige.render.RenderHelper5#g UNSET_START_TIME +F dev.zprestige.prestige.render.RenderHelper6#a batchKey +F dev.zprestige.prestige.render.RenderHelper6#b left +F dev.zprestige.prestige.render.RenderHelper6#c top +F dev.zprestige.prestige.render.RenderHelper6#d right +F dev.zprestige.prestige.render.RenderHelper6#e bottom +F dev.zprestige.prestige.render.RenderHelper6#f minU +F dev.zprestige.prestige.render.RenderHelper6#g minV +F dev.zprestige.prestige.render.RenderHelper6#h maxU +F dev.zprestige.prestige.render.RenderHelper6#i maxV +F dev.zprestige.prestige.render.RenderHelper6#j abgrColor +F dev.zprestige.prestige.render.RenderHelper6#k transform +F dev.zprestige.prestige.render.RenderHelper7#a outputFramebuffer +F dev.zprestige.prestige.render.RenderHelper7#b horizontalFramebuffer +F dev.zprestige.prestige.render.RenderHelper7#c outputTexture +F dev.zprestige.prestige.render.RenderHelper7#d horizontalTexture +F dev.zprestige.prestige.render.RenderHelper7#e width +F dev.zprestige.prestige.render.RenderHelper7#f height +F dev.zprestige.prestige.render.RenderHelper7#g mc +F dev.zprestige.prestige.render.RenderHelper7#h DIRECTION_LOCATION +F dev.zprestige.prestige.render.RenderHelper7#i KERNEL_WIDTH_LOCATION +F dev.zprestige.prestige.render.RenderHelper7#j SIGMA_LOCATION +F dev.zprestige.prestige.render.RenderHelper7#k kernelWidth +F dev.zprestige.prestige.render.RenderHelper7#l kernelSigma +F dev.zprestige.prestige.render.RenderHelper7#m texturesCreated +F dev.zprestige.prestige.render.RenderHelper7#n passes +F dev.zprestige.prestige.render.RenderHelper7#o lastBlurFrame +F dev.zprestige.prestige.render.RenderHelper7#t NO_FRAME +F dev.zprestige.prestige.render.RenderHelper8#a buffersByMode +F dev.zprestige.prestige.render.RenderHelper8#b pendingModes +F dev.zprestige.prestige.render.RenderHelper8#c ASSERTIONS_DISABLED +F dev.zprestige.prestige.render.RenderHelper8#e MISSING_BUILDER_MESSAGE +F dev.zprestige.prestige.render.RenderHelper8#i INDEX_SIZE_BYTES +F dev.zprestige.prestige.render.RenderPass#a targetFramebuffer +F dev.zprestige.prestige.render.RenderPass#b clearColor +F dev.zprestige.prestige.render.RenderPass#c clearDepth +F dev.zprestige.prestige.render.RenderPass#d shader +F dev.zprestige.prestige.render.RenderPass#e projMatLocation +F dev.zprestige.prestige.render.RenderPass#f viewMatLocation +F dev.zprestige.prestige.render.RenderState#a drawQueue +F dev.zprestige.prestige.render.RenderState#b SCRATCH_MATRIX +F dev.zprestige.prestige.render.RenderState#c TEMP_MATRIX +F dev.zprestige.prestige.render.RenderState#d SCRATCH_VECTOR +F dev.zprestige.prestige.render.RenderTarget#a INSTANCE +F dev.zprestige.prestige.render.RenderTarget#b BLURS +F dev.zprestige.prestige.render.RenderTarget#c DRAW_MODES_BY_BLUR +F dev.zprestige.prestige.render.RenderTarget#d roundnessUniform +F dev.zprestige.prestige.render.RenderTarget#e invBlurTexSizeUniform +F dev.zprestige.prestige.render.RenderUtil#a CLEANER +F dev.zprestige.prestige.render.RenderUtil#b BUFFER_SOURCE +F dev.zprestige.prestige.render.RenderUtil#c TASK_QUEUE +F dev.zprestige.prestige.render.RenderUtil#d worldContext +F dev.zprestige.prestige.render.RenderUtil#e renderThread +F dev.zprestige.prestige.render.RenderUtil#f frameCount +F dev.zprestige.prestige.render.RenderUtil2#a ticksRemaining +F dev.zprestige.prestige.render.RenderUtil2#c listenerRegistered +F dev.zprestige.prestige.render.RenderUtil4#a VK_TO_GLFW +F dev.zprestige.prestige.render.RenderUtil5#a RANDOM +F dev.zprestige.prestige.render.RenderUtil6#a owner +F dev.zprestige.prestige.render.RenderUtil6#b originalSlot +F dev.zprestige.prestige.render.Renderer2D#a rotationProviders +F dev.zprestige.prestige.render.Renderer2D#c activeRotation +F dev.zprestige.prestige.render.Renderer2D#d serverRotation +F dev.zprestige.prestige.render.Renderer2D#e lastSentRotation +F dev.zprestige.prestige.render.Renderer2D#f yawWrapStep +F dev.zprestige.prestige.render.Renderer2D#g maxRotationStep +F dev.zprestige.prestige.render.Renderer2D#h resyncRotation +F dev.zprestige.prestige.render.Renderer2D#i actedThisTick +F dev.zprestige.prestige.render.Renderer2D#j lockOwner +F dev.zprestige.prestige.render.Renderer2D#k lockedRotation +F dev.zprestige.prestige.render.Renderer2D#l lockWorld +F dev.zprestige.prestige.render.Renderer2D#m scheduledTasks +F dev.zprestige.prestige.render.RoundedOutlinePosColorShader#a INSTANCE +F dev.zprestige.prestige.render.RoundedOutlinePosColorShader#b DRAW_MODE_CACHE +F dev.zprestige.prestige.render.RoundedOutlinePosColorShader#c TEMP_MATRIX +F dev.zprestige.prestige.render.RoundedOutlinePosColorShader#d RADII_SCRATCH +F dev.zprestige.prestige.render.RoundedOutlinePosColorShader#e roundnessUniform +F dev.zprestige.prestige.render.RoundedOutlinePosColorShader#f thicknessUniform +F dev.zprestige.prestige.render.RoundedPosColorShader#a INSTANCE +F dev.zprestige.prestige.render.RoundedPosColorShader#b DRAW_MODE_CACHE +F dev.zprestige.prestige.render.RoundedPosColorShader#c roundnessUniform +F dev.zprestige.prestige.render.RoundedTextureShader#a INSTANCE +F dev.zprestige.prestige.render.RoundedTextureShader#b DRAW_MODE_CACHE +F dev.zprestige.prestige.render.RoundedTextureShader#c tintModeUniform +F dev.zprestige.prestige.render.RoundedTextureShader#d roundnessUniform +F dev.zprestige.prestige.render.SafeAnchorHelper#a startTime +F dev.zprestige.prestige.render.SafeAnchorHelper#b delayMs +F dev.zprestige.prestige.render.Shader#a programId +F dev.zprestige.prestige.render.Shader#b cleanable +F dev.zprestige.prestige.render.Shader#c projMatLocation +F dev.zprestige.prestige.render.Shader#d viewMatLocation +F dev.zprestige.prestige.render.ShaderBase#a mc +F dev.zprestige.prestige.render.ShaderBase#b START_TIME_MS +F dev.zprestige.prestige.render.ShaderBase#c shader +F dev.zprestige.prestige.render.ShaderProgram#a ASSERTIONS_DISABLED +F dev.zprestige.prestige.render.StorageESPHelper#a OUTLINE_SHADER +F dev.zprestige.prestige.render.StorageESPHelper#c framebuffer +F dev.zprestige.prestige.render.StorageESPHelper#d colorTexture +F dev.zprestige.prestige.render.StorageESPHelper#e width +F dev.zprestige.prestige.render.StorageESPHelper#f height +F dev.zprestige.prestige.render.StorageESPHelper#g initialized +F dev.zprestige.prestige.render.StorageESPHelper#h maskDrawMode +F dev.zprestige.prestige.render.StorageESPHelper#i outlinePass +F dev.zprestige.prestige.render.StorageESPHelper#j quality +F dev.zprestige.prestige.render.StorageESPHelper#k radius +F dev.zprestige.prestige.render.StorageESPHelper#l fill +F dev.zprestige.prestige.render.TextRenderer#a format +F dev.zprestige.prestige.render.TextRenderer#b vertexBuffer +F dev.zprestige.prestige.render.TextRenderer#c indexBuffer +F dev.zprestige.prestige.render.TextRenderer#d cleanable +F dev.zprestige.prestige.render.TextRenderer#e vertexData +F dev.zprestige.prestige.render.TextRenderer#f indexData +F dev.zprestige.prestige.render.TextRenderer#g transformScratch +F dev.zprestige.prestige.render.TextRenderer#h baseVertex +F dev.zprestige.prestige.render.TextureUtil#a LOGGER +F dev.zprestige.prestige.render.TextureUtil#b ANISOTROPY_SUPPORTED +F dev.zprestige.prestige.render.TextureUtil#c MAX_ANISOTROPY +F dev.zprestige.prestige.render.Uniform#a MAIN_TARGET +F dev.zprestige.prestige.render.UniformCache#a TRIANGLES +F dev.zprestige.prestige.render.UniformCache#b TRIANGLES_NO_DEPTH +F dev.zprestige.prestige.render.UniformCache#c TRIANGLES_DEPTH_TESTED +F dev.zprestige.prestige.render.UniformCache#d LINES +F dev.zprestige.prestige.render.UniformCache#e LINES_NO_DEPTH +F dev.zprestige.prestige.render.UniformCache#f ROUNDED_RECT_CACHE +F dev.zprestige.prestige.render.UniformCache#g ROUNDNESS_LOCATION +F dev.zprestige.prestige.render.VertexAttribute#a POSITION +F dev.zprestige.prestige.render.VertexAttribute#b POSITION_COLOR +F dev.zprestige.prestige.render.VertexAttribute#c POSITION_COLOR_UV +F dev.zprestige.prestige.render.VertexAttribute#d POSITION_NORMAL_COLOR_UV +F dev.zprestige.prestige.render.VertexAttribute#e POSITION_UV_SIZE_COLOR +F dev.zprestige.prestige.render.VertexAttribute#f POSITION_UV +F dev.zprestige.prestige.render.VertexAttribute#g POSITION_UV_SIZE +F dev.zprestige.prestige.render.VertexBuffer#a QUAD_VERTICES +F dev.zprestige.prestige.render.VertexBuffer#b QUAD_INDICES +F dev.zprestige.prestige.render.VertexBuffer#c QUAD_VAO +F dev.zprestige.prestige.render.VertexBuffer#d passes +F dev.zprestige.prestige.render.VertexFormat#a elements +F dev.zprestige.prestige.render.VertexFormat#b stride +F dev.zprestige.prestige.render.VertexFormat#c offsets +F dev.zprestige.prestige.render.VertexFormat#e INVALID_INDEX_MESSAGE +F dev.zprestige.prestige.social.FriendManager#a friends +F dev.zprestige.prestige.social.FriendManager#b enemies +F dev.zprestige.prestige.type.Easing#a function +F dev.zprestige.prestige.type.NotificationType#a color +F dev.zprestige.prestige.type.ShaderMode#a shader +F dev.zprestige.prestige.util.BindManager#a heldButtons +F dev.zprestige.prestige.util.BindManager#c suppressAttack +F dev.zprestige.prestige.util.BindManager#d suppressUse +F dev.zprestige.prestige.util.BindManager#e attackButton +F dev.zprestige.prestige.util.BindManager#f useButton +F dev.zprestige.prestige.util.BindManager#h MOUSE_BUTTON_LIMIT +F dev.zprestige.prestige.util.LruCache#a maxSize +F dev.zprestige.prestige.util.Timer#a lastFrameTime +F dev.zprestige.prestige.util.Timer#b frameTimeMs +F dev.zprestige.prestige.util.TpsTimer#a notifications +F dev.zprestige.prestige.util.TpsTimer#d animationDelta +F dev.zprestige.prestige.world.CobwebPlacerHelper#a placer +F dev.zprestige.prestige.world.OreColorUtil#a step +F dev.zprestige.prestige.world.OreColorUtil#b index +F dev.zprestige.prestige.world.OreColorUtil#c name +F dev.zprestige.prestige.world.OreColorUtil#d count +F dev.zprestige.prestige.world.OreColorUtil#e heightProvider +F dev.zprestige.prestige.world.OreColorUtil#f heightContext +F dev.zprestige.prestige.world.OreColorUtil#g rarity +F dev.zprestige.prestige.world.OreColorUtil#h discardOnAirChance +F dev.zprestige.prestige.world.OreColorUtil#i size +F dev.zprestige.prestige.world.OreColorUtil#j targets +F dev.zprestige.prestige.world.OreColorUtil#k color +F dev.zprestige.prestige.world.OreColorUtil#l scattered +F dev.zprestige.prestige.world.OreSimulationHelper#a chunkMapAccessor +F dev.zprestige.prestige.world.OreSimulationHelper#c requireLoadedNeighbours +F dev.zprestige.prestige.world.OreSimulationHelper#d nextIndex +F dev.zprestige.prestige.world.OreSimulationHelper#e pendingChunk +F dev.zprestige.prestige.world.TrajectoriesHelper#a hitEntity +F dev.zprestige.prestige.world.TrajectoriesHelper#b inFlight +F dev.zprestige.prestige.world.WorldContract#k NO_OFFSET_MESSAGE +F dev.zprestige.prestige.world.WorldHelper#a CASE_BY_ORDINAL +F dev.zprestige.prestige.world.WorldHelper10#a START_FIELD +F dev.zprestige.prestige.world.WorldHelper10#b END_FIELD +F dev.zprestige.prestige.world.WorldHelper10#c SHAPE_TYPE_FIELD +F dev.zprestige.prestige.world.WorldHelper10#d FLUID_FIELD +F dev.zprestige.prestige.world.WorldHelper10#e SHAPE_CONTEXT_FIELD +F dev.zprestige.prestige.world.WorldHelper10#f context +F dev.zprestige.prestige.world.WorldHelper3#a chunkManager +F dev.zprestige.prestige.world.WorldHelper3#c CHUNKS_FIELD +F dev.zprestige.prestige.world.WorldHelper4#a chunkMap +F dev.zprestige.prestige.world.WorldHelper4#c CHUNKS_FIELD +F dev.zprestige.prestige.world.WorldHelper5#a modifier +F dev.zprestige.prestige.world.WorldHelper5#c COUNT_FIELD +F dev.zprestige.prestige.world.WorldHelper7#a heightContext +F dev.zprestige.prestige.world.WorldHelper8#a modifier +F dev.zprestige.prestige.world.WorldHelper8#c HEIGHT_FIELD +F dev.zprestige.prestige.world.WorldHelper9#a modifier +F dev.zprestige.prestige.world.WorldHelper9#c CHANCE_FIELD +F dev.zprestige.prestige.world.WorldUtil2#b CLIENT +M dev.zprestige.prestige.BoolSetting#setDescription_BoolSetting(java.lang.String) withDescription +M dev.zprestige.prestige.BoolSetting#setVisibility_BoolSetting(java.util.function.Predicate) visibleWhen +M dev.zprestige.prestige.ColorSetting#setDescription_ColorSetting(java.lang.String) withDescription +M dev.zprestige.prestige.ColorSetting#setVisibility_ColorSetting(java.util.function.Predicate) visibleWhen +M dev.zprestige.prestige.EnumSetting#setDescription_EnumSetting(java.lang.String) withDescription +M dev.zprestige.prestige.EnumSetting#setVisibility_EnumSetting(java.util.function.Predicate) visibleWhen +M dev.zprestige.prestige.EventBus#c(dev.zprestige.prestige.ListenerEntry,java.lang.Throwable) logListenerFailure +M dev.zprestige.prestige.EventBus#d(java.util.Map,java.lang.Object) isRegistered +M dev.zprestige.prestige.FloatSetting#setDescription_FloatSetting(java.lang.String) withDescription +M dev.zprestige.prestige.FloatSetting#setVisibility_FloatSetting(java.util.function.Predicate) visibleWhen +M dev.zprestige.prestige.IntSetting#setDescription_IntSetting(java.lang.String) withDescription +M dev.zprestige.prestige.IntSetting#setVisibility_IntSetting(java.util.function.Predicate) visibleWhen +M dev.zprestige.prestige.KeybindSetting#setDescription_KeybindSetting(java.lang.String) withDescription +M dev.zprestige.prestige.KeybindSetting#setVisibility_KeybindSetting(java.util.function.Predicate) visibleWhen +M dev.zprestige.prestige.ListenerEntry#a() getMethod +M dev.zprestige.prestige.ListenerEntry#a_Class() getEventType +M dev.zprestige.prestige.ListenerEntry#a_MethodHandle() getHandle +M dev.zprestige.prestige.ListenerEntry#a_Object() getTarget +M dev.zprestige.prestige.Module#a(java.lang.Object,java.lang.String,java.lang.String,int) injectFromNative +M dev.zprestige.prestige.Module#b() isPersistent +M dev.zprestige.prestige.MultiSetting#setDescription_MultiSetting(java.lang.String) withDescription +M dev.zprestige.prestige.MultiSetting#setVisibility_MultiSetting(java.util.function.Predicate) visibleWhen +M dev.zprestige.prestige.Native#a(java.util.List) registerModules +M dev.zprestige.prestige.Native#b(int,java.lang.StringBuilder) fetchString +M dev.zprestige.prestige.Native#c(java.lang.StringBuilder) fetchStatus +M dev.zprestige.prestige.Native#d(java.lang.String,java.lang.String,boolean,java.lang.String,java.lang.StringBuilder,java.lang.String) request +M dev.zprestige.prestige.Native#e(int,java.lang.StringBuilder) fetchText +M dev.zprestige.prestige.Native#f(int,java.lang.String,java.lang.StringBuilder) fetchField +M dev.zprestige.prestige.Native#g(java.lang.String) submit +M dev.zprestige.prestige.Native#h() onClientTick +M dev.zprestige.prestige.Native#i() toggleMenu +M dev.zprestige.prestige.Native#j() isMenuOpen +M dev.zprestige.prestige.RangeSetting#setDescription_RangeSetting(java.lang.String) withDescription +M dev.zprestige.prestige.RangeSetting#setVisibility_RangeSetting(java.util.function.Predicate) visibleWhen +M dev.zprestige.prestige.TextSetting#setDescription_TextSetting(java.lang.String) withDescription +M dev.zprestige.prestige.TextSetting#setVisibility_TextSetting(java.util.function.Predicate) visibleWhen +M dev.zprestige.prestige.client.Prestige#a() needsWorldRender +M dev.zprestige.prestige.client.Prestige#a_void() postFrameEvent +M dev.zprestige.prestige.client.Prestige#b_v107() needsHudRender +M dev.zprestige.prestige.combat.AimManager#a() processPendingClick +M dev.zprestige.prestige.combat.AimManager#a_void_(int,float) scheduleClick +M dev.zprestige.prestige.combat.CombatHelper2#a(int) setJumpingCooldown +M dev.zprestige.prestige.combat.CombatHelper3#a() getItemUseCooldown +M dev.zprestige.prestige.combat.CombatHelper3#a_void__(int) setItemUseCooldown +M dev.zprestige.prestige.combat.CombatUtil#a(net.minecraft.entity.Entity) isPlayer +M dev.zprestige.prestige.combat.CombatUtil#a_class_1297() getClosestEntity +M dev.zprestige.prestige.combat.CombatUtil#a_class_1657() getClosestEnemy +M dev.zprestige.prestige.combat.CombatUtil#b(float) getClosestEnemyInFov +M dev.zprestige.prestige.combat.CombatUtil#b_boolean(net.minecraft.entity.player.PlayerEntity) isBlockingWithShield +M dev.zprestige.prestige.combat.CombatUtil#c(net.minecraft.entity.player.PlayerEntity) isFacingAway +M dev.zprestige.prestige.combat.CombatUtil2#a_boolean(net.minecraft.entity.player.PlayerEntity,net.minecraft.util.math.BlockPos) isNearPlayer +M dev.zprestige.prestige.combat.CombatUtil2#a_float(net.minecraft.entity.player.PlayerEntity) getMaceDamage +M dev.zprestige.prestige.combat.CombatUtil2#a_v37(net.minecraft.entity.player.PlayerEntity,java.util.EnumSet,float) findBiggestThreat +M dev.zprestige.prestige.combat.CombatUtil2#b(net.minecraft.entity.player.PlayerEntity,java.util.EnumSet) findBiggestThreat +M dev.zprestige.prestige.combat.CombatUtil2#c(dev.zprestige.prestige.render.RenderHelper26,dev.zprestige.prestige.type.BlockBreakType,float,float) keepBiggerThreat +M dev.zprestige.prestige.combat.DamageUtil#a(dev.zprestige.prestige.event.TickEvent3) onGameJoin +M dev.zprestige.prestige.combat.DamageUtil#a(net.minecraft.entity.LivingEntity,net.minecraft.util.math.Vec3d) getCrystalDamage +M dev.zprestige.prestige.combat.DamageUtil#a_class_3965(net.minecraft.world.RaycastContext,net.minecraft.util.math.BlockPos,boolean,net.minecraft.util.math.BlockPos,net.minecraft.util.math.BlockPos,net.minecraft.block.BlockState) raycastWithOverrides +M dev.zprestige.prestige.combat.DamageUtil#a_int(it.unimi.dsi.fastutil.objects.Object2IntMap,net.minecraft.registry.RegistryKey) getEnchantmentLevel +M dev.zprestige.prestige.combat.DamageUtil#a_void___(net.minecraft.item.ItemStack,it.unimi.dsi.fastutil.objects.Object2IntMap) collectEnchantments +M dev.zprestige.prestige.combat.DamageUtil#b_v82(net.minecraft.entity.LivingEntity,net.minecraft.util.math.Vec3d,boolean,net.minecraft.util.math.BlockPos,boolean) getCrystalDamage +M dev.zprestige.prestige.combat.DamageUtil#c_v81(net.minecraft.entity.LivingEntity,net.minecraft.util.math.Vec3d,boolean,net.minecraft.util.math.BlockPos,boolean) computeCrystalDamage +M dev.zprestige.prestige.combat.DamageUtil#d(net.minecraft.entity.LivingEntity,net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d,net.minecraft.util.math.BlockPos) getCrystalDamageAt +M dev.zprestige.prestige.combat.DamageUtil#f(net.minecraft.entity.LivingEntity,net.minecraft.util.math.Vec3d,net.minecraft.util.math.BlockPos,net.minecraft.util.math.BlockPos,net.minecraft.block.BlockState) computeAnchorDamage +M dev.zprestige.prestige.combat.DamageUtil#g(net.minecraft.entity.LivingEntity,net.minecraft.util.math.Vec3d,double) getTntCartDamage +M dev.zprestige.prestige.combat.DamageUtil#h(net.minecraft.entity.LivingEntity,net.minecraft.util.math.Vec3d,double,net.minecraft.util.math.BlockPos,net.minecraft.util.math.BlockPos,net.minecraft.block.BlockState) getTntCartDamage +M dev.zprestige.prestige.combat.DamageUtil#i(net.minecraft.entity.LivingEntity,net.minecraft.util.math.Vec3d,double,net.minecraft.util.math.BlockPos,net.minecraft.util.math.BlockPos,net.minecraft.block.BlockState) computeTntCartDamage +M dev.zprestige.prestige.combat.DamageUtil#j(net.minecraft.entity.LivingEntity,double,net.minecraft.entity.damage.DamageSource) applyProtectionEnchantments +M dev.zprestige.prestige.combat.DamageUtil#k(net.minecraft.entity.LivingEntity,net.minecraft.util.math.Vec3d) getAnchorDamage +M dev.zprestige.prestige.combat.DamageUtil#l(net.minecraft.entity.LivingEntity,net.minecraft.util.math.Vec3d,net.minecraft.util.math.BlockPos,net.minecraft.block.BlockState) getAnchorDamage +M dev.zprestige.prestige.combat.DamageUtil#m(double) scaleByDifficulty +M dev.zprestige.prestige.combat.DamageUtil#n(net.minecraft.entity.LivingEntity,double) applyResistance +M dev.zprestige.prestige.combat.DamageUtil#o(net.minecraft.util.math.Vec3d,net.minecraft.entity.Entity,boolean,net.minecraft.world.RaycastContext,net.minecraft.util.math.BlockPos,boolean,net.minecraft.util.math.BlockPos,net.minecraft.util.math.BlockPos,net.minecraft.block.BlockState) getExposure +M dev.zprestige.prestige.combat.DamageUtil#p(net.minecraft.util.math.Vec3d,net.minecraft.entity.Entity,net.minecraft.util.math.Vec3d,net.minecraft.world.RaycastContext,net.minecraft.util.math.BlockPos,boolean,net.minecraft.util.math.BlockPos,net.minecraft.util.math.BlockPos,net.minecraft.block.BlockState) getExposureWithOffset +M dev.zprestige.prestige.combat.NameTagsUtil#a(float,float) getRowHeight +M dev.zprestige.prestige.combat.NameTagsUtil#b(float) getCardHeight +M dev.zprestige.prestige.combat.RotationManager#a() isRotationApplied +M dev.zprestige.prestige.combat.RotationManager#a(dev.zprestige.prestige.event.EntityEvent4) onPlayerRenderState +M dev.zprestige.prestige.combat.RotationManager#a(dev.zprestige.prestige.event.TickEvent19) onTick +M dev.zprestige.prestige.combat.TargetManager#a(dev.zprestige.prestige.event.TickEvent19) onTick +M dev.zprestige.prestige.combat.TargetManager#a(dev.zprestige.prestige.event.TickEvent3) onGameJoin +M dev.zprestige.prestige.combat.TargetManager#a_Set() getValidatedPlayers +M dev.zprestige.prestige.combat.TargetManager#a_boolean_(net.minecraft.entity.Entity) isValidTarget +M dev.zprestige.prestige.combat.TargetManager#a_v83(net.minecraft.entity.player.PlayerEntity) markValidated +M dev.zprestige.prestige.combat.TargetManager#b(net.minecraft.entity.Entity) checkValidTarget +M dev.zprestige.prestige.combat.TargetTracker#a() getTarget +M dev.zprestige.prestige.combat.TargetTracker#a(dev.zprestige.prestige.event.EntityEvent) onAttack +M dev.zprestige.prestige.combat.TargetTracker#a(dev.zprestige.prestige.event.TickEvent19) onTick +M dev.zprestige.prestige.combat.TargetTracker#a_void____(net.minecraft.entity.player.PlayerEntity) setTarget +M dev.zprestige.prestige.config.ConfigHelper#a(com.google.gson.JsonObject) fromJson +M dev.zprestige.prestige.config.ConfigHelper#a_float_() getLineHeight +M dev.zprestige.prestige.config.ConfigHelper#a_int_() getEmSize +M dev.zprestige.prestige.config.ConfigHelper#b() getAscender +M dev.zprestige.prestige.config.ConfigHelper#c() getDescender +M dev.zprestige.prestige.config.ConfigHelper#d() getUnderlineY +M dev.zprestige.prestige.config.ConfigHelper#e() getUnderlineThickness +M dev.zprestige.prestige.config.ConfigHelper2#a(com.google.gson.JsonObject) fromJson +M dev.zprestige.prestige.config.ConfigHelper2#a_float__() getAdvance +M dev.zprestige.prestige.config.ConfigHelper2#a_int__() getCodePoint +M dev.zprestige.prestige.config.ConfigHelper2#b() getPlaneLeft +M dev.zprestige.prestige.config.ConfigHelper2#c() getPlaneBottom +M dev.zprestige.prestige.config.ConfigHelper2#d() getPlaneRight +M dev.zprestige.prestige.config.ConfigHelper2#e() getPlaneTop +M dev.zprestige.prestige.config.ConfigHelper2#f() getAtlasLeft +M dev.zprestige.prestige.config.ConfigHelper2#g() getAtlasBottom +M dev.zprestige.prestige.config.ConfigHelper2#h() getAtlasRight +M dev.zprestige.prestige.config.ConfigHelper2#i() getAtlasTop +M dev.zprestige.prestige.config.ConfigHelper3#a_InputStream() openStream +M dev.zprestige.prestige.config.ConfigHelper3#a_String() getPath +M dev.zprestige.prestige.config.ConfigHelper3#a_v67(java.lang.String) of +M dev.zprestige.prestige.config.ConfigManager#a() saveToJson +M dev.zprestige.prestige.config.ConfigManager#a(java.lang.String) loadFromJson +M dev.zprestige.prestige.config.ConfigManager#a_JsonObject(java.lang.String,dev.zprestige.prestige.render.RenderHelper11) parseConfigJson +M dev.zprestige.prestige.config.ConfigManager#a_String_(com.google.gson.JsonElement) readScalarString +M dev.zprestige.prestige.config.ConfigManager#a_boolean__(dev.zprestige.prestige.Module,boolean,java.lang.Throwable) restoreModuleState +M dev.zprestige.prestige.config.ConfigManager#a_v100(com.google.gson.JsonObject,java.util.Set,dev.zprestige.prestige.render.RenderHelper11) disableModulesBeforeLoad +M dev.zprestige.prestige.config.ConfigManager#b() consumeLoadReport +M dev.zprestige.prestige.config.ConfigManager#b(com.google.gson.JsonObject,dev.zprestige.prestige.render.RenderHelper11) loadMenuSection +M dev.zprestige.prestige.config.ConfigManager#b_JsonObject(com.google.gson.JsonElement,java.lang.String,dev.zprestige.prestige.render.RenderHelper11) requireSectionObject +M dev.zprestige.prestige.config.ConfigManager#b_String(dev.zprestige.prestige.Setting) serializeSetting +M dev.zprestige.prestige.config.ConfigManager#b_boolean_(dev.zprestige.prestige.hud.HudElement,boolean,java.lang.Throwable) restoreHudState +M dev.zprestige.prestige.config.ConfigManager#c(com.google.gson.JsonObject,dev.zprestige.prestige.Module,java.lang.String,java.util.Set,java.util.List,dev.zprestige.prestige.render.RenderHelper11) loadModuleSection +M dev.zprestige.prestige.config.ConfigManager#c_String(int,int,int,java.lang.String) formatSummary +M dev.zprestige.prestige.config.ConfigManager#c_boolean(java.lang.String) isNestedTooDeeply +M dev.zprestige.prestige.config.ConfigManager#d(com.google.gson.JsonElement,dev.zprestige.prestige.Module,java.lang.String,boolean,dev.zprestige.prestige.render.RenderHelper11) applyModuleEnabledState +M dev.zprestige.prestige.config.ConfigManager#d_String(java.lang.Throwable) describeError +M dev.zprestige.prestige.config.ConfigManager#e(com.google.gson.JsonObject,dev.zprestige.prestige.hud.HudElement,java.lang.String,dev.zprestige.prestige.render.RenderHelper11) loadHudSection +M dev.zprestige.prestige.config.ConfigManager#f(com.google.gson.JsonObject,dev.zprestige.prestige.Setting,java.lang.String,java.util.Set,dev.zprestige.prestige.render.RenderHelper11) loadSetting +M dev.zprestige.prestige.config.ConfigManager#g(com.google.gson.JsonObject,dev.zprestige.prestige.Setting,java.lang.String,dev.zprestige.prestige.render.RenderHelper11) saveSetting +M dev.zprestige.prestige.config.ConfigManager#h(com.google.gson.JsonObject,java.util.Set,java.lang.String,java.lang.String,dev.zprestige.prestige.render.RenderHelper11) reportUnknownKeys +M dev.zprestige.prestige.config.ConfigManager#i(dev.zprestige.prestige.render.RenderHelper11) notifyResult +M dev.zprestige.prestige.config.ConfigManager#j(java.lang.Throwable) rethrowIfFatal +M dev.zprestige.prestige.config.ConfigUtil#a(net.minecraft.util.Identifier) createAssetResource +M dev.zprestige.prestige.config.ConfigUtil#a_class_7367(java.lang.String) createInputSupplier +M dev.zprestige.prestige.config.ConfigUtil#b(java.lang.String) createResource +M dev.zprestige.prestige.data.IntData#a(int) of +M dev.zprestige.prestige.data.IntData#a(java.lang.String) getUniformLocation +M dev.zprestige.prestige.data.IntData#a(java.lang.String,boolean,float[]) setMatrix4 +M dev.zprestige.prestige.data.IntData#a(java.lang.String,float) setFloat +M dev.zprestige.prestige.data.IntData#a(java.lang.String,float,float) setVec2 +M dev.zprestige.prestige.data.IntData#a(java.lang.String,float,float,float) setVec3 +M dev.zprestige.prestige.data.IntData#a(java.lang.String,float,float,float,float) setVec4 +M dev.zprestige.prestige.data.IntData#a(java.lang.String,int) setInt +M dev.zprestige.prestige.data.IntData#a(java.lang.String,int,int) setInt2 +M dev.zprestige.prestige.data.IntData#a(java.lang.String,int,int,int) setInt3 +M dev.zprestige.prestige.data.IntData#a(java.lang.String,int,int,int,int) setInt4 +M dev.zprestige.prestige.data.IntData#a(java.lang.String,java.awt.Color) setColor +M dev.zprestige.prestige.data.IntData#b(java.lang.String,boolean,float[]) setMatrix3 +M dev.zprestige.prestige.data.IntData#b(java.lang.String,float,float,float,float) setFloat4 +M dev.zprestige.prestige.data.IntData#c(java.lang.String,boolean,float[]) setMatrix2 +M dev.zprestige.prestige.event.BlockBoolEvent#a() getBlock +M dev.zprestige.prestige.event.BlockBoolEvent#b_v90(boolean) setVisible +M dev.zprestige.prestige.event.BlockBoolEvent#c() isVisible +M dev.zprestige.prestige.event.BlockPosBlockEvent#a() getPos +M dev.zprestige.prestige.event.BlockPosBlockEvent#a_class_2680() getState +M dev.zprestige.prestige.event.BoolEvent#b_v60(boolean) setSkipPost +M dev.zprestige.prestige.event.BoolEvent#c() isSkipPost +M dev.zprestige.prestige.event.ColorEvent#a() getSkyColor +M dev.zprestige.prestige.event.ColorEvent#b_Color() getHorizonColor +M dev.zprestige.prestige.event.ColorEvent#b_v23(java.awt.Color) setSkyColor +M dev.zprestige.prestige.event.ColorEvent#c(java.awt.Color) setHorizonColor +M dev.zprestige.prestige.event.DoubleEvent#a() getX +M dev.zprestige.prestige.event.DoubleEvent#b_double() getY +M dev.zprestige.prestige.event.DoubleEvent#b_v3(double) setX +M dev.zprestige.prestige.event.DoubleEvent#c(double) setY +M dev.zprestige.prestige.event.DoubleEvent#c_double() getZ +M dev.zprestige.prestige.event.DoubleEvent#d(double) setZ +M dev.zprestige.prestige.event.DoubleEvent2#a() getDeltaX +M dev.zprestige.prestige.event.DoubleEvent2#b_v130() getDeltaY +M dev.zprestige.prestige.event.DoubleEvent3#a() getVelocityX +M dev.zprestige.prestige.event.DoubleEvent3#b_double_() getVelocityY +M dev.zprestige.prestige.event.DoubleEvent3#b_v56(double) setVelocityX +M dev.zprestige.prestige.event.DoubleEvent3#c(double) setVelocityY +M dev.zprestige.prestige.event.DoubleEvent3#c_double_() getVelocityZ +M dev.zprestige.prestige.event.DoubleEvent3#d(double) setVelocityZ +M dev.zprestige.prestige.event.EntityEvent#a() getTarget +M dev.zprestige.prestige.event.EntityEvent2#a() getEntity +M dev.zprestige.prestige.event.EntityEvent2#a_class_238() getBox +M dev.zprestige.prestige.event.EntityEvent2#b_v33(net.minecraft.util.math.Box) setBox +M dev.zprestige.prestige.event.EntityEvent3#a() getEntity +M dev.zprestige.prestige.event.EntityEvent5#a() getEntity +M dev.zprestige.prestige.event.EntityEvent5#a_class_2561() getText +M dev.zprestige.prestige.event.EntityEvent5#b_v8(net.minecraft.text.Text) setText +M dev.zprestige.prestige.event.EntityEvent6#a() getEntity +M dev.zprestige.prestige.event.EntityEvent6#a_class_2561_() getOriginalText +M dev.zprestige.prestige.event.EntityEvent6#b_class_2561() getDisplayText +M dev.zprestige.prestige.event.EntityEvent6#b_v112(net.minecraft.entity.Entity) setEntity +M dev.zprestige.prestige.event.EntityEvent6#c(net.minecraft.text.Text) setOriginalText +M dev.zprestige.prestige.event.EntityEvent6#d(net.minecraft.text.Text) setDisplayText +M dev.zprestige.prestige.event.Event#a_EventPhase() getPhase +M dev.zprestige.prestige.event.Event#a_boolean___() isCancelled +M dev.zprestige.prestige.event.Event#a_void_____() cancel +M dev.zprestige.prestige.event.Event#b_boolean__() post +M dev.zprestige.prestige.event.EventManager#a(dev.zprestige.prestige.event.TickEvent17) onRenderStatusEffects +M dev.zprestige.prestige.event.EventManager#a(dev.zprestige.prestige.event.TickEvent4) onPreTick +M dev.zprestige.prestige.event.FloatColorEvent#a() getColor +M dev.zprestige.prestige.event.FloatColorEvent#a_Float() getSkyEnd +M dev.zprestige.prestige.event.FloatColorEvent#a_float____() getStart +M dev.zprestige.prestige.event.FloatColorEvent#b_float() getEnd +M dev.zprestige.prestige.event.FloatColorEvent#b_v40(java.awt.Color) setColor +M dev.zprestige.prestige.event.FloatColorEvent#c(float) setStart +M dev.zprestige.prestige.event.FloatColorEvent#d(float) setEnd +M dev.zprestige.prestige.event.FloatColorEvent#e(java.lang.Float) setSkyEnd +M dev.zprestige.prestige.event.FloatEvent#a() getYaw +M dev.zprestige.prestige.event.FloatEvent#b_float_() getPitch +M dev.zprestige.prestige.event.FloatEvent#b_v45(float) setYaw +M dev.zprestige.prestige.event.FloatEvent#c(float) setPitch +M dev.zprestige.prestige.event.FloatEvent2#a() getYaw +M dev.zprestige.prestige.event.FloatEvent2#b_float__() getPitch +M dev.zprestige.prestige.event.FloatEvent2#b_v124(float) setYaw +M dev.zprestige.prestige.event.FloatEvent2#c(float) setPitch +M dev.zprestige.prestige.event.FloatEvent4#a() getExtraReach +M dev.zprestige.prestige.event.FloatEvent4#a_Predicate() getHittableFilter +M dev.zprestige.prestige.event.FloatEvent4#b_v25(float) setExtraReach +M dev.zprestige.prestige.event.FloatEvent5#a() getMatrices +M dev.zprestige.prestige.event.FloatEvent5#a_class_1306() getArm +M dev.zprestige.prestige.event.FloatEvent5#a_float_____() getSwingProgress +M dev.zprestige.prestige.event.FloatEvent5#b_v63() getEquipProgress +M dev.zprestige.prestige.event.FloatPositionEvent#a() getYaw +M dev.zprestige.prestige.event.FloatPositionEvent#a_class_243() getMovementInput +M dev.zprestige.prestige.event.FloatPositionEvent#b_v43(float) setYaw +M dev.zprestige.prestige.event.FloatPositionEvent#c(net.minecraft.util.math.Vec3d) setMovementInput +M dev.zprestige.prestige.event.IntEvent#a() getExtraTicks +M dev.zprestige.prestige.event.IntEvent#b_v88(int) setExtraTicks +M dev.zprestige.prestige.event.IntEvent2#a() getKey +M dev.zprestige.prestige.event.IntEvent2#b_v36() getAction +M dev.zprestige.prestige.event.IntEvent4#a() getButton +M dev.zprestige.prestige.event.IntEvent4#b_v102() getAction +M dev.zprestige.prestige.event.LongEvent#a() getTime +M dev.zprestige.prestige.event.LongEvent#b_v104(long) setTime +M dev.zprestige.prestige.event.PacketEvent#a() getPacket +M dev.zprestige.prestige.event.PacketEvent2#a() getPacket +M dev.zprestige.prestige.event.PlayerEvent#a() getPlayer +M dev.zprestige.prestige.event.PlayerStringEvent#a() getPlayer +M dev.zprestige.prestige.event.PlayerStringEvent#a_String__() getSuffix +M dev.zprestige.prestige.event.PlayerStringEvent#b_v62(java.lang.String) setSuffix +M dev.zprestige.prestige.event.StringEvent#a() getSkinTextures +M dev.zprestige.prestige.event.StringEvent#a_String___() getPlayerName +M dev.zprestige.prestige.event.StringEvent#b_v106(net.minecraft.entity.player.SkinTextures) setSkinTextures +M dev.zprestige.prestige.event.StringEvent2#a() getTarget +M dev.zprestige.prestige.event.StringEvent2#b_String_() getText +M dev.zprestige.prestige.event.StringEvent2#b_v5(java.lang.String) setTarget +M dev.zprestige.prestige.event.StringEvent2#c(java.lang.String) setText +M dev.zprestige.prestige.event.TickEvent13#a() getChunk +M dev.zprestige.prestige.event.TickEvent22#a() getFrustum +M dev.zprestige.prestige.event.TickEvent29#a() getWindow +M dev.zprestige.prestige.gui.ClickGuiScreen#a() resetClosedState +M dev.zprestige.prestige.gui.GuiHelper#a() getFocusedSlot +M dev.zprestige.prestige.gui.HudEditorScreen#a() getHudScale +M dev.zprestige.prestige.gui.HudEditorScreen#a_HudElementArr() getElements +M dev.zprestige.prestige.gui.HudEditorScreen#a_boolean____(int,int) isOverPanelHeader +M dev.zprestige.prestige.gui.HudEditorScreen#a_void______(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,int,int,float) renderEditor +M dev.zprestige.prestige.gui.HudEditorScreen#b() getHudPixelScale +M dev.zprestige.prestige.gui.HudEditorScreen#b_boolean___(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData) renderHud +M dev.zprestige.prestige.gui.HudEditorScreen#b_void() handleEditorKeys +M dev.zprestige.prestige.gui.HudEditorScreen#c() getPanelHeight +M dev.zprestige.prestige.gui.HudEditorScreen#c_boolean_() shouldRenderHud +M dev.zprestige.prestige.gui.HudEditorScreen#c_void() resetLayout +M dev.zprestige.prestige.gui.HudEditorScreen#d() hasEnabledElement +M dev.zprestige.prestige.hud.CartHelperElement#a(dev.zprestige.prestige.event.TickEvent19) onTick +M dev.zprestige.prestige.hud.CartHelperElement#r() initIconStacks +M dev.zprestige.prestige.hud.CartHelperElement#s(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,float,float,float) drawChargeBar +M dev.zprestige.prestige.hud.CooldownIndicatorElement#a_RenderHelper12() getActiveProgress +M dev.zprestige.prestige.hud.CooldownIndicatorElement#a_v91(float) getProgressColor +M dev.zprestige.prestige.hud.CooldownIndicatorElement#b_v92(java.awt.Color,java.awt.Color,float) lerpColor +M dev.zprestige.prestige.hud.CooldownIndicatorElement#c(net.minecraft.item.ItemStack,float) getItemCooldown +M dev.zprestige.prestige.hud.CooldownIndicatorElement#c_Color(java.awt.Color,float) scaleAlpha +M dev.zprestige.prestige.hud.CooldownIndicatorElement#d(float) smootherStep +M dev.zprestige.prestige.hud.CooldownIndicatorElement#e(float) clamp01 +M dev.zprestige.prestige.hud.CooldownIndicatorElement#f(net.minecraft.item.ItemStack) isMeleeWeapon +M dev.zprestige.prestige.hud.CooldownIndicatorElement#r() hideVanillaIndicator +M dev.zprestige.prestige.hud.CooldownIndicatorElement#s() restoreVanillaIndicator +M dev.zprestige.prestige.hud.CooldownIndicatorElement#t(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,float,float,float) drawBar +M dev.zprestige.prestige.hud.CrosshairElement#a(dev.zprestige.prestige.event.TickEvent14) onRenderCrosshair +M dev.zprestige.prestige.hud.FPSElement#a(float) getFpsColor +M dev.zprestige.prestige.hud.HudElement#a_String____() getName +M dev.zprestige.prestige.hud.HudElement#a_boolean_____() isDragging +M dev.zprestige.prestige.hud.HudElement#a_float_______() getX +M dev.zprestige.prestige.hud.HudElement#a_void_______(float,float) setPosition +M dev.zprestige.prestige.hud.HudElement#b_boolean____() isPositionPending +M dev.zprestige.prestige.hud.HudElement#b_float___() getY +M dev.zprestige.prestige.hud.HudElement#b_void_() recomputeAnchors +M dev.zprestige.prestige.hud.HudElement#c_boolean__() isAnchoredRight +M dev.zprestige.prestige.hud.HudElement#c_v28(float) computeAnchorX +M dev.zprestige.prestige.hud.HudElement#d_boolean() isAnchoredBottom +M dev.zprestige.prestige.hud.HudElement#d_v29(float) computeAnchorY +M dev.zprestige.prestige.hud.HudElement#e_boolean() isEnabled +M dev.zprestige.prestige.hud.HudElement#e_void() resolvePosition +M dev.zprestige.prestige.hud.HudElement#f_void(dev.zprestige.prestige.type.SettingFlag,dev.zprestige.prestige.type.SettingFlag,float,float) setAnchors +M dev.zprestige.prestige.hud.HudElement#g(dev.zprestige.prestige.type.TrajectoryType,float,float) setCornerAnchor +M dev.zprestige.prestige.hud.HudElement#h(float,float) nudge +M dev.zprestige.prestige.hud.HudElement#i(float,float) setSize +M dev.zprestige.prestige.hud.HudElement#j() toggle +M dev.zprestige.prestige.hud.HudElement#k() onUpdate +M dev.zprestige.prestige.hud.HudElement#l(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f) render +M dev.zprestige.prestige.hud.HudElement#m() resetPosition +M dev.zprestige.prestige.hud.HudElement#n(org.joml.Matrix4f,float,float,float,float,int,int,int,java.util.ArrayList) renderEditorRow +M dev.zprestige.prestige.hud.HudElement#o(int,int,boolean) handleEditorMouse +M dev.zprestige.prestige.hud.HudElement#q(org.joml.Matrix4f) renderEditorOutline +M dev.zprestige.prestige.hud.KeybindsElement#a(int) clampAlpha +M dev.zprestige.prestige.hud.LatencyElement#a(float) getPingColor +M dev.zprestige.prestige.hud.LatencyElement#a_int___(float) toColorChannel +M dev.zprestige.prestige.hud.ModuleListElement#a(int) clampAlpha +M dev.zprestige.prestige.hud.ModuleListElement#b_v27(int,int,float) lerpChannel +M dev.zprestige.prestige.hud.ModuleNotificationsElement#a(dev.zprestige.prestige.type.NotificationType) getTypeIcon +M dev.zprestige.prestige.hud.ModuleNotificationsElement#a_Color(dev.zprestige.prestige.type.NotificationType) getTypeColor +M dev.zprestige.prestige.hud.ModuleNotificationsElement#a_int____(int) clampAlpha +M dev.zprestige.prestige.hud.ModuleNotificationsElement#b(java.awt.Color,int) withAlpha +M dev.zprestige.prestige.hud.ModuleNotificationsElement#c(dev.zprestige.prestige.render.RenderHelper20) getToastWidth +M dev.zprestige.prestige.hud.ModuleNotificationsElement#r(dev.zprestige.prestige.Module) notifyToggle +M dev.zprestige.prestige.hud.ModuleNotificationsElement#s(dev.zprestige.prestige.Module,java.lang.String,dev.zprestige.prestige.type.NotificationType) postNotification +M dev.zprestige.prestige.hud.ModuleNotificationsElement#t(java.lang.String,java.lang.String,dev.zprestige.prestige.type.NotificationType) addNotification +M dev.zprestige.prestige.hud.OffscreenArrowElement#a(java.awt.Color,float) toArgbWithAlpha +M dev.zprestige.prestige.hud.OffscreenArrowElement#c(float) clamp01 +M dev.zprestige.prestige.hud.OffscreenArrowElement#r(org.joml.Matrix4f,float,float,float,float,float,float,float,float,float,float,int) drawArrowHead +M dev.zprestige.prestige.hud.PotionDisplayElement#a(java.awt.Color,int) withAlpha +M dev.zprestige.prestige.hud.PotionDisplayElement#b_Color_(java.awt.Color) brightenIfDark +M dev.zprestige.prestige.hud.PotionDisplayElement#b_v30(int) toRomanNumeral +M dev.zprestige.prestige.hud.PotionDisplayElement#c(int) formatDuration +M dev.zprestige.prestige.hud.PotionDisplayElement#c_float(java.lang.String) getLevelBadgeWidth +M dev.zprestige.prestige.hud.PotionDisplayElement#d(dev.zprestige.prestige.combat.CombatHelper) getDurationText +M dev.zprestige.prestige.hud.ResourcesElement#a(dev.zprestige.prestige.event.TickEvent19) onTick +M dev.zprestige.prestige.hud.ResourcesElement#a_v85(net.minecraft.item.Item) countItem +M dev.zprestige.prestige.hud.ResourcesElement#r() initIconStacks +M dev.zprestige.prestige.hud.TPSElement#a(dev.zprestige.prestige.event.PacketEvent) onPacketReceive +M dev.zprestige.prestige.hud.TPSElement#a(dev.zprestige.prestige.event.TickEvent3) onGameJoin +M dev.zprestige.prestige.hud.TPSElement#a_v51(float) getTpsColor +M dev.zprestige.prestige.hud.TargetElement#a(float) getHealthColor +M dev.zprestige.prestige.hud.TargetElement#c(net.minecraft.entity.player.PlayerEntity) getHealthFraction +M dev.zprestige.prestige.hud.TimeElement#r(dev.zprestige.prestige.render.Font,org.joml.Matrix4f,java.lang.String,float,float,float,float,java.awt.Color) drawCentered +M dev.zprestige.prestige.input.MouseManager#a(dev.zprestige.prestige.event.IntEvent2) onKey +M dev.zprestige.prestige.input.MouseManager#a(dev.zprestige.prestige.event.IntEvent4) onMouseButton +M dev.zprestige.prestige.input.MouseManager#a(dev.zprestige.prestige.event.TickEvent24) onFrame +M dev.zprestige.prestige.inventory.ArmorUtil#a() shouldCancelItemUse +M dev.zprestige.prestige.inventory.ArmorUtil#b() isAnchorModuleActive +M dev.zprestige.prestige.inventory.ArmorUtil#c(net.minecraft.item.ItemStack) isUsableItem +M dev.zprestige.prestige.inventory.InventoryHelper#a_float________() getMainHandEquipProgress +M dev.zprestige.prestige.inventory.InventoryHelper#a_v12(float) setMainHandEquipProgress +M dev.zprestige.prestige.inventory.InventoryHelper#b(float) setOffHandEquipProgress +M dev.zprestige.prestige.inventory.InventoryHelper#b_float____() getOffHandEquipProgress +M dev.zprestige.prestige.inventory.InventoryHelper#c(net.minecraft.item.ItemStack) setMainHandStack +M dev.zprestige.prestige.inventory.InventoryHelper#d(net.minecraft.item.ItemStack) setOffHandStack +M dev.zprestige.prestige.inventory.InventoryUtil#a(net.minecraft.item.ItemStack) isSword +M dev.zprestige.prestige.inventory.InventoryUtil#a_Integer(net.minecraft.item.Item) findHotbarSlot +M dev.zprestige.prestige.inventory.InventoryUtil#a_List(net.minecraft.item.Item,boolean) findInventorySlots +M dev.zprestige.prestige.inventory.InventoryUtil#a_class_1792() getHeldItem +M dev.zprestige.prestige.inventory.InventoryUtil#a_int_____() getSelectedSlot +M dev.zprestige.prestige.inventory.InventoryUtil#a_void________(int) selectSlot +M dev.zprestige.prestige.inventory.InventoryUtil#b(net.minecraft.item.ItemStack) isAxe +M dev.zprestige.prestige.inventory.InventoryUtil#b_Integer(net.minecraft.item.Item) findSlotWithOtherItem +M dev.zprestige.prestige.inventory.InventoryUtil#b_List(net.minecraft.item.Item,boolean) collectInventorySlots +M dev.zprestige.prestige.inventory.InventoryUtil#b_void__(int,java.lang.Runnable,boolean) runWithSlot +M dev.zprestige.prestige.inventory.InventoryUtil#c(net.minecraft.item.ItemStack) isPickaxe +M dev.zprestige.prestige.inventory.InventoryUtil#c_Integer() findMaceSlot +M dev.zprestige.prestige.inventory.InventoryUtil#d(net.minecraft.block.Block) findBlockSlot +M dev.zprestige.prestige.inventory.InventoryUtil#e(int,int,net.minecraft.screen.slot.SlotActionType) clickSlot +M dev.zprestige.prestige.inventory.InventoryUtil#e_Integer(int,int,net.minecraft.registry.entry.RegistryEntry) findSplashPotion +M dev.zprestige.prestige.inventory.InventoryUtil#f(int,int) swapSlot +M dev.zprestige.prestige.inventory.InventoryUtil#g(int,int,net.minecraft.screen.slot.SlotActionType) clickContainerSlot +M dev.zprestige.prestige.inventory.InventoryUtil#h(net.minecraft.item.Item) switchToItem +M dev.zprestige.prestige.inventory.InventoryUtil#i(net.minecraft.block.Block) switchToBlock +M dev.zprestige.prestige.inventory.InventoryUtil#j(net.minecraft.item.Item,java.lang.Runnable,boolean) runWithItem +M dev.zprestige.prestige.inventory.InventoryUtil#k(net.minecraft.block.Block,java.lang.Runnable,boolean) runWithBlock +M dev.zprestige.prestige.inventory.InventoryUtil#l(net.minecraft.item.Item) isHolding +M dev.zprestige.prestige.inventory.InventoryUtil#m(net.minecraft.item.Item) isHoldingOffhand +M dev.zprestige.prestige.inventory.InventoryUtil#n(net.minecraft.item.ItemStack,net.minecraft.registry.entry.RegistryEntry) hasEffect +M dev.zprestige.prestige.inventory.InventoryUtil#o(net.minecraft.item.ItemStack) isMace +M dev.zprestige.prestige.inventory.InventoryUtil#p(net.minecraft.item.ItemStack) isWindCharge +M dev.zprestige.prestige.inventory.InventoryUtil2#a(net.minecraft.util.hit.BlockHitResult) interactBlock +M dev.zprestige.prestige.inventory.InventoryUtil2#a_float_________(boolean) getReachDistance +M dev.zprestige.prestige.inventory.InventoryUtil2#a_void_________(net.minecraft.entity.Entity) attackEntity +M dev.zprestige.prestige.inventory.InventoryUtil2#b(net.minecraft.util.hit.BlockHitResult,net.minecraft.util.Hand) interactBlock +M dev.zprestige.prestige.inventory.InventoryUtil2#b_float_____() getReachDistance +M dev.zprestige.prestige.inventory.InventoryUtil2#b_void___() startGliding +M dev.zprestige.prestige.inventory.InventoryUtil2#c(net.minecraft.util.Hand) interactItem +M dev.zprestige.prestige.inventory.InventoryUtil2#d() isBlocking +M dev.zprestige.prestige.inventory.InventoryUtil2#e() isHoldingUsableItem +M dev.zprestige.prestige.inventory.InventoryUtil3#a(net.minecraft.util.math.BlockPos) isLootNearby +M dev.zprestige.prestige.inventory.InventoryUtil3#b(net.minecraft.item.Item) isValuableLoot +M dev.zprestige.prestige.math.AutoCrystalHelper#a(dev.zprestige.prestige.event.TickEvent27) onWorldRender +M dev.zprestige.prestige.math.AutoCrystalHelper#a_class_2338() getTargetPos +M dev.zprestige.prestige.math.AutoCrystalHelper#a_v26(net.minecraft.util.math.BlockPos) setTargetPos +M dev.zprestige.prestige.math.AutoCrystalHelper#b() reset +M dev.zprestige.prestige.math.HitEffectHelper#a() createMotionModel +M dev.zprestige.prestige.math.HitEffectHelper#a_AnimationMode() getMode +M dev.zprestige.prestige.math.HitEffectHelper#a_RenderHelper27() getAgeTimer +M dev.zprestige.prestige.math.HitEffectHelper#a_class_243_() getPrevPos +M dev.zprestige.prestige.math.HitEffectHelper#a_float__________(float) getLifeProgress +M dev.zprestige.prestige.math.HitEffectHelper#a_void__________(boolean) update +M dev.zprestige.prestige.math.HitEffectHelper#b() getPos +M dev.zprestige.prestige.math.HitEffectHelper#c() getVelocity +M dev.zprestige.prestige.math.MathHelper3#d(double,double,double) set +M dev.zprestige.prestige.math.MathHelper4#a_String_____(int) getSpecialKeyName +M dev.zprestige.prestige.math.MathHelper4#a_v127(float,float,float) clamp +M dev.zprestige.prestige.math.MathHelper4#b(java.awt.Color,float) withAlpha +M dev.zprestige.prestige.math.MathHelper4#b_String__() getLabel +M dev.zprestige.prestige.math.MathHelper4#b_float______(float,float,float) approach +M dev.zprestige.prestige.math.MathHelper4#c(float,int) floorToDecimals +M dev.zprestige.prestige.math.MathHelper4#d() getAccentColor +M dev.zprestige.prestige.math.MathHelper4#d_void() init +M dev.zprestige.prestige.math.MathHelper4#e() update +M dev.zprestige.prestige.math.MathHelper4#f() draw +M dev.zprestige.prestige.math.MathHelper4#f_float() getX +M dev.zprestige.prestige.math.MathHelper4#g() onShow +M dev.zprestige.prestige.math.MathHelper4#g_float() getY +M dev.zprestige.prestige.math.MathHelper4#h() onHide +M dev.zprestige.prestige.math.MathHelper4#h_float() getWidth +M dev.zprestige.prestige.math.MathHelper4#i() clearLabel +M dev.zprestige.prestige.math.MathHelper4#i_float() getHeight +M dev.zprestige.prestige.math.MathHelper4#j(float) setX +M dev.zprestige.prestige.math.MathHelper4#k(float) setY +M dev.zprestige.prestige.math.MathHelper4#l(float) setWidth +M dev.zprestige.prestige.math.MathHelper4#m(float) setHeight +M dev.zprestige.prestige.math.MathHelper4#n(java.lang.String) setLabel +M dev.zprestige.prestige.math.MathUtil#b_v31(dev.zprestige.prestige.math.HitEffectHelper) applyLegacyMotion +M dev.zprestige.prestige.math.MathUtil2#b_v66(dev.zprestige.prestige.math.HitEffectHelper) applyPopMotion +M dev.zprestige.prestige.math.MathUtil3#a() ensureListenerRegistered +M dev.zprestige.prestige.math.MathUtil3#a_boolean_______(net.minecraft.util.math.BlockPos) isRecentlyExploded +M dev.zprestige.prestige.math.MathUtil3#b(net.minecraft.util.math.BlockPos) markExplosion +M dev.zprestige.prestige.math.MathUtil3#b_boolean_____(net.minecraft.util.math.BlockPos) isRecentlyPlaced +M dev.zprestige.prestige.math.MathUtil3#c(net.minecraft.util.math.BlockPos,long) markCleared +M dev.zprestige.prestige.math.MathUtil4#a(int) newLruCache +M dev.zprestige.prestige.math.MathUtil4#a_Vector4f(org.joml.Vector4f) quantizeVector +M dev.zprestige.prestige.math.MathUtil4#a_float____________(float) quantize +M dev.zprestige.prestige.math.MathUtil4#a_int______(int) getAlpha +M dev.zprestige.prestige.math.MathUtil4#b(int) getRed +M dev.zprestige.prestige.math.MathUtil4#b_float_______(int) getAlphaFloat +M dev.zprestige.prestige.math.MathUtil4#c(int) getGreen +M dev.zprestige.prestige.math.MathUtil4#c_float_(int) getRedFloat +M dev.zprestige.prestige.math.MathUtil4#d(int) getBlue +M dev.zprestige.prestige.math.MathUtil4#d_float(int) getGreenFloat +M dev.zprestige.prestige.math.MathUtil4#e(int) getBlueFloat +M dev.zprestige.prestige.math.MathUtil4#f(int) channelToFloat +M dev.zprestige.prestige.math.MathUtil5#a(dev.zprestige.prestige.Setting,java.lang.Object) applyValue +M dev.zprestige.prestige.math.MathUtil5#a_Map(dev.zprestige.prestige.MultiSetting,java.lang.String) parseMultiSelection +M dev.zprestige.prestige.math.MathUtil5#a_String______(java.lang.String,int) truncate +M dev.zprestige.prestige.math.MathUtil5#a_boolean________(java.lang.Object) parseBoolean +M dev.zprestige.prestige.math.MathUtil5#a_float_____________(java.lang.Object) parseFloat +M dev.zprestige.prestige.math.MathUtil5#a_int_______(java.lang.String,java.lang.String) parseInt +M dev.zprestige.prestige.math.MathUtil5#b(java.lang.String,java.lang.String) parseColorChannel +M dev.zprestige.prestige.math.WeatherHelper#a(float) advance +M dev.zprestige.prestige.network.NetworkHelper2#a(float) setYaw +M dev.zprestige.prestige.network.NetworkHelper2#b(float) setPitch +M dev.zprestige.prestige.network.NetworkUtil#a(net.minecraft.network.packet.Packet) sendPacket +M dev.zprestige.prestige.network.NetworkUtil2#a(dev.zprestige.prestige.event.PacketEvent) onPacketReceive +M dev.zprestige.prestige.network.NetworkUtil2#a(dev.zprestige.prestige.event.PacketEvent2) onPacketSend +M dev.zprestige.prestige.network.NetworkUtil2#a_v122(long) pruneOldEntries +M dev.zprestige.prestige.network.PacketManager#a(dev.zprestige.prestige.event.PacketEvent2) onPacketSend +M dev.zprestige.prestige.network.PacketManager#a(dev.zprestige.prestige.event.TickEvent5) onItemUse +M dev.zprestige.prestige.network.PacketManager#a_int__________________() getSpoofedSlot +M dev.zprestige.prestige.network.PacketManager#a_v97(int) spoofSlot +M dev.zprestige.prestige.network.PacketManager#b() restoreSlot +M dev.zprestige.prestige.network.PacketQueue#a(dev.zprestige.prestige.event.TickEvent19) onTick +M dev.zprestige.prestige.network.PacketQueue#a(dev.zprestige.prestige.event.TickEvent3) onGameJoin +M dev.zprestige.prestige.network.PacketQueue#a(int,int) requestSwap +M dev.zprestige.prestige.network.PacketQueue#a_boolean____________________________________() hasPendingSwaps +M dev.zprestige.prestige.network.PacketQueue#a_int___________________(java.lang.Object) cancelSwaps +M dev.zprestige.prestige.network.PacketQueue#a_void___________(net.minecraft.network.packet.Packet) onPacketSent +M dev.zprestige.prestige.network.PacketQueue#b_boolean______() shouldHoldInput +M dev.zprestige.prestige.network.PacketQueue#b_v35(int,int,java.lang.Runnable) requestSwapThen +M dev.zprestige.prestige.network.PacketQueue#b_void____() flushQueue +M dev.zprestige.prestige.network.PacketQueue#c_boolean___() consumeResumeSprint +M dev.zprestige.prestige.network.PacketQueue#c_v34(java.lang.Object,int,int) requestSwapFor +M dev.zprestige.prestige.network.PacketQueue#d(java.lang.Object,int,int,java.lang.Runnable) requestSwap +M dev.zprestige.prestige.network.PacketQueue#d_boolean_____() isServerStationary +M dev.zprestige.prestige.network.PingManager#a(dev.zprestige.prestige.event.PacketEvent) onPacketReceive +M dev.zprestige.prestige.network.PingManager#a(dev.zprestige.prestige.event.TickEvent19) onTick +M dev.zprestige.prestige.network.PingManager#a(dev.zprestige.prestige.event.TickEvent3) onGameJoin +M dev.zprestige.prestige.network.PingManager#a_v121(net.minecraft.entity.player.PlayerEntity) getPopCount +M dev.zprestige.prestige.reflect.FieldAccessor#a_Field() getField +M dev.zprestige.prestige.reflect.FieldAccessor#a_MethodValue(java.lang.Class,java.lang.String,java.lang.Class) mappedField +M dev.zprestige.prestige.reflect.FieldAccessor#a_Object_(java.lang.Object) get +M dev.zprestige.prestige.reflect.FieldAccessor#a_v50(java.lang.Class,java.lang.String) of +M dev.zprestige.prestige.reflect.FieldAccessor#b(java.lang.Object,java.lang.String,java.lang.Class,java.lang.Class) bindMapped +M dev.zprestige.prestige.reflect.FieldAccessor#b_void_____(java.lang.Object,java.lang.Object) set +M dev.zprestige.prestige.reflect.FieldAccessor#c(java.lang.Object) set +M dev.zprestige.prestige.reflect.FieldAccessor#c_Object(java.lang.Object) unsafeGet +M dev.zprestige.prestige.reflect.FieldAccessor#d(java.lang.Object,java.lang.Object) unsafeSet +M dev.zprestige.prestige.reflect.FieldAccessor#d_FieldValue(java.lang.Object) bind +M dev.zprestige.prestige.reflect.FieldValue#a() get +M dev.zprestige.prestige.reflect.FieldValue#a_void_____________(java.lang.Object) set +M dev.zprestige.prestige.reflect.MethodAccessor#a_Method() getMethod +M dev.zprestige.prestige.reflect.MethodAccessor#a_MethodHandle_() getSpreadInvoker +M dev.zprestige.prestige.reflect.MethodAccessor#a_Object__(java.lang.Object,java.lang.Object[]) call +M dev.zprestige.prestige.reflect.MethodAccessor#a_RenderHelper16(java.lang.Object,java.lang.String,java.lang.Class,java.lang.Class,java.lang.Class[]) bindMapped +M dev.zprestige.prestige.reflect.MethodAccessor#a_v19(java.lang.Class,java.lang.String,java.lang.Class[]) of +M dev.zprestige.prestige.reflect.MethodAccessor#b(java.lang.Object,java.lang.Object[]) invoke +M dev.zprestige.prestige.reflect.MethodAccessor#c_RenderHelper16(java.lang.Object) bindTo +M dev.zprestige.prestige.reflect.MethodAccessor#c_v16(java.lang.Object,java.lang.String,java.lang.Class[]) forInstance +M dev.zprestige.prestige.reflect.MethodAccessor#e(java.lang.Class,java.lang.String,java.lang.Class,java.lang.Class[]) ofMapped +M dev.zprestige.prestige.reflect.MethodHandleCache#a_v6(double,double,double) setPos +M dev.zprestige.prestige.reflect.MethodHandleCache#b(float,float) setRotation +M dev.zprestige.prestige.reflect.MethodValue#a_v114(java.lang.Object) resolveTarget +M dev.zprestige.prestige.reflect.MethodValue#a_void______________(java.lang.Object,double) setDouble +M dev.zprestige.prestige.reflect.MethodValue#b(java.lang.Object,float) setFloat +M dev.zprestige.prestige.reflect.MethodValue#b_Object(java.lang.Object) get +M dev.zprestige.prestige.reflect.MethodValue#c(java.lang.Object) getViaLookup +M dev.zprestige.prestige.reflect.MethodValue#d(java.lang.Object) getReflective +M dev.zprestige.prestige.reflect.MethodValue#f(java.lang.Object,java.lang.Object) set +M dev.zprestige.prestige.reflect.MethodValue#g(java.lang.Object,java.lang.Object) setViaLookup +M dev.zprestige.prestige.reflect.MethodValue#h(java.lang.Object,java.lang.Object) setReflective +M dev.zprestige.prestige.reflect.ReflectionBase#a_AccessibleObject(java.lang.reflect.AccessibleObject) forceAccessible +M dev.zprestige.prestige.reflect.ReflectionBase#a_Class_(java.lang.String,java.lang.ClassLoader) parseFieldDescriptor +M dev.zprestige.prestige.reflect.ReflectionBase#a_FieldSpec(java.lang.Class,java.lang.String) resolveDeclaredField +M dev.zprestige.prestige.reflect.ReflectionBase#a_MethodSpec(java.lang.Class,java.lang.String,java.lang.Class[]) resolveMethod +M dev.zprestige.prestige.reflect.ReflectionBase#a_v21(java.lang.Class[]) buildParameterKey +M dev.zprestige.prestige.reflect.ReflectionBase#a_void____________(java.lang.reflect.Field) removeFinalModifier +M dev.zprestige.prestige.reflect.ReflectionBase#b_FieldSpec(java.lang.Class,java.lang.String,java.lang.String) resolveFieldByDescriptor +M dev.zprestige.prestige.reflect.ReflectionBase#b_v17(java.lang.Class,int) toArrayType +M dev.zprestige.prestige.reflect.ReflectionBase#c_v49(int) primitiveForDescriptor +M dev.zprestige.prestige.render.DrawContext#a(int) setFramebuffer +M dev.zprestige.prestige.render.DrawContext#a_RenderPass() build +M dev.zprestige.prestige.render.DrawContext#b(java.util.function.IntSupplier) setFramebufferSupplier +M dev.zprestige.prestige.render.DrawContext#c(java.util.OptionalInt) setClearColor +M dev.zprestige.prestige.render.DrawContext#d(java.util.OptionalDouble) setClearDepth +M dev.zprestige.prestige.render.DrawContext#e(dev.zprestige.prestige.render.Shader) setShader +M dev.zprestige.prestige.render.DrawMode#a() getPrimitiveMode +M dev.zprestige.prestige.render.DrawMode#a_VertexFormat() getVertexFormat +M dev.zprestige.prestige.render.DrawMode#a_boolean_____________________________________(dev.zprestige.prestige.render.Uniform[]) hasNoDuplicateStates +M dev.zprestige.prestige.render.DrawMode#a_void________________(dev.zprestige.prestige.data.MatrixCameraData,dev.zprestige.prestige.render.RenderHelper31,dev.zprestige.prestige.render.GpuBuffer,dev.zprestige.prestige.data.VertexIntData) draw +M dev.zprestige.prestige.render.DrawMode#b() isEntityMask +M dev.zprestige.prestige.render.ESPHelper#a(java.lang.Object) add +M dev.zprestige.prestige.render.ESPHelper#a_Set_() asSet +M dev.zprestige.prestige.render.ESPHelper#f() isEmpty +M dev.zprestige.prestige.render.ESPUtil#a_Class__(net.minecraft.client.render.entity.EntityRenderer) getRendererModelClass +M dev.zprestige.prestige.render.ESPUtil#a_PostShader() getActiveShader +M dev.zprestige.prestige.render.ESPUtil#a_boolean______________________________________(net.minecraft.client.render.entity.model.EntityModel,dev.zprestige.prestige.render.ESPHelper) isModelOfTypes +M dev.zprestige.prestige.render.ESPUtil#a_v52(dev.zprestige.prestige.type.ShaderMode) setShaderMode +M dev.zprestige.prestige.render.ESPUtil#b(net.minecraft.client.render.entity.model.EntityModel) isTargetModel +M dev.zprestige.prestige.render.ESPUtil#c(net.minecraft.client.render.entity.model.EntityModel) matchesTargetTypes +M dev.zprestige.prestige.render.Font#a() close +M dev.zprestige.prestige.render.Font#a(java.io.Reader,java.io.InputStream) loadAtlas +M dev.zprestige.prestige.render.Font#a_DrawMode() getPipeline +M dev.zprestige.prestige.render.Font#a_VectorData() getBatchKey +M dev.zprestige.prestige.render.Font#a_float______________(java.lang.String) getTextWidth +M dev.zprestige.prestige.render.Font#b(java.util.function.BiConsumer) setPipelineCustomizer +M dev.zprestige.prestige.render.Font#b_float____________________(java.lang.String,float) getTextWidth +M dev.zprestige.prestige.render.Font#c(java.util.function.Function) setDrawQueueProvider +M dev.zprestige.prestige.render.Font#c_float___() getLineHeight +M dev.zprestige.prestige.render.Font#d(float) getLineHeight +M dev.zprestige.prestige.render.Font#e() getFontSize +M dev.zprestige.prestige.render.Font#g(dev.zprestige.prestige.render.RenderHelper30,dev.zprestige.prestige.data.VectorData,org.joml.Matrix4f,dev.zprestige.prestige.config.ConfigHelper2,float,float,float,float,int) drawGlyph +M dev.zprestige.prestige.render.Font#h(org.joml.Matrix4f,java.lang.String,float,float,float,int) drawString +M dev.zprestige.prestige.render.Font#n(org.joml.Matrix4f,java.lang.String,float,float,float,java.awt.Color) drawShadowedString +M dev.zprestige.prestige.render.Font#v(org.joml.Matrix4f,java.lang.String,float,float,java.awt.Color) drawText +M dev.zprestige.prestige.render.Font#w(org.joml.Matrix4f,java.lang.String,float,float,float,java.awt.Color) drawTextScaled +M dev.zprestige.prestige.render.Font#x(java.lang.String,dev.zprestige.prestige.render.RenderContract) forEachGlyph +M dev.zprestige.prestige.render.Font#y(float) setFontSize +M dev.zprestige.prestige.render.FontManager#a() getDefaultFont +M dev.zprestige.prestige.render.FontManager#b(java.lang.String) getFont +M dev.zprestige.prestige.render.FontRenderer#a_int____________________(int) getBindingQuery +M dev.zprestige.prestige.render.FontRenderer#a_v110(int) create +M dev.zprestige.prestige.render.FontRenderer#a_void_________________(int) restoreBinding +M dev.zprestige.prestige.render.FontRenderer#b(int,int) wrap +M dev.zprestige.prestige.render.FontRenderer#b_int() bindTemporarily +M dev.zprestige.prestige.render.FontRenderer#b_void_______(int) setFilter +M dev.zprestige.prestige.render.FontRenderer#c(int,int,int) allocate +M dev.zprestige.prestige.render.FontRenderer#c_FontRenderer(int,int) resize +M dev.zprestige.prestige.render.FontRenderer#d(int,int,int,int,int,int,java.nio.ByteBuffer) uploadRegion +M dev.zprestige.prestige.render.FontRenderer#d_FontRenderer(net.minecraft.util.Identifier) wrapMinecraftTexture +M dev.zprestige.prestige.render.FontRenderer#e(int) setWrapMode +M dev.zprestige.prestige.render.Framebuffer#a() create +M dev.zprestige.prestige.render.Framebuffer#a_void__________________(int,int) attachTextureId +M dev.zprestige.prestige.render.Framebuffer#b(int,dev.zprestige.prestige.render.FontRenderer) attachTexture +M dev.zprestige.prestige.render.Framebuffer#e(float,float,float,float) clearColor +M dev.zprestige.prestige.render.GlState#a() capture +M dev.zprestige.prestige.render.GlState#a_void() restore +M dev.zprestige.prestige.render.GpuBuffer#a() create +M dev.zprestige.prestige.render.GpuBuffer#a(int,long) allocate +M dev.zprestige.prestige.render.GpuBuffer#a_AtomicLong() getSize +M dev.zprestige.prestige.render.GpuBuffer#a_ByteBuffer(long,long,int) mapRange +M dev.zprestige.prestige.render.GpuBuffer#a_int_____________________() getGlId +M dev.zprestige.prestige.render.GpuBuffer#b() getUsage +M dev.zprestige.prestige.render.GpuBuffer#d() unmap +M dev.zprestige.prestige.render.MatrixStack#a() captureViewport +M dev.zprestige.prestige.render.MatrixStack#a_boolean_______________________________________(net.minecraft.item.ItemStack,float,float,float,org.joml.Matrix4f) drawItem +M dev.zprestige.prestige.render.MatrixStack#a_class_243_______________(net.minecraft.util.math.Vec3d) worldToScreen +M dev.zprestige.prestige.render.MatrixStack#a_double_________(double,double) interpolate +M dev.zprestige.prestige.render.MatrixStack#a_float_______________() getTickDelta +M dev.zprestige.prestige.render.MatrixStack#a_intArr() getViewport +M dev.zprestige.prestige.render.MatrixStack#a_int______________________(int) withFullAlpha +M dev.zprestige.prestige.render.MatrixStack#a_long() getFrameTimeMillis +M dev.zprestige.prestige.render.MatrixStack#b(net.minecraft.entity.Entity) getInterpolatedPos +M dev.zprestige.prestige.render.MatrixStack#b_Color_____(java.awt.Color,int,int) getWaveColor +M dev.zprestige.prestige.render.MatrixStack#c() getCameraEntityPos +M dev.zprestige.prestige.render.MatrixStack#c_void_(org.joml.Matrix4f,float,float,float,java.awt.Color) drawCircle +M dev.zprestige.prestige.render.MatrixStack#e(org.joml.Matrix4f,float,float,float,java.awt.Color) drawCircleOutline +M dev.zprestige.prestige.render.MatrixStack#l(org.joml.Matrix4f,float,float,float,float,java.awt.Color,float) drawRoundedRectOutline +M dev.zprestige.prestige.render.MatrixStack#n(org.joml.Matrix4f,float,float,float,float,java.awt.Color,float) drawRoundedRect +M dev.zprestige.prestige.render.MatrixStack#p(org.joml.Matrix4f,float,float,float,float,float,java.awt.Color,java.awt.Color,java.awt.Color,java.awt.Color) drawRoundedGradientRect +M dev.zprestige.prestige.render.MatrixStack#r(org.joml.Matrix4f,float,float,float,float,java.awt.Color) drawRect +M dev.zprestige.prestige.render.MatrixStack#v(float,float,float,float,org.joml.Matrix4f,dev.zprestige.prestige.render.FontRenderer,java.awt.Color) drawTexture +M dev.zprestige.prestige.render.MatrixStack#x(float,float,float,float,float,float,float,float,float,org.joml.Matrix4f,dev.zprestige.prestige.render.FontRenderer,java.awt.Color) drawTextureRegion +M dev.zprestige.prestige.render.PostShader#a() createCompositePasses +M dev.zprestige.prestige.render.PostShader#a_TextRenderer(dev.zprestige.prestige.render.RenderHelper8,int) getMaskBuffer +M dev.zprestige.prestige.render.PostShader#a_void_______________(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData) prepareMask +M dev.zprestige.prestige.render.PostShader#b(dev.zprestige.prestige.render.RenderHelper8,int) getPipelineBuffer +M dev.zprestige.prestige.render.PostShader#b_void______(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData) renderComposite +M dev.zprestige.prestige.render.PostShader#c(dev.zprestige.prestige.data.IntData) setDefaultUniforms +M dev.zprestige.prestige.render.PostShader#d(java.util.function.Consumer) setUniformOverride +M dev.zprestige.prestige.render.PostShader#e() applyUniforms +M dev.zprestige.prestige.render.PostShader#f() resizeIfNeeded +M dev.zprestige.prestige.render.PostShader#g() ensureInitialized +M dev.zprestige.prestige.render.RenderBatch#a() getYaw +M dev.zprestige.prestige.render.RenderBatch#a_boolean________________________________________() isClamped +M dev.zprestige.prestige.render.RenderBatch#a_void___________________(float) setYaw +M dev.zprestige.prestige.render.RenderBatch#b() getPitch +M dev.zprestige.prestige.render.RenderBatch#b_void________(float) setPitch +M dev.zprestige.prestige.render.RenderBatch#c(boolean) setClamped +M dev.zprestige.prestige.render.RenderContract#a(int,dev.zprestige.prestige.config.ConfigHelper2) visit +M dev.zprestige.prestige.render.RenderContract3#a() getRotationPriority +M dev.zprestige.prestige.render.RenderContract3#a_v11() provideRotation +M dev.zprestige.prestige.render.RenderContract4#a(dev.zprestige.prestige.world.WorldContract,float) emitVertices +M dev.zprestige.prestige.render.RenderContract4#a_VectorData_() getBatchKey +M dev.zprestige.prestige.render.RenderContract5#a() createEvent +M dev.zprestige.prestige.render.RenderContract6#a(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData) onRender +M dev.zprestige.prestige.render.RenderHelper10#a() getButton +M dev.zprestige.prestige.render.RenderHelper10#a_boolean_________________________________________() isPressed +M dev.zprestige.prestige.render.RenderHelper10#a_float________________() getPressDelay +M dev.zprestige.prestige.render.RenderHelper10#a_long_() getScheduledAt +M dev.zprestige.prestige.render.RenderHelper10#a_void____________________(boolean) setPressed +M dev.zprestige.prestige.render.RenderHelper10#b() getHoldDuration +M dev.zprestige.prestige.render.RenderHelper11#a_String_______() getSummary +M dev.zprestige.prestige.render.RenderHelper11#a_boolean__________________________________________() hasErrors +M dev.zprestige.prestige.render.RenderHelper11#a_v53(java.lang.String,java.lang.String,java.lang.Object) warn +M dev.zprestige.prestige.render.RenderHelper11#b_v54(java.lang.String,java.lang.String,java.lang.Object) error +M dev.zprestige.prestige.render.RenderHelper11#c(int) addValues +M dev.zprestige.prestige.render.RenderHelper16#a(java.lang.Object[]) invoke +M dev.zprestige.prestige.render.RenderHelper21#a() getAxis +M dev.zprestige.prestige.render.RenderHelper21#a_int_______________________() getPosition +M dev.zprestige.prestige.render.RenderHelper23#a(org.joml.Matrix4f,dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,float,float,float,float,boolean) render +M dev.zprestige.prestige.render.RenderHelper26#a() hasThreat +M dev.zprestige.prestige.render.RenderHelper26#a_float_________________(float) getHealthAfter +M dev.zprestige.prestige.render.RenderHelper26#b(float) isLethal +M dev.zprestige.prestige.render.RenderHelper30#a() ensureInitialized +M dev.zprestige.prestige.render.RenderHelper30#b(dev.zprestige.prestige.render.RenderContract4) enqueue +M dev.zprestige.prestige.render.RenderHelper30#c(dev.zprestige.prestige.data.MatrixCameraData) flush +M dev.zprestige.prestige.render.RenderHelper30#d() clear +M dev.zprestige.prestige.render.RenderHelper31#a(dev.zprestige.prestige.render.GpuBuffer,dev.zprestige.prestige.render.VertexFormat) forBuffer +M dev.zprestige.prestige.render.RenderHelper31#a_List_(dev.zprestige.prestige.render.GpuBuffer,dev.zprestige.prestige.render.VertexFormat) createBindings +M dev.zprestige.prestige.render.RenderHelper31#a_int________________________() getGlId +M dev.zprestige.prestige.render.RenderHelper31#a_void______________________(java.util.List) setBindings +M dev.zprestige.prestige.render.RenderHelper31#b(java.util.List) create +M dev.zprestige.prestige.render.RenderHelper32#a() getOverlayRenderer +M dev.zprestige.prestige.render.RenderHelper34#a() getProjectionMatrix +M dev.zprestige.prestige.render.RenderHelper35#a() getBoundKey +M dev.zprestige.prestige.render.RenderHelper36#a(long,int,int,int) invokeMouseButton +M dev.zprestige.prestige.render.RenderHelper40#a(float,float) getMatrix +M dev.zprestige.prestige.render.RenderHelper41#a() getRenderSetup +M dev.zprestige.prestige.render.RenderHelper5#a() getState +M dev.zprestige.prestige.render.RenderHelper5#a_double__________() getLinearProgress +M dev.zprestige.prestige.render.RenderHelper5#a_float___________________() getProgress +M dev.zprestige.prestige.render.RenderHelper5#a_void_______________________(boolean) setState +M dev.zprestige.prestige.render.RenderHelper5#b() reset +M dev.zprestige.prestige.render.RenderHelper7#a() getWidth +M dev.zprestige.prestige.render.RenderHelper7#a_boolean___________________________________________() updateSize +M dev.zprestige.prestige.render.RenderHelper7#a_void________________________() createTargets +M dev.zprestige.prestige.render.RenderHelper7#b() getHeight +M dev.zprestige.prestige.render.RenderHelper7#b_void_________(long) blurIfNeeded +M dev.zprestige.prestige.render.RenderHelper7#c(long) blur +M dev.zprestige.prestige.render.RenderHelper8#a(dev.zprestige.prestige.render.DrawMode) getBuffer +M dev.zprestige.prestige.render.RenderHelper8#a_Stream() streamActiveBuffers +M dev.zprestige.prestige.render.RenderHelper8#a_void_________________________(dev.zprestige.prestige.data.MatrixCameraData,dev.zprestige.prestige.render.DrawMode) draw +M dev.zprestige.prestige.render.RenderHelper8#b_v65(dev.zprestige.prestige.render.DrawMode,int,int) getBuffer +M dev.zprestige.prestige.render.RenderHelper8#b_void__________(dev.zprestige.prestige.data.MatrixCameraData) flush +M dev.zprestige.prestige.render.RenderLayerUtil#a(net.minecraft.client.render.RenderLayer) getTextureId +M dev.zprestige.prestige.render.RenderLayerUtil#a_class_4588(net.minecraft.client.render.VertexConsumer,int) withOutlineBuffer +M dev.zprestige.prestige.render.RenderPass#a() builder +M dev.zprestige.prestige.render.RenderPass#a_void__________________________() begin +M dev.zprestige.prestige.render.RenderPass#b(dev.zprestige.prestige.data.MatrixCameraData) uploadMatrices +M dev.zprestige.prestige.render.RenderPass#d(dev.zprestige.prestige.render.RenderHelper31,dev.zprestige.prestige.render.GpuBuffer,int,int) drawIndexed +M dev.zprestige.prestige.render.RenderPass#e() clearTarget +M dev.zprestige.prestige.render.RenderState#A(org.joml.Matrix4f,float,float,float,float,int) drawRing +M dev.zprestige.prestige.render.RenderState#C(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,float,float,float,float,java.awt.Color,float,float) drawRoundedRectOutline +M dev.zprestige.prestige.render.RenderState#a() initDrawQueue +M dev.zprestige.prestige.render.RenderState#a_Color________(java.awt.Color,float) withAlpha +M dev.zprestige.prestige.render.RenderState#a_RenderHelper30() getDrawQueue +M dev.zprestige.prestige.render.RenderState#a_int_________________________(java.awt.Color) toAbgr +M dev.zprestige.prestige.render.RenderState#b() flushDrawQueue +M dev.zprestige.prestige.render.RenderState#b_int_(int) argbToAbgr +M dev.zprestige.prestige.render.RenderState#c(dev.zprestige.prestige.data.MatrixCameraData,dev.zprestige.prestige.render.RenderHelper8,java.util.ArrayList,java.awt.Color) drawPath +M dev.zprestige.prestige.render.RenderState#d(dev.zprestige.prestige.data.MatrixCameraData,dev.zprestige.prestige.render.RenderHelper8,float,float,float,float,java.awt.Color,java.awt.Color) drawDisc +M dev.zprestige.prestige.render.RenderState#e(dev.zprestige.prestige.data.MatrixCameraData,dev.zprestige.prestige.render.RenderHelper8,org.joml.Matrix4f,float,float,float,float,java.awt.Color,java.awt.Color) drawDisc +M dev.zprestige.prestige.render.RenderState#f(dev.zprestige.prestige.data.MatrixCameraData,dev.zprestige.prestige.render.RenderHelper8,float,float,float,float,float,float,java.awt.Color,java.awt.Color) drawGlowRing +M dev.zprestige.prestige.render.RenderState#g(dev.zprestige.prestige.data.MatrixCameraData,dev.zprestige.prestige.render.RenderHelper8,float,float,float,float,float,float,java.awt.Color) drawBoxOutline +M dev.zprestige.prestige.render.RenderState#h(dev.zprestige.prestige.data.MatrixCameraData,dev.zprestige.prestige.render.RenderHelper8,float,float,float,float,float,float,java.awt.Color) drawFilledBox +M dev.zprestige.prestige.render.RenderState#k(org.joml.Matrix4f,float,float,float,float,float,float,int) drawTriangle +M dev.zprestige.prestige.render.RenderState#l(org.joml.Matrix4f,float,float,float,float,java.awt.Color) drawRect +M dev.zprestige.prestige.render.RenderState#m(org.joml.Matrix4f,float,float,float,float,int) drawRectArgb +M dev.zprestige.prestige.render.RenderState#u(org.joml.Matrix4f,float,float,float,float,java.awt.Color,org.joml.Vector4f) drawRoundedRect +M dev.zprestige.prestige.render.RenderState#w(org.joml.Matrix4f,float,float,float,float,java.awt.Color,java.awt.Color,java.awt.Color,java.awt.Color,org.joml.Vector4f) drawGradientRoundedRect +M dev.zprestige.prestige.render.RenderState#y(org.joml.Matrix4f,float,float,float,int) drawCircle +M dev.zprestige.prestige.render.RenderTarget#a(dev.zprestige.prestige.render.RenderHelper7,org.joml.Vector4f) getDrawMode +M dev.zprestige.prestige.render.RenderTarget#d(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,float,float,float,float,int,org.joml.Vector4f) drawBlurredRectCorners +M dev.zprestige.prestige.render.RenderTarget#e(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,float,float,float,float,int,float) drawBlurredRect +M dev.zprestige.prestige.render.RenderTarget#g(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,dev.zprestige.prestige.render.RenderHelper7,float,float,float,float,org.joml.Vector4f) queueBlurredRect +M dev.zprestige.prestige.render.RenderUtil#a() getMainFramebufferId +M dev.zprestige.prestige.render.RenderUtil#a_List__() drainTasks +M dev.zprestige.prestige.render.RenderUtil#a_Object___(java.util.function.Supplier) callOnRenderThread +M dev.zprestige.prestige.render.RenderUtil#a_Thread() getRenderThread +M dev.zprestige.prestige.render.RenderUtil#a_Vector3d(dev.zprestige.prestige.data.MatrixCameraData,double,double,double) toCameraRelative +M dev.zprestige.prestige.render.RenderUtil#a_long__() getFrameCount +M dev.zprestige.prestige.render.RenderUtil#a_v125() getScaleFactor +M dev.zprestige.prestige.render.RenderUtil#a_void___________________________(java.lang.Runnable) queueTask +M dev.zprestige.prestige.render.RenderUtil#b() getMainColorTextureId +M dev.zprestige.prestige.render.RenderUtil#b_Vector3d(dev.zprestige.prestige.data.MatrixCameraData,double,double,double,org.joml.Vector3d) toCameraRelative +M dev.zprestige.prestige.render.RenderUtil#c() getFramebufferHeight +M dev.zprestige.prestige.render.RenderUtil#c_void__(java.util.List) runTasks +M dev.zprestige.prestige.render.RenderUtil#d(dev.zprestige.prestige.data.MatrixCameraData) renderWorld +M dev.zprestige.prestige.render.RenderUtil#e(dev.zprestige.prestige.data.MatrixCameraData) renderHud +M dev.zprestige.prestige.render.RenderUtil#f(java.lang.Runnable) runOnRenderThread +M dev.zprestige.prestige.render.RenderUtil#g(java.lang.Thread) setRenderThread +M dev.zprestige.prestige.render.RenderUtil#h() nextFrame +M dev.zprestige.prestige.render.RenderUtil2#a() pressJump +M dev.zprestige.prestige.render.RenderUtil2#b() cancelPress +M dev.zprestige.prestige.render.RenderUtil2#c() releaseJumpKey +M dev.zprestige.prestige.render.RenderUtil3#a(dev.zprestige.prestige.event.TickEvent19) onTick +M dev.zprestige.prestige.render.RenderUtil4#a(int) toGlfwKey +M dev.zprestige.prestige.render.RenderUtil5#a(float,float) randomFloat +M dev.zprestige.prestige.render.RenderUtil5#a_int__________________________(int,int) randomInt +M dev.zprestige.prestige.render.RenderUtil5#b_v131(float,float,float) clamp +M dev.zprestige.prestige.render.RenderUtil6#a(java.lang.Object) claim +M dev.zprestige.prestige.render.RenderUtil6#a_boolean____________________________________________(java.lang.Object) isOwner +M dev.zprestige.prestige.render.RenderUtil6#a_void____________________________(java.lang.Object) release +M dev.zprestige.prestige.render.RenderUtil6#b() getOriginalSlot +M dev.zprestige.prestige.render.Renderer2D#a(dev.zprestige.prestige.event.FloatEvent2) onSendMovementPackets +M dev.zprestige.prestige.render.Renderer2D#a(dev.zprestige.prestige.event.FloatEvent3) onTravel +M dev.zprestige.prestige.render.Renderer2D#a(dev.zprestige.prestige.event.FloatPositionEvent) onMovementYaw +M dev.zprestige.prestige.render.Renderer2D#a(dev.zprestige.prestige.event.PacketEvent2) onPacketSend +M dev.zprestige.prestige.render.Renderer2D#a(dev.zprestige.prestige.event.TickEvent19) onTick +M dev.zprestige.prestige.render.Renderer2D#a(dev.zprestige.prestige.event.TickEvent3) onGameJoin +M dev.zprestige.prestige.render.Renderer2D#a(dev.zprestige.prestige.event.TickEvent4) onPreTick +M dev.zprestige.prestige.render.Renderer2D#a_RenderBatch(net.minecraft.util.math.Vec3d) getRotationTowards +M dev.zprestige.prestige.render.Renderer2D#a_boolean_____________________________________________(java.lang.Object,dev.zprestige.prestige.render.RenderBatch) tryLockRotation +M dev.zprestige.prestige.render.Renderer2D#a_v133(dev.zprestige.prestige.render.RenderBatch) setActiveRotation +M dev.zprestige.prestige.render.Renderer2D#b() clearRotation +M dev.zprestige.prestige.render.Renderer2D#b_RenderBatch____________() getServerRotation +M dev.zprestige.prestige.render.Renderer2D#b_boolean_______(java.lang.Object) isLockHeldBy +M dev.zprestige.prestige.render.Renderer2D#c() getActiveRotation +M dev.zprestige.prestige.render.Renderer2D#c_boolean____() canRotate +M dev.zprestige.prestige.render.Renderer2D#c_void___(java.lang.Object) releaseLock +M dev.zprestige.prestige.render.Renderer2D#d() getLockedRotation +M dev.zprestige.prestige.render.Renderer2D#d_boolean______() hasActedThisTick +M dev.zprestige.prestige.render.Renderer2D#d_void_() clearLock +M dev.zprestige.prestige.render.Renderer2D#e(dev.zprestige.prestige.render.RenderContract3) addRotationProvider +M dev.zprestige.prestige.render.Renderer2D#f(dev.zprestige.prestige.render.RenderContract3) removeRotationProvider +M dev.zprestige.prestige.render.Renderer2D#g(boolean) setActedThisTick +M dev.zprestige.prestige.render.Renderer2D#h(java.lang.Runnable) scheduleTask +M dev.zprestige.prestige.render.Renderer2D#i(int) scheduleSlotSwitch +M dev.zprestige.prestige.render.RoundedOutlinePosColorShader#a(org.joml.Vector4f,float) getDrawMode +M dev.zprestige.prestige.render.RoundedOutlinePosColorShader#c(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,float,float,float,float,java.awt.Color,float,float) drawRoundedOutline +M dev.zprestige.prestige.render.RoundedOutlinePosColorShader#e(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,float,float,float,float,int,org.joml.Vector4f,float) queueOutline +M dev.zprestige.prestige.render.RoundedOutlinePosColorShader#f(dev.zprestige.prestige.world.WorldContract,org.joml.Matrix4f,float,int,float,float,float,float,float,float,float,float,float,float) addSubQuad +M dev.zprestige.prestige.render.RoundedPosColorShader#a(org.joml.Vector4f) getDrawMode +M dev.zprestige.prestige.render.RoundedPosColorShader#c(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,float,float,float,float,java.awt.Color,float) drawRoundedRect +M dev.zprestige.prestige.render.RoundedPosColorShader#e(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,float,float,float,float,int,org.joml.Vector4f) queueRoundedRect +M dev.zprestige.prestige.render.RoundedTextureShader#E(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,dev.zprestige.prestige.render.FontRenderer,float,float,float,float,float,float,float,float,org.joml.Vector4f,java.awt.Color) drawTextureRegion +M dev.zprestige.prestige.render.RoundedTextureShader#G(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,dev.zprestige.prestige.render.FontRenderer,float,float,float,float,float,float,int,org.joml.Vector4f,dev.zprestige.prestige.type.BlendMode) writeWorldTexture +M dev.zprestige.prestige.render.RoundedTextureShader#H(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,dev.zprestige.prestige.render.FontRenderer,float,float,float,float,float,float,int,int,int,int,org.joml.Vector4f,boolean,dev.zprestige.prestige.type.BlendMode) writeWorldTextureGradient +M dev.zprestige.prestige.render.RoundedTextureShader#a(dev.zprestige.prestige.render.FontRenderer,org.joml.Vector4f,dev.zprestige.prestige.type.BlendMode,boolean) getDrawMode +M dev.zprestige.prestige.render.RoundedTextureShader#a_TextRenderer_(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.render.FontRenderer,org.joml.Vector4f,dev.zprestige.prestige.type.BlendMode,boolean) getWorldBuilder +M dev.zprestige.prestige.render.RoundedTextureShader#c(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,dev.zprestige.prestige.render.FontRenderer,float,float,float,float,java.awt.Color) drawTexture +M dev.zprestige.prestige.render.RoundedTextureShader#d(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,dev.zprestige.prestige.render.FontRenderer,float,float,float,float,org.joml.Matrix4f,java.awt.Color) drawTextureQuad +M dev.zprestige.prestige.render.RoundedTextureShader#m(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,dev.zprestige.prestige.render.FontRenderer,float,float,float,float,float,float,java.awt.Color,float) drawWorldTexture +M dev.zprestige.prestige.render.RoundedTextureShader#o(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,dev.zprestige.prestige.render.FontRenderer,float,float,float,float,float,float,java.awt.Color,java.awt.Color,java.awt.Color,java.awt.Color,float,boolean) drawWorldTextureGradient +M dev.zprestige.prestige.render.RoundedTextureShader#y(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,dev.zprestige.prestige.render.FontRenderer,float,float,float,float,org.joml.Vector4f,java.awt.Color,dev.zprestige.prestige.type.BlendMode) queueTexture +M dev.zprestige.prestige.render.RoundedTextureShader#z(dev.zprestige.prestige.render.RenderHelper8,dev.zprestige.prestige.data.MatrixCameraData,org.joml.Matrix4f,dev.zprestige.prestige.render.FontRenderer,float,float,float,float,float,float,float,float,org.joml.Vector4f,java.awt.Color,dev.zprestige.prestige.type.BlendMode) queueTextureRegion +M dev.zprestige.prestige.render.SafeAnchorHelper#a() hasElapsed +M dev.zprestige.prestige.render.Shader#a() getProgramId +M dev.zprestige.prestige.render.Shader#a_void_____________________________(java.lang.String,int) setUniformInt +M dev.zprestige.prestige.render.Shader#b() getProjMatLocation +M dev.zprestige.prestige.render.Shader#c() getViewMatLocation +M dev.zprestige.prestige.render.Shader#d(java.lang.String) getUniformLocation +M dev.zprestige.prestige.render.ShaderBase#a_Shader() getShader +M dev.zprestige.prestige.render.ShaderProgram#a_int____________________________(int,java.lang.String,boolean) compileShader +M dev.zprestige.prestige.render.ShaderProgram#a_v14(java.lang.String,java.lang.String,boolean) loadProgram +M dev.zprestige.prestige.render.StorageESPHelper#a() ensureInitialized +M dev.zprestige.prestige.render.StorageESPHelper#a_DrawMode_() getMaskDrawMode +M dev.zprestige.prestige.render.StorageESPHelper#b_v129(int,float,float) renderOutline +M dev.zprestige.prestige.render.TextRenderer#b_TextRenderer(float[]) appendFloats +M dev.zprestige.prestige.render.TextRenderer#c_TextRenderer(float,float,float) appendPosition +M dev.zprestige.prestige.render.TextRenderer#d_TextRenderer(org.joml.Matrix4f,float,float,float) appendTransformedPosition +M dev.zprestige.prestige.render.TextRenderer#d_void__(dev.zprestige.prestige.render.VertexFormat) setFormat +M dev.zprestige.prestige.render.TextRenderer#e_TextRenderer(int) appendInt +M dev.zprestige.prestige.render.TextRenderer#g_TextRenderer(int[]) appendIndices +M dev.zprestige.prestige.render.TextRenderer#h_TextRenderer() clearBaseVertex +M dev.zprestige.prestige.render.TextRenderer#i(int) withBaseVertex +M dev.zprestige.prestige.render.TextureUtil#a_ByteBuffer_(java.lang.String) readResource +M dev.zprestige.prestige.render.TextureUtil#a_v101(java.lang.String) loadTexture +M dev.zprestige.prestige.render.TextureUtil#c(java.lang.String,int,int,boolean) loadTexture +M dev.zprestige.prestige.render.Uniform#a() cleanup +M dev.zprestige.prestige.render.Uniform#a(boolean,boolean) depthMask +M dev.zprestige.prestige.render.Uniform#a(dev.zprestige.prestige.render.DrawContext) configure +M dev.zprestige.prestige.render.Uniform#a(dev.zprestige.prestige.render.RenderPass) apply +M dev.zprestige.prestige.render.Uniform#a_BoolData2(boolean,boolean) blend +M dev.zprestige.prestige.render.Uniform#a_BoolIntData(boolean,boolean,int,int,int,int) blendFunc +M dev.zprestige.prestige.render.Uniform#a_BoolIntData2(boolean,boolean,int,int,int,int) scissor +M dev.zprestige.prestige.render.Uniform#a_ConsumerData2(java.util.function.Consumer) uniforms +M dev.zprestige.prestige.render.Uniform#a_IntBoolData2(int,boolean) capability +M dev.zprestige.prestige.render.Uniform#a_IntData2(int,int) depthFunc +M dev.zprestige.prestige.render.Uniform#a_IntSupplierData(int) target +M dev.zprestige.prestige.render.Uniform#a_ShaderData(dev.zprestige.prestige.render.Shader) shader +M dev.zprestige.prestige.render.Uniform#a_Uniform(java.util.function.Consumer) onApply +M dev.zprestige.prestige.render.Uniform#a_boolean() allowsDuplicates +M dev.zprestige.prestige.render.Uniform#b(boolean) depthMask +M dev.zprestige.prestige.render.Uniform#b_IntBoolData2(int,boolean,boolean) capability +M dev.zprestige.prestige.render.Uniform#b_Uniform(java.util.function.Consumer) onConfigure +M dev.zprestige.prestige.render.UniformCache#a(org.joml.Vector4f) getRoundedRect +M dev.zprestige.prestige.render.VertexBuffer#a_v68(dev.zprestige.prestige.render.Shader,java.util.function.Consumer,int) addPass +M dev.zprestige.prestige.render.VertexBuffer#a_void______________________________() render +M dev.zprestige.prestige.render.VertexBuffer#b_v69(dev.zprestige.prestige.render.Shader,java.util.function.Consumer,java.util.function.IntSupplier) addDynamicPass +M dev.zprestige.prestige.render.VertexFormat#a(dev.zprestige.prestige.render.GpuBuffer,int) createBinding +M dev.zprestige.prestige.social.AltManager#a(java.lang.String) fetchUuid +M dev.zprestige.prestige.social.AltManager#a_GameProfile(java.util.UUID) fetchProfile +M dev.zprestige.prestige.social.FriendManager#a() getFriends +M dev.zprestige.prestige.social.FriendManager#a(java.lang.String) addFriend +M dev.zprestige.prestige.social.FriendManager#a_v96(java.lang.String) isFriend +M dev.zprestige.prestige.social.FriendManager#b() getEnemies +M dev.zprestige.prestige.social.FriendManager#b(java.lang.String) removeFriend +M dev.zprestige.prestige.social.FriendManager#c() getNonFriendPlayerNames +M dev.zprestige.prestige.type.Easing#a(double) apply +M dev.zprestige.prestige.type.ShaderMode#a() getShader +M dev.zprestige.prestige.util.BindManager#a(dev.zprestige.prestige.event.TickEvent10) onBlockBreaking +M dev.zprestige.prestige.util.BindManager#a(dev.zprestige.prestige.event.TickEvent24) onFrame +M dev.zprestige.prestige.util.BindManager#a(dev.zprestige.prestige.event.TickEvent5) onItemUse +M dev.zprestige.prestige.util.BindManager#a(dev.zprestige.prestige.event.TickEvent7) onAttack +M dev.zprestige.prestige.util.BindManager#a_v77(int) isSimulated +M dev.zprestige.prestige.util.BindManager#b(int) releaseButton +M dev.zprestige.prestige.util.BindManager#b_boolean________(int) isKeyUp +M dev.zprestige.prestige.util.BindManager#c(int) tickButton +M dev.zprestige.prestige.util.ClientUtil#A(net.minecraft.block.Block) createDrawSideEvent +M dev.zprestige.prestige.util.ClientUtil#B(dev.zprestige.prestige.event.BlockBoolEvent) postDrawSideEvent +M dev.zprestige.prestige.util.ClientUtil#C(dev.zprestige.prestige.event.BlockBoolEvent) shouldDrawSide +M dev.zprestige.prestige.util.ClientUtil#D(dev.zprestige.prestige.EventBus,java.lang.Class) hasCameraPosListeners +M dev.zprestige.prestige.util.ClientUtil#E(double,double,double) createCameraPosEvent +M dev.zprestige.prestige.util.ClientUtil#F(dev.zprestige.prestige.event.DoubleEvent) postCameraPosEvent +M dev.zprestige.prestige.util.ClientUtil#G(net.minecraft.client.render.Camera) createCameraPosAccessor +M dev.zprestige.prestige.util.ClientUtil#H(dev.zprestige.prestige.event.DoubleEvent) getCameraPosX +M dev.zprestige.prestige.util.ClientUtil#I(dev.zprestige.prestige.event.DoubleEvent) getCameraPosY +M dev.zprestige.prestige.util.ClientUtil#J(dev.zprestige.prestige.event.DoubleEvent) getCameraPosZ +M dev.zprestige.prestige.util.ClientUtil#K(dev.zprestige.prestige.reflect.MethodHandleCache,double,double,double) setCameraPos +M dev.zprestige.prestige.util.ClientUtil#L(float,float) createCameraRotationEvent +M dev.zprestige.prestige.util.ClientUtil#M(dev.zprestige.prestige.event.FloatEvent) postCameraRotationEvent +M dev.zprestige.prestige.util.ClientUtil#N(net.minecraft.client.render.Camera) createCameraRotationAccessor +M dev.zprestige.prestige.util.ClientUtil#O(dev.zprestige.prestige.event.FloatEvent) getCameraYaw +M dev.zprestige.prestige.util.ClientUtil#P(dev.zprestige.prestige.event.FloatEvent) getCameraPitch +M dev.zprestige.prestige.util.ClientUtil#Q(dev.zprestige.prestige.reflect.MethodHandleCache,float,float) setCameraRotation +M dev.zprestige.prestige.util.ClientUtil#R(dev.zprestige.prestige.EventBus,java.lang.Class) hasChunkOcclusionListeners +M dev.zprestige.prestige.util.ClientUtil#S(net.minecraft.block.Block) createChunkOcclusionEvent +M dev.zprestige.prestige.util.ClientUtil#T(dev.zprestige.prestige.event.BlockBoolEvent) postChunkOcclusionEvent +M dev.zprestige.prestige.util.ClientUtil#U(dev.zprestige.prestige.EventBus,java.lang.Class) hasPacketReceiveListeners +M dev.zprestige.prestige.util.ClientUtil#V(net.minecraft.network.packet.Packet) createPacketReceiveEvent +M dev.zprestige.prestige.util.ClientUtil#W(dev.zprestige.prestige.event.PacketEvent) postPacketReceiveEvent +M dev.zprestige.prestige.util.ClientUtil#X(dev.zprestige.prestige.EventBus,java.lang.Class) hasPacketSendListeners +M dev.zprestige.prestige.util.ClientUtil#Y(net.minecraft.network.packet.Packet) createPacketSendEvent +M dev.zprestige.prestige.util.ClientUtil#Z(dev.zprestige.prestige.event.PacketEvent2) postPacketSendEvent +M dev.zprestige.prestige.util.ClientUtil#a(dev.zprestige.prestige.EventBus,java.lang.Class) hasAmbientOcclusionListeners +M dev.zprestige.prestige.util.ClientUtil#aA(dev.zprestige.prestige.render.Renderer2D) getUpdateVelocityRotation +M dev.zprestige.prestige.util.ClientUtil#aB(float,net.minecraft.util.math.Vec3d) createUpdateVelocityEvent +M dev.zprestige.prestige.util.ClientUtil#aC(dev.zprestige.prestige.event.FloatPositionEvent) postUpdateVelocityEvent +M dev.zprestige.prestige.util.ClientUtil#aD(dev.zprestige.prestige.event.FloatPositionEvent) getUpdateVelocityYaw +M dev.zprestige.prestige.util.ClientUtil#aE(dev.zprestige.prestige.event.FloatPositionEvent) getUpdateVelocityInputOrNull +M dev.zprestige.prestige.util.ClientUtil#aF(dev.zprestige.prestige.event.FloatPositionEvent) getUpdateVelocityInput +M dev.zprestige.prestige.util.ClientUtil#aG(double,double,double) createVelocityVector +M dev.zprestige.prestige.util.ClientUtil#aH(dev.zprestige.prestige.EventBus,java.lang.Class) hasBoundingBoxListeners +M dev.zprestige.prestige.util.ClientUtil#aI(net.minecraft.entity.Entity,net.minecraft.util.math.Box) createBoundingBoxEvent +M dev.zprestige.prestige.util.ClientUtil#aJ(dev.zprestige.prestige.event.EntityEvent2) postBoundingBoxEvent +M dev.zprestige.prestige.util.ClientUtil#aK(dev.zprestige.prestige.event.EntityEvent2) getModifiedBoundingBox +M dev.zprestige.prestige.util.ClientUtil#aL(double,double,double) createSetVelocityEvent +M dev.zprestige.prestige.util.ClientUtil#aM(dev.zprestige.prestige.event.DoubleEvent3) postSetVelocityEvent +M dev.zprestige.prestige.util.ClientUtil#aN(dev.zprestige.prestige.event.DoubleEvent3) getSetVelocityX +M dev.zprestige.prestige.util.ClientUtil#aO(dev.zprestige.prestige.event.DoubleEvent3) getSetVelocityY +M dev.zprestige.prestige.util.ClientUtil#aP(dev.zprestige.prestige.event.DoubleEvent3) getSetVelocityZ +M dev.zprestige.prestige.util.ClientUtil#aQ(dev.zprestige.prestige.render.Renderer2D) getRotationVecOverride +M dev.zprestige.prestige.util.ClientUtil#aR(dev.zprestige.prestige.render.RenderBatch) getRotationVecPitch +M dev.zprestige.prestige.util.ClientUtil#aS(dev.zprestige.prestige.render.RenderBatch) getRotationVecYaw +M dev.zprestige.prestige.util.ClientUtil#aT(dev.zprestige.prestige.render.Renderer2D) getRenderStateRotation +M dev.zprestige.prestige.util.ClientUtil#aU(dev.zprestige.prestige.EventBus,java.lang.Class) hasRenderStatePreListeners +M dev.zprestige.prestige.util.ClientUtil#aV(net.minecraft.entity.Entity,dev.zprestige.prestige.type.EventPhase) createRenderStatePreEvent +M dev.zprestige.prestige.util.ClientUtil#aW(dev.zprestige.prestige.event.EntityEvent4) postRenderStatePreEvent +M dev.zprestige.prestige.util.ClientUtil#aX(dev.zprestige.prestige.combat.RotationManager) isRenderRotationApplied +M dev.zprestige.prestige.util.ClientUtil#aY(dev.zprestige.prestige.EventBus,java.lang.Class) hasRenderStatePostListeners +M dev.zprestige.prestige.util.ClientUtil#aZ(net.minecraft.entity.Entity,dev.zprestige.prestige.type.EventPhase) createRenderStatePostEvent +M dev.zprestige.prestige.util.ClientUtil#aa(dev.zprestige.prestige.network.PacketQueue,net.minecraft.network.packet.Packet) trackOutgoingPacket +M dev.zprestige.prestige.util.ClientUtil#ab() createGameJoinEvent +M dev.zprestige.prestige.util.ClientUtil#ac(dev.zprestige.prestige.event.TickEvent3) postGameJoinEvent +M dev.zprestige.prestige.util.ClientUtil#ad(net.minecraft.world.chunk.WorldChunk) createChunkDataEvent +M dev.zprestige.prestige.util.ClientUtil#ae(dev.zprestige.prestige.event.TickEvent13) postChunkDataEvent +M dev.zprestige.prestige.util.ClientUtil#af(dev.zprestige.prestige.EventBus,java.lang.Class) hasSwingHandListeners +M dev.zprestige.prestige.util.ClientUtil#ag(dev.zprestige.prestige.type.EventPhase) createSwingHandPreEvent +M dev.zprestige.prestige.util.ClientUtil#ah(dev.zprestige.prestige.event.BoolEvent) postSwingHandPreEvent +M dev.zprestige.prestige.util.ClientUtil#ai(dev.zprestige.prestige.event.BoolEvent) shouldSkipSwingHandPost +M dev.zprestige.prestige.util.ClientUtil#aj(dev.zprestige.prestige.type.EventPhase) createSwingHandPostEvent +M dev.zprestige.prestige.util.ClientUtil#ak(dev.zprestige.prestige.event.BoolEvent) postSwingHandPostEvent +M dev.zprestige.prestige.util.ClientUtil#al(dev.zprestige.prestige.type.EventPhase,float,float) createMovementPacketsPreEvent +M dev.zprestige.prestige.util.ClientUtil#am(dev.zprestige.prestige.event.FloatEvent2) postMovementPacketsPreEvent +M dev.zprestige.prestige.util.ClientUtil#an(dev.zprestige.prestige.render.Renderer2D) getLockedMovementRotation +M dev.zprestige.prestige.util.ClientUtil#ao(dev.zprestige.prestige.render.RenderBatch) getLockedRotationYaw +M dev.zprestige.prestige.util.ClientUtil#ap(dev.zprestige.prestige.render.RenderBatch) getLockedRotationPitch +M dev.zprestige.prestige.util.ClientUtil#aq(dev.zprestige.prestige.event.FloatEvent2) getMovementPacketsYaw +M dev.zprestige.prestige.util.ClientUtil#ar(dev.zprestige.prestige.event.FloatEvent2) getMovementPacketsPitch +M dev.zprestige.prestige.util.ClientUtil#as(dev.zprestige.prestige.type.EventPhase,float,float) createMovementPacketsPostEvent +M dev.zprestige.prestige.util.ClientUtil#at(dev.zprestige.prestige.event.FloatEvent2) postMovementPacketsPostEvent +M dev.zprestige.prestige.util.ClientUtil#au(net.minecraft.entity.Entity) createAttackEntityEvent +M dev.zprestige.prestige.util.ClientUtil#av(dev.zprestige.prestige.event.EntityEvent) postAttackEntityEvent +M dev.zprestige.prestige.util.ClientUtil#aw(net.minecraft.entity.Entity,dev.zprestige.prestige.type.EventPhase) createEntityAddedEvent +M dev.zprestige.prestige.util.ClientUtil#ax(dev.zprestige.prestige.event.EntityEvent3) postEntityAddedEvent +M dev.zprestige.prestige.util.ClientUtil#ay(net.minecraft.entity.Entity,dev.zprestige.prestige.type.EventPhase) createEntityRemovedEvent +M dev.zprestige.prestige.util.ClientUtil#az(dev.zprestige.prestige.event.EntityEvent3) postEntityRemovedEvent +M dev.zprestige.prestige.util.ClientUtil#b(net.minecraft.block.Block) createAmbientOcclusionEvent +M dev.zprestige.prestige.util.ClientUtil#bA(net.minecraft.client.render.ProjectionMatrix2) createProjectionMatrixAccessor +M dev.zprestige.prestige.util.ClientUtil#bB(dev.zprestige.prestige.render.RenderHelper40,float,float) getProjectionMatrix +M dev.zprestige.prestige.util.ClientUtil#bC() createHudModelViewMatrix +M dev.zprestige.prestige.util.ClientUtil#bD(org.joml.Matrix4f,org.joml.Matrix4f,net.minecraft.client.render.Camera) createHudRenderContext +M dev.zprestige.prestige.util.ClientUtil#bE(dev.zprestige.prestige.data.MatrixCameraData) renderHudPass +M dev.zprestige.prestige.util.ClientUtil#bF(dev.zprestige.prestige.render.GlState) restoreHudGlState +M dev.zprestige.prestige.util.ClientUtil#bG(dev.zprestige.prestige.render.GlState) restoreHudGlStateOnError +M dev.zprestige.prestige.util.ClientUtil#bH() shouldCaptureCameraMatrices +M dev.zprestige.prestige.util.ClientUtil#bI() createCameraMatrixStack +M dev.zprestige.prestige.util.ClientUtil#bJ(dev.zprestige.prestige.EventBus,java.lang.Class) hasHurtCamListeners +M dev.zprestige.prestige.util.ClientUtil#bK() createHurtCamEvent +M dev.zprestige.prestige.util.ClientUtil#bL(dev.zprestige.prestige.event.TickEvent20) postHurtCamEvent +M dev.zprestige.prestige.util.ClientUtil#bM(dev.zprestige.prestige.EventBus,java.lang.Class) hasFloatingItemTickListeners +M dev.zprestige.prestige.util.ClientUtil#bN(int) createFloatingItemTickEvent +M dev.zprestige.prestige.util.ClientUtil#bO(dev.zprestige.prestige.event.IntEvent) postFloatingItemTickEvent +M dev.zprestige.prestige.util.ClientUtil#bP(dev.zprestige.prestige.event.IntEvent) getExtraFloatingItemTicks +M dev.zprestige.prestige.util.ClientUtil#bQ(net.minecraft.client.render.GameRenderer) createGameRendererAccessor +M dev.zprestige.prestige.util.ClientUtil#bR(dev.zprestige.prestige.render.RenderHelper32) getOverlayRenderer +M dev.zprestige.prestige.util.ClientUtil#bS(dev.zprestige.prestige.EventBus,java.lang.Class) hasReachListeners +M dev.zprestige.prestige.util.ClientUtil#bT() getBaseReachDistance +M dev.zprestige.prestige.util.ClientUtil#bU(float) createReachEvent +M dev.zprestige.prestige.util.ClientUtil#bV(dev.zprestige.prestige.event.FloatEvent4) postReachEvent +M dev.zprestige.prestige.util.ClientUtil#bW(dev.zprestige.prestige.event.FloatEvent4) getExtraReach +M dev.zprestige.prestige.util.ClientUtil#bX() getTargetableEntityPredicate +M dev.zprestige.prestige.util.ClientUtil#bY(java.lang.Object) createHeightContextAccessor +M dev.zprestige.prestige.util.ClientUtil#bZ(dev.zprestige.prestige.world.WorldHelper7,int) setHeightContextMinY +M dev.zprestige.prestige.util.ClientUtil#ba(dev.zprestige.prestige.event.EntityEvent4) postRenderStatePostEvent +M dev.zprestige.prestige.util.ClientUtil#bb(dev.zprestige.prestige.EventBus,java.lang.Class) hasEntitySkyLightListeners +M dev.zprestige.prestige.util.ClientUtil#bc() createEntitySkyLightEvent +M dev.zprestige.prestige.util.ClientUtil#bd(dev.zprestige.prestige.event.TickEvent2) postEntitySkyLightEvent +M dev.zprestige.prestige.util.ClientUtil#be(dev.zprestige.prestige.EventBus,java.lang.Class) hasLabelTextListeners +M dev.zprestige.prestige.util.ClientUtil#bf(dev.zprestige.prestige.EventBus,java.lang.Class) hasHealthIndicatorListeners +M dev.zprestige.prestige.util.ClientUtil#bg(dev.zprestige.prestige.EventBus,java.lang.Class) hasRenderLabelListeners +M dev.zprestige.prestige.util.ClientUtil#bh(net.minecraft.entity.Entity,net.minecraft.text.Text) createLabelTextEvent +M dev.zprestige.prestige.util.ClientUtil#bi(dev.zprestige.prestige.event.EntityEvent5) postLabelTextEvent +M dev.zprestige.prestige.util.ClientUtil#bj(dev.zprestige.prestige.event.EntityEvent5) getLabelText +M dev.zprestige.prestige.util.ClientUtil#bk(net.minecraft.entity.player.PlayerEntity,java.lang.String) createHealthIndicatorEvent +M dev.zprestige.prestige.util.ClientUtil#bl(dev.zprestige.prestige.event.PlayerStringEvent) postHealthIndicatorEvent +M dev.zprestige.prestige.util.ClientUtil#bm(dev.zprestige.prestige.event.PlayerStringEvent) getHealthIndicatorSuffix +M dev.zprestige.prestige.util.ClientUtil#bn(net.minecraft.text.Text,net.minecraft.text.Text,net.minecraft.entity.Entity) createRenderLabelEvent +M dev.zprestige.prestige.util.ClientUtil#bo(dev.zprestige.prestige.event.EntityEvent6) postRenderLabelEvent +M dev.zprestige.prestige.util.ClientUtil#bp() drainHudRenderTasks +M dev.zprestige.prestige.util.ClientUtil#bq() hasHudRenderWork +M dev.zprestige.prestige.util.ClientUtil#br() advanceFrameCounter +M dev.zprestige.prestige.util.ClientUtil#bs() fireIdleFrameEvent +M dev.zprestige.prestige.util.ClientUtil#bt() captureHudGlState +M dev.zprestige.prestige.util.ClientUtil#bu(java.util.List) runHudRenderTasks +M dev.zprestige.prestige.util.ClientUtil#bv() advanceFrameCounterAfterTasks +M dev.zprestige.prestige.util.ClientUtil#bw() fireIdleFrameEventAfterTasks +M dev.zprestige.prestige.util.ClientUtil#bx(dev.zprestige.prestige.render.GlState) restoreHudGlStateAfterTasks +M dev.zprestige.prestige.util.ClientUtil#by(net.minecraft.client.gui.render.GuiRenderer) createGuiRendererAccessor +M dev.zprestige.prestige.util.ClientUtil#bz(dev.zprestige.prestige.render.RenderHelper34) getGuiProjectionMatrix +M dev.zprestige.prestige.util.ClientUtil#c(dev.zprestige.prestige.event.BlockBoolEvent) postAmbientOcclusionEvent +M dev.zprestige.prestige.util.ClientUtil#cA(dev.zprestige.prestige.event.TickEvent16) postInputTickPreEvent +M dev.zprestige.prestige.util.ClientUtil#cB(dev.zprestige.prestige.type.EventPhase) createInputTickPostEvent +M dev.zprestige.prestige.util.ClientUtil#cC(dev.zprestige.prestige.event.TickEvent16) postInputTickPostEvent +M dev.zprestige.prestige.util.ClientUtil#cD(dev.zprestige.prestige.network.PacketQueue) shouldBlockMovementInput +M dev.zprestige.prestige.util.ClientUtil#cE(boolean,boolean,boolean,boolean,boolean,boolean,boolean) createPlayerInput +M dev.zprestige.prestige.util.ClientUtil#cF(dev.zprestige.prestige.network.PacketQueue) shouldRestoreSprint +M dev.zprestige.prestige.util.ClientUtil#cG(dev.zprestige.prestige.EventBus,java.lang.Class) hasLightmapListeners +M dev.zprestige.prestige.util.ClientUtil#cH() createLightmapEvent +M dev.zprestige.prestige.util.ClientUtil#cI(dev.zprestige.prestige.event.TickEvent2) postLightmapEvent +M dev.zprestige.prestige.util.ClientUtil#cJ(dev.zprestige.prestige.render.Renderer2D) getTravelPreRotation +M dev.zprestige.prestige.util.ClientUtil#cK(dev.zprestige.prestige.type.EventPhase,float,float) createTravelPreEvent +M dev.zprestige.prestige.util.ClientUtil#cL(dev.zprestige.prestige.event.FloatEvent3) postTravelPreEvent +M dev.zprestige.prestige.util.ClientUtil#cM(dev.zprestige.prestige.render.Renderer2D) getTravelPostRotation +M dev.zprestige.prestige.util.ClientUtil#cN(dev.zprestige.prestige.type.EventPhase,float,float) createTravelPostEvent +M dev.zprestige.prestige.util.ClientUtil#cO(dev.zprestige.prestige.event.FloatEvent3) postTravelPostEvent +M dev.zprestige.prestige.util.ClientUtil#cP(dev.zprestige.prestige.EventBus,java.lang.Class) hasHandSwingDurationListeners +M dev.zprestige.prestige.util.ClientUtil#cQ(int) createHandSwingDurationEvent +M dev.zprestige.prestige.util.ClientUtil#cR(dev.zprestige.prestige.event.IntEvent3) postHandSwingDurationEvent +M dev.zprestige.prestige.util.ClientUtil#cS(dev.zprestige.prestige.EventBus,java.lang.Class) hasShieldBreakListeners +M dev.zprestige.prestige.util.ClientUtil#cT(net.minecraft.entity.LivingEntity) createShieldBreakEvent +M dev.zprestige.prestige.util.ClientUtil#cU(dev.zprestige.prestige.event.LivingEvent) postShieldBreakEvent +M dev.zprestige.prestige.util.ClientUtil#cV(dev.zprestige.prestige.render.Renderer2D) getJumpRotation +M dev.zprestige.prestige.util.ClientUtil#cW(float) createJumpYawEvent +M dev.zprestige.prestige.util.ClientUtil#cX(dev.zprestige.prestige.event.FloatPositionEvent) postJumpYawEvent +M dev.zprestige.prestige.util.ClientUtil#cY(dev.zprestige.prestige.event.FloatPositionEvent) getJumpYaw +M dev.zprestige.prestige.util.ClientUtil#cZ(net.minecraft.client.render.entity.model.EntityModel) isEspModelForVisibility +M dev.zprestige.prestige.util.ClientUtil#ca(dev.zprestige.prestige.world.WorldHelper7,int) setHeightContextHeight +M dev.zprestige.prestige.util.ClientUtil#cb(dev.zprestige.prestige.EventBus,java.lang.Class) hasSwingArmListeners +M dev.zprestige.prestige.util.ClientUtil#cc(net.minecraft.client.util.math.MatrixStack,net.minecraft.util.Arm,float,float) createSwingArmEvent +M dev.zprestige.prestige.util.ClientUtil#cd(dev.zprestige.prestige.event.FloatEvent5) postSwingArmEvent +M dev.zprestige.prestige.util.ClientUtil#ce() createStatusEffectOverlayEvent +M dev.zprestige.prestige.util.ClientUtil#cf(dev.zprestige.prestige.event.TickEvent17) postStatusEffectOverlayEvent +M dev.zprestige.prestige.util.ClientUtil#cg(dev.zprestige.prestige.EventBus,java.lang.Class) hasCrosshairRenderListeners +M dev.zprestige.prestige.util.ClientUtil#ch() createCrosshairRenderEvent +M dev.zprestige.prestige.util.ClientUtil#ci(dev.zprestige.prestige.event.TickEvent14) postCrosshairRenderEvent +M dev.zprestige.prestige.util.ClientUtil#cj(dev.zprestige.prestige.EventBus,java.lang.Class) hasScoreboardRenderListeners +M dev.zprestige.prestige.util.ClientUtil#ck() createScoreboardRenderEvent +M dev.zprestige.prestige.util.ClientUtil#cl(dev.zprestige.prestige.event.TickEvent31) postScoreboardRenderEvent +M dev.zprestige.prestige.util.ClientUtil#cm(dev.zprestige.prestige.EventBus,java.lang.Class) hasOverlayMessageListeners +M dev.zprestige.prestige.util.ClientUtil#cn() createOverlayMessageEvent +M dev.zprestige.prestige.util.ClientUtil#co(dev.zprestige.prestige.event.TickEvent26) postOverlayMessageEvent +M dev.zprestige.prestige.util.ClientUtil#cp() createFireOverlayEvent +M dev.zprestige.prestige.util.ClientUtil#cq(dev.zprestige.prestige.event.TickEvent) postFireOverlayEvent +M dev.zprestige.prestige.util.ClientUtil#cr(dev.zprestige.prestige.EventBus,java.lang.Class) hasGetBobbingTimeListeners +M dev.zprestige.prestige.util.ClientUtil#cs() createGetBobbingTimeEvent +M dev.zprestige.prestige.util.ClientUtil#ct(dev.zprestige.prestige.event.TickEvent11) postGetBobbingTimeEvent +M dev.zprestige.prestige.util.ClientUtil#cu(dev.zprestige.prestige.EventBus,java.lang.Class) hasSetBobbingTimeListeners +M dev.zprestige.prestige.util.ClientUtil#cv() createSetBobbingTimeEvent +M dev.zprestige.prestige.util.ClientUtil#cw(dev.zprestige.prestige.event.TickEvent11) postSetBobbingTimeEvent +M dev.zprestige.prestige.util.ClientUtil#cx(int,int) createKeyEvent +M dev.zprestige.prestige.util.ClientUtil#cy(dev.zprestige.prestige.event.IntEvent2) postKeyEvent +M dev.zprestige.prestige.util.ClientUtil#cz(dev.zprestige.prestige.type.EventPhase) createInputTickPreEvent +M dev.zprestige.prestige.util.ClientUtil#d(dev.zprestige.prestige.EventBus,java.lang.Class) hasPlayerSkinListeners +M dev.zprestige.prestige.util.ClientUtil#dA(dev.zprestige.prestige.event.TickEvent21) postAddParticleEvent +M dev.zprestige.prestige.util.ClientUtil#dB() createAttackCooldownResetEvent +M dev.zprestige.prestige.util.ClientUtil#dC(dev.zprestige.prestige.event.TickEvent28) postAttackCooldownResetEvent +M dev.zprestige.prestige.util.ClientUtil#dD(dev.zprestige.prestige.EventBus,java.lang.Class) hasListEntrySkinListeners +M dev.zprestige.prestige.util.ClientUtil#dE(com.mojang.authlib.GameProfile) getProfileName +M dev.zprestige.prestige.util.ClientUtil#dF(net.minecraft.entity.player.SkinTextures,java.lang.String) createListEntrySkinEvent +M dev.zprestige.prestige.util.ClientUtil#dG(dev.zprestige.prestige.event.StringEvent) postListEntrySkinEvent +M dev.zprestige.prestige.util.ClientUtil#dH(dev.zprestige.prestige.event.StringEvent) getListEntrySkinTextures +M dev.zprestige.prestige.util.ClientUtil#dI(net.minecraft.util.Identifier) loadPrestigeResource +M dev.zprestige.prestige.util.ClientUtil#dJ(java.lang.String) loadGlowPostJson +M dev.zprestige.prestige.util.ClientUtil#dK(java.lang.String) loadGlowProgramJson +M dev.zprestige.prestige.util.ClientUtil#dL(java.lang.String) loadGlowFragmentShader +M dev.zprestige.prestige.util.ClientUtil#dM(java.lang.String) loadBlurShaderJson +M dev.zprestige.prestige.util.ClientUtil#dN(java.lang.String) loadBlurFragmentShader +M dev.zprestige.prestige.util.ClientUtil#dO(java.lang.String) loadRoundedRectShaderJson +M dev.zprestige.prestige.util.ClientUtil#dP(java.lang.String) loadRoundedRectFragmentShader +M dev.zprestige.prestige.util.ClientUtil#dQ(java.lang.String) loadRoundedRectGlowShaderJson +M dev.zprestige.prestige.util.ClientUtil#dR(java.lang.String) loadRoundedRectGlowFragmentShader +M dev.zprestige.prestige.util.ClientUtil#dS() createScreenBackgroundEvent +M dev.zprestige.prestige.util.ClientUtil#dT(dev.zprestige.prestige.event.TickEvent8) postScreenBackgroundEvent +M dev.zprestige.prestige.util.ClientUtil#dU() createBackgroundTextureEvent +M dev.zprestige.prestige.util.ClientUtil#dV(dev.zprestige.prestige.event.TickEvent8) postBackgroundTextureEvent +M dev.zprestige.prestige.util.ClientUtil#dW(float,double,double,double) createExplosionEvent +M dev.zprestige.prestige.util.ClientUtil#dX(dev.zprestige.prestige.event.FloatDoubleEvent) postExplosionEvent +M dev.zprestige.prestige.util.ClientUtil#dY(dev.zprestige.prestige.EventBus,java.lang.Class) hasSkyColorListeners +M dev.zprestige.prestige.util.ClientUtil#dZ(int,int,int) createSkyColor +M dev.zprestige.prestige.util.ClientUtil#da() createClientTickEvent +M dev.zprestige.prestige.util.ClientUtil#db(dev.zprestige.prestige.event.TickEvent19) postClientTickEvent +M dev.zprestige.prestige.util.ClientUtil#dc() createFallbackClientTickEvent +M dev.zprestige.prestige.util.ClientUtil#dd(dev.zprestige.prestige.event.TickEvent19) postFallbackClientTickEvent +M dev.zprestige.prestige.util.ClientUtil#de() createPreTickEvent +M dev.zprestige.prestige.util.ClientUtil#df(dev.zprestige.prestige.event.TickEvent4) postPreTickEvent +M dev.zprestige.prestige.util.ClientUtil#dg(net.minecraft.client.util.Window) createResolutionChangedEvent +M dev.zprestige.prestige.util.ClientUtil#dh(dev.zprestige.prestige.event.TickEvent29) postResolutionChangedEvent +M dev.zprestige.prestige.util.ClientUtil#di() createItemUseEvent +M dev.zprestige.prestige.util.ClientUtil#dj(dev.zprestige.prestige.event.TickEvent5) postItemUseEvent +M dev.zprestige.prestige.util.ClientUtil#dk() createDoAttackEvent +M dev.zprestige.prestige.util.ClientUtil#dl(dev.zprestige.prestige.event.TickEvent7) postDoAttackEvent +M dev.zprestige.prestige.util.ClientUtil#dm() createBlockBreakingEvent +M dev.zprestige.prestige.util.ClientUtil#dn(dev.zprestige.prestige.event.TickEvent10) postBlockBreakingEvent +M dev.zprestige.prestige.util.ClientUtil#do_() getEspPostShader +M dev.zprestige.prestige.util.ClientUtil#dp(net.minecraft.client.render.entity.model.EntityModel) isEspModelForGlow +M dev.zprestige.prestige.util.ClientUtil#dq(net.minecraft.client.render.RenderLayer) getRenderLayerTextureId +M dev.zprestige.prestige.util.ClientUtil#dr(net.minecraft.client.render.VertexConsumer,int) wrapWithOutlineConsumer +M dev.zprestige.prestige.util.ClientUtil#ds(dev.zprestige.prestige.EventBus,java.lang.Class) hasMouseMoveListeners +M dev.zprestige.prestige.util.ClientUtil#dt(double,double) createMouseMoveEvent +M dev.zprestige.prestige.util.ClientUtil#du(dev.zprestige.prestige.event.DoubleEvent2) postMouseMoveEvent +M dev.zprestige.prestige.util.ClientUtil#dv(int,int) createMouseButtonEvent +M dev.zprestige.prestige.util.ClientUtil#dw(dev.zprestige.prestige.event.IntEvent4) postMouseButtonEvent +M dev.zprestige.prestige.util.ClientUtil#dx(net.minecraft.util.Identifier) loadNamespaceResource +M dev.zprestige.prestige.util.ClientUtil#dy(dev.zprestige.prestige.EventBus,java.lang.Class) hasAddParticleListeners +M dev.zprestige.prestige.util.ClientUtil#dz() createAddParticleEvent +M dev.zprestige.prestige.util.ClientUtil#e(net.minecraft.entity.player.SkinTextures,java.lang.String) createPlayerSkinEvent +M dev.zprestige.prestige.util.ClientUtil#eA() drainWorldRenderTasks +M dev.zprestige.prestige.util.ClientUtil#eB() hasWorldRenderWork +M dev.zprestige.prestige.util.ClientUtil#eC() hasHudRenderWorkInWorldPass +M dev.zprestige.prestige.util.ClientUtil#eD() captureViewport +M dev.zprestige.prestige.util.ClientUtil#eE() captureWorldGlState +M dev.zprestige.prestige.util.ClientUtil#eF(java.util.List) runWorldRenderTasks +M dev.zprestige.prestige.util.ClientUtil#eG(dev.zprestige.prestige.render.GlState) restoreWorldGlStateAfterTasks +M dev.zprestige.prestige.util.ClientUtil#eH(org.joml.Matrix4fc) copyModelViewMatrix +M dev.zprestige.prestige.util.ClientUtil#eI(org.joml.Matrix4f,org.joml.Matrix4f,net.minecraft.client.render.Camera) createWorldRenderContext +M dev.zprestige.prestige.util.ClientUtil#eJ(dev.zprestige.prestige.data.MatrixCameraData) renderWorldPass +M dev.zprestige.prestige.util.ClientUtil#eK(dev.zprestige.prestige.render.GlState) restoreWorldGlState +M dev.zprestige.prestige.util.ClientUtil#eL(dev.zprestige.prestige.render.GlState) restoreWorldGlStateOnError +M dev.zprestige.prestige.util.ClientUtil#eM(dev.zprestige.prestige.EventBus,java.lang.Class) hasFrustumListeners +M dev.zprestige.prestige.util.ClientUtil#eN(net.minecraft.client.render.Frustum) createFrustumEvent +M dev.zprestige.prestige.util.ClientUtil#eO(dev.zprestige.prestige.event.TickEvent22) postFrustumEvent +M dev.zprestige.prestige.util.ClientUtil#eP(dev.zprestige.prestige.EventBus,java.lang.Class) hasWorldRendererReloadListeners +M dev.zprestige.prestige.util.ClientUtil#eQ() createWorldRendererReloadEvent +M dev.zprestige.prestige.util.ClientUtil#eR(dev.zprestige.prestige.event.TickEvent30) postWorldRendererReloadEvent +M dev.zprestige.prestige.util.ClientUtil#ea(int,int,int) createHorizonColor +M dev.zprestige.prestige.util.ClientUtil#eb(java.awt.Color,java.awt.Color) createSkyColorEvent +M dev.zprestige.prestige.util.ClientUtil#ec(dev.zprestige.prestige.event.ColorEvent) postSkyColorEvent +M dev.zprestige.prestige.util.ClientUtil#ed(dev.zprestige.prestige.event.ColorEvent) getSkyColorOrNull +M dev.zprestige.prestige.util.ClientUtil#ee(dev.zprestige.prestige.event.ColorEvent) getSkyColor +M dev.zprestige.prestige.util.ClientUtil#ef(dev.zprestige.prestige.event.ColorEvent) getHorizonColorOrNull +M dev.zprestige.prestige.util.ClientUtil#eg(dev.zprestige.prestige.event.ColorEvent) getHorizonColor +M dev.zprestige.prestige.util.ClientUtil#eh(dev.zprestige.prestige.EventBus,java.lang.Class) hasTextDisplayLabelListeners +M dev.zprestige.prestige.util.ClientUtil#ei(net.minecraft.entity.Entity,net.minecraft.text.Text) createTextDisplayLabelEvent +M dev.zprestige.prestige.util.ClientUtil#ej(dev.zprestige.prestige.event.EntityEvent5) postTextDisplayLabelEvent +M dev.zprestige.prestige.util.ClientUtil#ek(dev.zprestige.prestige.event.EntityEvent5) getTextDisplayLabelText +M dev.zprestige.prestige.util.ClientUtil#el(dev.zprestige.prestige.EventBus,java.lang.Class) hasTextReplaceListeners +M dev.zprestige.prestige.util.ClientUtil#em(java.lang.String,java.lang.String) createTextReplaceEvent +M dev.zprestige.prestige.util.ClientUtil#en(dev.zprestige.prestige.event.StringEvent2) postTextReplaceEvent +M dev.zprestige.prestige.util.ClientUtil#eo(dev.zprestige.prestige.event.StringEvent2) getTextReplaceTarget +M dev.zprestige.prestige.util.ClientUtil#ep(dev.zprestige.prestige.event.StringEvent2) getTextReplacement +M dev.zprestige.prestige.util.ClientUtil#eq(dev.zprestige.prestige.EventBus,java.lang.Class) hasRainGradientListeners +M dev.zprestige.prestige.util.ClientUtil#er() createRainGradientEvent +M dev.zprestige.prestige.util.ClientUtil#es(dev.zprestige.prestige.event.TickEvent23) postRainGradientEvent +M dev.zprestige.prestige.util.ClientUtil#et(dev.zprestige.prestige.EventBus,java.lang.Class) hasTimeOfDayListeners +M dev.zprestige.prestige.util.ClientUtil#eu(long) createTimeOfDayEvent +M dev.zprestige.prestige.util.ClientUtil#ev(dev.zprestige.prestige.event.LongEvent) postTimeOfDayEvent +M dev.zprestige.prestige.util.ClientUtil#ew(dev.zprestige.prestige.event.LongEvent) getTimeOfDay +M dev.zprestige.prestige.util.ClientUtil#ex(dev.zprestige.prestige.EventBus,java.lang.Class) hasBlockUpdateListeners +M dev.zprestige.prestige.util.ClientUtil#ey(net.minecraft.util.math.BlockPos,net.minecraft.block.BlockState) createBlockUpdateEvent +M dev.zprestige.prestige.util.ClientUtil#ez(dev.zprestige.prestige.event.BlockPosBlockEvent) postBlockUpdateEvent +M dev.zprestige.prestige.util.ClientUtil#f(dev.zprestige.prestige.event.StringEvent) postPlayerSkinEvent +M dev.zprestige.prestige.util.ClientUtil#g(dev.zprestige.prestige.event.StringEvent) getPlayerSkinTextures +M dev.zprestige.prestige.util.ClientUtil#h(dev.zprestige.prestige.EventBus,java.lang.Class) hasFogBufferListeners +M dev.zprestige.prestige.util.ClientUtil#i(float,float,java.awt.Color) createFogBufferEvent +M dev.zprestige.prestige.util.ClientUtil#j(dev.zprestige.prestige.event.FloatColorEvent) postFogBufferEvent +M dev.zprestige.prestige.util.ClientUtil#k(dev.zprestige.prestige.event.FloatColorEvent) getFogColorForRed +M dev.zprestige.prestige.util.ClientUtil#l(dev.zprestige.prestige.event.FloatColorEvent) getFogColorForGreen +M dev.zprestige.prestige.util.ClientUtil#m(dev.zprestige.prestige.event.FloatColorEvent) getFogColorForBlue +M dev.zprestige.prestige.util.ClientUtil#n(dev.zprestige.prestige.event.FloatColorEvent) getFogColorForAlpha +M dev.zprestige.prestige.util.ClientUtil#o(float,float,float,float) createFogBufferColor +M dev.zprestige.prestige.util.ClientUtil#p(dev.zprestige.prestige.event.FloatColorEvent) getFogSkyEndOverride +M dev.zprestige.prestige.util.ClientUtil#q(dev.zprestige.prestige.event.FloatColorEvent) getFogEnvironmentalStart +M dev.zprestige.prestige.util.ClientUtil#r(dev.zprestige.prestige.event.FloatColorEvent) getFogEnvironmentalEnd +M dev.zprestige.prestige.util.ClientUtil#s(dev.zprestige.prestige.event.FloatColorEvent) getFogRenderDistanceStart +M dev.zprestige.prestige.util.ClientUtil#t(dev.zprestige.prestige.event.FloatColorEvent) getFogRenderDistanceEnd +M dev.zprestige.prestige.util.ClientUtil#u(dev.zprestige.prestige.EventBus,java.lang.Class) hasFogColorListeners +M dev.zprestige.prestige.util.ClientUtil#v(float,float,java.awt.Color) createFogColorEvent +M dev.zprestige.prestige.util.ClientUtil#w(dev.zprestige.prestige.event.FloatColorEvent) postFogColorEvent +M dev.zprestige.prestige.util.ClientUtil#x(dev.zprestige.prestige.event.FloatColorEvent) getFogColor +M dev.zprestige.prestige.util.ClientUtil#y(float,float,float,float) createFogColorVector +M dev.zprestige.prestige.util.ClientUtil#z(dev.zprestige.prestige.EventBus,java.lang.Class) hasDrawSideListeners +M dev.zprestige.prestige.util.Timer#a() getAnimationDelta +M dev.zprestige.prestige.util.Timer#a(dev.zprestige.prestige.event.TickEvent24) onFrame +M dev.zprestige.prestige.util.TpsTimer#a(dev.zprestige.prestige.event.TickEvent24) renderNotifications +M dev.zprestige.prestige.util.TpsTimer#a(java.lang.String,java.lang.String,long,dev.zprestige.prestige.type.NotificationType) addNotification +M dev.zprestige.prestige.util.TpsTimer#a_boolean______________________________________________() hasNotifications +M dev.zprestige.prestige.world.OreColorUtil#a_v84(java.lang.String) getOresByBiome +M dev.zprestige.prestige.world.OreColorUtil#a_void_______________________________(java.util.Map,java.util.List,net.minecraft.registry.RegistryWrapper.Impl,net.minecraft.registry.RegistryKey,int,java.lang.String,java.awt.Color) registerOre +M dev.zprestige.prestige.world.OreSimulationHelper#a() advance +M dev.zprestige.prestige.world.OreSimulationHelper#a_boolean_______________________________________________(net.minecraft.world.chunk.Chunk) hasLoadedNeighbours +M dev.zprestige.prestige.world.OreSimulationHelper#b() nextChunk +M dev.zprestige.prestige.world.PlacementCheck#a(dev.zprestige.prestige.math.HitEffectHelper,boolean) updateMotion +M dev.zprestige.prestige.world.PlacementCheck#a_boolean______(net.minecraft.block.BlockState) isPassable +M dev.zprestige.prestige.world.PositionUtil#a(net.minecraft.entity.Entity) getEntityPos +M dev.zprestige.prestige.world.PositionUtil#a_String________(com.mojang.authlib.GameProfile) getProfileName +M dev.zprestige.prestige.world.PositionUtil#a_boolean________________________________________________() isPlayerGliding +M dev.zprestige.prestige.world.PositionUtil#a_double___________(net.minecraft.entity.player.PlayerEntity) getHeightAboveGround +M dev.zprestige.prestige.world.PositionUtil#b() getPlayerPos +M dev.zprestige.prestige.world.PositionUtil#b_boolean_________(net.minecraft.entity.player.PlayerEntity) isGliding +M dev.zprestige.prestige.world.PositionUtil#c(net.minecraft.entity.Entity) getLastPos +M dev.zprestige.prestige.world.RaycastUtil#a(net.minecraft.util.math.BlockPos) getVisiblePoint +M dev.zprestige.prestige.world.RaycastUtil#a_class_239(net.minecraft.util.math.Vec3d) raycastFromEyes +M dev.zprestige.prestige.world.RaycastUtil#b(net.minecraft.util.math.BlockPos) getVisibleTopPoint +M dev.zprestige.prestige.world.WorldContract#a(int) ensureIndexCapacity +M dev.zprestige.prestige.world.WorldContract#a_WorldContract() begin +M dev.zprestige.prestige.world.WorldContract#a_int_____________________________() getVertexCount +M dev.zprestige.prestige.world.WorldContract#b_WorldContract(float[]) putFloats +M dev.zprestige.prestige.world.WorldContract#b_int__() getIndexCount +M dev.zprestige.prestige.world.WorldContract#b_v73(int) ensureVertexCapacity +M dev.zprestige.prestige.world.WorldContract#c() getBaseVertex +M dev.zprestige.prestige.world.WorldContract#c_WorldContract(float,float,float) putVertex +M dev.zprestige.prestige.world.WorldContract#d(org.joml.Matrix4f,float,float,float) putTransformedVertex +M dev.zprestige.prestige.world.WorldContract#e(int) putColor +M dev.zprestige.prestige.world.WorldContract#f() end +M dev.zprestige.prestige.world.WorldContract#g(int[]) putIndices +M dev.zprestige.prestige.world.WorldContract#h() resetBaseVertex +M dev.zprestige.prestige.world.WorldContract#i_WorldContract(dev.zprestige.prestige.type.GlPrimitive) generateIndices +M dev.zprestige.prestige.world.WorldContract#j(int) setBaseVertex +M dev.zprestige.prestige.world.WorldContract#k() beginShape +M dev.zprestige.prestige.world.WorldHelper10#a(net.minecraft.util.math.Vec3d) setStart +M dev.zprestige.prestige.world.WorldHelper10#b(net.minecraft.util.math.Vec3d) setEnd +M dev.zprestige.prestige.world.WorldHelper10#c(net.minecraft.world.RaycastContext.ShapeType) setShapeType +M dev.zprestige.prestige.world.WorldHelper10#d(net.minecraft.world.RaycastContext.FluidHandling) setFluidHandling +M dev.zprestige.prestige.world.WorldHelper10#e(net.minecraft.block.ShapeContext) setShapeContext +M dev.zprestige.prestige.world.WorldHelper10#f(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d,net.minecraft.world.RaycastContext.ShapeType,net.minecraft.world.RaycastContext.FluidHandling,net.minecraft.entity.Entity) setAll +M dev.zprestige.prestige.world.WorldHelper3#a() getChunkMap +M dev.zprestige.prestige.world.WorldHelper4#a() getChunks +M dev.zprestige.prestige.world.WorldHelper5#a() getCount +M dev.zprestige.prestige.world.WorldHelper7#a(int) setMinY +M dev.zprestige.prestige.world.WorldHelper7#b(int) setHeight +M dev.zprestige.prestige.world.WorldHelper8#a() getHeight +M dev.zprestige.prestige.world.WorldHelper9#a() getChance +M dev.zprestige.prestige.world.WorldUtil#a(dev.zprestige.prestige.render.RenderBatch) getAngleFromPlayerRotation +M dev.zprestige.prestige.world.WorldUtil#a_RenderBatch_(net.minecraft.util.math.Vec3d) getRotationTo +M dev.zprestige.prestige.world.WorldUtil#a_class_239_(dev.zprestige.prestige.render.RenderBatch) raycastRotation +M dev.zprestige.prestige.world.WorldUtil#a_class_243________________(dev.zprestige.prestige.render.RenderBatch) getDirectionVector +M dev.zprestige.prestige.world.WorldUtil#a_void________________________________(dev.zprestige.prestige.render.RenderBatch) applyRotation +M dev.zprestige.prestige.world.WorldUtil#b(dev.zprestige.prestige.render.RenderBatch,float) raycastRotationWithRange +M dev.zprestige.prestige.world.WorldUtil#b_RenderBatch_____________(float,float,float) getRotationToPoint +M dev.zprestige.prestige.world.WorldUtil#b_float_____________________(float) wrapDegrees +M dev.zprestige.prestige.world.WorldUtil#c(dev.zprestige.prestige.render.RenderBatch,float,float,float) smoothRotate +M dev.zprestige.prestige.world.WorldUtil#c_RenderBatch(dev.zprestige.prestige.render.RenderBatch,net.minecraft.util.math.Vec3d,float) getLimitedRotationTo +M dev.zprestige.prestige.world.WorldUtil#c_float____(float,float,float) interpolate +M dev.zprestige.prestige.world.WorldUtil#d(dev.zprestige.prestige.render.RenderBatch,float,float,float) smoothRotatePitch +M dev.zprestige.prestige.world.WorldUtil#d_RenderBatch(dev.zprestige.prestige.render.RenderBatch,net.minecraft.util.math.Vec3d) addRandomJitter +M dev.zprestige.prestige.world.WorldUtil#d_float___(float,float,float) clamp +M dev.zprestige.prestige.world.WorldUtil#e(float,float,float,float,float,float) getLimitedRotationToPoint +M dev.zprestige.prestige.world.WorldUtil#f(dev.zprestige.prestige.render.RenderBatch,dev.zprestige.prestige.render.RenderBatch,float) isWithinAngle +M dev.zprestige.prestige.world.WorldUtil#f_RenderBatch(net.minecraft.entity.Entity,net.minecraft.util.math.Vec3d) getEntityRotationTo +M dev.zprestige.prestige.world.WorldUtil#g(net.minecraft.entity.Entity,float,float,float) getEntityRotationToPoint +M dev.zprestige.prestige.world.WorldUtil2#a(net.minecraft.entity.Entity) isCobwebInLineOfSight +M dev.zprestige.prestige.world.WorldUtil2#a_List___(int,java.util.function.Predicate) getBlocksInRadius +M dev.zprestige.prestige.world.WorldUtil2#a_class_2248_() getShortGrass +M dev.zprestige.prestige.world.WorldUtil2#a_class_2338______(net.minecraft.util.hit.BlockHitResult) getPlacePos +M dev.zprestige.prestige.world.WorldUtil2#a_class_2680_(net.minecraft.util.math.BlockPos) getState +M dev.zprestige.prestige.world.WorldUtil2#a_int______________________________(net.minecraft.util.math.BlockPos) getAnchorCharges +M dev.zprestige.prestige.world.WorldUtil2#b(net.minecraft.util.math.BlockPos,net.minecraft.block.Block) isOf +M dev.zprestige.prestige.world.WorldUtil2#c(net.minecraft.util.hit.HitResult) isClickableHit +M dev.zprestige.prestige.world.WorldUtil2#d(net.minecraft.util.hit.BlockHitResult) isClickableBlockHit +M dev.zprestige.prestige.world.WorldUtil2#e(net.minecraft.util.math.BlockPos) isClickableBlock +M dev.zprestige.prestige.world.WorldUtil2#f(net.minecraft.util.math.BlockPos) canPlaceCrystal +M dev.zprestige.prestige.world.WorldUtil2#g(net.minecraft.util.math.BlockPos) hasEntityAt +M dev.zprestige.prestige.world.WorldUtil2#k(net.minecraft.util.math.BlockPos,net.minecraft.block.Block) isBlock +F dev.zprestige.prestige.data.AnchorCandidate#predictedTargetDistance predictedDamageEstimate +F dev.zprestige.prestige.data.AnchorCandidate#targetDistance targetDamageEstimate +F dev.zprestige.prestige.data.BlendToggleState#b1 enabled +F dev.zprestige.prestige.data.BlendToggleState#b2 wasEnabled +F dev.zprestige.prestige.data.FramebufferBindState#b3 framebuffer +F dev.zprestige.prestige.data.ShaderBindState#b0 shader +F dev.zprestige.prestige.data.StorageBlockMarker#b5 x +F dev.zprestige.prestige.data.StorageBlockMarker#b6 y +F dev.zprestige.prestige.data.StorageBlockMarker#b7 z +F dev.zprestige.prestige.data.StorageBlockMarker#b8 abgrColor +F dev.zprestige.prestige.data.TrajectoryPath#b9 points +F dev.zprestige.prestige.data.UniformCallbackState#b4 callback +F dev.zprestige.prestige.module.combat.AimAssist#A smoothedYawDelta +F dev.zprestige.prestige.module.combat.AimAssist#B smoothedPitchDelta +F dev.zprestige.prestige.module.combat.AimAssist#a mode +F dev.zprestige.prestige.module.combat.AimAssist#c target +F dev.zprestige.prestige.module.combat.AimAssist#d fov +F dev.zprestige.prestige.module.combat.AimAssist#e range +F dev.zprestige.prestige.module.combat.AimAssist#f stickyTargeting +F dev.zprestige.prestige.module.combat.AimAssist#g throughWalls +F dev.zprestige.prestige.module.combat.AimAssist#h onlyOnRotate +F dev.zprestige.prestige.module.combat.AimAssist#i stopOnBlockBreak +F dev.zprestige.prestige.module.combat.AimAssist#j weaponOnly +F dev.zprestige.prestige.module.combat.AimAssist#k crystalOnly +F dev.zprestige.prestige.module.combat.AimAssist#l requireLeftClick +F dev.zprestige.prestige.module.combat.AimAssist#m requireRightClick +F dev.zprestige.prestige.module.combat.AimAssist#n reactionDelay +F dev.zprestige.prestige.module.combat.AimAssist#o speed +F dev.zprestige.prestige.module.combat.AimAssist#p randomness +F dev.zprestige.prestige.module.combat.AimAssist#q smoothen +F dev.zprestige.prestige.module.combat.AimAssist#r smoothness +F dev.zprestige.prestige.module.combat.AimAssist#s predictMovement +F dev.zprestige.prestige.module.combat.AimAssist#t predictMultiply +F dev.zprestige.prestige.module.combat.AimAssist#u verticalOnly +F dev.zprestige.prestige.module.combat.AimAssist#v stopOnHitbox +F dev.zprestige.prestige.module.combat.AimAssist#w currentTarget +F dev.zprestige.prestige.module.combat.AimAssist#x reactionTimer +F dev.zprestige.prestige.module.combat.AimAssist#y rolledReactionDelay +F dev.zprestige.prestige.module.combat.AimAssist#z lastMousePos +F dev.zprestige.prestige.module.combat.AnchorExploder#a delay +F dev.zprestige.prestige.module.combat.AnchorExploder#c glowstone +F dev.zprestige.prestige.module.combat.AnchorExploder#d onlyOwnAnchors +F dev.zprestige.prestige.module.combat.AnchorExploder#e glowstoneSwap +F dev.zprestige.prestige.module.combat.AnchorExploder#f glowstoneSwapBack +F dev.zprestige.prestige.module.combat.AnchorExploder#g explode +F dev.zprestige.prestige.module.combat.AnchorExploder#h explodeSwap +F dev.zprestige.prestige.module.combat.AnchorExploder#i explodeSlot +F dev.zprestige.prestige.module.combat.AnchorExploder#j explodeSwapBack +F dev.zprestige.prestige.module.combat.AnchorExploder#k explodeDamageTick +F dev.zprestige.prestige.module.combat.AnchorExploder#l disableAfterExplode +F dev.zprestige.prestige.module.combat.AnchorExploder#m silentAim +F dev.zprestige.prestige.module.combat.AnchorExploder#n silentAimFov +F dev.zprestige.prestige.module.combat.AnchorExploder#o lookingAtAnchor +F dev.zprestige.prestige.module.combat.AnchorExploder#p actionTimer +F dev.zprestige.prestige.module.combat.AnchorExploder#q ownAnchors +F dev.zprestige.prestige.module.combat.AnchorExploder#r glowstoneSwapBackSlot +F dev.zprestige.prestige.module.combat.AnchorExploder#s explodeSwapBackSlot +F dev.zprestige.prestige.module.combat.AnchorMacro#a delay +F dev.zprestige.prestige.module.combat.AnchorMacro#c place +F dev.zprestige.prestige.module.combat.AnchorMacro#d onlyOwnAnchors +F dev.zprestige.prestige.module.combat.AnchorMacro#e placeSwap +F dev.zprestige.prestige.module.combat.AnchorMacro#f placeBind +F dev.zprestige.prestige.module.combat.AnchorMacro#g placeSwapBack +F dev.zprestige.prestige.module.combat.AnchorMacro#h glowstone +F dev.zprestige.prestige.module.combat.AnchorMacro#i glowstoneSwap +F dev.zprestige.prestige.module.combat.AnchorMacro#j glowstoneSwapBack +F dev.zprestige.prestige.module.combat.AnchorMacro#k onlyOnPlaceBind +F dev.zprestige.prestige.module.combat.AnchorMacro#l explode +F dev.zprestige.prestige.module.combat.AnchorMacro#m explodeSwap +F dev.zprestige.prestige.module.combat.AnchorMacro#n explodeSlot +F dev.zprestige.prestige.module.combat.AnchorMacro#o explodeSwapBack +F dev.zprestige.prestige.module.combat.AnchorMacro#p acting +F dev.zprestige.prestige.module.combat.AnchorMacro#q actionTimer +F dev.zprestige.prestige.module.combat.AnchorMacro#r placedThisPress +F dev.zprestige.prestige.module.combat.AnchorMacro#s ownAnchors +F dev.zprestige.prestige.module.combat.AnchorMacro#t bindPlacedAnchors +F dev.zprestige.prestige.module.combat.AnchorMacro#u placeSwapBackSlot +F dev.zprestige.prestige.module.combat.AnchorMacro#v glowstoneSwapBackSlot +F dev.zprestige.prestige.module.combat.AnchorMacro#w explodeSwapBackSlot +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#C active +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#D state +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#E placeTimer +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#F chargeTimer +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#G detonateTimer +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#H stallTimer +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#I notifyTimer +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#J handledPearls +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#K pearlUuid +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#L throwerUuid +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#M landingPos +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#N ticksUntilLanding +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#O anchorPos +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#P anchorSupportPos +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#Q anchorHitVec +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#R coverPos +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#S coverSupportPos +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#T coverHitVec +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#U swapBackSlot +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#V clickMisses +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#W actionTicks +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#X waitTicks +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#Y detonateTicks +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#Z targetAwayTicks +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#a scanRange +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#c minDamage +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#d maxSelfDamage +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#e antiSuicide +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#f damageTick +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#g safeAnchor +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#h safeBlock +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#i rotateSilently +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#j silentAimFov +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#k swapBack +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#l placeDelay +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#m chargeDelay +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#n detonateDelay +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#o render +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#p anchorColor +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#q safeColor +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#r landingColor +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#s COVER_OFFSETS +F dev.zprestige.prestige.module.combat.AnchorPearlCatch#t DIRECTIONS +F dev.zprestige.prestige.module.combat.AnchorPlacer#a fireMode +F dev.zprestige.prestige.module.combat.AnchorPlacer#c delay +F dev.zprestige.prestige.module.combat.AnchorPlacer#d swap +F dev.zprestige.prestige.module.combat.AnchorPlacer#e swapBack +F dev.zprestige.prestige.module.combat.AnchorPlacer#f silentAim +F dev.zprestige.prestige.module.combat.AnchorPlacer#g silentAimFov +F dev.zprestige.prestige.module.combat.AnchorPlacer#h placedAnchors +F dev.zprestige.prestige.module.combat.AnchorPlacer#i actionTimer +F dev.zprestige.prestige.module.combat.AnchorPlacer#j swapBackSlot +F dev.zprestige.prestige.module.combat.AnchorPlacer#k acting +F dev.zprestige.prestige.module.combat.AnchorPlacer#l actingUntilAge +F dev.zprestige.prestige.module.combat.AntiAction#a openEChest +F dev.zprestige.prestige.module.combat.AntiAction#c placeGlowstone +F dev.zprestige.prestige.module.combat.AntiAction#d doubleGlowstone +F dev.zprestige.prestige.module.combat.AntiAction#e groundFirework +F dev.zprestige.prestige.module.combat.AntiAction#f swordShield +F dev.zprestige.prestige.module.combat.AntiBot#a mode +F dev.zprestige.prestige.module.combat.AntiBot#c validationThreshold +F dev.zprestige.prestige.module.combat.AntiBot#d tabListGrace +F dev.zprestige.prestige.module.combat.AntiBot#e pingGrace +F dev.zprestige.prestige.module.combat.AntiBot#f NIL_UUID +F dev.zprestige.prestige.module.combat.AntiBot#g positionPacketCounts +F dev.zprestige.prestige.module.combat.AntiWeb#a mode +F dev.zprestige.prestige.module.combat.AntiWeb#c delay +F dev.zprestige.prestige.module.combat.AntiWeb#d swap +F dev.zprestige.prestige.module.combat.AntiWeb#e swapBack +F dev.zprestige.prestige.module.combat.AntiWeb#f partialWebs +F dev.zprestige.prestige.module.combat.AntiWeb#i state +F dev.zprestige.prestige.module.combat.AntiWeb#j topWebPos +F dev.zprestige.prestige.module.combat.AntiWeb#k webPos +F dev.zprestige.prestige.module.combat.AntiWeb#l previousSlot +F dev.zprestige.prestige.module.combat.AntiWeb#m waitTicks +F dev.zprestige.prestige.module.combat.AntiWeb#n scoopAttempts +F dev.zprestige.prestige.module.combat.AntiWeb#o actionTimer +F dev.zprestige.prestige.module.combat.AntiWeb#p notifyTimer +F dev.zprestige.prestige.module.combat.AutoAnchor#A COVER_OFFSETS +F dev.zprestige.prestige.module.combat.AutoAnchor#B sequenceActive +F dev.zprestige.prestige.module.combat.AutoAnchor#C state +F dev.zprestige.prestige.module.combat.AutoAnchor#D placeDelayTimer +F dev.zprestige.prestige.module.combat.AutoAnchor#E chargeDelayTimer +F dev.zprestige.prestige.module.combat.AutoAnchor#F detonateDelayTimer +F dev.zprestige.prestige.module.combat.AutoAnchor#G stallTimer +F dev.zprestige.prestige.module.combat.AutoAnchor#H failedAttempts +F dev.zprestige.prestige.module.combat.AutoAnchor#J blacklistedAnchors +F dev.zprestige.prestige.module.combat.AutoAnchor#K tickCount +F dev.zprestige.prestige.module.combat.AutoAnchor#M cacheExpiryTick +F dev.zprestige.prestige.module.combat.AutoAnchor#N cachedTarget +F dev.zprestige.prestige.module.combat.AutoAnchor#O cachedPlayerBlockPos +F dev.zprestige.prestige.module.combat.AutoAnchor#P cachedTargetBlockPos +F dev.zprestige.prestige.module.combat.AutoAnchor#Q cachedEyePos +F dev.zprestige.prestige.module.combat.AutoAnchor#R cachedTargetPos +F dev.zprestige.prestige.module.combat.AutoAnchor#S cachedTargetVelocity +F dev.zprestige.prestige.module.combat.AutoAnchor#T cachedYaw +F dev.zprestige.prestige.module.combat.AutoAnchor#U cachedStateHash +F dev.zprestige.prestige.module.combat.AutoAnchor#V blockUpdateCount +F dev.zprestige.prestige.module.combat.AutoAnchor#W cachedBlockUpdateCount +F dev.zprestige.prestige.module.combat.AutoAnchor#X hurtWaitTicks +F dev.zprestige.prestige.module.combat.AutoAnchor#Y target +F dev.zprestige.prestige.module.combat.AutoAnchor#Z anchorPos +F dev.zprestige.prestige.module.combat.AutoAnchor#a targetRange +F dev.zprestige.prestige.module.combat.AutoAnchor#aa anchorSupportPos +F dev.zprestige.prestige.module.combat.AutoAnchor#ab anchorHitVec +F dev.zprestige.prestige.module.combat.AutoAnchor#ac coverPos +F dev.zprestige.prestige.module.combat.AutoAnchor#ad coverSupportPos +F dev.zprestige.prestige.module.combat.AutoAnchor#ae coverHitVec +F dev.zprestige.prestige.module.combat.AutoAnchor#af plannedTargetPos +F dev.zprestige.prestige.module.combat.AutoAnchor#ag originalSlot +F dev.zprestige.prestige.module.combat.AutoAnchor#ah lastSentEyePos +F dev.zprestige.prestige.module.combat.AutoAnchor#ai placedAnchors +F dev.zprestige.prestige.module.combat.AutoAnchor#an targetBoxFade +F dev.zprestige.prestige.module.combat.AutoAnchor#ao anchorBoxFade +F dev.zprestige.prestige.module.combat.AutoAnchor#ap coverBoxFade +F dev.zprestige.prestige.module.combat.AutoAnchor#aq renderedTargetPos +F dev.zprestige.prestige.module.combat.AutoAnchor#ar renderedAnchorPos +F dev.zprestige.prestige.module.combat.AutoAnchor#as renderedCoverPos +F dev.zprestige.prestige.module.combat.AutoAnchor#at errorNotifyTimer +F dev.zprestige.prestige.module.combat.AutoAnchor#c minDamage +F dev.zprestige.prestige.module.combat.AutoAnchor#d maxSelfDamage +F dev.zprestige.prestige.module.combat.AutoAnchor#e antiSuicide +F dev.zprestige.prestige.module.combat.AutoAnchor#f safeAnchor +F dev.zprestige.prestige.module.combat.AutoAnchor#g safeBlock +F dev.zprestige.prestige.module.combat.AutoAnchor#h rotateSilently +F dev.zprestige.prestige.module.combat.AutoAnchor#i swapBack +F dev.zprestige.prestige.module.combat.AutoAnchor#j placeDelay +F dev.zprestige.prestige.module.combat.AutoAnchor#k chargeDelay +F dev.zprestige.prestige.module.combat.AutoAnchor#l detonateDelay +F dev.zprestige.prestige.module.combat.AutoAnchor#m onlyExisting +F dev.zprestige.prestige.module.combat.AutoAnchor#n render +F dev.zprestige.prestige.module.combat.AutoAnchor#o anchorColor +F dev.zprestige.prestige.module.combat.AutoAnchor#p safeColor +F dev.zprestige.prestige.module.combat.AutoAnchor#q targetColor +F dev.zprestige.prestige.module.combat.AutoAnchor#z DIRECTIONS +F dev.zprestige.prestige.module.combat.AutoCart#A railX +F dev.zprestige.prestige.module.combat.AutoCart#B railY +F dev.zprestige.prestige.module.combat.AutoCart#C railZ +F dev.zprestige.prestige.module.combat.AutoCart#D landingBlock +F dev.zprestige.prestige.module.combat.AutoCart#E useLandingBlock +F dev.zprestige.prestige.module.combat.AutoCart#F previousSlot +F dev.zprestige.prestige.module.combat.AutoCart#G delayTicks +F dev.zprestige.prestige.module.combat.AutoCart#H railRetryTicks +F dev.zprestige.prestige.module.combat.AutoCart#I usingCrossbow +F dev.zprestige.prestige.module.combat.AutoCart#J triggerWasPressed +F dev.zprestige.prestige.module.combat.AutoCart#K overloadWasPressed +F dev.zprestige.prestige.module.combat.AutoCart#L overloadActive +F dev.zprestige.prestige.module.combat.AutoCart#M cartsPlaced +F dev.zprestige.prestige.module.combat.AutoCart#N waitingOverloadDelay +F dev.zprestige.prestige.module.combat.AutoCart#O overloadTimer +F dev.zprestige.prestige.module.combat.AutoCart#P releaseWaitTicks +F dev.zprestige.prestige.module.combat.AutoCart#Q shootFirst +F dev.zprestige.prestige.module.combat.AutoCart#R shootTarget +F dev.zprestige.prestige.module.combat.AutoCart#S skipNextPacket +F dev.zprestige.prestige.module.combat.AutoCart#T autoHitTarget +F dev.zprestige.prestige.module.combat.AutoCart#U autoHitReady +F dev.zprestige.prestige.module.combat.AutoCart#V weaponAim +F dev.zprestige.prestige.module.combat.AutoCart#W ignoreOwnShot +F dev.zprestige.prestige.module.combat.AutoCart#X pulledCartSlot +F dev.zprestige.prestige.module.combat.AutoCart#a switchDelay +F dev.zprestige.prestige.module.combat.AutoCart#c bowBackDelay +F dev.zprestige.prestige.module.combat.AutoCart#d minCharge +F dev.zprestige.prestige.module.combat.AutoCart#e arc +F dev.zprestige.prestige.module.combat.AutoCart#f triggerBind +F dev.zprestige.prestige.module.combat.AutoCart#g overload +F dev.zprestige.prestige.module.combat.AutoCart#h overloadBind +F dev.zprestige.prestige.module.combat.AutoCart#i overloadDelay +F dev.zprestige.prestige.module.combat.AutoCart#j overloadHotbarOnly +F dev.zprestige.prestige.module.combat.AutoCart#k placeMode +F dev.zprestige.prestige.module.combat.AutoCart#l onBowShot +F dev.zprestige.prestige.module.combat.AutoCart#m autoHitPlaced +F dev.zprestige.prestige.module.combat.AutoCart#n autoHitRange +F dev.zprestige.prestige.module.combat.AutoCart#o autoHitMinCharge +F dev.zprestige.prestige.module.combat.AutoCart#p switchBackToBow +F dev.zprestige.prestige.module.combat.AutoCart#q safeBlocks +F dev.zprestige.prestige.module.combat.AutoCart#r silentAim +F dev.zprestige.prestige.module.combat.AutoCart#s silentAimFov +F dev.zprestige.prestige.module.combat.AutoCart#t renderPath +F dev.zprestige.prestige.module.combat.AutoCart#u renderColor +F dev.zprestige.prestige.module.combat.AutoCart#v RAIL_ITEMS +F dev.zprestige.prestige.module.combat.AutoCart#w RAIL_BLOCKS +F dev.zprestige.prestige.module.combat.AutoCart#x SAFE_BLOCK_ITEMS +F dev.zprestige.prestige.module.combat.AutoCart#y state +F dev.zprestige.prestige.module.combat.AutoCart#z ignitionMode +F dev.zprestige.prestige.module.combat.AutoCrystal#a active +F dev.zprestige.prestige.module.combat.AutoCrystal#c damageTick +F dev.zprestige.prestige.module.combat.AutoCrystal#d inAir +F dev.zprestige.prestige.module.combat.AutoCrystal#e pauseOnKill +F dev.zprestige.prestige.module.combat.AutoCrystal#f delay +F dev.zprestige.prestige.module.combat.AutoCrystal#g autoSwitch +F dev.zprestige.prestige.module.combat.AutoCrystal#h headBob +F dev.zprestige.prestige.module.combat.AutoCrystal#i render +F dev.zprestige.prestige.module.combat.AutoCrystal#j color +F dev.zprestige.prestige.module.combat.AutoCrystal#k alwaysBreakLast +F dev.zprestige.prestige.module.combat.AutoCrystal#l delayTimer +F dev.zprestige.prestige.module.combat.AutoCrystal#m lastPlacePos +F dev.zprestige.prestige.module.combat.AutoCrystal#n queuedAttacks +F dev.zprestige.prestige.module.combat.AutoCrystal#o wasSprinting +F dev.zprestige.prestige.module.combat.AutoCrystal#p lastCrystalDamage +F dev.zprestige.prestige.module.combat.AutoCrystal#q crystalRenderer +F dev.zprestige.prestige.module.combat.AutoCrystal#r pendingDisable +F dev.zprestige.prestige.module.combat.AutoCrystal#s pendingDisableTicks +F dev.zprestige.prestige.module.combat.AutoDrain#a mode +F dev.zprestige.prestige.module.combat.AutoDrain#c liquid +F dev.zprestige.prestige.module.combat.AutoDrain#d delay +F dev.zprestige.prestige.module.combat.AutoDrain#e swap +F dev.zprestige.prestige.module.combat.AutoDrain#f fallbackToCobweb +F dev.zprestige.prestige.module.combat.AutoDrain#g interact +F dev.zprestige.prestige.module.combat.AutoDrain#h swapBack +F dev.zprestige.prestige.module.combat.AutoDrain#i silentAimFov +F dev.zprestige.prestige.module.combat.AutoDrain#j ownPlacedLiquids +F dev.zprestige.prestige.module.combat.AutoDrain#k drainedPositions +F dev.zprestige.prestige.module.combat.AutoDrain#l previousSlot +F dev.zprestige.prestige.module.combat.AutoDrain#m awaitingSwapBack +F dev.zprestige.prestige.module.combat.AutoDrain#n actionTimer +F dev.zprestige.prestige.module.combat.AutoElytra#a delay +F dev.zprestige.prestige.module.combat.AutoElytra#c firework +F dev.zprestige.prestige.module.combat.AutoElytra#d requireLand +F dev.zprestige.prestige.module.combat.AutoElytra#e autoDisable +F dev.zprestige.prestige.module.combat.AutoElytra#f flyTime +F dev.zprestige.prestige.module.combat.AutoElytra#g silentInventory +F dev.zprestige.prestige.module.combat.AutoElytra#h autoJump +F dev.zprestige.prestige.module.combat.AutoElytra#i fireworkOnSpace +F dev.zprestige.prestige.module.combat.AutoElytra#j spaceCooldown +F dev.zprestige.prestige.module.combat.AutoElytra#k actionTimer +F dev.zprestige.prestige.module.combat.AutoElytra#l flightTimer +F dev.zprestige.prestige.module.combat.AutoElytra#m spaceTimer +F dev.zprestige.prestige.module.combat.AutoElytra#n glideStarted +F dev.zprestige.prestige.module.combat.AutoElytra#o restoring +F dev.zprestige.prestige.module.combat.AutoElytra#p hasLanded +F dev.zprestige.prestige.module.combat.AutoElytra#q skipInventoryScreen +F dev.zprestige.prestige.module.combat.AutoElytra#r stage +F dev.zprestige.prestige.module.combat.AutoElytra#s fireworkSlot +F dev.zprestige.prestige.module.combat.AutoElytra#t restoreSlot +F dev.zprestige.prestige.module.combat.AutoElytra#u active +F dev.zprestige.prestige.module.combat.AutoElytra#v instance +F dev.zprestige.prestige.module.combat.AutoHitCrystal#a active +F dev.zprestige.prestige.module.combat.AutoHitCrystal#c swordOnly +F dev.zprestige.prestige.module.combat.AutoHitCrystal#d stopInAir +F dev.zprestige.prestige.module.combat.AutoHitCrystal#e pauseOnKill +F dev.zprestige.prestige.module.combat.AutoHitCrystal#f delay +F dev.zprestige.prestige.module.combat.AutoHitCrystal#g perfectTiming +F dev.zprestige.prestige.module.combat.AutoHitCrystal#h crystalMode +F dev.zprestige.prestige.module.combat.AutoHitCrystal#i crystalDelay +F dev.zprestige.prestige.module.combat.AutoHitCrystal#j silentRotations +F dev.zprestige.prestige.module.combat.AutoHitCrystal#k delayTimer +F dev.zprestige.prestige.module.combat.AutoHitCrystal#l stage +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#A pathLookahead +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#B predictTarget +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#C predictTicks +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#D predictPingBonus +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#E predictMaxOffset +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#F predictSelf +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#G selfPredictTicks +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#H selfPredictMaxOffset +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#I reach +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#J renderTarget +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#K renderPlacement +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#L renderCandidates +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#M maxCandidates +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#N obsidianColor +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#O crystalColor +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#P targetColor +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#Q candidateColor +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#R sequenceActive +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#S state +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#T placeTimer +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#U breakTimer +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#V stageTimer +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#W firstActionTimer +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#X actedThisSequence +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#Y obsidianJustPlaced +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#Z target +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#a targetRange +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#aA renderedCandidates +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#aB lastTargetPos +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#aC lastBasePos +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#aD targetDrift +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#aE errorNotifyTimer +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#aa basePos +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ab supportPos +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ac placeSide +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ad hitVec +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ae targetStartPos +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#af swapBackSlot +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ag breakTimeoutRetried +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ah crystalOutOfReach +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ai lastAttackedCrystalId +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#aj candidates +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ak serverEyePos +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#al trackedEntity +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#am trackedLastPos +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#an trackedVelocity +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ao trackedLastTime +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ax targetFade +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#ay placementFade +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#az candidateFades +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#c minDamage +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#d maxSelfDamage +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#e antiSuicide +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#f breakMode +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#g rotateSilently +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#h swapBack +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#i render +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#j advanced +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#k maxTargetDistance +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#l placeDelay +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#m breakDelay +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#n firstActionDelay +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#o midSequenceMovementTolerance +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#p midSequenceDamageTolerance +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#q debugAborts +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#r fastSwap +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#s silentAimFov +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#t momentumMode +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#u momentumWeight +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#v yawChangeWeight +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#w yawChangeCap +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#x prefer1x1 +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#y preferExistingObby +F dev.zprestige.prestige.module.combat.AutoObbyCrystal#z onlyExistingObby +F dev.zprestige.prestige.module.combat.AutoSafeCart#a mode +F dev.zprestige.prestige.module.combat.AutoSafeCart#c protect +F dev.zprestige.prestige.module.combat.AutoSafeCart#d minDamage +F dev.zprestige.prestige.module.combat.AutoSafeCart#e maxDamage +F dev.zprestige.prestige.module.combat.AutoSafeCart#f blocks +F dev.zprestige.prestige.module.combat.AutoSafeCart#g maxBlocks +F dev.zprestige.prestige.module.combat.AutoSafeCart#h delay +F dev.zprestige.prestige.module.combat.AutoSafeCart#i swap +F dev.zprestige.prestige.module.combat.AutoSafeCart#j range +F dev.zprestige.prestige.module.combat.AutoSafeCart#k fov +F dev.zprestige.prestige.module.combat.AutoSafeCart#l BLOCK_OPTIONS +F dev.zprestige.prestige.module.combat.AutoSafeCart#m blocksPlacedPerCart +F dev.zprestige.prestige.module.combat.AutoSafeCart#n ownCartPlacements +F dev.zprestige.prestige.module.combat.AutoSafeCart#o lastPlacePos +F dev.zprestige.prestige.module.combat.AutoSafeCart#p lastPlaceTime +F dev.zprestige.prestige.module.combat.AutoSafeCart#q hadThreats +F dev.zprestige.prestige.module.combat.AutoSafeCart#r placeTimer +F dev.zprestige.prestige.module.combat.AutoShield#a targetDistance +F dev.zprestige.prestige.module.combat.AutoShield#c fov +F dev.zprestige.prestige.module.combat.AutoShield#d movementThreshold +F dev.zprestige.prestige.module.combat.AutoShield#e swordCooldownCorrection +F dev.zprestige.prestige.module.combat.AutoShield#f disableTracker +F dev.zprestige.prestige.module.combat.AutoShield#g swapToSword +F dev.zprestige.prestige.module.combat.AutoShield#h targetSwingTimer +F dev.zprestige.prestige.module.combat.AutoShield#i attackTimer +F dev.zprestige.prestige.module.combat.AutoShield#j shieldDisableTimer +F dev.zprestige.prestige.module.combat.AutoShield#k shieldDisabled +F dev.zprestige.prestige.module.combat.AutoShield#l shieldOnCooldown +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#a mode +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#c chance +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#d stun +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#e fromInventory +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#f hitDelay +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#g breakCooldown +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#h swapBack +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#i silentAim +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#j maxYaw +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#k previousSlot +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#l axeInventorySlot +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#m swappedToAxe +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#n breakCooldownTimer +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#o hitDelayTimer +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#p axeSwapTimer +F dev.zprestige.prestige.module.combat.AutoShieldBreaker#x NOTIFICATION_DURATION_MS +F dev.zprestige.prestige.module.combat.AutoTotem#A swapSettleTicks +F dev.zprestige.prestige.module.combat.AutoTotem#B swapRequestId +F dev.zprestige.prestige.module.combat.AutoTotem#C lastEnemyY +F dev.zprestige.prestige.module.combat.AutoTotem#D damageSamples +F dev.zprestige.prestige.module.combat.AutoTotem#F lastHealth +F dev.zprestige.prestige.module.combat.AutoTotem#G robot +F dev.zprestige.prestige.module.combat.AutoTotem#H random +F dev.zprestige.prestige.module.combat.AutoTotem#I mouseTargetSlot +F dev.zprestige.prestige.module.combat.AutoTotem#J inventoryOpenTimer +F dev.zprestige.prestige.module.combat.AutoTotem#K mousePath +F dev.zprestige.prestige.module.combat.AutoTotem#L mousePathIndex +F dev.zprestige.prestige.module.combat.AutoTotem#M mousePathTarget +F dev.zprestige.prestige.module.combat.AutoTotem#N mouseStepTimer +F dev.zprestige.prestige.module.combat.AutoTotem#O ignorePopUntil +F dev.zprestige.prestige.module.combat.AutoTotem#c mode +F dev.zprestige.prestige.module.combat.AutoTotem#d delay +F dev.zprestige.prestige.module.combat.AutoTotem#e dynamicDelay +F dev.zprestige.prestige.module.combat.AutoTotem#f measures +F dev.zprestige.prestige.module.combat.AutoTotem#g actions +F dev.zprestige.prestige.module.combat.AutoTotem#h totemSlot +F dev.zprestige.prestige.module.combat.AutoTotem#i legit +F dev.zprestige.prestige.module.combat.AutoTotem#j hoverDelay +F dev.zprestige.prestige.module.combat.AutoTotem#k legitMouseMovement +F dev.zprestige.prestige.module.combat.AutoTotem#l mouseSpeed +F dev.zprestige.prestige.module.combat.AutoTotem#m mouseMoveDelay +F dev.zprestige.prestige.module.combat.AutoTotem#n extra +F dev.zprestige.prestige.module.combat.AutoTotem#o health +F dev.zprestige.prestige.module.combat.AutoTotem#p waitWhenShielding +F dev.zprestige.prestige.module.combat.AutoTotem#q antiMace +F dev.zprestige.prestige.module.combat.AutoTotem#r actionTimer +F dev.zprestige.prestige.module.combat.AutoTotem#s hoverTimer +F dev.zprestige.prestige.module.combat.AutoTotem#t totemPopped +F dev.zprestige.prestige.module.combat.AutoTotem#u swapQueued +F dev.zprestige.prestige.module.combat.AutoTotem#v openedInventory +F dev.zprestige.prestige.module.combat.AutoTotem#w totemOriginSlot +F dev.zprestige.prestige.module.combat.AutoTotem#x slotToReselect +F dev.zprestige.prestige.module.combat.AutoTotem#y offhandSwapPhase +F dev.zprestige.prestige.module.combat.AutoTotem#z offhandSwapSlot +F dev.zprestige.prestige.module.combat.Backtrack#a range +F dev.zprestige.prestige.module.combat.Backtrack#c latency +F dev.zprestige.prestige.module.combat.Backtrack#d weaponOnly +F dev.zprestige.prestige.module.combat.Backtrack#e trackedPositions +F dev.zprestige.prestige.module.combat.Backtrack#f delayedPackets +F dev.zprestige.prestige.module.combat.Backtrack#g lastReleaseTime +F dev.zprestige.prestige.module.combat.Backtrack#h targetId +F dev.zprestige.prestige.module.combat.Backtrack#i pendingTargetId +F dev.zprestige.prestige.module.combat.Backtrack#j lastTargetPos +F dev.zprestige.prestige.module.combat.Backtrack#k holdingPackets +F dev.zprestige.prestige.module.combat.Backtrack#l prevRenderPos +F dev.zprestige.prestige.module.combat.Backtrack#m renderPos +F dev.zprestige.prestige.module.combat.Backtrack#n renderTargetPos +F dev.zprestige.prestige.module.combat.Backtrack#o renderLerpSteps +F dev.zprestige.prestige.module.combat.CartAura#a reactionDelay +F dev.zprestige.prestige.module.combat.CartAura#c swapDelay +F dev.zprestige.prestige.module.combat.CartAura#d swapBack +F dev.zprestige.prestige.module.combat.CartAura#e swapBackDelay +F dev.zprestige.prestige.module.combat.CartAura#f attackDelay +F dev.zprestige.prestige.module.combat.CartAura#g targetFov +F dev.zprestige.prestige.module.combat.CartAura#h humanizedAim +F dev.zprestige.prestige.module.combat.CartAura#i reactionTimer +F dev.zprestige.prestige.module.combat.CartAura#j swapTimer +F dev.zprestige.prestige.module.combat.CartAura#k swapBackTimer +F dev.zprestige.prestige.module.combat.CartAura#l attackTimer +F dev.zprestige.prestige.module.combat.CartAura#m ownCartPlacements +F dev.zprestige.prestige.module.combat.CartAura#n target +F dev.zprestige.prestige.module.combat.CartAura#o previousSlot +F dev.zprestige.prestige.module.combat.CartAura#p swapStage +F dev.zprestige.prestige.module.combat.CartPearlCatch#A CART_TEXTURE_ID +F dev.zprestige.prestige.module.combat.CartPearlCatch#B cartTexture +F dev.zprestige.prestige.module.combat.CartPearlCatch#a scanRange +F dev.zprestige.prestige.module.combat.CartPearlCatch#c minDamage +F dev.zprestige.prestige.module.combat.CartPearlCatch#d maxSelfDamage +F dev.zprestige.prestige.module.combat.CartPearlCatch#e preferXbow +F dev.zprestige.prestige.module.combat.CartPearlCatch#f switchDelay +F dev.zprestige.prestige.module.combat.CartPearlCatch#g silentAim +F dev.zprestige.prestige.module.combat.CartPearlCatch#h silentAimFov +F dev.zprestige.prestige.module.combat.CartPearlCatch#i render +F dev.zprestige.prestige.module.combat.CartPearlCatch#j RAIL_ITEMS +F dev.zprestige.prestige.module.combat.CartPearlCatch#k state +F dev.zprestige.prestige.module.combat.CartPearlCatch#l pearlUuid +F dev.zprestige.prestige.module.combat.CartPearlCatch#m handledPearls +F dev.zprestige.prestige.module.combat.CartPearlCatch#n cartX +F dev.zprestige.prestige.module.combat.CartPearlCatch#o cartY +F dev.zprestige.prestige.module.combat.CartPearlCatch#p cartZ +F dev.zprestige.prestige.module.combat.CartPearlCatch#q firePos +F dev.zprestige.prestige.module.combat.CartPearlCatch#r useCrossbow +F dev.zprestige.prestige.module.combat.CartPearlCatch#s previousSlot +F dev.zprestige.prestige.module.combat.CartPearlCatch#t delayTicks +F dev.zprestige.prestige.module.combat.CartPearlCatch#u activeTicks +F dev.zprestige.prestige.module.combat.CartPearlCatch#v aimWaitTicks +F dev.zprestige.prestige.module.combat.CartPearlCatch#w pendingCartSlot +F dev.zprestige.prestige.module.combat.CartPearlCatch#x holdingUseKey +F dev.zprestige.prestige.module.combat.CartPearlCatch#y shotRotation +F dev.zprestige.prestige.module.combat.CartPearlCatch#z shotFlightTicks +F dev.zprestige.prestige.module.combat.CobwebPlacer#A websThisFall +F dev.zprestige.prestige.module.combat.CobwebPlacer#B originalSlot +F dev.zprestige.prestige.module.combat.CobwebPlacer#C expectedSlot +F dev.zprestige.prestige.module.combat.CobwebPlacer#D switchBackSlot +F dev.zprestige.prestige.module.combat.CobwebPlacer#E switchBackPending +F dev.zprestige.prestige.module.combat.CobwebPlacer#F switchBackScheduled +F dev.zprestige.prestige.module.combat.CobwebPlacer#G swapWorld +F dev.zprestige.prestige.module.combat.CobwebPlacer#f mode +F dev.zprestige.prestige.module.combat.CobwebPlacer#g targetRange +F dev.zprestige.prestige.module.combat.CobwebPlacer#h delay +F dev.zprestige.prestige.module.combat.CobwebPlacer#i leadTicks +F dev.zprestige.prestige.module.combat.CobwebPlacer#j onlyWhenFalling +F dev.zprestige.prestige.module.combat.CobwebPlacer#k maxWebsPerFall +F dev.zprestige.prestige.module.combat.CobwebPlacer#l silent +F dev.zprestige.prestige.module.combat.CobwebPlacer#m switchBack +F dev.zprestige.prestige.module.combat.CobwebPlacer#n switchSlot +F dev.zprestige.prestige.module.combat.CobwebPlacer#o swapMode +F dev.zprestige.prestige.module.combat.CobwebPlacer#p fromInventory +F dev.zprestige.prestige.module.combat.CobwebPlacer#q headTrap +F dev.zprestige.prestige.module.combat.CobwebPlacer#r autoSwitchBack +F dev.zprestige.prestige.module.combat.CobwebPlacer#s autoSwitchSlot +F dev.zprestige.prestige.module.combat.CobwebPlacer#t render +F dev.zprestige.prestige.module.combat.CobwebPlacer#u renderColor +F dev.zprestige.prestige.module.combat.CobwebPlacer#v delayTimer +F dev.zprestige.prestige.module.combat.CobwebPlacer#w manualStage +F dev.zprestige.prestige.module.combat.CobwebPlacer#x manualOriginalSlot +F dev.zprestige.prestige.module.combat.CobwebPlacer#y predictedPlacePos +F dev.zprestige.prestige.module.combat.CobwebPlacer#z fallTargetUuid +F dev.zprestige.prestige.module.combat.DoubleAnchor#A startedThisPress +F dev.zprestige.prestige.module.combat.DoubleAnchor#B runningMacroStage +F dev.zprestige.prestige.module.combat.DoubleAnchor#C damageTickWaitNotified +F dev.zprestige.prestige.module.combat.DoubleAnchor#a chance +F dev.zprestige.prestige.module.combat.DoubleAnchor#c delay +F dev.zprestige.prestige.module.combat.DoubleAnchor#d glowStone +F dev.zprestige.prestige.module.combat.DoubleAnchor#e macroHoldRepeat +F dev.zprestige.prestige.module.combat.DoubleAnchor#f macroBind +F dev.zprestige.prestige.module.combat.DoubleAnchor#g macroDelay +F dev.zprestige.prestige.module.combat.DoubleAnchor#h macroSwap +F dev.zprestige.prestige.module.combat.DoubleAnchor#i macroSwapBack +F dev.zprestige.prestige.module.combat.DoubleAnchor#j macroExplodeSlot +F dev.zprestige.prestige.module.combat.DoubleAnchor#k macroDamageTick +F dev.zprestige.prestige.module.combat.DoubleAnchor#l macroDamageTickRange +F dev.zprestige.prestige.module.combat.DoubleAnchor#m macroDamageTickMaxWait +F dev.zprestige.prestige.module.combat.DoubleAnchor#n doubleAnchorTimer +F dev.zprestige.prestige.module.combat.DoubleAnchor#o glowstoneTimer +F dev.zprestige.prestige.module.combat.DoubleAnchor#p lastAnchorPos +F dev.zprestige.prestige.module.combat.DoubleAnchor#q doubleAnchorCount +F dev.zprestige.prestige.module.combat.DoubleAnchor#r glowstonePending +F dev.zprestige.prestige.module.combat.DoubleAnchor#s acting +F dev.zprestige.prestige.module.combat.DoubleAnchor#t actingUntilAge +F dev.zprestige.prestige.module.combat.DoubleAnchor#u macroStageTimer +F dev.zprestige.prestige.module.combat.DoubleAnchor#v damageTickWaitTimer +F dev.zprestige.prestige.module.combat.DoubleAnchor#w macroState +F dev.zprestige.prestige.module.combat.DoubleAnchor#x startHit +F dev.zprestige.prestige.module.combat.DoubleAnchor#y macroAnchorPos +F dev.zprestige.prestige.module.combat.DoubleAnchor#z startSlot +F dev.zprestige.prestige.module.combat.GhostPlace#a useOffhand +F dev.zprestige.prestige.module.combat.GhostPlace#c lastPlaceTime +F dev.zprestige.prestige.module.combat.GhostPlace#d cobwebOnly +F dev.zprestige.prestige.module.combat.GhostPlace#l NEVER_PLACED +F dev.zprestige.prestige.module.combat.HitFix#a onlyOnGround +F dev.zprestige.prestige.module.combat.HitFix#c damageTick +F dev.zprestige.prestige.module.combat.HitFix#d weaponOnly +F dev.zprestige.prestige.module.combat.HitFix#e pendingHitTimer +F dev.zprestige.prestige.module.combat.HitFix#f sendingAttack +F dev.zprestige.prestige.module.combat.HitFix#g pendingTarget +F dev.zprestige.prestige.module.combat.HitFix#i hitPending +F dev.zprestige.prestige.module.combat.HitFlick#a requireSprint +F dev.zprestige.prestige.module.combat.HitFlick#c minAngle +F dev.zprestige.prestige.module.combat.HitFlick#d playersOnly +F dev.zprestige.prestige.module.combat.HitFlick#e maxAngle +F dev.zprestige.prestige.module.combat.HitFlick#f direction +F dev.zprestige.prestige.module.combat.HitFlick#g state +F dev.zprestige.prestige.module.combat.HitFlick#h pendingTarget +F dev.zprestige.prestige.module.combat.HitFlick#i flickYaw +F dev.zprestige.prestige.module.combat.HitFlick#j sendingAttack +F dev.zprestige.prestige.module.combat.Hitboxes#a expand +F dev.zprestige.prestige.module.combat.Hitboxes#c renderHitboxes +F dev.zprestige.prestige.module.combat.Hitboxes#d playerOnly +F dev.zprestige.prestige.module.combat.Hitboxes#e distance +F dev.zprestige.prestige.module.combat.Hitboxes#f antiCheat +F dev.zprestige.prestige.module.combat.Hitboxes#g ignoreWalls +F dev.zprestige.prestige.module.combat.Hitboxes#h skipShielding +F dev.zprestige.prestige.module.combat.Hitboxes#i hitPending +F dev.zprestige.prestige.module.combat.Hitboxes#j sendingAttack +F dev.zprestige.prestige.module.combat.InstantCrossbow#a previousSlot +F dev.zprestige.prestige.module.combat.InstantCrossbow#c crossbowSlot +F dev.zprestige.prestige.module.combat.InstantCrossbow#d fromInventory +F dev.zprestige.prestige.module.combat.InstantCrossbow#e crossbowInventorySlot +F dev.zprestige.prestige.module.combat.InstantShield#a previousSlot +F dev.zprestige.prestige.module.combat.InstantShield#c shieldSlot +F dev.zprestige.prestige.module.combat.InstantShield#d fromInventory +F dev.zprestige.prestige.module.combat.InstantShield#e shieldInventorySlot +F dev.zprestige.prestige.module.combat.InstantShield#f swapKey +F dev.zprestige.prestige.module.combat.InstantShield#i swapKeyWasDown +F dev.zprestige.prestige.module.combat.KeepSprint#a restoreDelay +F dev.zprestige.prestige.module.combat.KeepSprint#c restoreTicks +F dev.zprestige.prestige.module.combat.KeepSprint#i pendingSprintReset +F dev.zprestige.prestige.module.combat.KillAura#a instance +F dev.zprestige.prestige.module.combat.KillAura#c reach +F dev.zprestige.prestige.module.combat.KillAura#d stickyTargeting +F dev.zprestige.prestige.module.combat.KillAura#e humanizedAim +F dev.zprestige.prestige.module.combat.KillAura#f playerOnly +F dev.zprestige.prestige.module.combat.KillAura#g weaponOnly +F dev.zprestige.prestige.module.combat.KillAura#h cooldownMode +F dev.zprestige.prestige.module.combat.KillAura#i cooldownRange +F dev.zprestige.prestige.module.combat.KillAura#j missChance +F dev.zprestige.prestige.module.combat.KillAura#k maxYaw +F dev.zprestige.prestige.module.combat.KillAura#l targetFov +F dev.zprestige.prestige.module.combat.KillAura#m onShielding +F dev.zprestige.prestige.module.combat.KillAura#n aimPoints +F dev.zprestige.prestige.module.combat.KillAura#o renderDot +F dev.zprestige.prestige.module.combat.KillAura#p dotSize +F dev.zprestige.prestige.module.combat.KillAura#q dotColor +F dev.zprestige.prestige.module.combat.KillAura#r attackTimer +F dev.zprestige.prestige.module.combat.KillAura#s releaseUseTimer +F dev.zprestige.prestige.module.combat.KillAura#t currentTarget +F dev.zprestige.prestige.module.combat.KillAura#u AIM_POINT_NAMES +F dev.zprestige.prestige.module.combat.KillAura#v AIM_POINT_HEIGHTS +F dev.zprestige.prestige.module.combat.NoMissDelay#a humanizePercent +F dev.zprestige.prestige.module.combat.NoMissDelay#c range +F dev.zprestige.prestige.module.combat.NoMissDelay#d inCombatOnly +F dev.zprestige.prestige.module.combat.NoMissDelay#i allowVanillaMiss +F dev.zprestige.prestige.module.combat.NoMissDelay#l PERCENT_ROLL_MAX +F dev.zprestige.prestige.module.combat.PearlFollow#a active +F dev.zprestige.prestige.module.combat.PearlFollow#c throwerRange +F dev.zprestige.prestige.module.combat.PearlFollow#d minLandingDistance +F dev.zprestige.prestige.module.combat.PearlFollow#e landingRange +F dev.zprestige.prestige.module.combat.PearlFollow#f maxError +F dev.zprestige.prestige.module.combat.PearlFollow#g delay +F dev.zprestige.prestige.module.combat.PearlFollow#h swapBackDelay +F dev.zprestige.prestige.module.combat.PearlFollow#i onlyOnGround +F dev.zprestige.prestige.module.combat.PearlFollow#j targetOnly +F dev.zprestige.prestige.module.combat.PearlFollow#k seenPearlIds +F dev.zprestige.prestige.module.combat.PearlFollow#l throwTimer +F dev.zprestige.prestige.module.combat.PearlFollow#m swapBackTimer +F dev.zprestige.prestige.module.combat.PearlFollow#n previousSlot +F dev.zprestige.prestige.module.combat.PearlFollow#o pendingLanding +F dev.zprestige.prestige.module.combat.PredictDoubleHand#a triggers +F dev.zprestige.prestige.module.combat.PredictDoubleHand#c pause +F dev.zprestige.prestige.module.combat.PredictDoubleHand#d reswapDelay +F dev.zprestige.prestige.module.combat.PredictDoubleHand#e sensitivity +F dev.zprestige.prestige.module.combat.PredictDoubleHand#f reswapTimer +F dev.zprestige.prestige.module.combat.PredictDoubleHand#g lastCheckedTick +F dev.zprestige.prestige.module.combat.SafeAnchor#a mode +F dev.zprestige.prestige.module.combat.SafeAnchor#c minDamage +F dev.zprestige.prestige.module.combat.SafeAnchor#d onlyOwn +F dev.zprestige.prestige.module.combat.SafeAnchor#e maxDamage +F dev.zprestige.prestige.module.combat.SafeAnchor#f coverTiming +F dev.zprestige.prestige.module.combat.SafeAnchor#g delay +F dev.zprestige.prestige.module.combat.SafeAnchor#h swap +F dev.zprestige.prestige.module.combat.SafeAnchor#i block +F dev.zprestige.prestige.module.combat.SafeAnchor#j limit +F dev.zprestige.prestige.module.combat.SafeAnchor#k fov +F dev.zprestige.prestige.module.combat.SafeAnchor#l coverCounts +F dev.zprestige.prestige.module.combat.SafeAnchor#m reactionTimers +F dev.zprestige.prestige.module.combat.SafeAnchor#n lastPlacedAnchor +F dev.zprestige.prestige.module.combat.SafeAnchor#o lastAnchorCharges +F dev.zprestige.prestige.module.combat.SafeAnchor#p nearbyAnchors +F dev.zprestige.prestige.module.combat.SafeAnchor#q ownAnchors +F dev.zprestige.prestige.module.combat.SafeAnchor#r delayTimer +F dev.zprestige.prestige.module.combat.SafeAnchor#s coverPending +F dev.zprestige.prestige.module.combat.SilentAim#a weaponOnly +F dev.zprestige.prestige.module.combat.SilentAim#c continuousTracking +F dev.zprestige.prestige.module.combat.SilentAim#d playerOnly +F dev.zprestige.prestige.module.combat.SilentAim#e maxYaw +F dev.zprestige.prestige.module.combat.SilentAim#f maxPitch +F dev.zprestige.prestige.module.combat.SilentAim#g aimPoints +F dev.zprestige.prestige.module.combat.SilentAim#h renderDot +F dev.zprestige.prestige.module.combat.SilentAim#i dotSize +F dev.zprestige.prestige.module.combat.SilentAim#j dotColor +F dev.zprestige.prestige.module.combat.SilentAim#k hitPending +F dev.zprestige.prestige.module.combat.SilentAim#l sendingAttack +F dev.zprestige.prestige.module.combat.SilentAim#m lastAimPoint +F dev.zprestige.prestige.module.combat.SilentAim#n pendingTarget +F dev.zprestige.prestige.module.combat.SilentAim#o AIM_POINT_NAMES +F dev.zprestige.prestige.module.combat.SilentAim#p AIM_POINT_HEIGHTS +F dev.zprestige.prestige.module.combat.SwapHit#a swapDelay +F dev.zprestige.prestige.module.combat.SwapHit#c swapBackDelay +F dev.zprestige.prestige.module.combat.SwapHit#d totemOnly +F dev.zprestige.prestige.module.combat.SwapHit#e shieldAware +F dev.zprestige.prestige.module.combat.SwapHit#f preferAxe +F dev.zprestige.prestige.module.combat.SwapHit#g swapTimer +F dev.zprestige.prestige.module.combat.SwapHit#h swapBackTimer +F dev.zprestige.prestige.module.combat.SwapHit#i previousSlot +F dev.zprestige.prestige.module.combat.SwapHit#j swapStage +F dev.zprestige.prestige.module.combat.TotemHit#l LAST_HOTBAR_SLOT +F dev.zprestige.prestige.module.combat.Triggerbot#a targets +F dev.zprestige.prestige.module.combat.Triggerbot#c stickyRange +F dev.zprestige.prestige.module.combat.Triggerbot#d stickyTarget +F dev.zprestige.prestige.module.combat.Triggerbot#e swordSettings +F dev.zprestige.prestige.module.combat.Triggerbot#f crystalSettings +F dev.zprestige.prestige.module.combat.Triggerbot#g requireLeftClick +F dev.zprestige.prestige.module.combat.Triggerbot#h pauseInScreen +F dev.zprestige.prestige.module.combat.Triggerbot#i ignoreFriends +F dev.zprestige.prestige.module.combat.Triggerbot#j debugTargets +F dev.zprestige.prestige.module.combat.Triggerbot#k delay +F dev.zprestige.prestige.module.combat.Triggerbot#l cooldown +F dev.zprestige.prestige.module.combat.Triggerbot#m tpsSync +F dev.zprestige.prestige.module.combat.Triggerbot#n missChance +F dev.zprestige.prestige.module.combat.Triggerbot#o customCooldown +F dev.zprestige.prestige.module.combat.Triggerbot#p delayTimer +F dev.zprestige.prestige.module.combat.Triggerbot#q customCooldownTimer +F dev.zprestige.prestige.module.combat.Triggerbot#r stickyTargetId +F dev.zprestige.prestige.module.combat.Triggerbot#s trackedTargetId +F dev.zprestige.prestige.module.combat.Triggerbot#t trackedTargetMissed +F dev.zprestige.prestige.module.combat.Triggerbot#u trackedViaExtendedReach +F dev.zprestige.prestige.module.combat.Triggerbot#v lastTickNanos +F dev.zprestige.prestige.module.combat.Triggerbot#w estimatedTps +F dev.zprestige.prestige.module.combat.Triggerbot#x lastDebugEntityId +F dev.zprestige.prestige.module.combat.Triggerbot#y lastDebugTime +F dev.zprestige.prestige.module.combat.XbowCart#a switchDelay +F dev.zprestige.prestige.module.combat.XbowCart#c silentAimFov +F dev.zprestige.prestige.module.combat.XbowCart#d silentAim +F dev.zprestige.prestige.module.combat.XbowCart#e RAIL_ITEMS +F dev.zprestige.prestige.module.combat.XbowCart#f state +F dev.zprestige.prestige.module.combat.XbowCart#g railX +F dev.zprestige.prestige.module.combat.XbowCart#h railY +F dev.zprestige.prestige.module.combat.XbowCart#i railZ +F dev.zprestige.prestige.module.combat.XbowCart#j firePos +F dev.zprestige.prestige.module.combat.XbowCart#k previousSlot +F dev.zprestige.prestige.module.combat.XbowCart#l delayTicks +F dev.zprestige.prestige.module.combat.XbowCart#m railRetryTicks +F dev.zprestige.prestige.module.combat.XbowCart#n elapsedTicks +F dev.zprestige.prestige.module.combat.XbowCart#o aimWaitTicks +F dev.zprestige.prestige.module.combat.XbowCart#p pulledCartSlot +F dev.zprestige.prestige.module.combat.XbowCart#q shotRotation +F dev.zprestige.prestige.module.mace.AutoMace#A swapBackPending +F dev.zprestige.prestige.module.mace.AutoMace#B equippedChestplateThisTick +F dev.zprestige.prestige.module.mace.AutoMace#C pendingAxeTarget +F dev.zprestige.prestige.module.mace.AutoMace#D pendingAxeRotation +F dev.zprestige.prestige.module.mace.AutoMace#E axeHoldStartTime +F dev.zprestige.prestige.module.mace.AutoMace#F pendingMaceSlot +F dev.zprestige.prestige.module.mace.AutoMace#a horizontalTargetDist +F dev.zprestige.prestige.module.mace.AutoMace#c minFallDistance +F dev.zprestige.prestige.module.mace.AutoMace#d stunSlam +F dev.zprestige.prestige.module.mace.AutoMace#e stunSlamMode +F dev.zprestige.prestige.module.mace.AutoMace#f stunSlamBind +F dev.zprestige.prestige.module.mace.AutoMace#g chance +F dev.zprestige.prestige.module.mace.AutoMace#h scaleWithFall +F dev.zprestige.prestige.module.mace.AutoMace#i stunMinFall +F dev.zprestige.prestige.module.mace.AutoMace#j axeHoldDelay +F dev.zprestige.prestige.module.mace.AutoMace#k breachCheck +F dev.zprestige.prestige.module.mace.AutoMace#l trigger +F dev.zprestige.prestige.module.mace.AutoMace#m silentAim +F dev.zprestige.prestige.module.mace.AutoMace#n maxYaw +F dev.zprestige.prestige.module.mace.AutoMace#o takeoffElytra +F dev.zprestige.prestige.module.mace.AutoMace#p swapBack +F dev.zprestige.prestige.module.mace.AutoMace#q swapBackDelay +F dev.zprestige.prestige.module.mace.AutoMace#r expandHitbox +F dev.zprestige.prestige.module.mace.AutoMace#s hitboxExpansion +F dev.zprestige.prestige.module.mace.AutoMace#t attackTimer +F dev.zprestige.prestige.module.mace.AutoMace#u stunSlamTimer +F dev.zprestige.prestige.module.mace.AutoMace#v swapBackTimer +F dev.zprestige.prestige.module.mace.AutoMace#w savedSlotTimer +F dev.zprestige.prestige.module.mace.AutoMace#x stunSlamQueued +F dev.zprestige.prestige.module.mace.AutoMace#y attackingInternally +F dev.zprestige.prestige.module.mace.AutoMace#z previousSlot +F dev.zprestige.prestige.module.mace.AutoPearlCatch#c windChargeDelay +F dev.zprestige.prestige.module.mace.AutoPearlCatch#d movingDelay +F dev.zprestige.prestige.module.mace.AutoPearlCatch#e legitRotate +F dev.zprestige.prestige.module.mace.AutoPearlCatch#f smoothing +F dev.zprestige.prestige.module.mace.AutoPearlCatch#g windChargeThrown +F dev.zprestige.prestige.module.mace.AutoPearlCatch#h pearlTimer +F dev.zprestige.prestige.module.mace.AutoPearlCatch#i pearlThrown +F dev.zprestige.prestige.module.mace.AutoPearlCatch#j pearlAimReady +F dev.zprestige.prestige.module.mace.AutoPearlCatch#k windChargeReady +F dev.zprestige.prestige.module.mace.AutoPearlCatch#l originalPitch +F dev.zprestige.prestige.module.mace.AutoPearlCatch#m lockedRotation +F dev.zprestige.prestige.module.mace.AutoPearlCatch#n rotationSynced +F dev.zprestige.prestige.module.mace.AutoPearlCatch#o rotationApplied +F dev.zprestige.prestige.module.mace.AutoPearlCatch#p itemUsed +F dev.zprestige.prestige.module.mace.AutoPearlCatch#q releasePending +F dev.zprestige.prestige.module.mace.AutoPearlCatch#r disableAfterRelease +F dev.zprestige.prestige.module.mace.AutoPearlCatch#s lockWorld +F dev.zprestige.prestige.module.mace.AutoPearlCatch#t trackedWorld +F dev.zprestige.prestige.module.mace.AutoPearlCatch#u lastUseTick +F dev.zprestige.prestige.module.mace.AutoReMace#a rotationSmoothing +F dev.zprestige.prestige.module.mace.AutoReMace#c aboveThem +F dev.zprestige.prestige.module.mace.AutoReMace#d reMaceTimer +F dev.zprestige.prestige.module.mace.AutoReMace#e target +F dev.zprestige.prestige.module.mace.AutoReMace#i reMacing +F dev.zprestige.prestige.module.mace.BreachSwap#a chance +F dev.zprestige.prestige.module.mace.BreachSwap#c previousSlot +F dev.zprestige.prestige.module.mace.BreachSwap#d swapBackTicks +F dev.zprestige.prestige.module.mace.BreachSwap#l LAST_HOTBAR_SLOT +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#A itemUsed +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#B disableAfterRelease +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#C lockWorld +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#D trackedWorld +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#a mode +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#c windChargeDelay +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#d silentAim +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#e maxYawDelta +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#r state +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#s ticksUntilWindCharge +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#t pearlPath +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#u solution +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#v pearlTimer +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#w macroPearlThrown +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#x lockedRotation +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#y rotationSynced +F dev.zprestige.prestige.module.mace.DiagonalPearlCatch#z rotationApplied +F dev.zprestige.prestige.module.mace.ElytraWindCharge#a slotToRestore +F dev.zprestige.prestige.module.mace.ElytraWindCharge#c glideTimer +F dev.zprestige.prestige.module.mace.ElytraWindCharge#d windChargeTimer +F dev.zprestige.prestige.module.mace.ElytraWindCharge#i equippingElytra +F dev.zprestige.prestige.module.mace.ElytraWindCharge#l LAST_HOTBAR_SLOT +F dev.zprestige.prestige.module.mace.FastPearlCatch#A originalSlot +F dev.zprestige.prestige.module.mace.FastPearlCatch#B offhandSwapSlot +F dev.zprestige.prestige.module.mace.FastPearlCatch#c mode +F dev.zprestige.prestige.module.mace.FastPearlCatch#d pearlAngle +F dev.zprestige.prestige.module.mace.FastPearlCatch#e offhandPearlAngle +F dev.zprestige.prestige.module.mace.FastPearlCatch#f offhandWindChargeAngle +F dev.zprestige.prestige.module.mace.FastPearlCatch#g windChargeAngle +F dev.zprestige.prestige.module.mace.FastPearlCatch#h swapBack +F dev.zprestige.prestige.module.mace.FastPearlCatch#i legitRotate +F dev.zprestige.prestige.module.mace.FastPearlCatch#j smoothing +F dev.zprestige.prestige.module.mace.FastPearlCatch#k pearlThrown +F dev.zprestige.prestige.module.mace.FastPearlCatch#l windChargeThrown +F dev.zprestige.prestige.module.mace.FastPearlCatch#m pearlTimer +F dev.zprestige.prestige.module.mace.FastPearlCatch#n pearlAimReady +F dev.zprestige.prestige.module.mace.FastPearlCatch#o windChargeReady +F dev.zprestige.prestige.module.mace.FastPearlCatch#p originalPitch +F dev.zprestige.prestige.module.mace.FastPearlCatch#q originalYaw +F dev.zprestige.prestige.module.mace.FastPearlCatch#r lockedRotation +F dev.zprestige.prestige.module.mace.FastPearlCatch#s rotationSynced +F dev.zprestige.prestige.module.mace.FastPearlCatch#t rotationApplied +F dev.zprestige.prestige.module.mace.FastPearlCatch#u itemUsed +F dev.zprestige.prestige.module.mace.FastPearlCatch#v disableAfterRelease +F dev.zprestige.prestige.module.mace.FastPearlCatch#w lockWorld +F dev.zprestige.prestige.module.mace.FastPearlCatch#x trackedWorld +F dev.zprestige.prestige.module.mace.FastPearlCatch#y lastUseTick +F dev.zprestige.prestige.module.mace.FastPearlCatch#z offhandStage +F dev.zprestige.prestige.module.mace.KeyWindCharge#a mode +F dev.zprestige.prestige.module.mace.KeyWindCharge#c delay +F dev.zprestige.prestige.module.mace.KeyWindCharge#d delayTimer +F dev.zprestige.prestige.module.mace.KeyWindCharge#e previousSlot +F dev.zprestige.prestige.module.mace.KeyWindCharge#i thrown +F dev.zprestige.prestige.module.mace.MacePot#a delay +F dev.zprestige.prestige.module.mace.MacePot#c pitch +F dev.zprestige.prestige.module.mace.MacePot#d autoDisable +F dev.zprestige.prestige.module.mace.MacePot#e throwTimer +F dev.zprestige.prestige.module.mace.MacePot#f swapTimer +F dev.zprestige.prestige.module.mace.MacePot#g speedPotTimer +F dev.zprestige.prestige.module.mace.MacePot#h strengthPotTimer +F dev.zprestige.prestige.module.mace.MacePot#i swappedInventorySlot +F dev.zprestige.prestige.module.mace.MacePot#j swappedHotbarSlot +F dev.zprestige.prestige.module.mace.MacePrediction#d mode +F dev.zprestige.prestige.module.mace.MacePrediction#e predictAirPath +F dev.zprestige.prestige.module.mace.MacePrediction#f maxAirPredTicks +F dev.zprestige.prestige.module.mace.MacePrediction#g airPathColor +F dev.zprestige.prestige.module.mace.MacePrediction#h airLandingColor +F dev.zprestige.prestige.module.mace.MacePrediction#i predictGroundPath +F dev.zprestige.prestige.module.mace.MacePrediction#j groundPredTicks +F dev.zprestige.prestige.module.mace.MacePrediction#k groundPathColor +F dev.zprestige.prestige.module.mace.MacePrediction#l rangeCircles +F dev.zprestige.prestige.module.mace.MacePrediction#m circleInner +F dev.zprestige.prestige.module.mace.MacePrediction#n circleOuter +F dev.zprestige.prestige.module.mace.MacePrediction#o circleAlpha +F dev.zprestige.prestige.module.mace.PearlWindCharge#a jump +F dev.zprestige.prestige.module.mace.PearlWindCharge#c pearlLanded +F dev.zprestige.prestige.module.mace.PearlWindCharge#d autoSwap +F dev.zprestige.prestige.module.mace.PearlWindCharge#i pearlThrown +F dev.zprestige.prestige.module.mace.PearlWindCharge#l LAST_HOTBAR_SLOT +F dev.zprestige.prestige.module.mace.ShieldDrain#a horizontalTargetDist +F dev.zprestige.prestige.module.mace.ShieldDrain#c maxRange +F dev.zprestige.prestige.module.mace.ShieldDrain#d minFallDistance +F dev.zprestige.prestige.module.mace.ShieldDrain#e onlyOnCrosshair +F dev.zprestige.prestige.module.mace.ShieldDrain#f requireMace +F dev.zprestige.prestige.module.mace.ShieldDrain#g pauseOnGround +F dev.zprestige.prestige.module.mace.ShieldDrain#h clicksPerTick +F dev.zprestige.prestige.module.mace.ShieldDrain#i autoSwap +F dev.zprestige.prestige.module.mace.ShieldDrain#j silent +F dev.zprestige.prestige.module.mace.ShieldDrain#k previousSlot +F dev.zprestige.prestige.module.mace.ShieldDrain#l drainingThisTick +F dev.zprestige.prestige.module.mace.ShortWindCharge#a mode +F dev.zprestige.prestige.module.mace.ShortWindCharge#c minDelay +F dev.zprestige.prestige.module.mace.ShortWindCharge#d switchBack +F dev.zprestige.prestige.module.mace.ShortWindCharge#e autoJump +F dev.zprestige.prestige.module.mace.ShortWindCharge#f pitch1 +F dev.zprestige.prestige.module.mace.ShortWindCharge#g smoothing +F dev.zprestige.prestige.module.mace.ShortWindCharge#h stageTimer +F dev.zprestige.prestige.module.mace.ShortWindCharge#i originalPitch +F dev.zprestige.prestige.module.mace.ShortWindCharge#j stage +F dev.zprestige.prestige.module.mace.ShortWindCharge#k previousSlot +F dev.zprestige.prestige.module.mace.ShortWindCharge#l throwPending +F dev.zprestige.prestige.module.mace.WindChargeAura#a reach +F dev.zprestige.prestige.module.mace.WindChargeAura#c maxYaw +F dev.zprestige.prestige.module.mace.WindChargeAura#d humanizedAim +F dev.zprestige.prestige.module.mace.WindChargeAura#e inAirOnly +F dev.zprestige.prestige.module.mace.WindChargeAura#f attackTimer +F dev.zprestige.prestige.module.misc.AntiTrap#g entities +F dev.zprestige.prestige.module.misc.AntiTrap#h range +F dev.zprestige.prestige.module.misc.AntiTrap#i cancelSpawnPackets +F dev.zprestige.prestige.module.misc.AntiTrap#j discardExisting +F dev.zprestige.prestige.module.misc.AntiTrap#k antiSign +F dev.zprestige.prestige.module.misc.AutoArmor#a mode +F dev.zprestige.prestige.module.misc.AutoArmor#c delay +F dev.zprestige.prestige.module.misc.AutoArmor#d avoidCursed +F dev.zprestige.prestige.module.misc.AutoArmor#e swapTimer +F dev.zprestige.prestige.module.misc.AutoArmor#f swapKey +F dev.zprestige.prestige.module.misc.AutoArmor#g ARMOR_SLOTS +F dev.zprestige.prestige.module.misc.AutoClicker#a mode +F dev.zprestige.prestige.module.misc.AutoClicker#c clickButton +F dev.zprestige.prestige.module.misc.AutoClicker#d interval +F dev.zprestige.prestige.module.misc.AutoClicker#e minCps +F dev.zprestige.prestige.module.misc.AutoClicker#f maxCps +F dev.zprestige.prestige.module.misc.AutoClicker#g stopOnBlock +F dev.zprestige.prestige.module.misc.AutoClicker#h weaponOnly +F dev.zprestige.prestige.module.misc.AutoClicker#i reactionTime +F dev.zprestige.prestige.module.misc.AutoClicker#j reactionJitter +F dev.zprestige.prestige.module.misc.AutoClicker#k clickTimer +F dev.zprestige.prestige.module.misc.AutoClicker#l nextClickDelay +F dev.zprestige.prestige.module.misc.AutoClicker#m meanReactionDelay +F dev.zprestige.prestige.module.misc.AutoClicker#n cachedReactionTime +F dev.zprestige.prestige.module.misc.AutoClicker#o lastTargetId +F dev.zprestige.prestige.module.misc.AutoClicker#p targetSeenTime +F dev.zprestige.prestige.module.misc.AutoClicker#q targetReactionDelay +F dev.zprestige.prestige.module.misc.AutoLoot#a delay +F dev.zprestige.prestige.module.misc.AutoLoot#c minTotems +F dev.zprestige.prestige.module.misc.AutoLoot#d minPearls +F dev.zprestige.prestige.module.misc.AutoLoot#e dropTimer +F dev.zprestige.prestige.module.misc.AutoLoot#f lootKey +F dev.zprestige.prestige.module.misc.AutoPickaxe#a fromInventory +F dev.zprestige.prestige.module.misc.AutoPickaxe#c delay +F dev.zprestige.prestige.module.misc.AutoPickaxe#d onlyWhenMining +F dev.zprestige.prestige.module.misc.AutoPickaxe#e actionTimer +F dev.zprestige.prestige.module.misc.AutoPickaxe#f PICKAXES +F dev.zprestige.prestige.module.misc.AutoPickaxe#g previousSlot +F dev.zprestige.prestige.module.misc.AutoPickaxe#h swappedInventorySlot +F dev.zprestige.prestige.module.misc.AutoPot#a mode +F dev.zprestige.prestige.module.misc.AutoPot#c health +F dev.zprestige.prestige.module.misc.AutoPot#d pitch +F dev.zprestige.prestige.module.misc.AutoPot#e throwTimer +F dev.zprestige.prestige.module.misc.AutoText#a text +F dev.zprestige.prestige.module.misc.AutoTool#a previousSlot +F dev.zprestige.prestige.module.misc.CartRefill#a mode +F dev.zprestige.prestige.module.misc.CartRefill#c targetSlot +F dev.zprestige.prestige.module.misc.CartRefill#d delay +F dev.zprestige.prestige.module.misc.CartRefill#e refillTimer +F dev.zprestige.prestige.module.misc.CartRefill#f refillKey +F dev.zprestige.prestige.module.misc.CartStealer#a delay +F dev.zprestige.prestige.module.misc.CartStealer#c stealTimer +F dev.zprestige.prestige.module.misc.CartStealer#d autoClose +F dev.zprestige.prestige.module.misc.CartStealer#f activateKey +F dev.zprestige.prestige.module.misc.ChestStealer#a delay +F dev.zprestige.prestige.module.misc.ChestStealer#c stealTimer +F dev.zprestige.prestige.module.misc.ChestStealer#d autoClose +F dev.zprestige.prestige.module.misc.ChestStealer#f activateKey +F dev.zprestige.prestige.module.misc.Criticals#a mode +F dev.zprestige.prestige.module.misc.Criticals#c pendingTarget +F dev.zprestige.prestige.module.misc.Criticals#d ticksUntilAttack +F dev.zprestige.prestige.module.misc.Criticals#i replayingAttack +F dev.zprestige.prestige.module.misc.EnemyFaker#a fakeName +F dev.zprestige.prestige.module.misc.EnemyFaker#c gamemode +F dev.zprestige.prestige.module.misc.EnemyFaker#d tier +F dev.zprestige.prestige.module.misc.EnemyFaker#e update +F dev.zprestige.prestige.module.misc.EnemyFaker#f fakeSkin +F dev.zprestige.prestige.module.misc.EnemyFaker#g target +F dev.zprestige.prestige.module.misc.FastEXP#a mode +F dev.zprestige.prestige.module.misc.FastEXP#c delay +F dev.zprestige.prestige.module.misc.FastEXP#d rotateDown +F dev.zprestige.prestige.module.misc.FastEXP#e fromInventory +F dev.zprestige.prestige.module.misc.FastEXP#f swapBack +F dev.zprestige.prestige.module.misc.FastEXP#g throwTimer +F dev.zprestige.prestige.module.misc.FastEXP#h previousSlot +F dev.zprestige.prestige.module.misc.FastEXP#i swappedInventorySlot +F dev.zprestige.prestige.module.misc.FastPlace#a minSpeed +F dev.zprestige.prestige.module.misc.FastPlace#c maxSpeed +F dev.zprestige.prestige.module.misc.FastPlace#d blocksOnly +F dev.zprestige.prestige.module.misc.Friends#a highlight +F dev.zprestige.prestige.module.misc.Friends#d noAttack +F dev.zprestige.prestige.module.misc.KeyPearl#a delay +F dev.zprestige.prestige.module.misc.KeyPearl#c actionTimer +F dev.zprestige.prestige.module.misc.KeyPearl#d previousSlot +F dev.zprestige.prestige.module.misc.KeyPearl#i pearlThrown +F dev.zprestige.prestige.module.misc.KeyPearl#l LAST_HOTBAR_SLOT +F dev.zprestige.prestige.module.misc.MiddleClickFriend#i middleClickHandled +F dev.zprestige.prestige.module.misc.NameHider#a mode +F dev.zprestige.prestige.module.misc.NameHider#c customName +F dev.zprestige.prestige.module.misc.NameHider#d randomize +F dev.zprestige.prestige.module.misc.NameHider#e speed +F dev.zprestige.prestige.module.misc.NameHider#f rerollTimer +F dev.zprestige.prestige.module.misc.NameHider#h replacementName +F dev.zprestige.prestige.module.misc.PotionRefill#a delay +F dev.zprestige.prestige.module.misc.PotionRefill#c refillTimer +F dev.zprestige.prestige.module.misc.PotionRefill#d healthPotOnly +F dev.zprestige.prestige.module.misc.Reach#a chance +F dev.zprestige.prestige.module.misc.Reach#b extraReach +F dev.zprestige.prestige.module.misc.Refill#a mode +F dev.zprestige.prestige.module.misc.Refill#c threshold +F dev.zprestige.prestige.module.misc.Refill#d delay +F dev.zprestige.prestige.module.misc.Refill#e refillTimer +F dev.zprestige.prestige.module.misc.Refill#f refillKey +F dev.zprestige.prestige.module.misc.RightClicker#a minCps +F dev.zprestige.prestige.module.misc.RightClicker#c maxCps +F dev.zprestige.prestige.module.misc.RightClicker#d clickTimer +F dev.zprestige.prestige.module.misc.RightClicker#e nextClickDelay +F dev.zprestige.prestige.module.misc.StreamerMode#a prefix +F dev.zprestige.prestige.module.misc.StreamerMode#c mode +F dev.zprestige.prestige.module.misc.StreamerMode#d excludeFriends +F dev.zprestige.prestige.module.misc.StreamerMode#e includeSelf +F dev.zprestige.prestige.module.misc.StreamerMode#f aliases +F dev.zprestige.prestige.module.misc.StreamerMode#g aliasCounter +F dev.zprestige.prestige.module.misc.Teams#a teammates +F dev.zprestige.prestige.module.movement.AutoJumpReset#a chance +F dev.zprestige.prestige.module.movement.AutoShortPearl#a delay +F dev.zprestige.prestige.module.movement.AutoShortPearl#c hitTimer +F dev.zprestige.prestige.module.movement.AutoShortPearl#i throwPending +F dev.zprestige.prestige.module.movement.AutoShortPearl#l PLAYER_ATTACK_MSG_ID +F dev.zprestige.prestige.module.movement.FakeLag#a mode +F dev.zprestige.prestige.module.movement.FakeLag#c lagRange +F dev.zprestige.prestige.module.movement.FakeLag#d targetFov +F dev.zprestige.prestige.module.movement.FakeLag#e choke +F dev.zprestige.prestige.module.movement.FakeLag#f rangeChoke +F dev.zprestige.prestige.module.movement.FakeLag#g sendPackets +F dev.zprestige.prestige.module.movement.FakeLag#h render +F dev.zprestige.prestige.module.movement.FakeLag#i heldPackets +F dev.zprestige.prestige.module.movement.FakeLag#j chokeTimer +F dev.zprestige.prestige.module.movement.FakeLag#k knockbackTimer +F dev.zprestige.prestige.module.movement.FakeLag#l lastFlushPos +F dev.zprestige.prestige.module.movement.FakeLag#m flushing +F dev.zprestige.prestige.module.movement.FakeLag#n rangeFlushed +F dev.zprestige.prestige.module.movement.FakeLag#o knockbackActive +F dev.zprestige.prestige.module.movement.FakeLag#p lastTargetDistance +F dev.zprestige.prestige.module.movement.FastBridge#i sneakForced +F dev.zprestige.prestige.module.movement.Freecam#a speed +F dev.zprestige.prestige.module.movement.Freecam#c cameraPos +F dev.zprestige.prestige.module.movement.Freecam#d renderPrevious +F dev.zprestige.prestige.module.movement.Freecam#e prevCameraPos +F dev.zprestige.prestige.module.movement.Freecam#f frozenPos +F dev.zprestige.prestige.module.movement.Freecam#g frozenYaw +F dev.zprestige.prestige.module.movement.Freecam#h frozenPitch +F dev.zprestige.prestige.module.movement.Freecam#i savedVelocity +F dev.zprestige.prestige.module.movement.Parkour#a distance +F dev.zprestige.prestige.module.movement.ShortPearl#a mode +F dev.zprestige.prestige.module.movement.ShortPearl#c minDelay +F dev.zprestige.prestige.module.movement.ShortPearl#d switchBack +F dev.zprestige.prestige.module.movement.ShortPearl#e pitch +F dev.zprestige.prestige.module.movement.ShortPearl#f smoothing +F dev.zprestige.prestige.module.movement.ShortPearl#g stageTimer +F dev.zprestige.prestige.module.movement.ShortPearl#h startPitch +F dev.zprestige.prestige.module.movement.ShortPearl#i stage +F dev.zprestige.prestige.module.movement.ShortPearl#j previousSlot +F dev.zprestige.prestige.module.movement.ShortPearl#k rotateDoneAge +F dev.zprestige.prestige.module.movement.ShortPearl#l throwAge +F dev.zprestige.prestige.module.movement.ShortPearl#m silentThrowAge +F dev.zprestige.prestige.module.movement.ShortPearl#n silentThrowPitch +F dev.zprestige.prestige.module.movement.Velocity#a chance +F dev.zprestige.prestige.module.movement.Velocity#c vertical +F dev.zprestige.prestige.module.movement.Velocity#d ignoreExplosions +F dev.zprestige.prestige.module.movement.Velocity#e horizontal +F dev.zprestige.prestige.module.movement.Velocity#f recentExplosions +F dev.zprestige.prestige.module.movement.WTap#a chance +F dev.zprestige.prestige.module.movement.WTap#c holdLength +F dev.zprestige.prestige.module.movement.WTap#d reaction +F dev.zprestige.prestige.module.movement.WTap#e reactionTimer +F dev.zprestige.prestige.module.movement.WTap#f releaseTimer +F dev.zprestige.prestige.module.movement.WTap#g forwardReleased +F dev.zprestige.prestige.module.movement.WTap#i tapPending +F dev.zprestige.prestige.module.movement.WTap#l W_KEY_CODE +F dev.zprestige.prestige.module.spear.ExtendedReach#a chance +F dev.zprestige.prestige.module.spear.ExtendedReach#c weapons +F dev.zprestige.prestige.module.spear.ExtendedReach#d worksWithTriggerbot +F dev.zprestige.prestige.module.spear.ExtendedReach#e instance +F dev.zprestige.prestige.module.spear.ExtendedReach#f previousSlot +F dev.zprestige.prestige.module.spear.ExtendedReach#g ticksUntilSwapBack +F dev.zprestige.prestige.module.spear.InstantLunge#a swapBackDelay +F dev.zprestige.prestige.module.spear.InstantLunge#c previousSlot +F dev.zprestige.prestige.module.spear.InstantLunge#d swapBack +F dev.zprestige.prestige.module.spear.InstantLunge#e swapBackTimer +F dev.zprestige.prestige.module.spear.SpearDamageIndicator#d visibilityAnimation +F dev.zprestige.prestige.module.spear.SpearDamageIndicator#e displayedDamage +F dev.zprestige.prestige.module.spear.SpearMaceDoubleTap#a triggerFallDistance +F dev.zprestige.prestige.module.spear.SpearMaceDoubleTap#c maceSwapTimer +F dev.zprestige.prestige.module.spear.SpearMaceDoubleTap#i pendingMaceHit +F dev.zprestige.prestige.module.spear.SpearMaceDoubleTap#l LAST_HOTBAR_SLOT +F dev.zprestige.prestige.module.visual.Ambience#a start +F dev.zprestige.prestige.module.visual.Ambience#b end +F dev.zprestige.prestige.module.visual.Ambience#c color +F dev.zprestige.prestige.module.visual.Ambience#d fog +F dev.zprestige.prestige.module.visual.Ambience#e coverHorizonBand +F dev.zprestige.prestige.module.visual.Ambience#f sky +F dev.zprestige.prestige.module.visual.Ambience#g skyColor +F dev.zprestige.prestige.module.visual.Ambience#h customTime +F dev.zprestige.prestige.module.visual.Ambience#i time +F dev.zprestige.prestige.module.visual.Animations#a mode +F dev.zprestige.prestige.module.visual.Animations#d slow +F dev.zprestige.prestige.module.visual.Animations#l SLOW_SWING_DURATION +F dev.zprestige.prestige.module.visual.ESP#d mode +F dev.zprestige.prestige.module.visual.ESP#e targets +F dev.zprestige.prestige.module.visual.ESP#f menuColor +F dev.zprestige.prestige.module.visual.ESP#g color +F dev.zprestige.prestige.module.visual.ESP#h quality +F dev.zprestige.prestige.module.visual.ESP#i radius +F dev.zprestige.prestige.module.visual.ESP#j fill +F dev.zprestige.prestige.module.visual.ESP#k opacity +F dev.zprestige.prestige.module.visual.ESP#l rimWidth +F dev.zprestige.prestige.module.visual.ESP#m lineWidth +F dev.zprestige.prestige.module.visual.ESP#n haloOpacity +F dev.zprestige.prestige.module.visual.ESP#o coreBoost +F dev.zprestige.prestige.module.visual.ESP#p invisible +F dev.zprestige.prestige.module.visual.ESP#q lastSelectedTargets +F dev.zprestige.prestige.module.visual.ESP#r lastMode +F dev.zprestige.prestige.module.visual.ESP#s callbackRegistered +F dev.zprestige.prestige.module.visual.ESP#t uniformOverride +F dev.zprestige.prestige.module.visual.ESP#u CURRENT_RENDER_LAYER +F dev.zprestige.prestige.module.visual.FreeLook#a cameraYaw +F dev.zprestige.prestige.module.visual.FreeLook#c cameraPitch +F dev.zprestige.prestige.module.visual.FreeLook#d thirdPerson +F dev.zprestige.prestige.module.visual.FreeLook#e previousPerspective +F dev.zprestige.prestige.module.visual.HitEffect#a amount +F dev.zprestige.prestige.module.visual.HitEffect#c lifespan +F dev.zprestige.prestige.module.visual.HitEffect#d physics +F dev.zprestige.prestige.module.visual.HitEffect#e totemPop +F dev.zprestige.prestige.module.visual.HitEffect#f glowTexture +F dev.zprestige.prestige.module.visual.HitEffect#g popTexture +F dev.zprestige.prestige.module.visual.HitEffect#i particles +F dev.zprestige.prestige.module.visual.HitEffect#j frameTimer +F dev.zprestige.prestige.module.visual.HudEditor#a instance +F dev.zprestige.prestige.module.visual.HudEditor#c hudScale +F dev.zprestige.prestige.module.visual.ItemESP#a scale +F dev.zprestige.prestige.module.visual.ItemESP#c limit +F dev.zprestige.prestige.module.visual.ItemESP#d maxDistance +F dev.zprestige.prestige.module.visual.ItemESP#e background +F dev.zprestige.prestige.module.visual.ItemESP#f backgroundColor +F dev.zprestige.prestige.module.visual.ItemESP#g frustum +F dev.zprestige.prestige.module.visual.ItemESP#h labels +F dev.zprestige.prestige.module.visual.ItemESP#l COUNT_SEPARATOR +F dev.zprestige.prestige.module.visual.JumpCircles#a maxRadius +F dev.zprestige.prestige.module.visual.JumpCircles#c duration +F dev.zprestige.prestige.module.visual.JumpCircles#d selfOnly +F dev.zprestige.prestige.module.visual.JumpCircles#e thickness +F dev.zprestige.prestige.module.visual.JumpCircles#f glowDistance +F dev.zprestige.prestige.module.visual.JumpCircles#g themeColor +F dev.zprestige.prestige.module.visual.JumpCircles#h color +F dev.zprestige.prestige.module.visual.JumpCircles#i lastOnGround +F dev.zprestige.prestige.module.visual.JumpCircles#j lastY +F dev.zprestige.prestige.module.visual.JumpCircles#k circles +F dev.zprestige.prestige.module.visual.JumpCircles#m MAX_ALPHA +F dev.zprestige.prestige.module.visual.NameTags#a scale +F dev.zprestige.prestige.module.visual.NameTags#c limit +F dev.zprestige.prestige.module.visual.NameTags#d fadeDistance +F dev.zprestige.prestige.module.visual.NameTags#e distance +F dev.zprestige.prestige.module.visual.NameTags#f healthNumber +F dev.zprestige.prestige.module.visual.NameTags#g totemPops +F dev.zprestige.prestige.module.visual.NameTags#h hands +F dev.zprestige.prestige.module.visual.NameTags#i armor +F dev.zprestige.prestige.module.visual.NameTags#j enchantments +F dev.zprestige.prestige.module.visual.NameTags#l MEDIUM_HEALTH_COLOR +F dev.zprestige.prestige.module.visual.NameTags#m LOW_HEALTH_COLOR +F dev.zprestige.prestige.module.visual.NameTags#n BAR_TRACK_COLOR +F dev.zprestige.prestige.module.visual.NameTags#o DAMAGE_TRAIL_COLOR +F dev.zprestige.prestige.module.visual.NameTags#p POP_TEXT_COLOR +F dev.zprestige.prestige.module.visual.NameTags#q FRIEND_NAME_COLOR +F dev.zprestige.prestige.module.visual.NameTags#r frustum +F dev.zprestige.prestige.module.visual.NameTags#s entriesByPlayer +F dev.zprestige.prestige.module.visual.NameTags#t sortedEntries +F dev.zprestige.prestige.module.visual.NameTags#u displayEntries +F dev.zprestige.prestige.module.visual.OreSimulation#a ores +F dev.zprestige.prestige.module.visual.OreSimulation#c seed +F dev.zprestige.prestige.module.visual.OreSimulation#d chunks +F dev.zprestige.prestige.module.visual.OreSimulation#e chunkOres +F dev.zprestige.prestige.module.visual.OreSimulation#f parsedSeed +F dev.zprestige.prestige.module.visual.OreSimulation#g oresByBiome +F dev.zprestige.prestige.module.visual.OreSimulation#h cachedDimension +F dev.zprestige.prestige.module.visual.OreSimulation#i seedLoaded +F dev.zprestige.prestige.module.visual.OreSimulation#j cachedWorld +F dev.zprestige.prestige.module.visual.OreSimulation#k frustum +F dev.zprestige.prestige.module.visual.PearlTrajectory#a themeColor +F dev.zprestige.prestige.module.visual.PearlTrajectory#c lineColor +F dev.zprestige.prestige.module.visual.PearlTrajectory#d renderLine +F dev.zprestige.prestige.module.visual.PearlTrajectory#e landingTag +F dev.zprestige.prestige.module.visual.PearlTrajectory#f tagScale +F dev.zprestige.prestige.module.visual.PearlTrajectory#g tagBackground +F dev.zprestige.prestige.module.visual.PearlTrajectory#h tagBgColor +F dev.zprestige.prestige.module.visual.PearlTrajectory#j PEARL_TEXTURE_ID +F dev.zprestige.prestige.module.visual.PearlTrajectory#k pearlTexture +F dev.zprestige.prestige.module.visual.PearlTrajectory#l landingMarkers +F dev.zprestige.prestige.module.visual.PearlTrajectory#m spawnTimes +F dev.zprestige.prestige.module.visual.PearlTrajectory#n predictedPaths +F dev.zprestige.prestige.module.visual.RenderOptimizer#a fire +F dev.zprestige.prestige.module.visual.RenderOptimizer#c particles +F dev.zprestige.prestige.module.visual.RenderOptimizer#d hurtCam +F dev.zprestige.prestige.module.visual.RenderOptimizer#e backgroundTint +F dev.zprestige.prestige.module.visual.RenderOptimizer#f fullBright +F dev.zprestige.prestige.module.visual.RenderOptimizer#g removeWeather +F dev.zprestige.prestige.module.visual.RenderOptimizer#h shortenLoadingScreen +F dev.zprestige.prestige.module.visual.RenderOptimizer#i noScoreboard +F dev.zprestige.prestige.module.visual.RenderOptimizer#j noTitle +F dev.zprestige.prestige.module.visual.RenderOptimizer#k noHotbarText +F dev.zprestige.prestige.module.visual.ShieldRenderer#a renderSelf +F dev.zprestige.prestige.module.visual.ShieldRenderer#c renderMode +F dev.zprestige.prestige.module.visual.ShieldRenderer#d overlay +F dev.zprestige.prestige.module.visual.ShieldRenderer#e xOffset +F dev.zprestige.prestige.module.visual.ShieldRenderer#f yOffset +F dev.zprestige.prestige.module.visual.ShieldRenderer#g zOffset +F dev.zprestige.prestige.module.visual.ShieldRenderer#h xScale +F dev.zprestige.prestige.module.visual.ShieldRenderer#i yScale +F dev.zprestige.prestige.module.visual.ShieldRenderer#j zScale +F dev.zprestige.prestige.module.visual.ShieldRenderer#k defaultColor +F dev.zprestige.prestige.module.visual.ShieldRenderer#l brokenColor +F dev.zprestige.prestige.module.visual.ShieldRenderer#m blockingTicks +F dev.zprestige.prestige.module.visual.ShieldRenderer#n brokenTicksRemaining +F dev.zprestige.prestige.module.visual.ShieldRenderer#p BROKEN_DURATION_TICKS +F dev.zprestige.prestige.module.visual.StorageESP#a targets +F dev.zprestige.prestige.module.visual.StorageESP#c chestsColor +F dev.zprestige.prestige.module.visual.StorageESP#d fill +F dev.zprestige.prestige.module.visual.StorageESP#e trappedChestsColor +F dev.zprestige.prestige.module.visual.StorageESP#f enderChestsColor +F dev.zprestige.prestige.module.visual.StorageESP#g shulkersColor +F dev.zprestige.prestige.module.visual.StorageESP#h barrelsColor +F dev.zprestige.prestige.module.visual.StorageESP#i hoppersColor +F dev.zprestige.prestige.module.visual.StorageESP#j dispensersColor +F dev.zprestige.prestige.module.visual.StorageESP#k droppersColor +F dev.zprestige.prestige.module.visual.StorageESP#l furnacesColor +F dev.zprestige.prestige.module.visual.StorageESP#m brewingStandsColor +F dev.zprestige.prestige.module.visual.StorageESP#p outlineRenderer +F dev.zprestige.prestige.module.visual.StorageESP#q callbackRegistered +F dev.zprestige.prestige.module.visual.StorageESP#r markers +F dev.zprestige.prestige.module.visual.TargetRenderer#a mode +F dev.zprestige.prestige.module.visual.TargetRenderer#b squareTexture +F dev.zprestige.prestige.module.visual.TargetRenderer#c glowTexture +F dev.zprestige.prestige.module.visual.TargetRenderer#g fadeProgress +F dev.zprestige.prestige.module.visual.TargetRenderer#h smoothedPos +F dev.zprestige.prestige.module.visual.TargetRenderer#i targetWidth +F dev.zprestige.prestige.module.visual.TargetRenderer#j targetHeight +F dev.zprestige.prestige.module.visual.TargetRenderer#k spinAngle +F dev.zprestige.prestige.module.visual.TargetRenderer#l animationStartTime +F dev.zprestige.prestige.module.visual.TargetRenderer#m lastFrameTime +F dev.zprestige.prestige.module.visual.TargetRenderer#n transitionStartTime +F dev.zprestige.prestige.module.visual.TargetRenderer#o hadTarget +F dev.zprestige.prestige.module.visual.TargetRenderer#p transitionStartProgress +F dev.zprestige.prestige.module.visual.TotemAnimation#a speed +F dev.zprestige.prestige.module.visual.Trails#a mode +F dev.zprestige.prestige.module.visual.Trails#c duration +F dev.zprestige.prestige.module.visual.Trails#d selfOnly +F dev.zprestige.prestige.module.visual.Trails#e size +F dev.zprestige.prestige.module.visual.Trails#f themeColor +F dev.zprestige.prestige.module.visual.Trails#g color +F dev.zprestige.prestige.module.visual.Trails#h glowTexture +F dev.zprestige.prestige.module.visual.Trails#j trackers +F dev.zprestige.prestige.module.visual.Trails#k marks +F dev.zprestige.prestige.module.visual.Trajectories#a MULTISHOT_ANGLES +F dev.zprestige.prestige.module.visual.Trajectories#c render +F dev.zprestige.prestige.module.visual.Trajectories#d color +F dev.zprestige.prestige.module.visual.Trajectories#e paths +F dev.zprestige.prestige.module.visual.Trajectories#f cachedStack +F dev.zprestige.prestige.module.visual.Trajectories#g cachedUsingItem +F dev.zprestige.prestige.module.visual.Trajectories#h cachedMode +F dev.zprestige.prestige.module.visual.Trajectories#i cacheValid +F dev.zprestige.prestige.module.visual.Trajectories#j cachedCrossbowCharged +F dev.zprestige.prestige.module.visual.Trajectories#k cachedUseTime +F dev.zprestige.prestige.module.visual.Trajectories#l cachedPitch +F dev.zprestige.prestige.module.visual.Trajectories#m cachedYaw +F dev.zprestige.prestige.module.visual.Trajectories#n cachedPosX +F dev.zprestige.prestige.module.visual.Trajectories#o cachedPosY +F dev.zprestige.prestige.module.visual.Trajectories#p cachedPosZ +F dev.zprestige.prestige.module.visual.Trajectories#t fadeAlpha +F dev.zprestige.prestige.module.visual.Trajectories#u smoothPitch +F dev.zprestige.prestige.module.visual.Trajectories#v smoothYaw +F dev.zprestige.prestige.module.visual.Trajectories#w rotationInitialized +F dev.zprestige.prestige.module.visual.Trajectories#x lastFrameTime +F dev.zprestige.prestige.module.visual.TwoDESP#A animatedBoxes +F dev.zprestige.prestige.module.visual.TwoDESP#a style +F dev.zprestige.prestige.module.visual.TwoDESP#c rounding +F dev.zprestige.prestige.module.visual.TwoDESP#d showInvisibles +F dev.zprestige.prestige.module.visual.TwoDESP#e lineWidth +F dev.zprestige.prestige.module.visual.TwoDESP#f features +F dev.zprestige.prestige.module.visual.TwoDESP#g fillAlpha +F dev.zprestige.prestige.module.visual.TwoDESP#h glowStrength +F dev.zprestige.prestige.module.visual.TwoDESP#i animated +F dev.zprestige.prestige.module.visual.TwoDESP#j animationSpeed +F dev.zprestige.prestige.module.visual.TwoDESP#k healthPosition +F dev.zprestige.prestige.module.visual.TwoDESP#l healthText +F dev.zprestige.prestige.module.visual.TwoDESP#m healthShine +F dev.zprestige.prestige.module.visual.TwoDESP#n fadeSpeed +F dev.zprestige.prestige.module.visual.TwoDESP#o maxDistance +F dev.zprestige.prestige.module.visual.TwoDESP#p limit +F dev.zprestige.prestige.module.visual.TwoDESP#q menuColor +F dev.zprestige.prestige.module.visual.TwoDESP#r boxColor +F dev.zprestige.prestige.module.visual.TwoDESP#s gradientColor +F dev.zprestige.prestige.module.visual.TwoDESP#t friendColor +F dev.zprestige.prestige.module.visual.TwoDESP#u healthHigh +F dev.zprestige.prestige.module.visual.TwoDESP#v healthLow +F dev.zprestige.prestige.module.visual.TwoDESP#w frustum +F dev.zprestige.prestige.module.visual.TwoDESP#x lastFrameTime +F dev.zprestige.prestige.module.visual.TwoDESP#y frameCounter +F dev.zprestige.prestige.module.visual.TwoDESP#z visibleTargets +F dev.zprestige.prestige.module.visual.Weather#a mode +F dev.zprestige.prestige.module.visual.Weather#c density +F dev.zprestige.prestige.module.visual.Weather#d radius +F dev.zprestige.prestige.module.visual.Weather#e speed +F dev.zprestige.prestige.module.visual.Weather#f size +F dev.zprestige.prestige.module.visual.Weather#g themeColor +F dev.zprestige.prestige.module.visual.Weather#h color +F dev.zprestige.prestige.module.visual.Weather#i glowTexture +F dev.zprestige.prestige.module.visual.Weather#j particles +F dev.zprestige.prestige.module.visual.Weather#k frameTimer +F dev.zprestige.prestige.module.visual.Weather#l lastCenter +F dev.zprestige.prestige.module.visual.XRay#a xrayBlocks +F dev.zprestige.prestige.module.visual.XRay#d fullBright +M dev.zprestige.prestige.mixin.AbstractBlockStateMixin#a(net.minecraft.world.BlockView,net.minecraft.util.math.BlockPos,net.lenni0451.classtransform.InjectionCallback) overrideAmbientOcclusionLightLevelAtReturn +M dev.zprestige.prestige.mixin.AbstractClientPlayerEntityMixin#a(net.lenni0451.classtransform.InjectionCallback) overridePlayerSkinAtGetSkinReturn +M dev.zprestige.prestige.mixin.BlockMixin#a(net.minecraft.block.BlockState,net.minecraft.block.BlockState,net.minecraft.util.math.Direction,net.lenni0451.classtransform.InjectionCallback) overrideShouldDrawSideAtHead +M dev.zprestige.prestige.mixin.CameraMixin#a(double,double,double,net.lenni0451.classtransform.InjectionCallback) overrideCameraPosAtSetPosHead +M dev.zprestige.prestige.mixin.CameraMixin#b(float,float,net.lenni0451.classtransform.InjectionCallback) overrideCameraRotationAtSetRotationHead +M dev.zprestige.prestige.mixin.ChunkOcclusionDataBuilderMixin#a(net.minecraft.util.math.BlockPos,net.lenni0451.classtransform.InjectionCallback) skipChunkOcclusionAtMarkClosedHead +M dev.zprestige.prestige.mixin.ClientConnectionMixin#a(net.minecraft.network.packet.Packet,net.minecraft.network.listener.PacketListener,net.lenni0451.classtransform.InjectionCallback) postPacketReceiveEventAtHandlePacketHead +M dev.zprestige.prestige.mixin.ClientConnectionMixin#b(net.minecraft.network.packet.Packet,net.lenni0451.classtransform.InjectionCallback) postPacketSendEventAtSendHead +M dev.zprestige.prestige.mixin.ClientPlayNetworkHandlerMixin#a(net.minecraft.network.packet.s2c.play.GameJoinS2CPacket,net.lenni0451.classtransform.InjectionCallback) postGameJoinEventAtTail +M dev.zprestige.prestige.mixin.ClientPlayNetworkHandlerMixin#b(net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket,net.lenni0451.classtransform.InjectionCallback) postChunkDataEventAtTail +M dev.zprestige.prestige.mixin.ClientPlayerEntityMixin#a(net.minecraft.util.Hand,net.lenni0451.classtransform.InjectionCallback) postSwingHandEventAtHead +M dev.zprestige.prestige.mixin.ClientPlayerEntityMixin#b() spoofRotationAtSendMovementPacketsHead +M dev.zprestige.prestige.mixin.ClientPlayerEntityMixin#c() restoreRotationAtSendMovementPacketsReturn +M dev.zprestige.prestige.mixin.ClientPlayerInteractionManagerMixin#a(net.minecraft.entity.player.PlayerEntity,net.minecraft.entity.Entity,net.lenni0451.classtransform.InjectionCallback) postAttackEntityEventAtHead +M dev.zprestige.prestige.mixin.ClientWorldMixin#a(net.minecraft.entity.Entity,net.lenni0451.classtransform.InjectionCallback) postEntityAddedEventAtAddEntityTail +M dev.zprestige.prestige.mixin.ClientWorldMixin#b(int,net.minecraft.entity.Entity.RemovalReason,net.lenni0451.classtransform.InjectionCallback) postEntityRemovedEventAtRemoveEntityHead +M dev.zprestige.prestige.mixin.EntityMixin#a(float,net.minecraft.util.math.Vec3d,net.lenni0451.classtransform.InjectionCallback) applyMovementYawAtUpdateVelocityHead +M dev.zprestige.prestige.mixin.EntityMixin#b(net.lenni0451.classtransform.InjectionCallback) overrideBoundingBoxAtReturn +M dev.zprestige.prestige.mixin.EntityMixin#c(net.minecraft.util.math.Vec3d,net.lenni0451.classtransform.InjectionCallback) overrideVelocityAtSetVelocityClientHead +M dev.zprestige.prestige.mixin.EntityMixin#d(float,net.lenni0451.classtransform.InjectionCallback) applySilentRotationAtGetRotationVecHead +M dev.zprestige.prestige.mixin.EntityRendererMixin#a(net.minecraft.entity.Entity,float) applyRenderRotationAtGetAndUpdateRenderStateHead +M dev.zprestige.prestige.mixin.EntityRendererMixin#b(net.minecraft.entity.Entity,float) restoreRenderRotationAtGetAndUpdateRenderStateReturn +M dev.zprestige.prestige.mixin.EntityRendererMixin#c(net.minecraft.entity.Entity,net.minecraft.util.math.BlockPos,net.lenni0451.classtransform.InjectionCallback) forceFullSkyLightAtReturn +M dev.zprestige.prestige.mixin.EntityRendererMixin#d(net.minecraft.entity.Entity,net.minecraft.client.render.entity.state.EntityRenderState,float) modifyNameLabelAtUpdateRenderStateReturn +M dev.zprestige.prestige.mixin.FogRendererMixin#a(java.nio.ByteBuffer,int,org.joml.Vector4f,float,float,float,float,float,float,net.lenni0451.classtransform.InjectionCallback) overrideFogBufferAtApplyFogHead +M dev.zprestige.prestige.mixin.FogRendererMixin#b(net.minecraft.client.render.Camera,int,net.minecraft.client.render.RenderTickCounter,float,net.minecraft.client.world.ClientWorld,net.lenni0451.classtransform.InjectionCallback) overrideFogColorAtApplyFogTail +M dev.zprestige.prestige.mixin.GameRendererMixin#a(net.minecraft.client.render.RenderTickCounter,boolean) renderHudPassAtRenderTail +M dev.zprestige.prestige.mixin.GameRendererMixin#b(net.minecraft.client.render.RenderTickCounter) captureCameraMatricesAtRenderWorldHead +M dev.zprestige.prestige.mixin.GameRendererMixin#c(net.minecraft.client.util.math.MatrixStack,float,net.lenni0451.classtransform.InjectionCallback) cancelHurtCamAtTiltViewWhenHurtHead +M dev.zprestige.prestige.mixin.GameRendererMixin#d() addExtraFloatingItemTicksAtTickHead +M dev.zprestige.prestige.mixin.GameRendererMixin#e(float,net.lenni0451.classtransform.InjectionCallback) applyReachAtUpdateCrosshairTargetHead +M dev.zprestige.prestige.mixin.HeightContextMixin#a(net.minecraft.world.gen.chunk.ChunkGenerator,net.minecraft.world.HeightLimitView,net.lenni0451.classtransform.InjectionCallback) handleNullGeneratorAtInitHead +M dev.zprestige.prestige.mixin.HeldItemRendererMixin#a(float,net.minecraft.client.util.math.MatrixStack,int,net.minecraft.util.Arm,net.lenni0451.classtransform.InjectionCallback) postSwingArmEventAtHead +M dev.zprestige.prestige.mixin.InGameHudMixin#a(net.minecraft.client.gui.DrawContext,net.minecraft.client.render.RenderTickCounter,net.lenni0451.classtransform.InjectionCallback) hideStatusEffectOverlayAtHead +M dev.zprestige.prestige.mixin.InGameHudMixin#b(net.minecraft.client.gui.DrawContext,net.minecraft.client.render.RenderTickCounter,net.lenni0451.classtransform.InjectionCallback) hideCrosshairAtHead +M dev.zprestige.prestige.mixin.InGameHudMixin#c(net.minecraft.client.gui.DrawContext,net.minecraft.client.render.RenderTickCounter,net.lenni0451.classtransform.InjectionCallback) hideScoreboardSidebarAtHead +M dev.zprestige.prestige.mixin.InGameHudMixin#d(net.minecraft.client.gui.DrawContext,net.minecraft.client.render.RenderTickCounter,net.lenni0451.classtransform.InjectionCallback) hideOverlayMessageAtHead +M dev.zprestige.prestige.mixin.InGameOverlayRendererMixin#a(net.minecraft.client.util.math.MatrixStack,net.minecraft.client.render.VertexConsumerProvider,net.lenni0451.classtransform.InjectionCallback) hideFireOverlayBeforeTranslate +M dev.zprestige.prestige.mixin.InactivityFpsLimiterMixin#a(net.lenni0451.classtransform.InjectionCallback) keepMaxFpsInClickGuiAtUpdateHead +M dev.zprestige.prestige.mixin.ItemStackMixin#a(net.lenni0451.classtransform.InjectionCallback) suppressGetBobbingAnimationTimeAtHead +M dev.zprestige.prestige.mixin.ItemStackMixin#b(int,net.lenni0451.classtransform.InjectionCallback) suppressSetBobbingAnimationTimeAtHead +M dev.zprestige.prestige.mixin.KeyboardInputMixin#a(net.lenni0451.classtransform.InjectionCallback) postInputTickPreEventAtTickHead +M dev.zprestige.prestige.mixin.KeyboardInputMixin#b(net.lenni0451.classtransform.InjectionCallback) postInputTickPostEventAtTickReturn +M dev.zprestige.prestige.mixin.KeyboardInputMixin#c(net.lenni0451.classtransform.InjectionCallback) blockInputDuringSwapAtTickReturn +M dev.zprestige.prestige.mixin.KeyboardMixin#a(long,int,net.minecraft.client.input.KeyInput,net.lenni0451.classtransform.InjectionCallback) postKeyEventAtHead +M dev.zprestige.prestige.mixin.LightmapTextureManagerMixin#a(float,net.lenni0451.classtransform.InjectionCallback) forceFullBrightLightmapAfterProfilerPush +M dev.zprestige.prestige.mixin.LivingEntityMixin#a(net.minecraft.util.math.Vec3d,net.lenni0451.classtransform.InjectionCallback) spoofRotationAtTravelHead +M dev.zprestige.prestige.mixin.LivingEntityMixin#b(net.minecraft.util.math.Vec3d) restoreRotationAtTravelReturn +M dev.zprestige.prestige.mixin.LivingEntityMixin#c(net.lenni0451.classtransform.InjectionCallback) overrideHandSwingDurationAtHead +M dev.zprestige.prestige.mixin.LivingEntityMixin#d(byte) postShieldBreakEventAtHandleStatusHead +M dev.zprestige.prestige.mixin.LivingEntityMixin#e(net.lenni0451.classtransform.InjectionCallback) applyJumpYawBeforeAddVelocityInternal +M dev.zprestige.prestige.mixin.LivingEntityRendererMixin#a(net.minecraft.client.render.entity.state.LivingEntityRenderState,net.lenni0451.classtransform.InjectionCallback) forceVisibleForEspAtIsVisibleHead +M dev.zprestige.prestige.mixin.MinecraftClientMixin3#a(net.lenni0451.classtransform.InjectionCallback) postClientTickEventAfterHudTick +M dev.zprestige.prestige.mixin.MinecraftClientMixin3#b(net.lenni0451.classtransform.InjectionCallback) postFallbackClientTickEventAtTickHead +M dev.zprestige.prestige.mixin.MinecraftClientMixin3#c(net.lenni0451.classtransform.InjectionCallback) postPreTickEventAtTickHead +M dev.zprestige.prestige.mixin.MinecraftClientMixin3#d(net.lenni0451.classtransform.InjectionCallback) postResolutionChangedEventAtTail +M dev.zprestige.prestige.mixin.MinecraftClientMixin3#e(net.lenni0451.classtransform.InjectionCallback) postItemUseEventAtDoItemUseHead +M dev.zprestige.prestige.mixin.MinecraftClientMixin3#f(net.lenni0451.classtransform.InjectionCallback) postDoAttackEventAtHead +M dev.zprestige.prestige.mixin.MinecraftClientMixin3#g(boolean,net.lenni0451.classtransform.InjectionCallback) postHandleBlockBreakingEventAtHead +M dev.zprestige.prestige.mixin.ModelCommandRendererMixin#a(net.minecraft.client.render.command.OrderedRenderCommandQueueImpl.ModelCommand,net.minecraft.client.render.RenderLayer,net.minecraft.client.render.VertexConsumer,net.minecraft.client.render.OutlineVertexConsumerProvider,net.minecraft.client.render.VertexConsumerProvider.Immediate) captureRenderLayerAtRenderHead +M dev.zprestige.prestige.mixin.ModelCommandRendererMixin#b() clearRenderLayerAtRenderReturn +M dev.zprestige.prestige.mixin.ModelCommandRendererMixin#c(net.minecraft.client.model.Model,net.minecraft.client.util.math.MatrixStack,net.minecraft.client.render.VertexConsumer,int,int,int) redirectModelRenderWithEspOutline +M dev.zprestige.prestige.mixin.MouseMixin#a(double,net.lenni0451.classtransform.InjectionCallback) postMouseMoveEventAtUpdateMouseHead +M dev.zprestige.prestige.mixin.MouseMixin#b(long,net.minecraft.client.input.MouseInput,int,net.lenni0451.classtransform.InjectionCallback) postMouseButtonEventAtHead +M dev.zprestige.prestige.mixin.NamespaceResourceManagerMixin#a(net.minecraft.util.Identifier,net.lenni0451.classtransform.InjectionCallback) servePrestigeResourceAtGetResourceHead +M dev.zprestige.prestige.mixin.ParticleManagerMixin#a(net.minecraft.client.particle.Particle,net.lenni0451.classtransform.InjectionCallback) postAddParticleEventAtHead +M dev.zprestige.prestige.mixin.PlayerEntityMixin#a(net.lenni0451.classtransform.InjectionCallback) postAttackCooldownResetEventAtResetTicksSinceHead +M dev.zprestige.prestige.mixin.PlayerListEntryMixin#a(net.lenni0451.classtransform.InjectionCallback) overrideListEntrySkinAtGetSkinTexturesReturn +M dev.zprestige.prestige.mixin.ReloadableResourceManagerImplMixin#a(net.minecraft.util.Identifier,net.lenni0451.classtransform.InjectionCallback) serveCustomResourcesAtGetResourceHead +M dev.zprestige.prestige.mixin.ScreenMixin#a(net.minecraft.client.gui.DrawContext,int,int,float,net.lenni0451.classtransform.InjectionCallback) hideScreenBackgroundAtHead +M dev.zprestige.prestige.mixin.ScreenMixin#b(net.minecraft.client.gui.DrawContext,net.minecraft.util.Identifier,int,int,float,float,int,int,net.lenni0451.classtransform.InjectionCallback) hideBackgroundTextureAtHead +M dev.zprestige.prestige.mixin.ServerWorldMixin#a(net.minecraft.entity.Entity,net.minecraft.entity.damage.DamageSource,net.minecraft.world.explosion.ExplosionBehavior,double,double,double,float,boolean,net.minecraft.world.World.ExplosionSourceType,net.minecraft.particle.ParticleEffect,net.minecraft.particle.ParticleEffect,net.minecraft.registry.entry.RegistryEntry,net.lenni0451.classtransform.InjectionCallback) postExplosionEventAtCreateExplosionHead +M dev.zprestige.prestige.mixin.SkyRenderingMixin#a(net.minecraft.client.world.ClientWorld,float,net.minecraft.client.render.Camera,net.minecraft.client.render.state.SkyRenderState,net.lenni0451.classtransform.InjectionCallback) overrideSkyColorAtUpdateRenderStateTail +M dev.zprestige.prestige.mixin.TextDisplayEntityRendererMixin#a(net.lenni0451.classtransform.utils.CArgs) modifyLabelTextBeforeWrapLines +M dev.zprestige.prestige.mixin.TextVisitFactoryMixin#a(net.lenni0451.classtransform.utils.CArgs) replaceTextBeforeVisitFormatted +M dev.zprestige.prestige.mixin.WorldChunkMixin#a(net.minecraft.util.math.BlockPos,net.minecraft.block.BlockState,int,net.lenni0451.classtransform.InjectionCallback) postBlockUpdateEventAtSetBlockStateTail +M dev.zprestige.prestige.mixin.WorldMixin#a(float,net.lenni0451.classtransform.InjectionCallback) overrideRainGradientAtReturn +M dev.zprestige.prestige.mixin.WorldMixin#b(net.lenni0451.classtransform.InjectionCallback) overrideTimeOfDayAtReturn +M dev.zprestige.prestige.mixin.WorldRendererMixin#a(net.minecraft.client.util.ObjectAllocator,net.minecraft.client.render.RenderTickCounter,boolean,net.minecraft.client.render.Camera,org.joml.Matrix4f,org.joml.Matrix4f,org.joml.Matrix4f,com.mojang.blaze3d.buffers.GpuBufferSlice,org.joml.Vector4f,boolean) renderWorldPassAfterFrameGraphRun +M dev.zprestige.prestige.mixin.WorldRendererMixin#b(org.joml.Matrix4f,org.joml.Matrix4f,net.minecraft.util.math.Vec3d,net.lenni0451.classtransform.InjectionCallback) postFrustumEventAtSetupFrustumReturn +M dev.zprestige.prestige.mixin.WorldRendererMixin#c(net.lenni0451.classtransform.InjectionCallback) postWorldRendererReloadEventAtHead +M dev.zprestige.prestige.module.combat.AimAssist#a() findTarget +M dev.zprestige.prestige.module.combat.AimAssist#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.combat.AimAssist#a_double(net.minecraft.entity.Entity,double,dev.zprestige.prestige.render.Rotation,java.lang.String) scoreTarget +M dev.zprestige.prestige.module.combat.AnchorExploder#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AnchorExploder#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.combat.AnchorExploder#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AnchorExploder#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.combat.AnchorExploder#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.AnchorExploder#d() tryChargeAnchor +M dev.zprestige.prestige.module.combat.AnchorExploder#j() tryExplodeAnchor +M dev.zprestige.prestige.module.combat.AnchorMacro#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AnchorMacro#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AnchorMacro#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.combat.AnchorMacro#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.AnchorMacro#d() tryPlaceAnchor +M dev.zprestige.prestige.module.combat.AnchorMacro#e() tryChargeAnchor +M dev.zprestige.prestige.module.combat.AnchorMacro#j() tryExplodeAnchor +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#A() restoreOriginalSlot +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#B(net.minecraft.util.hit.BlockHitResult) clickBlock +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#C(dev.zprestige.prestige.event.Render3DEvent,net.minecraft.util.math.BlockPos,java.awt.Color) drawBlockOutline +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a(dev.zprestige.prestige.event.DoAttackEvent) onDoAttack +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a(dev.zprestige.prestige.event.HandleBlockBreakingEvent) onHandleBlockBreaking +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a(dev.zprestige.prestige.event.Render2DEvent) onRender2D +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a_VecBoolData(net.minecraft.util.math.Vec3d) findAnchorPlan +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a_VecData(net.minecraft.util.math.BlockPos,net.minecraft.util.math.Vec3d) findPlaceTarget +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a_VecIntData(net.minecraft.entity.projectile.thrown.EnderPearlEntity) predictLanding +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a_class_1657_() findThrower +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a_class_1684() findTrackedPearl +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a_class_243__() getPreAimPoint +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a_class_3965_(dev.zprestige.prestige.render.Rotation) raycastBlock +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#a_double_(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d) estimateLandingDamage +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#b_class_243() getStageAimPoint +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#d() shouldBlockInput +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#d_int() getLeadTicks +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#e() hasPearlLanded +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#e_int() findNonGlowstoneSlot +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#f() canDetonate +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#g() isStageDelayElapsed +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#h() registerClickMiss +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#j() scanForPearls +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#k() tickWait +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#l() beginCatch +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#m() tickDetonate +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#n() rotateAndPerformStage +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#o(dev.zprestige.prestige.render.Rotation) performStage +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#p(dev.zprestige.prestige.render.Rotation) placeAnchor +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#q() enterCoverOrChargeStage +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#r(dev.zprestige.prestige.render.Rotation) placeCover +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#s() enterChargeStage +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#t(dev.zprestige.prestige.render.Rotation) chargeAnchor +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#u() enterDetonateStage +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#v(dev.zprestige.prestige.render.Rotation) detonateAnchor +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#w() finishCatch +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#x(java.lang.String,boolean) abort +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#y(java.lang.String) abortWithError +M dev.zprestige.prestige.module.combat.AnchorPearlCatch#z() resetState +M dev.zprestige.prestige.module.combat.AnchorPlacer#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AnchorPlacer#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.combat.AnchorPlacer#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AnchorPlacer#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.combat.AnchorPlacer#j() disableIfOneShot +M dev.zprestige.prestige.module.combat.AnchorPlacer#k(net.minecraft.util.hit.BlockHitResult) actOnBlockHit +M dev.zprestige.prestige.module.combat.AnchorPlacer#l(net.minecraft.util.hit.BlockHitResult) explodeAnchor +M dev.zprestige.prestige.module.combat.AnchorPlacer#m(net.minecraft.util.hit.BlockHitResult,boolean) placeOrChargeAnchor +M dev.zprestige.prestige.module.combat.AntiAction#a(dev.zprestige.prestige.event.DoAttackEvent) onDoAttack +M dev.zprestige.prestige.module.combat.AntiAction#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.combat.AntiAction#a_v86(net.minecraft.item.ItemStack) isCombatItem +M dev.zprestige.prestige.module.combat.AntiBot#a(dev.zprestige.prestige.event.AntiBotQueryEvent) onAntiBotQuery +M dev.zprestige.prestige.module.combat.AntiBot#a(dev.zprestige.prestige.event.BotCheckEvent) onBotCheck +M dev.zprestige.prestige.module.combat.AntiBot#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AntiBot#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AntiBot#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.combat.AntiWeb#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AntiWeb#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AntiWeb#a_boolean_________(net.minecraft.util.math.BlockPos) isCobweb +M dev.zprestige.prestige.module.combat.AntiWeb#a_class_243___(net.minecraft.util.math.BlockPos) getAimPoint +M dev.zprestige.prestige.module.combat.AntiWeb#d() isWebCleared +M dev.zprestige.prestige.module.combat.AntiWeb#e(net.minecraft.util.math.Vec3d) useItemFacing +M dev.zprestige.prestige.module.combat.AntiWeb#f(dev.zprestige.prestige.render.Rotation) useItemWithRotation +M dev.zprestige.prestige.module.combat.AntiWeb#g(net.minecraft.item.Item) ensureHolding +M dev.zprestige.prestige.module.combat.AntiWeb#j() resetState +M dev.zprestige.prestige.module.combat.AntiWeb#k(java.lang.String) notifyThrottled +M dev.zprestige.prestige.module.combat.AntiWeb#l() detectWeb +M dev.zprestige.prestige.module.combat.AntiWeb#m() tickLegit +M dev.zprestige.prestige.module.combat.AntiWeb#n() startSwapBack +M dev.zprestige.prestige.module.combat.AntiWeb#o() abortEscape +M dev.zprestige.prestige.module.combat.AutoAnchor#A() resetAll +M dev.zprestige.prestige.module.combat.AutoAnchor#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AutoAnchor#a(dev.zprestige.prestige.event.DoAttackEvent) onDoAttack +M dev.zprestige.prestige.module.combat.AutoAnchor#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.combat.AutoAnchor#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AutoAnchor#a(dev.zprestige.prestige.event.HandleBlockBreakingEvent) onHandleBlockBreaking +M dev.zprestige.prestige.module.combat.AutoAnchor#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.combat.AutoAnchor#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.combat.AutoAnchor#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.combat.AutoAnchor#a_Color__(java.awt.Color,float,float) fadeColor +M dev.zprestige.prestige.module.combat.AutoAnchor#a_VecBoolData2() findBestPlan +M dev.zprestige.prestige.module.combat.AutoAnchor#a_VecData2(net.minecraft.util.math.BlockPos,net.minecraft.util.math.Vec3d) findPlaceTarget +M dev.zprestige.prestige.module.combat.AutoAnchor#a_boolean__________(net.minecraft.util.math.Vec3d) isOutOfReach +M dev.zprestige.prestige.module.combat.AutoAnchor#a_class_243____() getStageAimPoint +M dev.zprestige.prestige.module.combat.AutoAnchor#a_class_3965__(dev.zprestige.prestige.render.Rotation) raycastBlock +M dev.zprestige.prestige.module.combat.AutoAnchor#a_double__(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d) estimateRawDamage +M dev.zprestige.prestige.module.combat.AutoAnchor#a_int________(int,float,float) scaleAlpha +M dev.zprestige.prestige.module.combat.AutoAnchor#b_List_(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d) collectCandidates +M dev.zprestige.prestige.module.combat.AutoAnchor#b_class_243_() predictTargetPos +M dev.zprestige.prestige.module.combat.AutoAnchor#b_double__(dev.zprestige.prestige.data.AnchorCandidate,net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d) computeTargetDamage +M dev.zprestige.prestige.module.combat.AutoAnchor#b_float________() getPulse +M dev.zprestige.prestige.module.combat.AutoAnchor#c(dev.zprestige.prestige.render.ToggleAnimation,boolean) updateFade +M dev.zprestige.prestige.module.combat.AutoAnchor#c_double__(dev.zprestige.prestige.data.AnchorCandidate,double,double) scoreCandidate +M dev.zprestige.prestige.module.combat.AutoAnchor#c_int(net.minecraft.util.math.BlockPos) getChargesAt +M dev.zprestige.prestige.module.combat.AutoAnchor#d() isStageReady +M dev.zprestige.prestige.module.combat.AutoAnchor#d_double(double,double,double,boolean,boolean,boolean,int) computeScore +M dev.zprestige.prestige.module.combat.AutoAnchor#d_int_() findNonGlowstoneSlot +M dev.zprestige.prestige.module.combat.AutoAnchor#e() registerFailure +M dev.zprestige.prestige.module.combat.AutoAnchor#e_int_() computeStateHash +M dev.zprestige.prestige.module.combat.AutoAnchor#f(double,int,double,int) couldBeatBest +M dev.zprestige.prestige.module.combat.AutoAnchor#g(double,int,double,int) isBetterThanBest +M dev.zprestige.prestige.module.combat.AutoAnchor#h() isTargetValid +M dev.zprestige.prestige.module.combat.AutoAnchor#i() hasTargetMoved +M dev.zprestige.prestige.module.combat.AutoAnchor#j(dev.zprestige.prestige.event.Render3DEvent,net.minecraft.util.math.BlockPos,java.awt.Color) drawBlockOutline +M dev.zprestige.prestige.module.combat.AutoAnchor#j_boolean(net.minecraft.entity.player.PlayerEntity) isFailedPlanCached +M dev.zprestige.prestige.module.combat.AutoAnchor#k() executeStageWithCameraRotation +M dev.zprestige.prestige.module.combat.AutoAnchor#l(dev.zprestige.prestige.render.Rotation) executeStage +M dev.zprestige.prestige.module.combat.AutoAnchor#m(dev.zprestige.prestige.render.Rotation) handlePlaceStage +M dev.zprestige.prestige.module.combat.AutoAnchor#n() advanceAfterPlace +M dev.zprestige.prestige.module.combat.AutoAnchor#o(dev.zprestige.prestige.render.Rotation) handleCoverStage +M dev.zprestige.prestige.module.combat.AutoAnchor#p() advanceToCharge +M dev.zprestige.prestige.module.combat.AutoAnchor#q(dev.zprestige.prestige.render.Rotation) handleChargeStage +M dev.zprestige.prestige.module.combat.AutoAnchor#r() advanceToDetonate +M dev.zprestige.prestige.module.combat.AutoAnchor#s(dev.zprestige.prestige.render.Rotation) handleDetonateStage +M dev.zprestige.prestige.module.combat.AutoAnchor#t(net.minecraft.util.hit.BlockHitResult) clickBlock +M dev.zprestige.prestige.module.combat.AutoAnchor#u() tryStartSequence +M dev.zprestige.prestige.module.combat.AutoAnchor#v(net.minecraft.entity.player.PlayerEntity,long) cacheFailedPlan +M dev.zprestige.prestige.module.combat.AutoAnchor#w() clearPlanCache +M dev.zprestige.prestige.module.combat.AutoAnchor#x(java.lang.String) abortWithError +M dev.zprestige.prestige.module.combat.AutoAnchor#y() restoreOriginalSlot +M dev.zprestige.prestige.module.combat.AutoAnchor#z() abortSequence +M dev.zprestige.prestige.module.combat.AutoCart#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AutoCart#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.AutoCart#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.combat.AutoCart#a_Integer_() findOrPullCartSlot +M dev.zprestige.prestige.module.combat.AutoCart#a_boolean___________(net.minecraft.item.Item) isRailItem +M dev.zprestige.prestige.module.combat.AutoCart#a_class_1701() findAutoHitCart +M dev.zprestige.prestige.module.combat.AutoCart#a_class_2338_(float,float,float) predictArrowLanding +M dev.zprestige.prestige.module.combat.AutoCart#a_class_3965___() getRailPlaceHit +M dev.zprestige.prestige.module.combat.AutoCart#b_RenderBatch(net.minecraft.util.math.Vec3d,float) computeBowAim +M dev.zprestige.prestige.module.combat.AutoCart#b_float_________() getShotPower +M dev.zprestige.prestige.module.combat.AutoCart#d(net.minecraft.util.math.BlockPos) isRailBlock +M dev.zprestige.prestige.module.combat.AutoCart#d_int__() findRailSlot +M dev.zprestige.prestige.module.combat.AutoCart#e() findSafeBlockSlot +M dev.zprestige.prestige.module.combat.AutoCart#e_boolean_(net.minecraft.item.ItemStack) isChargedCrossbow +M dev.zprestige.prestige.module.combat.AutoCart#f() findChargedCrossbowSlot +M dev.zprestige.prestige.module.combat.AutoCart#f_boolean(net.minecraft.util.math.BlockPos) isTopFaceInReach +M dev.zprestige.prestige.module.combat.AutoCart#g_int() getChargeTicks +M dev.zprestige.prestige.module.combat.AutoCart#g_v70(double,double,double) isInReach +M dev.zprestige.prestige.module.combat.AutoCart#h(net.minecraft.util.math.BlockPos) hasTntCartAt +M dev.zprestige.prestige.module.combat.AutoCart#i() isDrawingBow +M dev.zprestige.prestige.module.combat.AutoCart#j() resetSequence +M dev.zprestige.prestige.module.combat.AutoCart#j_boolean_() isOverloadHeld +M dev.zprestige.prestige.module.combat.AutoCart#k() restoreUseKeyState +M dev.zprestige.prestige.module.combat.AutoCart#k_boolean() isHoldingBowOrCrossbow +M dev.zprestige.prestige.module.combat.AutoCart#l() finishPlacement +M dev.zprestige.prestige.module.combat.AutoCart#m(float,float,float) placeAtPredictedLanding +M dev.zprestige.prestige.module.combat.AutoCart#n(float) placeAtServerAimLanding +M dev.zprestige.prestige.module.combat.AutoCart#o(net.minecraft.util.hit.BlockHitResult) interactBlockAndSwing +M dev.zprestige.prestige.module.combat.AutoCrystal#a() getCrosshairCrystal +M dev.zprestige.prestige.module.combat.AutoCrystal#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AutoCrystal#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.combat.AutoCrystal#a_boolean____________(net.minecraft.entity.player.PlayerEntity) passesDamageTick +M dev.zprestige.prestige.module.combat.AutoCrystal#a_class_243_____(net.minecraft.util.math.Box,net.minecraft.util.math.Vec3d) getClosestPoint +M dev.zprestige.prestige.module.combat.AutoCrystal#j(dev.zprestige.prestige.event.SendMovementPacketsEvent) breakLastCrystal +M dev.zprestige.prestige.module.combat.AutoCrystal#k(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.combat.AutoCrystal#k(net.minecraft.entity.Entity,float,float) attackCrystal +M dev.zprestige.prestige.module.combat.AutoCrystal#l() resetDelay +M dev.zprestige.prestige.module.combat.AutoDrain#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.combat.AutoDrain#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AutoDrain#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.AutoDrain#a_boolean_____________(net.minecraft.util.math.BlockPos,net.minecraft.util.hit.BlockHitResult) tryDrain +M dev.zprestige.prestige.module.combat.AutoDrain#a_class_243______(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Box) getClosestPointInBox +M dev.zprestige.prestige.module.combat.AutoDrain#a_class_3965____() raycastCrosshairLiquid +M dev.zprestige.prestige.module.combat.AutoDrain#b_class_3965() findReachableLiquidHit +M dev.zprestige.prestige.module.combat.AutoDrain#d(net.minecraft.util.math.BlockPos,net.minecraft.util.hit.BlockHitResult) tryPlaceCobweb +M dev.zprestige.prestige.module.combat.AutoDrain#e(net.minecraft.util.math.BlockPos) isDrainable +M dev.zprestige.prestige.module.combat.AutoDrain#f(net.minecraft.block.Block,net.minecraft.util.math.BlockPos) isSelectedLiquid +M dev.zprestige.prestige.module.combat.AutoDrain#g(net.minecraft.block.Block) isLiquid +M dev.zprestige.prestige.module.combat.AutoDrain#h(net.minecraft.util.math.BlockPos) isNextToCobweb +M dev.zprestige.prestige.module.combat.AutoElytra#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AutoElytra#a(dev.zprestige.prestige.event.KeyEvent) onKey +M dev.zprestige.prestige.module.combat.AutoElytra#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.AutoHitCrystal#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.combat.AutoHitCrystal#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.combat.AutoHitCrystal#j(dev.zprestige.prestige.event.SendMovementPacketsEvent) breakCrystalSilently +M dev.zprestige.prestige.module.combat.AutoHitCrystal#k() nextStage +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a(dev.zprestige.prestige.event.DoAttackEvent) onDoAttack +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a(dev.zprestige.prestige.event.HandleBlockBreakingEvent) onHandleBlockBreaking +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a_AutoObbyCrystalHelper() findBestCandidate +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a_Color___(java.awt.Color,float,float) fadeColor +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a_boolean______________(net.minecraft.util.math.Vec3d) isOutOfReach +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a_class_1511() findBreakableCrystal +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a_class_2338__() findNearestHole +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a_class_243_______() getTargetVelocity +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a_double___(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d,net.minecraft.util.math.BlockPos,double) getPredictedDamage +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#a_int_________(int,float,float) scaleAlpha +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#b_class_243__() getAimPoint +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#b_double___(net.minecraft.util.math.Vec3d) getYawChange +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#b_float__________() getPulse +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#c(dev.zprestige.prestige.render.ToggleAnimation,boolean) updateFade +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#c_class_243(net.minecraft.entity.decoration.EndCrystalEntity) getCrystalAimPoint +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#c_double___(net.minecraft.util.math.Box,net.minecraft.util.math.Vec3d) distanceToBox +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#d() isTargetMoving +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#d_class_243() predictTargetPos +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#d_float_() getStageTimeout +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#e() isActionReady +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#e_class_243() predictEyePos +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#f(int) ensureSlotSelected +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#f_class_243(net.minecraft.util.math.Vec3d) getMomentumDirection +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#g(net.minecraft.util.math.BlockPos) hasCrystalAt +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#h(net.minecraft.util.math.BlockPos,int) hasBlockingEntity +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#i(net.minecraft.util.math.BlockPos,int) isBlockedOrInPath +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#j(dev.zprestige.prestige.event.Render3DEvent,net.minecraft.util.math.BlockPos,java.awt.Color) drawOutline +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#j_boolean__(net.minecraft.util.math.Vec3d,net.minecraft.util.math.BlockPos) canHitSilently +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#k(dev.zprestige.prestige.event.Render3DEvent,net.minecraft.util.math.BlockPos,java.awt.Color,boolean,float) drawBox +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#k_boolean_(net.minecraft.util.math.BlockPos,net.minecraft.util.math.BlockPos) isAdjacentToFeet +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#l(net.minecraft.entity.Entity) trackVelocity +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#l_boolean(net.minecraft.util.math.Box,net.minecraft.util.math.Vec3d,dev.zprestige.prestige.render.Rotation) canRayHitBox +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#m() rotateAndAct +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#m_boolean() isTargetValid +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#n(dev.zprestige.prestige.render.Rotation) executeStage +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#n_boolean() hasTargetMoved +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#o(dev.zprestige.prestige.render.Rotation) placeObsidian +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#p(dev.zprestige.prestige.render.Rotation) placeCrystal +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#q(dev.zprestige.prestige.render.Rotation) breakCrystal +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#r(net.minecraft.util.hit.BlockHitResult) clickBlock +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#s(net.minecraft.entity.Entity) attackCrystal +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#t() startSequence +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#u(java.lang.String) failWithError +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#v(java.lang.String) abort +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#w() restoreSwapSlot +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#x() resetSequence +M dev.zprestige.prestige.module.combat.AutoObbyCrystal#y() resetState +M dev.zprestige.prestige.module.combat.AutoSafeCart#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AutoSafeCart#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AutoSafeCart#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.AutoSafeCart#a_DoubleData(dev.zprestige.prestige.data.CartThreat,net.minecraft.block.Block) findBestCoverPlacement +M dev.zprestige.prestige.module.combat.AutoSafeCart#a_boolean_______________(net.minecraft.block.Block,dev.zprestige.prestige.data.CartBlockerPlacement,dev.zprestige.prestige.data.CartThreat) tryPlaceCover +M dev.zprestige.prestige.module.combat.AutoSafeCart#a_class_2248() findCoverBlock +M dev.zprestige.prestige.module.combat.AutoSafeCart#a_class_2338___() getPendingPlacePos +M dev.zprestige.prestige.module.combat.AutoSafeCart#a_class_3965_____(net.minecraft.util.math.BlockPos) getPlaceHit +M dev.zprestige.prestige.module.combat.AutoSafeCart#b_List__(net.minecraft.entity.vehicle.TntMinecartEntity) getCoverCandidates +M dev.zprestige.prestige.module.combat.AutoSafeCart#b_class_2248(net.minecraft.block.Block,boolean) findAvailableBlock +M dev.zprestige.prestige.module.combat.AutoSafeCart#c() findThreats +M dev.zprestige.prestige.module.combat.AutoSafeCart#c_class_2248(net.minecraft.registry.tag.TagKey,boolean) findAvailableTaggedBlock +M dev.zprestige.prestige.module.combat.AutoSafeCart#d(net.minecraft.item.ItemStack,net.minecraft.registry.tag.TagKey) getTaggedBlock +M dev.zprestige.prestige.module.combat.AutoSafeCart#d_boolean_(net.minecraft.entity.vehicle.TntMinecartEntity) shouldProtectFrom +M dev.zprestige.prestige.module.combat.AutoSafeCart#e(net.minecraft.entity.vehicle.TntMinecartEntity) isOwnCart +M dev.zprestige.prestige.module.combat.AutoSafeCart#j(java.util.List) updateThreatState +M dev.zprestige.prestige.module.combat.AutoSafeCart#k() pruneTracking +M dev.zprestige.prestige.module.combat.AutoShield#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.combat.AutoShield#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.combat.AutoShield#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.combat.AutoShield#a(dev.zprestige.prestige.event.ShieldBreakEvent) onShieldBreak +M dev.zprestige.prestige.module.combat.AutoShield#a_v71(net.minecraft.entity.player.PlayerEntity) isApproaching +M dev.zprestige.prestige.module.combat.AutoShield#j() pressUseKey +M dev.zprestige.prestige.module.combat.AutoShield#k() releaseUseKey +M dev.zprestige.prestige.module.combat.AutoShield#l() restoreUseKeyState +M dev.zprestige.prestige.module.combat.AutoShieldBreaker#a(dev.zprestige.prestige.event.DoAttackEvent) onDoAttack +M dev.zprestige.prestige.module.combat.AutoShieldBreaker#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.combat.AutoShieldBreaker#a_boolean________________(net.minecraft.entity.player.PlayerEntity) isBlockingWithShield +M dev.zprestige.prestige.module.combat.AutoShieldBreaker#d() findHotbarAxe +M dev.zprestige.prestige.module.combat.AutoShieldBreaker#d_boolean__(net.minecraft.entity.player.PlayerEntity) tryBreakShield +M dev.zprestige.prestige.module.combat.AutoShieldBreaker#e() findInventoryAxe +M dev.zprestige.prestige.module.combat.AutoTotem#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AutoTotem#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.combat.AutoTotem#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.AutoTotem#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.combat.AutoTotem#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.AutoTotem#a(int,int) requestSwap +M dev.zprestige.prestige.module.combat.AutoTotem#b_List___(java.awt.Point,java.awt.Point) generateMousePath +M dev.zprestige.prestige.module.combat.AutoTotem#b_float___________() computeDangerScore +M dev.zprestige.prestige.module.combat.AutoTotem#d() isQueuedSwapPending +M dev.zprestige.prestige.module.combat.AutoTotem#e() isOffhandSwapPending +M dev.zprestige.prestige.module.combat.AutoTotem#f() resetState +M dev.zprestige.prestige.module.combat.AutoTotem#f(int,dev.zprestige.prestige.type.ArmorState) requestOffhandSwap +M dev.zprestige.prestige.module.combat.AutoTotem#g() shouldIgnorePop +M dev.zprestige.prestige.module.combat.AutoTotem#h() isDelayActive +M dev.zprestige.prestige.module.combat.AutoTotem#i() startActionDelay +M dev.zprestige.prestige.module.combat.AutoTotem#j() closeOpenedInventory +M dev.zprestige.prestige.module.combat.AutoTotem#k(net.minecraft.client.gui.screen.ingame.HandledScreen) closeScreen +M dev.zprestige.prestige.module.combat.AutoTotem#l(long,dev.zprestige.prestige.type.ArmorState,int) onOffhandSwapComplete +M dev.zprestige.prestige.module.combat.AutoTotem#m() clearOffhandSwap +M dev.zprestige.prestige.module.combat.AutoTotem#n() createRobot +M dev.zprestige.prestige.module.combat.Backtrack#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.combat.Backtrack#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.Backtrack#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.Backtrack#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.combat.Backtrack#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.combat.Backtrack#a_boolean_________________(net.minecraft.network.packet.Packet) isSelfMotionPacket +M dev.zprestige.prestige.module.combat.Backtrack#a_class_7422(net.minecraft.util.math.Vec3d) createTrackedPosition +M dev.zprestige.prestige.module.combat.Backtrack#a_double____(net.minecraft.util.math.Vec3d) getHitDistance +M dev.zprestige.prestige.module.combat.Backtrack#a_v41(net.minecraft.network.packet.Packet) processPositionPacket +M dev.zprestige.prestige.module.combat.Backtrack#d(net.minecraft.util.math.Vec3d) isMovingAway +M dev.zprestige.prestige.module.combat.Backtrack#e() passesWeaponCheck +M dev.zprestige.prestige.module.combat.Backtrack#f(net.minecraft.entity.Entity) isInRange +M dev.zprestige.prestige.module.combat.Backtrack#j(net.minecraft.network.packet.Packet) queuePacket +M dev.zprestige.prestige.module.combat.Backtrack#k(boolean) releasePackets +M dev.zprestige.prestige.module.combat.Backtrack#l() applyPendingTarget +M dev.zprestige.prestige.module.combat.Backtrack#m(int,net.minecraft.util.math.Vec3d) setTrackedPosition +M dev.zprestige.prestige.module.combat.Backtrack#n(boolean) resetState +M dev.zprestige.prestige.module.combat.Backtrack#o(net.minecraft.util.math.Vec3d) setRenderTarget +M dev.zprestige.prestige.module.combat.Backtrack#p(net.minecraft.util.math.Vec3d) snapRenderPos +M dev.zprestige.prestige.module.combat.CartAura#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.CartAura#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.CartAura#a_boolean__________________(net.minecraft.entity.vehicle.TntMinecartEntity) isOwnCart +M dev.zprestige.prestige.module.combat.CartAura#a_class_1701_(float) findTarget +M dev.zprestige.prestige.module.combat.CartAura#a_class_243________(net.minecraft.entity.Entity) getBoxCenter +M dev.zprestige.prestige.module.combat.CartAura#a_double_____(net.minecraft.entity.Entity) getDistanceToBox +M dev.zprestige.prestige.module.combat.CartAura#d() findSwordSlot +M dev.zprestige.prestige.module.combat.CartAura#j() restorePreviousSlot +M dev.zprestige.prestige.module.combat.CartAura#k() resetState +M dev.zprestige.prestige.module.combat.CartPearlCatch#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.CartPearlCatch#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.CartPearlCatch#a(dev.zprestige.prestige.event.Render2DEvent) onRender2D +M dev.zprestige.prestige.module.combat.CartPearlCatch#a_Integer__() findTntCartSlot +M dev.zprestige.prestige.module.combat.CartPearlCatch#a_VecIntData2(net.minecraft.entity.projectile.thrown.EnderPearlEntity) predictLanding +M dev.zprestige.prestige.module.combat.CartPearlCatch#a_boolean___________________(float) solveShot +M dev.zprestige.prestige.module.combat.CartPearlCatch#a_class_1684_() findTrackedPearl +M dev.zprestige.prestige.module.combat.CartPearlCatch#a_class_2338____(net.minecraft.util.math.Vec3d) findBestCartPos +M dev.zprestige.prestige.module.combat.CartPearlCatch#a_double______(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d,double) estimateExplosionDamage +M dev.zprestige.prestige.module.combat.CartPearlCatch#a_int__________(float,float,float) simulateArrowFlight +M dev.zprestige.prestige.module.combat.CartPearlCatch#b_RenderBatch_(net.minecraft.util.math.Vec3d) getAimRotation +M dev.zprestige.prestige.module.combat.CartPearlCatch#b_class_2338(net.minecraft.util.math.Vec3d) findFireSpot +M dev.zprestige.prestige.module.combat.CartPearlCatch#c(net.minecraft.entity.projectile.thrown.EnderPearlEntity) getTicksUntilLanding +M dev.zprestige.prestige.module.combat.CartPearlCatch#d(float,float) shotPassesThroughFire +M dev.zprestige.prestige.module.combat.CartPearlCatch#d_int___() getLeadTicks +M dev.zprestige.prestige.module.combat.CartPearlCatch#e() shouldFireNow +M dev.zprestige.prestige.module.combat.CartPearlCatch#e_int__() findRailSlot +M dev.zprestige.prestige.module.combat.CartPearlCatch#f_int() findFlintAndSteelSlot +M dev.zprestige.prestige.module.combat.CartPearlCatch#f_v108(double,double,double) isInReach +M dev.zprestige.prestige.module.combat.CartPearlCatch#g() findChargedCrossbowSlot +M dev.zprestige.prestige.module.combat.CartPearlCatch#j() resetState +M dev.zprestige.prestige.module.combat.CartPearlCatch#k(java.lang.String) printMessage +M dev.zprestige.prestige.module.combat.CartPearlCatch#l(java.lang.String) abort +M dev.zprestige.prestige.module.combat.CartPearlCatch#m() releaseUseKey +M dev.zprestige.prestige.module.combat.CartPearlCatch#n() finishCatch +M dev.zprestige.prestige.module.combat.CartPearlCatch#o() scanForPearls +M dev.zprestige.prestige.module.combat.CartPearlCatch#p(net.minecraft.util.hit.BlockHitResult) clickBlock +M dev.zprestige.prestige.module.combat.CobwebPlacer#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.combat.CobwebPlacer#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.combat.CobwebPlacer#a_PlaceState(net.minecraft.util.hit.BlockHitResult,java.lang.Integer,int,boolean) tryPlace +M dev.zprestige.prestige.module.combat.CobwebPlacer#a_boolean____________________(net.minecraft.util.hit.BlockHitResult,int,int) placeFromInventory +M dev.zprestige.prestige.module.combat.CobwebPlacer#a_class_243_________(net.minecraft.entity.player.PlayerEntity) predictPlacePos +M dev.zprestige.prestige.module.combat.CobwebPlacer#a_class_3965______(net.minecraft.util.hit.BlockHitResult) getMatchingServerHit +M dev.zprestige.prestige.module.combat.CobwebPlacer#b_RenderBatch__() restoreAndSkip +M dev.zprestige.prestige.module.combat.CobwebPlacer#b_class_243___(net.minecraft.entity.player.PlayerEntity) predictFallLanding +M dev.zprestige.prestige.module.combat.CobwebPlacer#c(net.minecraft.entity.player.PlayerEntity) predictAirbornePos +M dev.zprestige.prestige.module.combat.CobwebPlacer#d() processSwitchBack +M dev.zprestige.prestige.module.combat.CobwebPlacer#d_class_243_(net.minecraft.entity.player.PlayerEntity) predictGroundedPos +M dev.zprestige.prestige.module.combat.CobwebPlacer#e(double,double,double,double) hasGroundBelow +M dev.zprestige.prestige.module.combat.CobwebPlacer#j() recordPlacement +M dev.zprestige.prestige.module.combat.CobwebPlacer#k() applyAutoSwitchBack +M dev.zprestige.prestige.module.combat.CobwebPlacer#l(int) queueSwitchBack +M dev.zprestige.prestige.module.combat.CobwebPlacer#m() restoreOriginalSlot +M dev.zprestige.prestige.module.combat.CobwebPlacer#n() finishSwitchBack +M dev.zprestige.prestige.module.combat.CobwebPlacer#o() scheduleSwitchBack +M dev.zprestige.prestige.module.combat.CobwebPlacer#p() releaseSwap +M dev.zprestige.prestige.module.combat.CobwebPlacer#q() clearSwapState +M dev.zprestige.prestige.module.combat.CobwebPlacer#r(dev.zprestige.prestige.event.Render3DEvent,net.minecraft.util.math.BlockPos,java.awt.Color) drawOutline +M dev.zprestige.prestige.module.combat.CobwebPlacer#s() advanceManualStage +M dev.zprestige.prestige.module.combat.DoubleAnchor#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.DoubleAnchor#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.DoubleAnchor#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.combat.DoubleAnchor#a_class_3965_______(net.minecraft.util.math.BlockPos) createTopFaceHit +M dev.zprestige.prestige.module.combat.DoubleAnchor#a_v120(net.minecraft.util.math.BlockPos) isChargedAnchor +M dev.zprestige.prestige.module.combat.DoubleAnchor#d(net.minecraft.util.math.BlockPos) isAnchor +M dev.zprestige.prestige.module.combat.DoubleAnchor#e() shouldWaitForDamageTick +M dev.zprestige.prestige.module.combat.DoubleAnchor#f(net.minecraft.util.hit.BlockHitResult) placeAnchor +M dev.zprestige.prestige.module.combat.DoubleAnchor#g(net.minecraft.util.hit.BlockHitResult) chargeAnchor +M dev.zprestige.prestige.module.combat.DoubleAnchor#h(net.minecraft.util.hit.BlockHitResult) explodeAnchor +M dev.zprestige.prestige.module.combat.DoubleAnchor#i(net.minecraft.util.hit.BlockHitResult) explodeAndDoublePlace +M dev.zprestige.prestige.module.combat.DoubleAnchor#j() resetMacro +M dev.zprestige.prestige.module.combat.DoubleAnchor#k() runMacroStage +M dev.zprestige.prestige.module.combat.DoubleAnchor#l(java.lang.String) abortMacro +M dev.zprestige.prestige.module.combat.DoubleAnchor#m(java.lang.String) notifyInfo +M dev.zprestige.prestige.module.combat.GhostPlace#a() getPlaceHand +M dev.zprestige.prestige.module.combat.GhostPlace#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.combat.GhostPlace#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.combat.GhostPlace#a_boolean_____________________(net.minecraft.item.ItemStack) isPlaceable +M dev.zprestige.prestige.module.combat.GhostPlace#a_class_3965________() raycastBlockBehind +M dev.zprestige.prestige.module.combat.GhostPlace#d(net.minecraft.util.hit.HitResult) isEnemyHit +M dev.zprestige.prestige.module.combat.HitFix#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.combat.HitFix#a(dev.zprestige.prestige.event.ResetAttackCooldownEvent) onResetAttackCooldown +M dev.zprestige.prestige.module.combat.HitFix#a(dev.zprestige.prestige.event.SwingHandEvent) onSwingHand +M dev.zprestige.prestige.module.combat.HitFix#a_boolean______________________(net.minecraft.entity.player.PlayerEntity) shouldDelayHit +M dev.zprestige.prestige.module.combat.HitFlick#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.combat.Hitboxes#a(dev.zprestige.prestige.event.BoundingBoxEvent) onBoundingBox +M dev.zprestige.prestige.module.combat.Hitboxes#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.combat.Hitboxes#a(dev.zprestige.prestige.event.SwingHandEvent) onSwingHand +M dev.zprestige.prestige.module.combat.Hitboxes#a_boolean_______________________(net.minecraft.entity.player.PlayerEntity) isRaisingShield +M dev.zprestige.prestige.module.combat.InstantCrossbow#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.combat.InstantCrossbow#j() swapToCrossbow +M dev.zprestige.prestige.module.combat.InstantCrossbow#k() restorePreviousSlot +M dev.zprestige.prestige.module.combat.InstantCrossbow#l() resetSlots +M dev.zprestige.prestige.module.combat.InstantCrossbow#m() restoreUseKeyState +M dev.zprestige.prestige.module.combat.InstantShield#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.combat.InstantShield#d() canBlockWithShield +M dev.zprestige.prestige.module.combat.InstantShield#j() swapToShield +M dev.zprestige.prestige.module.combat.InstantShield#k() restorePreviousSlot +M dev.zprestige.prestige.module.combat.InstantShield#l() resetSlots +M dev.zprestige.prestige.module.combat.InstantShield#m() restoreUseKeyState +M dev.zprestige.prestige.module.combat.KeepSprint#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.combat.KeepSprint#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.KeepSprint#d() isForwardKeyDown +M dev.zprestige.prestige.module.combat.KeepSprint#e() isWTapActive +M dev.zprestige.prestige.module.combat.KillAura#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.KillAura#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.combat.KillAura#a_class_1297_(boolean,float) findTarget +M dev.zprestige.prestige.module.combat.KillAura#a_class_243__________(net.minecraft.entity.Entity) getAimPoint +M dev.zprestige.prestige.module.combat.KillAura#a_double_______(net.minecraft.entity.Entity) getHitboxDistance +M dev.zprestige.prestige.module.combat.KillAura#d() findAxeSlot +M dev.zprestige.prestige.module.combat.NoMissDelay#a(dev.zprestige.prestige.event.ResetAttackCooldownEvent) onResetAttackCooldown +M dev.zprestige.prestige.module.combat.NoMissDelay#a(dev.zprestige.prestige.event.SwingHandEvent) onSwingHand +M dev.zprestige.prestige.module.combat.NoMissDelay#d() isEnemyNearby +M dev.zprestige.prestige.module.combat.PearlFollow#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.PearlFollow#a_FloatDoubleIntData(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d,float,float) evaluateThrow +M dev.zprestige.prestige.module.combat.PearlFollow#a_VecIntDoubleData(net.minecraft.util.math.Vec3d,float,float) simulateThrow +M dev.zprestige.prestige.module.combat.PearlFollow#a_boolean________________________(java.util.List,dev.zprestige.prestige.data.PearlThrowOption) hasNearbyPitch +M dev.zprestige.prestige.module.combat.PearlFollow#a_class_243___________(net.minecraft.entity.projectile.thrown.EnderPearlEntity) predictLanding +M dev.zprestige.prestige.module.combat.PearlFollow#b_FloatDoubleIntData(java.util.List,double) pickBestOption +M dev.zprestige.prestige.module.combat.PearlFollow#b_List____(java.util.List) selectBestMinima +M dev.zprestige.prestige.module.combat.PearlFollow#b_RenderBatch___(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d) findThrowRotation +M dev.zprestige.prestige.module.combat.PearlFollow#c(java.util.List,double) pickFastestOption +M dev.zprestige.prestige.module.combat.PearlFollow#d(dev.zprestige.prestige.data.PearlThrowOption,dev.zprestige.prestige.data.PearlThrowOption) choosePreferred +M dev.zprestige.prestige.module.combat.PearlFollow#d_boolean___(java.util.List,dev.zprestige.prestige.data.PearlThrowOption) containsPitch +M dev.zprestige.prestige.module.combat.PearlFollow#e(dev.zprestige.prestige.data.PearlThrowOption,dev.zprestige.prestige.data.PearlThrowOption) arePitchesClose +M dev.zprestige.prestige.module.combat.PearlFollow#j(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d,float,dev.zprestige.prestige.data.PearlThrowOption,java.util.List) refineAroundPitch +M dev.zprestige.prestige.module.combat.PredictDoubleHand#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.combat.PredictDoubleHand#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.PredictDoubleHand#j(int) switchToTotem +M dev.zprestige.prestige.module.combat.SafeAnchor#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.SafeAnchor#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.combat.SafeAnchor#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.SafeAnchor#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.combat.SafeAnchor#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.combat.SafeAnchor#d() isCoverPending +M dev.zprestige.prestige.module.combat.SafeAnchor#j() updateCoverPending +M dev.zprestige.prestige.module.combat.SilentAim#a(dev.zprestige.prestige.event.HandleBlockBreakingEvent) onHandleBlockBreaking +M dev.zprestige.prestige.module.combat.SilentAim#a(dev.zprestige.prestige.event.MouseButtonEvent) onMouseButton +M dev.zprestige.prestige.module.combat.SilentAim#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.combat.SilentAim#a(dev.zprestige.prestige.event.SwingHandEvent) onSwingHand +M dev.zprestige.prestige.module.combat.SilentAim#a_boolean_________________________(dev.zprestige.prestige.render.Rotation) exceedsAngleLimits +M dev.zprestige.prestige.module.combat.SilentAim#a_class_1297__() findTarget +M dev.zprestige.prestige.module.combat.SilentAim#a_class_243____________(net.minecraft.entity.Entity) getAimPoint +M dev.zprestige.prestige.module.combat.SilentAim#b_RenderBatch____(net.minecraft.entity.Entity) computeAimRotation +M dev.zprestige.prestige.module.combat.SilentAim#d() isKillAuraActive +M dev.zprestige.prestige.module.combat.SilentAim#j(net.minecraft.entity.Entity) attackTarget +M dev.zprestige.prestige.module.combat.SwapHit#a() findSwordSlot +M dev.zprestige.prestige.module.combat.SwapHit#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.SwapHit#a(dev.zprestige.prestige.event.DoAttackEvent) onDoAttack +M dev.zprestige.prestige.module.combat.SwapHit#d() findAxeSlot +M dev.zprestige.prestige.module.combat.TotemHit#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.combat.Triggerbot#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.Triggerbot#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.combat.Triggerbot#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.combat.Triggerbot#a_boolean__________________________(net.minecraft.entity.Entity) isAttackable +M dev.zprestige.prestige.module.combat.Triggerbot#a_v80(float) applyTpsSync +M dev.zprestige.prestige.module.combat.Triggerbot#j() updateTpsEstimate +M dev.zprestige.prestige.module.combat.Triggerbot#k() resetMissTracking +M dev.zprestige.prestige.module.combat.Triggerbot#l(net.minecraft.entity.Entity,boolean) updateTrackedTarget +M dev.zprestige.prestige.module.combat.Triggerbot#m(net.minecraft.entity.Entity) logRejection +M dev.zprestige.prestige.module.combat.XbowCart#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.XbowCart#a_Integer___() findOrPullCartSlot +M dev.zprestige.prestige.module.combat.XbowCart#a_boolean___________________________(float,float,net.minecraft.util.math.BlockPos) doesShotIgniteCart +M dev.zprestige.prestige.module.combat.XbowCart#a_class_2338_____() findFirePos +M dev.zprestige.prestige.module.combat.XbowCart#a_class_243_____________() getCartAimPoint +M dev.zprestige.prestige.module.combat.XbowCart#b_RenderBatch_____(net.minecraft.util.math.Vec3d) computeRotationTo +M dev.zprestige.prestige.module.combat.XbowCart#d_int____() findRailSlot +M dev.zprestige.prestige.module.combat.XbowCart#d_v64(double,double,double) isInReach +M dev.zprestige.prestige.module.combat.XbowCart#e() findFlintAndSteelSlot +M dev.zprestige.prestige.module.combat.XbowCart#f() findLoadedCrossbowSlot +M dev.zprestige.prestige.module.combat.XbowCart#j() resetState +M dev.zprestige.prestige.module.combat.XbowCart#k() abort +M dev.zprestige.prestige.module.combat.XbowCart#l() finishAndSwitchBack +M dev.zprestige.prestige.module.combat.XbowCart#m() disableSelf +M dev.zprestige.prestige.module.combat.XbowCart#n(net.minecraft.util.hit.BlockHitResult) interactBlockAndSwing +M dev.zprestige.prestige.module.mace.AutoMace#a(dev.zprestige.prestige.event.BoundingBoxEvent) onBoundingBox +M dev.zprestige.prestige.module.mace.AutoMace#a(dev.zprestige.prestige.event.DoAttackEvent) onDoAttack +M dev.zprestige.prestige.module.mace.AutoMace#a_class_1657__(float) findClosestHorizontalTarget +M dev.zprestige.prestige.module.mace.AutoMace#a_int___________(int) getDensityLevel +M dev.zprestige.prestige.module.mace.AutoMace#b_RenderBatch______(net.minecraft.entity.player.PlayerEntity,dev.zprestige.prestige.render.Rotation,int,int) startStunSlam +M dev.zprestige.prestige.module.mace.AutoMace#c() processPendingStunSlam +M dev.zprestige.prestige.module.mace.AutoMace#c_int_(int) getBreachLevel +M dev.zprestige.prestige.module.mace.AutoMace#d() shouldStunSlam +M dev.zprestige.prestige.module.mace.AutoMace#d_int_____() findAxeSlot +M dev.zprestige.prestige.module.mace.AutoMace#e() hasFallenEnoughToStun +M dev.zprestige.prestige.module.mace.AutoMace#e_int___() findBestMaceSlot +M dev.zprestige.prestige.module.mace.AutoMace#f() swapElytraForChestplate +M dev.zprestige.prestige.module.mace.AutoMace#j() clearPendingStunSlam +M dev.zprestige.prestige.module.mace.AutoMace#k() savePreviousSlot +M dev.zprestige.prestige.module.mace.AutoMace#l() swapBackToSavedSlot +M dev.zprestige.prestige.module.mace.AutoMace#m() clearSavedSlot +M dev.zprestige.prestige.module.mace.AutoPearlCatch#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.mace.AutoPearlCatch#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.mace.AutoPearlCatch#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.mace.AutoPearlCatch#a_boolean____________________________(int) throwFromSlot +M dev.zprestige.prestige.module.mace.AutoPearlCatch#b_RenderBatch_______(dev.zprestige.prestige.render.Rotation) lockRotation +M dev.zprestige.prestige.module.mace.AutoPearlCatch#d() hasPearlTimedOut +M dev.zprestige.prestige.module.mace.AutoPearlCatch#d_int______() findPearlSlot +M dev.zprestige.prestige.module.mace.AutoPearlCatch#e() isUseKeyActive +M dev.zprestige.prestige.module.mace.AutoPearlCatch#e_int____() findWindChargeSlot +M dev.zprestige.prestige.module.mace.AutoPearlCatch#f(net.minecraft.item.ItemStack) isWindCharge +M dev.zprestige.prestige.module.mace.AutoPearlCatch#j() pauseForItemUse +M dev.zprestige.prestige.module.mace.AutoPearlCatch#k() releaseRotationLock +M dev.zprestige.prestige.module.mace.AutoPearlCatch#l() resetState +M dev.zprestige.prestige.module.mace.AutoReMace#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.mace.AutoReMace#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.mace.BreachSwap#a() findBestBreachMaceSlot +M dev.zprestige.prestige.module.mace.BreachSwap#a(dev.zprestige.prestige.event.AutoAttackEvent) onAutoAttack +M dev.zprestige.prestige.module.mace.BreachSwap#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.mace.BreachSwap#a(dev.zprestige.prestige.event.DoAttackEvent) onDoAttack +M dev.zprestige.prestige.module.mace.BreachSwap#c(int) getBreachLevel +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#a_RenderHelper3(java.util.List,java.util.List) findBestIntercept +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#a_boolean_____________________________(dev.zprestige.prestige.render.Rotation) solveIntercept +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#a_class_243______________(net.minecraft.util.math.Vec3d,double,net.minecraft.util.math.Vec3d,boolean) computeLaunchVelocity +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#a_int____________(java.util.function.Predicate) findHotbarSlot +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#b_List_____(net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d,boolean,int) simulatePlayerMotion +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#b_RenderBatch________() getInterceptRotation +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#b_RenderHelper3(dev.zprestige.prestige.math.MotionState,java.util.List,int,int,float,float) evaluateIntercept +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#b_class_243____(float,float) directionFromRotation +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#c() getWindChargeRotation +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#c_List(dev.zprestige.prestige.math.MotionState,float,float) simulatePearlPath +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#c_RenderHelper3(dev.zprestige.prestige.math.MotionState,java.util.List,int,float,float) evaluateRefinedIntercept +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#d() getViewRotation +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#d_List(dev.zprestige.prestige.math.MotionState,float,float,int) simulateWindChargePath +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#d_boolean____(int,dev.zprestige.prestige.render.Rotation) throwFromSlot +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#e(dev.zprestige.prestige.render.Rotation) lockRotation +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#j() resetState +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#k(int,int) runMacroMode +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#l(int,int) runTrajectoryMode +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#m(int) throwWindCharge +M dev.zprestige.prestige.module.mace.DiagonalPearlCatch#n() releaseRotationLock +M dev.zprestige.prestige.module.mace.ElytraWindCharge#a(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.mace.ElytraWindCharge#d() findWindChargeSlot +M dev.zprestige.prestige.module.mace.FastPearlCatch#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.mace.FastPearlCatch#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.mace.FastPearlCatch#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.mace.FastPearlCatch#a_boolean______________________________(int,net.minecraft.util.Hand) throwFromSlot +M dev.zprestige.prestige.module.mace.FastPearlCatch#a_class_1684__() findThrownPearl +M dev.zprestige.prestige.module.mace.FastPearlCatch#b_RenderBatch_________() runOffhandMode +M dev.zprestige.prestige.module.mace.FastPearlCatch#c(dev.zprestige.prestige.render.Rotation) lockRotation +M dev.zprestige.prestige.module.mace.FastPearlCatch#d() hasPearlTimedOut +M dev.zprestige.prestige.module.mace.FastPearlCatch#d_int_______() findPearlSlot +M dev.zprestige.prestige.module.mace.FastPearlCatch#e() isUseKeyActive +M dev.zprestige.prestige.module.mace.FastPearlCatch#e_int_____() findWindChargeSlot +M dev.zprestige.prestige.module.mace.FastPearlCatch#f(net.minecraft.item.ItemStack) isWindCharge +M dev.zprestige.prestige.module.mace.FastPearlCatch#j() syncSelectedSlot +M dev.zprestige.prestige.module.mace.FastPearlCatch#k() pauseForItemUse +M dev.zprestige.prestige.module.mace.FastPearlCatch#l() releaseRotationLock +M dev.zprestige.prestige.module.mace.FastPearlCatch#m() resetState +M dev.zprestige.prestige.module.mace.KeyWindCharge#a() findWindChargeSlot +M dev.zprestige.prestige.module.mace.KeyWindCharge#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.mace.KeyWindCharge#a_boolean_______________________________(net.minecraft.item.ItemStack) isWindCharge +M dev.zprestige.prestige.module.mace.KeyWindCharge#j() restartDelay +M dev.zprestige.prestige.module.mace.MacePot#b_RenderBatch__________(int) throwPotion +M dev.zprestige.prestige.module.mace.MacePot#j(int) swapPotionIntoHotbar +M dev.zprestige.prestige.module.mace.MacePrediction#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.mace.MacePrediction#a(net.minecraft.entity.Entity,dev.zprestige.prestige.event.Render3DEvent) traceAirPath +M dev.zprestige.prestige.module.mace.MacePrediction#j(net.minecraft.entity.player.PlayerEntity,dev.zprestige.prestige.event.Render3DEvent) drawGroundPrediction +M dev.zprestige.prestige.module.mace.MacePrediction#k(net.minecraft.entity.player.PlayerEntity,net.minecraft.util.math.Vec3d,net.minecraft.util.math.Vec3d,dev.zprestige.prestige.event.Render3DEvent) traceGroundPath +M dev.zprestige.prestige.module.mace.MacePrediction#l(net.minecraft.util.math.Vec3d,java.awt.Color,dev.zprestige.prestige.event.Render3DEvent) drawMarker +M dev.zprestige.prestige.module.mace.PearlWindCharge#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.mace.PearlWindCharge#a_boolean________________________________(net.minecraft.item.ItemStack) isWindCharge +M dev.zprestige.prestige.module.mace.PearlWindCharge#d() findWindChargeSlot +M dev.zprestige.prestige.module.mace.ShieldDrain#a() findShieldTarget +M dev.zprestige.prestige.module.mace.ShieldDrain#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.mace.ShieldDrain#b_class_1657(float) findClosestShielder +M dev.zprestige.prestige.module.mace.ShieldDrain#d() isDraining +M dev.zprestige.prestige.module.mace.ShieldDrain#j() restorePreviousSlot +M dev.zprestige.prestige.module.mace.ShortWindCharge#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.mace.ShortWindCharge#a_boolean_________________________________(net.minecraft.item.ItemStack) isWindCharge +M dev.zprestige.prestige.module.mace.ShortWindCharge#d() findWindChargeSlot +M dev.zprestige.prestige.module.mace.ShortWindCharge#j() advanceStage +M dev.zprestige.prestige.module.mace.WindChargeAura#a_class_1297___() findClosestWindCharge +M dev.zprestige.prestige.module.mace.WindChargeAura#a_double________(net.minecraft.entity.Entity) getEyeDistanceToHitbox +M dev.zprestige.prestige.module.misc.AntiTrap#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.AntiTrap#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.misc.AntiTrap#a_v132(net.minecraft.entity.Entity) isTrapEntity +M dev.zprestige.prestige.module.misc.AntiTrap#d(net.minecraft.entity.EntityType) isTrapEntityType +M dev.zprestige.prestige.module.misc.AntiTrap#e(net.minecraft.entity.EntityType) isMinecartType +M dev.zprestige.prestige.module.misc.AntiTrap#f(net.minecraft.entity.EntityType) isBoatType +M dev.zprestige.prestige.module.misc.AutoArmor#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.AutoArmor#a_class_1304(net.minecraft.item.Item) getArmorEquipmentSlot +M dev.zprestige.prestige.module.misc.AutoArmor#a_int_____________(net.minecraft.entity.EquipmentSlot) getArmorSlotId +M dev.zprestige.prestige.module.misc.AutoArmor#a_v46(net.minecraft.entity.EquipmentSlot) tryEquipBetterArmor +M dev.zprestige.prestige.module.misc.AutoArmor#c(net.minecraft.item.ItemStack) getArmorScore +M dev.zprestige.prestige.module.misc.AutoArmor#d() isSwapAllowed +M dev.zprestige.prestige.module.misc.AutoArmor#d_int________(net.minecraft.item.Item) getMaterialScore +M dev.zprestige.prestige.module.misc.AutoArmor#e(net.minecraft.item.ItemStack,net.minecraft.registry.RegistryKey) hasEnchantment +M dev.zprestige.prestige.module.misc.AutoArmor#e_int______(net.minecraft.item.ItemStack,net.minecraft.registry.RegistryKey) getEnchantmentLevel +M dev.zprestige.prestige.module.misc.AutoClicker#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.misc.AutoClicker#b_float____________() sampleReactionDelay +M dev.zprestige.prestige.module.misc.AutoClicker#c(float,float) sampleGaussian +M dev.zprestige.prestige.module.misc.AutoClicker#d() isGhostMode +M dev.zprestige.prestige.module.misc.AutoClicker#d_float__(float,float,float) clamp +M dev.zprestige.prestige.module.misc.AutoClicker#j() updateMeanReactionDelay +M dev.zprestige.prestige.module.misc.AutoLoot#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.misc.AutoPickaxe#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.misc.AutoPickaxe#a(int,int) findPickaxeSlot +M dev.zprestige.prestige.module.misc.AutoPickaxe#d() trySwapBack +M dev.zprestige.prestige.module.misc.AutoPickaxe#j() resetDelay +M dev.zprestige.prestige.module.misc.AutoPot#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.AutoTool#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.misc.AutoTool#a_v128(net.minecraft.util.math.BlockPos) findBestToolSlot +M dev.zprestige.prestige.module.misc.CartRefill#a() findTntMinecartSlot +M dev.zprestige.prestige.module.misc.CartRefill#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.CartRefill#d() isRefillAllowed +M dev.zprestige.prestige.module.misc.CartStealer#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.misc.CartStealer#a_v99(net.minecraft.screen.ShulkerBoxScreenHandler) countEmptyPlayerSlots +M dev.zprestige.prestige.module.misc.ChestStealer#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.misc.ChestStealer#a_v115(net.minecraft.screen.GenericContainerScreenHandler) isContainerEmpty +M dev.zprestige.prestige.module.misc.Criticals#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttack +M dev.zprestige.prestige.module.misc.Criticals#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.Criticals#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.misc.Criticals#a(dev.zprestige.prestige.event.SwingHandEvent) onSwingHand +M dev.zprestige.prestige.module.misc.Criticals#d() canCrit +M dev.zprestige.prestige.module.misc.Criticals#j(float) sendOffsetPosition +M dev.zprestige.prestige.module.misc.CrystalOptimizer#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttack +M dev.zprestige.prestige.module.misc.EnemyFaker#a() findClosestEnemy +M dev.zprestige.prestige.module.misc.EnemyFaker#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.EnemyFaker#a(dev.zprestige.prestige.event.LabelTextEvent) onLabelText +M dev.zprestige.prestige.module.misc.EnemyFaker#a(dev.zprestige.prestige.event.SkinTexturesEvent) onSkinTextures +M dev.zprestige.prestige.module.misc.EnemyFaker#a(dev.zprestige.prestige.event.TextReplaceEvent) onTextReplace +M dev.zprestige.prestige.module.misc.EnemyFaker#a_class_3545() getGamemodeIcon +M dev.zprestige.prestige.module.misc.EnemyFaker#a_int______________(java.lang.String) getTierColor +M dev.zprestige.prestige.module.misc.FastEXP#a(dev.zprestige.prestige.event.DoItemUseEvent) onItemUse +M dev.zprestige.prestige.module.misc.FastEXP#a_boolean__________________________________(net.minecraft.item.ItemStack) needsMending +M dev.zprestige.prestige.module.misc.FastEXP#b_RenderBatch___________() runManualMode +M dev.zprestige.prestige.module.misc.FastEXP#c() runAutomaticMode +M dev.zprestige.prestige.module.misc.FastEXP#d() switchToExpBottles +M dev.zprestige.prestige.module.misc.FastEXP#d_int_________() findHotbarExpSlot +M dev.zprestige.prestige.module.misc.FastEXP#e() findInventoryExpSlot +M dev.zprestige.prestige.module.misc.FastEXP#e_boolean__() hasDamagedMendingGear +M dev.zprestige.prestige.module.misc.FastEXP#f() isHoldingExpBottle +M dev.zprestige.prestige.module.misc.FastEXP#j() restorePreviousSlot +M dev.zprestige.prestige.module.misc.FastPlace#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.Friends#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttack +M dev.zprestige.prestige.module.misc.Friends#a(dev.zprestige.prestige.event.ResetAttackCooldownEvent) onResetAttackCooldown +M dev.zprestige.prestige.module.misc.Friends#a(dev.zprestige.prestige.event.SwingHandEvent) onSwingHand +M dev.zprestige.prestige.module.misc.Friends#a(dev.zprestige.prestige.event.TextReplaceEvent) onTextReplace +M dev.zprestige.prestige.module.misc.KeyPearl#a() findPearlSlot +M dev.zprestige.prestige.module.misc.KeyPearl#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.KeyPearl#j() resetDelay +M dev.zprestige.prestige.module.misc.MiddleClickFriend#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.NameHider#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.misc.NameHider#a(dev.zprestige.prestige.event.TextReplaceEvent) onTextReplace +M dev.zprestige.prestige.module.misc.NameHider#d() generateName +M dev.zprestige.prestige.module.misc.PotionRefill#a() findEmptyHotbarSlot +M dev.zprestige.prestige.module.misc.PotionRefill#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.misc.Reach#a(dev.zprestige.prestige.event.ReachEvent) onReach +M dev.zprestige.prestige.module.misc.Refill#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.Refill#a_v113(net.minecraft.item.ItemStack) findMatchingStackSlot +M dev.zprestige.prestige.module.misc.Refill#d() isRefillAllowed +M dev.zprestige.prestige.module.misc.RightClicker#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.misc.RightClicker#j() rollClickDelay +M dev.zprestige.prestige.module.misc.StreamerMode#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.StreamerMode#a(dev.zprestige.prestige.event.LabelTextEvent) onLabelText +M dev.zprestige.prestige.module.misc.StreamerMode#a(dev.zprestige.prestige.event.TextReplaceEvent) onTextReplace +M dev.zprestige.prestige.module.misc.StreamerMode#a_v72(java.lang.String) isExcluded +M dev.zprestige.prestige.module.misc.StreamerMode#b_String___(java.lang.String) getOrCreateAlias +M dev.zprestige.prestige.module.misc.StreamerMode#d() generateAlias +M dev.zprestige.prestige.module.misc.Teams#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.misc.Teams#a_v1(java.lang.String) isTeammate +M dev.zprestige.prestige.module.misc.Teams#d(net.minecraft.entity.player.PlayerEntity) sharesTeamColor +M dev.zprestige.prestige.module.movement.AutoJumpReset#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.movement.AutoShortPearl#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.movement.FakeLag#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.movement.FakeLag#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.movement.FakeLag#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.movement.FakeLag#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.movement.FakeLag#j() flushPackets +M dev.zprestige.prestige.module.movement.FastBridge#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.movement.Freecam#a(dev.zprestige.prestige.event.CameraPositionEvent) onCameraPosition +M dev.zprestige.prestige.module.movement.Freecam#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.movement.Freecam#a(dev.zprestige.prestige.event.PacketSendEvent) onPacketSend +M dev.zprestige.prestige.module.movement.Freecam#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.movement.Freecam#a(dev.zprestige.prestige.event.SendMovementPacketsEvent) onSendMovementPackets +M dev.zprestige.prestige.module.movement.NoJumpDelay#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.movement.Parkour#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.movement.ShortPearl#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.movement.ShortPearl#j() advanceStage +M dev.zprestige.prestige.module.movement.Sprint#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.movement.Velocity#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.movement.Velocity#a(dev.zprestige.prestige.event.GameJoinEvent) onGameJoin +M dev.zprestige.prestige.module.movement.Velocity#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.movement.Velocity#a(dev.zprestige.prestige.event.VelocityUpdateEvent) onVelocityUpdate +M dev.zprestige.prestige.module.movement.WTap#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.movement.WTap#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.movement.WTap#d() isTapPending +M dev.zprestige.prestige.module.movement.WTap#e() isForwardReleased +M dev.zprestige.prestige.module.spear.ExtendedReach#a() findNonLungeSpearSlot +M dev.zprestige.prestige.module.spear.ExtendedReach#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.spear.ExtendedReach#a(dev.zprestige.prestige.event.DoAttackEvent) onDoAttack +M dev.zprestige.prestige.module.spear.ExtendedReach#a(dev.zprestige.prestige.event.ExtendedReachAttackEvent) onExtendedReachAttack +M dev.zprestige.prestige.module.spear.ExtendedReach#a_class_1297____() findExtendedReachTarget +M dev.zprestige.prestige.module.spear.ExtendedReach#c(net.minecraft.item.ItemStack,net.minecraft.registry.RegistryKey) getEnchantmentLevel +M dev.zprestige.prestige.module.spear.ExtendedReach#d() isHoldingSelectedWeapon +M dev.zprestige.prestige.module.spear.ExtendedReach#d_int__________(it.unimi.dsi.fastutil.objects.Object2IntMap,net.minecraft.registry.RegistryKey) findEnchantmentLevel +M dev.zprestige.prestige.module.spear.ExtendedReach#j() swapToSpear +M dev.zprestige.prestige.module.spear.ExtendedReach#k(net.minecraft.item.ItemStack,it.unimi.dsi.fastutil.objects.Object2IntMap) collectEnchantments +M dev.zprestige.prestige.module.spear.InstantLunge#a() findLungeSpearSlot +M dev.zprestige.prestige.module.spear.InstantLunge#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.spear.InstantLunge#c(net.minecraft.item.ItemStack,net.minecraft.registry.RegistryKey) getEnchantmentLevel +M dev.zprestige.prestige.module.spear.InstantLunge#d(it.unimi.dsi.fastutil.objects.Object2IntMap,net.minecraft.registry.RegistryKey) findEnchantmentLevel +M dev.zprestige.prestige.module.spear.InstantLunge#j(net.minecraft.item.ItemStack,it.unimi.dsi.fastutil.objects.Object2IntMap) collectEnchantments +M dev.zprestige.prestige.module.spear.SpearDamageIndicator#a(dev.zprestige.prestige.event.Render2DEvent) onRender2D +M dev.zprestige.prestige.module.spear.SpearMaceDoubleTap#a() findBestMaceSlot +M dev.zprestige.prestige.module.spear.SpearMaceDoubleTap#a(dev.zprestige.prestige.event.ClientTickEvent) onTick +M dev.zprestige.prestige.module.spear.SpearMaceDoubleTap#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.spear.SpearMaceDoubleTap#c(int) getDensityLevel +M dev.zprestige.prestige.module.spear.SpearMaceDoubleTap#d(int) getBreachLevel +M dev.zprestige.prestige.module.visual.Ambience#a(dev.zprestige.prestige.event.FogEvent) onFog +M dev.zprestige.prestige.module.visual.Ambience#a(dev.zprestige.prestige.event.SkyColorEvent) onSkyColor +M dev.zprestige.prestige.module.visual.Ambience#a(dev.zprestige.prestige.event.TimeOfDayEvent) onTimeOfDay +M dev.zprestige.prestige.module.visual.Animations#a(dev.zprestige.prestige.event.HandSwingDurationEvent) onHandSwingDuration +M dev.zprestige.prestige.module.visual.Animations#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.visual.Animations#a(dev.zprestige.prestige.event.SwingArmEvent) onSwingArm +M dev.zprestige.prestige.module.visual.Animations#j(net.minecraft.client.util.math.MatrixStack,net.minecraft.util.Arm,float) applyEquipOffset +M dev.zprestige.prestige.module.visual.AntiResourcePack#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.visual.ESP#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.visual.ESP#a_v13(java.lang.String) toShaderMode +M dev.zprestige.prestige.module.visual.ESP#k() updateTargetTypes +M dev.zprestige.prestige.module.visual.FreeLook#a(dev.zprestige.prestige.event.CameraRotationEvent) onCameraRotation +M dev.zprestige.prestige.module.visual.FreeLook#a(dev.zprestige.prestige.event.MouseUpdateEvent) onMouseUpdate +M dev.zprestige.prestige.module.visual.HealthIndicators#a(dev.zprestige.prestige.event.HealthIndicatorEvent) onHealthIndicator +M dev.zprestige.prestige.module.visual.HealthIndicators#a_v126(float) getHealthColor +M dev.zprestige.prestige.module.visual.HealthIndicators#b_float_____________(net.minecraft.entity.player.PlayerEntity) getTotalHealth +M dev.zprestige.prestige.module.visual.HitEffect#a(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.visual.HitEffect#a(dev.zprestige.prestige.event.PacketReceiveEvent) onPacketReceive +M dev.zprestige.prestige.module.visual.HitEffect#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.visual.HitEffect#a_v116(float,float,java.awt.Color,java.awt.Color) getWaveColor +M dev.zprestige.prestige.module.visual.HitEffect#b_Color__(java.awt.Color,java.awt.Color,double) blendColors +M dev.zprestige.prestige.module.visual.HitEffect#j(dev.zprestige.prestige.event.Render3DEvent,java.util.ArrayList,java.awt.Color,java.awt.Color) renderParticles +M dev.zprestige.prestige.module.visual.HitEffect#k(dev.zprestige.prestige.event.Render3DEvent,dev.zprestige.prestige.math.HitParticle,java.awt.Color,float) renderParticle +M dev.zprestige.prestige.module.visual.HudEditor#b_float______________() getHudScalePercent +M dev.zprestige.prestige.module.visual.ItemESP#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.visual.ItemESP#a(dev.zprestige.prestige.event.FrustumSetupEvent) onFrustumSetup +M dev.zprestige.prestige.module.visual.ItemESP#a(dev.zprestige.prestige.event.Render2DEvent) onRender2D +M dev.zprestige.prestige.module.visual.ItemESP#d() canRenderOverlay +M dev.zprestige.prestige.module.visual.JumpCircles#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.visual.JumpCircles#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.visual.JumpCircles#a_Color____(java.awt.Color,float) scaleAlpha +M dev.zprestige.prestige.module.visual.JumpCircles#a_v15(net.minecraft.entity.player.PlayerEntity) getTrackedPos +M dev.zprestige.prestige.module.visual.JumpCircles#b_float_______________(float) easeOutQuad +M dev.zprestige.prestige.module.visual.NameTags#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.visual.NameTags#a(dev.zprestige.prestige.event.FrustumSetupEvent) onFrustumSetup +M dev.zprestige.prestige.module.visual.NameTags#a(dev.zprestige.prestige.event.LabelTextEvent) onLabelText +M dev.zprestige.prestige.module.visual.NameTags#a(dev.zprestige.prestige.event.Render2DEvent) onRender2D +M dev.zprestige.prestige.module.visual.NameTags#a(dev.zprestige.prestige.event.RenderLabelEvent) onRenderLabel +M dev.zprestige.prestige.module.visual.NameTags#a(java.awt.Color,float) scaleAlpha +M dev.zprestige.prestige.module.visual.NameTags#b_List______(net.minecraft.item.ItemStack) getEnchantLabels +M dev.zprestige.prestige.module.visual.NoBounce#a(dev.zprestige.prestige.event.ItemBobbingEvent) onItemBobbing +M dev.zprestige.prestige.module.visual.OreSimulation#a(dev.zprestige.prestige.event.BlockStateUpdateEvent) onBlockStateUpdate +M dev.zprestige.prestige.module.visual.OreSimulation#a(dev.zprestige.prestige.event.ChunkDataEvent) onChunkData +M dev.zprestige.prestige.module.visual.OreSimulation#a(dev.zprestige.prestige.event.FrustumSetupEvent) onFrustumSetup +M dev.zprestige.prestige.module.visual.OreSimulation#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.visual.OreSimulation#a_ArrayList(net.minecraft.client.world.ClientWorld,net.minecraft.util.math.random.ChunkRandom,net.minecraft.util.math.BlockPos,dev.zprestige.prestige.world.OreDefinition) generateVein +M dev.zprestige.prestige.module.visual.OreSimulation#a_boolean___________________________________(net.minecraft.client.world.ClientWorld,net.minecraft.util.math.BlockPos,dev.zprestige.prestige.world.OreDefinition,net.minecraft.util.math.random.ChunkRandom) shouldPlaceOre +M dev.zprestige.prestige.module.visual.OreSimulation#a_int_______________(net.minecraft.util.math.random.ChunkRandom,int) getSpread +M dev.zprestige.prestige.module.visual.OreSimulation#a_v117(boolean) getLoadedChunks +M dev.zprestige.prestige.module.visual.OreSimulation#b_ArrayList(net.minecraft.client.world.ClientWorld,net.minecraft.util.math.random.ChunkRandom,int,double,double,double,double,double,double,int,int,int,int,int,dev.zprestige.prestige.world.OreDefinition) generateVeinPart +M dev.zprestige.prestige.module.visual.OreSimulation#b_List_______(net.minecraft.registry.RegistryKey) getOresForBiome +M dev.zprestige.prestige.module.visual.OreSimulation#c(net.minecraft.client.world.ClientWorld,net.minecraft.util.math.random.ChunkRandom,net.minecraft.util.math.BlockPos,dev.zprestige.prestige.world.OreDefinition) generateScatteredOre +M dev.zprestige.prestige.module.visual.OreSimulation#d() ensureWorldReady +M dev.zprestige.prestige.module.visual.OreSimulation#e(net.minecraft.util.math.random.ChunkRandom,float) shouldNotDiscard +M dev.zprestige.prestige.module.visual.OreSimulation#f(net.minecraft.client.world.ClientWorld,net.minecraft.util.math.BlockPos) isExposedToAir +M dev.zprestige.prestige.module.visual.OreSimulation#j(dev.zprestige.prestige.event.Render3DEvent,int,int) renderChunk +M dev.zprestige.prestige.module.visual.OreSimulation#k() simulateLoadedChunks +M dev.zprestige.prestige.module.visual.OreSimulation#l() loadSeed +M dev.zprestige.prestige.module.visual.OreSimulation#m(net.minecraft.world.chunk.Chunk) simulateChunk +M dev.zprestige.prestige.module.visual.PearlTrajectory#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.visual.PearlTrajectory#a(dev.zprestige.prestige.event.Render2DEvent) onRender2D +M dev.zprestige.prestige.module.visual.PearlTrajectory#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.visual.PearlTrajectory#a(java.awt.Color,float) scaleAlpha +M dev.zprestige.prestige.module.visual.PearlTrajectory#a_ArrayList_(net.minecraft.entity.projectile.thrown.EnderPearlEntity) simulatePearlPath +M dev.zprestige.prestige.module.visual.PearlTrajectory#d() canRenderOverlay +M dev.zprestige.prestige.module.visual.RenderOptimizer#a(dev.zprestige.prestige.event.AddParticleEvent) onAddParticle +M dev.zprestige.prestige.module.visual.RenderOptimizer#a(dev.zprestige.prestige.event.FireOverlayEvent) onFireOverlay +M dev.zprestige.prestige.module.visual.RenderOptimizer#a(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.visual.RenderOptimizer#a(dev.zprestige.prestige.event.FullBrightEvent) onFullBright +M dev.zprestige.prestige.module.visual.RenderOptimizer#a(dev.zprestige.prestige.event.HurtCamEvent) onHurtCam +M dev.zprestige.prestige.module.visual.RenderOptimizer#a(dev.zprestige.prestige.event.LoadingScreenEvent) onLoadingScreen +M dev.zprestige.prestige.module.visual.RenderOptimizer#a(dev.zprestige.prestige.event.OverlayMessageEvent) onOverlayMessage +M dev.zprestige.prestige.module.visual.RenderOptimizer#a(dev.zprestige.prestige.event.RainGradientEvent) onRainGradient +M dev.zprestige.prestige.module.visual.RenderOptimizer#a(dev.zprestige.prestige.event.RenderScoreboardEvent) onRenderScoreboard +M dev.zprestige.prestige.module.visual.RenderOptimizer#a(dev.zprestige.prestige.event.ScreenBackgroundEvent) onScreenBackground +M dev.zprestige.prestige.module.visual.ShieldRenderer#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.visual.ShieldRenderer#a(dev.zprestige.prestige.event.ShieldBreakEvent) onShieldBreak +M dev.zprestige.prestige.module.visual.ShieldRenderer#a(dev.zprestige.prestige.event.ShieldRenderSettingsEvent) onShieldRenderSettings +M dev.zprestige.prestige.module.visual.StorageESP#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.visual.StorageESP#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.visual.StorageESP#a_StorageESPHelper() getOutlineRenderer +M dev.zprestige.prestige.module.visual.StorageESP#a_v109(net.minecraft.block.entity.BlockEntity) getStorageColor +M dev.zprestige.prestige.module.visual.StorageESP#d() canRenderOverlay +M dev.zprestige.prestige.module.visual.TargetRenderer#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.visual.TargetRenderer#a_v95(int,int,float) interpolateColor +M dev.zprestige.prestige.module.visual.TargetRenderer#b_float________________(float) smootherStep +M dev.zprestige.prestige.module.visual.TargetRenderer#c(float) clamp01 +M dev.zprestige.prestige.module.visual.TargetRenderer#d_v94(float,float,float) inverseLerp +M dev.zprestige.prestige.module.visual.TargetRenderer#e_v93(float,float,float) lerp +M dev.zprestige.prestige.module.visual.TargetRenderer#j(dev.zprestige.prestige.event.Render3DEvent) renderGhost +M dev.zprestige.prestige.module.visual.TargetRenderer#k(dev.zprestige.prestige.event.Render3DEvent) renderSquare +M dev.zprestige.prestige.module.visual.TotemAnimation#a(dev.zprestige.prestige.event.FloatingItemTickEvent) onFloatingItemTick +M dev.zprestige.prestige.module.visual.Trails#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.visual.Trails#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.visual.Trails#a(java.awt.Color,float) scaleAlpha +M dev.zprestige.prestige.module.visual.Trails#a_int________________(int) clampColorComponent +M dev.zprestige.prestige.module.visual.Trails#b_Color___(java.awt.Color,float) lightenColor +M dev.zprestige.prestige.module.visual.Trails#b_float_________________(float) smootherStep +M dev.zprestige.prestige.module.visual.Trails#c(float) easeOutQuad +M dev.zprestige.prestige.module.visual.Trails#c_Color_(java.awt.Color,java.awt.Color,float) blendColors +M dev.zprestige.prestige.module.visual.Trails#j(dev.zprestige.prestige.event.Render3DEvent,dev.zprestige.prestige.math.TrailMark,java.awt.Color,java.awt.Color,float,float) renderFootstep +M dev.zprestige.prestige.module.visual.Trails#k(dev.zprestige.prestige.event.Render3DEvent,dev.zprestige.prestige.math.TrailMark,java.awt.Color,java.awt.Color,float,float,float) renderRing +M dev.zprestige.prestige.module.visual.Trails#l(dev.zprestige.prestige.event.Render3DEvent,dev.zprestige.prestige.math.TrailMark,java.awt.Color,float,float,float) renderParticle +M dev.zprestige.prestige.module.visual.Trails#m(dev.zprestige.prestige.event.Render3DEvent,net.minecraft.util.math.Vec3d,float,java.awt.Color) drawGlowBillboard +M dev.zprestige.prestige.module.visual.Trails#n() loadGlowTexture +M dev.zprestige.prestige.module.visual.Trajectories#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.visual.Trajectories#a(net.minecraft.item.ItemStack,java.lang.String) shouldPredict +M dev.zprestige.prestige.module.visual.Trajectories#a_ArrayList__(java.util.ArrayList,int,int,int) sliceSegment +M dev.zprestige.prestige.module.visual.Trajectories#a_BoolData3() simulatePearlPath +M dev.zprestige.prestige.module.visual.Trajectories#a_Color_____(java.awt.Color,int) withFade +M dev.zprestige.prestige.module.visual.Trajectories#b_BoolData3(float,net.minecraft.item.ItemStack,net.minecraft.item.ItemStack) simulateArrowPath +M dev.zprestige.prestige.module.visual.Trajectories#b_float__________________(float,float,float,float) smoothTowards +M dev.zprestige.prestige.module.visual.Trajectories#c(float,float) angleDifference +M dev.zprestige.prestige.module.visual.Trajectories#j(net.minecraft.item.ItemStack,java.lang.String) rebuildPaths +M dev.zprestige.prestige.module.visual.Trajectories#k(dev.zprestige.prestige.event.Render3DEvent,dev.zprestige.prestige.data.TrajectoryPath) renderPath +M dev.zprestige.prestige.module.visual.Trajectories#l(dev.zprestige.prestige.event.Render3DEvent,java.util.ArrayList,java.awt.Color,long) drawBeam +M dev.zprestige.prestige.module.visual.Trajectories#m(dev.zprestige.prestige.event.Render3DEvent,net.minecraft.util.math.Vec3d,java.awt.Color,boolean,long) drawImpactMarker +M dev.zprestige.prestige.module.visual.TwoDESP#a(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.visual.TwoDESP#a(dev.zprestige.prestige.event.FrustumSetupEvent) onFrustumSetup +M dev.zprestige.prestige.module.visual.TwoDESP#a(dev.zprestige.prestige.event.Render2DEvent) onRender2D +M dev.zprestige.prestige.module.visual.TwoDESP#a_Color______(java.awt.Color,float) scaleAlpha +M dev.zprestige.prestige.module.visual.TwoDESP#a_int_________________(float) toAlphaByte +M dev.zprestige.prestige.module.visual.TwoDESP#a_v10(net.minecraft.util.math.Vec3d,float,float) projectBoundingBox +M dev.zprestige.prestige.module.visual.TwoDESP#b_Color____(java.awt.Color,java.awt.Color,float) lerpColor +M dev.zprestige.prestige.module.visual.TwoDESP#b_float___________________(float,float,float) lerp +M dev.zprestige.prestige.module.visual.TwoDESP#c(java.awt.Color,java.awt.Color) averageColor +M dev.zprestige.prestige.module.visual.TwoDESP#c_float__(float) clamp01 +M dev.zprestige.prestige.module.visual.TwoDESP#c_int__(int) clampByte +M dev.zprestige.prestige.module.visual.TwoDESP#d_v9(float,float,float) clamp +M dev.zprestige.prestige.module.visual.TwoDESP#j(dev.zprestige.prestige.render.BufferSource,dev.zprestige.prestige.data.CameraMatrices,org.joml.Matrix4f,dev.zprestige.prestige.render.MsdfFont,dev.zprestige.prestige.combat.TwoDEspTarget,dev.zprestige.prestige.math.TwoDEspBox,java.awt.Color,java.awt.Color,float,long) renderTarget +M dev.zprestige.prestige.module.visual.TwoDESP#k(org.joml.Matrix4f,float,float,float,float,java.awt.Color,java.awt.Color,float,float) drawBox +M dev.zprestige.prestige.module.visual.TwoDESP#l(org.joml.Matrix4f,float,float,float,float,java.awt.Color,java.awt.Color,float) drawCorners +M dev.zprestige.prestige.module.visual.TwoDESP#m(org.joml.Matrix4f,float,float,float,float,java.awt.Color,java.awt.Color,float) drawBrackets +M dev.zprestige.prestige.module.visual.TwoDESP#n(org.joml.Matrix4f,float,float,float,float,java.awt.Color,java.awt.Color) drawShadowedRect +M dev.zprestige.prestige.module.visual.TwoDESP#o(org.joml.Matrix4f,float,float,float,float,java.awt.Color,float,float) drawGlow +M dev.zprestige.prestige.module.visual.TwoDESP#p(org.joml.Matrix4f,float,float,float,float,java.awt.Color,float,float) drawRoundedOutline +M dev.zprestige.prestige.module.visual.TwoDESP#q(org.joml.Matrix4f,dev.zprestige.prestige.render.MsdfFont,float,float,float,float,float,float,float,long) drawHealthBar +M dev.zprestige.prestige.module.visual.TwoDESP#r(dev.zprestige.prestige.render.BufferSource,dev.zprestige.prestige.data.CameraMatrices,org.joml.Matrix4f,dev.zprestige.prestige.render.MsdfFont,float,float,float,java.lang.String,float) drawNameTag +M dev.zprestige.prestige.module.visual.TwoDESP#s(dev.zprestige.prestige.render.BufferSource,dev.zprestige.prestige.data.CameraMatrices,org.joml.Matrix4f,dev.zprestige.prestige.render.MsdfFont,float,float,float,float,float) drawDistanceTag +M dev.zprestige.prestige.module.visual.TwoDESP#t(dev.zprestige.prestige.render.BufferSource,dev.zprestige.prestige.data.CameraMatrices,org.joml.Matrix4f,float,float,float,float,float) drawLabelBackground +M dev.zprestige.prestige.module.visual.Weather#a(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.visual.Weather#a_Color_______(java.awt.Color,java.awt.Color,float) blendColors +M dev.zprestige.prestige.module.visual.Weather#a_v98(java.lang.String,net.minecraft.util.math.Vec3d,int) createParticle +M dev.zprestige.prestige.module.visual.Weather#j(dev.zprestige.prestige.event.Render3DEvent,java.lang.String) renderParticles +M dev.zprestige.prestige.module.visual.XRay#a(dev.zprestige.prestige.event.BlockVisibilityEvent) onBlockVisibility +M dev.zprestige.prestige.module.visual.XRay#a(dev.zprestige.prestige.event.FullBrightEvent) onFullBright +M dev.zprestige.prestige.module.visual.XRay#a_v38(net.minecraft.block.Block) isXrayBlock +M dev.zprestige.prestige.module.visual.XRay#j() reloadChunks +M dev.zprestige.prestige.module.movement.FastBridge#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.render.SilentRotationManager#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.EnemyFaker#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.movement.Freecam#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.Teams#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.network.TotemPopManager#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.util.SimulatedClickManager#onBlockBreaking(dev.zprestige.prestige.event.HandleBlockBreakingEvent) onHandleBlockBreaking +M dev.zprestige.prestige.util.SimulatedClickManager#onItemUse(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.util.SimulatedClickManager#onAttack(dev.zprestige.prestige.event.DoAttackEvent) onDoAttack +M dev.zprestige.prestige.combat.TargetTracker#onAttack(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.combat.TargetTracker#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.AutoPot#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.AutoDrain#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.render.JumpKeyReleaser#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.util.NotificationManager#renderNotifications(dev.zprestige.prestige.event.FrameEvent) onFrame +M dev.zprestige.prestige.module.misc.Criticals#onAttack(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.misc.Criticals#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.FastPlace#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.AntiTrap#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.FastEXP#onItemUse(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.hud.ResourcesElement#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.spear.ExtendedReach#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.movement.Velocity#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.Friends#onAttack(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +M dev.zprestige.prestige.module.movement.AutoJumpReset#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.CartRefill#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.network.InventorySwapQueue#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.Refill#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.movement.Parkour#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.spear.SpearMaceDoubleTap#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.combat.BotFilter#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.network.SilentSlotManager#onItemUse(dev.zprestige.prestige.event.DoItemUseEvent) onDoItemUse +M dev.zprestige.prestige.module.spear.InstantLunge#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.combat.InstantShield#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.AutoArmor#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.KeyPearl#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.movement.Sprint#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.combat.VisualRotationManager#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.movement.NoJumpDelay#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.ModuleManager#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.math.AutoCrystalRenderer#onWorldRender(dev.zprestige.prestige.event.Render3DEvent) onRender3D +M dev.zprestige.prestige.module.combat.InstantCrossbow#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.StreamerMode#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.hud.CartHelperElement#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.MiddleClickFriend#onTick(dev.zprestige.prestige.event.ClientTickEvent) onClientTick +M dev.zprestige.prestige.module.misc.CrystalOptimizer#onAttack(dev.zprestige.prestige.event.AttackEntityEvent) onAttackEntity +C dev.zprestige.prestige.mixin.MinecraftClientMixin3 MinecraftClientMixin +F dev.zprestige.prestige.KeybindSetting#toggleMode holdMode +M dev.zprestige.prestige.KeybindSetting#isToggleMode() isHoldMode +M dev.zprestige.prestige.KeybindSetting#setToggleMode(boolean) setHoldMode diff --git a/injector/Cargo.lock b/injector/Cargo.lock new file mode 100644 index 0000000..8cb5a39 --- /dev/null +++ b/injector/Cargo.lock @@ -0,0 +1,11 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "prestige-injector" +version = "0.1.0" + +[[package]] +name = "prestige_native" +version = "0.1.0" diff --git a/injector/Cargo.toml b/injector/Cargo.toml new file mode 100644 index 0000000..34cabfd --- /dev/null +++ b/injector/Cargo.toml @@ -0,0 +1,10 @@ +[workspace] +resolver = "2" +members = ["crates/loader", "crates/injector"] + +[profile.release] +opt-level = "s" +lto = true +codegen-units = 1 +panic = "abort" +strip = true diff --git a/injector/README.md b/injector/README.md new file mode 100644 index 0000000..80f5829 --- /dev/null +++ b/injector/README.md @@ -0,0 +1,32 @@ +# Prestige injector (Rust) + +`PrestigeInjector.exe` loads `prestige_native.dll` into a running Minecraft **1.21.11 Fabric** JVM (64-bit, Fabric Loader 0.19.x, +Fabric API installed). It uses the same overall method as the openvape bundle, written from scratch in Rust with no external crates. + +## How it works + +1. **Injector** lists visible `java.exe`/`javaw.exe` windows (refreshed every 750 ms), then runs `LoadLibraryW` in the chosen + process through `CreateRemoteThread` and confirms the module is mapped. +2. **`prestige_native.dll`** (`DllMain` only spawns a worker thread): + - waits for `jvm.dll`, `JNI_GetCreatedJavaVMs`, attaches, acquires the JVMTI redefine/retransform capabilities; + - writes the embedded payload jar (the remapped `prestige-*.jar`) to `%TEMP%\PrestigeLoader`; + - `FabricLauncherBase.getLauncher().addToClassPath(jar)` so payload and game classes share the Knot class loader; + - registers `NativeBridge.classBytes` / `NativeBridge.redefine` and calls `Bootstrap.start()`. +3. **`Bootstrap`** (Java) waits for the client window, then for every ClassTransform hook target gets the current class bytes + (JVMTI retransform capture), runs the hooks through `InPlaceTransformer` and redefines the class. The bundled ClassTransform + inlines hook handlers into the target methods, so normally nothing is added to the class and a plain redefine works. If a + transformer ever does add methods (a running JVM cannot), they are moved into generated `dev.zprestige.prestige.hooks.H*` + helper classes, call sites become `invokestatic`, and private member access goes through `Access` MethodHandles. + Finally the Prestige and ClickGUI entrypoints run on the client thread. + +Log: `prestige-native.log` beside the DLL, plus `[Prestige-Inject]` lines in the game log. + +## Build + +```powershell +.\build-injector.ps1 # gradlew remapJar, cargo build --release, copies to dist\ +``` + +## Use + +Start a Fabric 1.21.11 instance, then run `dist\PrestigeInjector.exe` (or `PrestigeInjector.exe [dll]`). diff --git a/injector/crates/injector/Cargo.toml b/injector/crates/injector/Cargo.toml new file mode 100644 index 0000000..3987c70 --- /dev/null +++ b/injector/crates/injector/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "prestige-injector" +version = "0.1.0" +edition = "2021" + +[[bin]] +name = "PrestigeInjector" +path = "src/main.rs" diff --git a/injector/crates/injector/src/main.rs b/injector/crates/injector/src/main.rs new file mode 100644 index 0000000..2d8745a --- /dev/null +++ b/injector/crates/injector/src/main.rs @@ -0,0 +1,280 @@ +//! PrestigeInjector: lists the running Minecraft (javaw/java) processes and loads prestige_native.dll into the selected one +//! with the classic remote LoadLibraryW thread. The DLL does everything else once it is inside the JVM; the injector tails +//! the DLL's log so every stage (transforming, injecting, initialising) is visible. +//! +//! PrestigeInjector.exe interactive process picker (Up/Down, Enter, Esc) +//! PrestigeInjector.exe [dll path] non-interactive +mod win; + +use std::fs; +use std::io::{self, Read, Seek, SeekFrom, Write}; +use std::path::{Path, PathBuf}; +use std::process::ExitCode; +use std::time::{Duration, Instant}; + +const DLL_NAME: &str = "prestige_native.dll"; +const WATERMARK: &str = "Cracked by Skid Solutions"; +const INVITE_URL: &str = "https://discord.gg/M56rd2wwC5"; +/// How long to follow the DLL's progress after it has been loaded. +const FOLLOW_TIMEOUT: Duration = Duration::from_secs(180); + +const RESET: &str = "\x1b[0m"; +const DIM: &str = "\x1b[90m"; +const CYAN: &str = "\x1b[96m"; +const GREEN: &str = "\x1b[92m"; +const YELLOW: &str = "\x1b[93m"; +const RED: &str = "\x1b[91m"; + +fn default_dll() -> PathBuf { + std::env::current_exe() + .ok() + .and_then(|exe| exe.parent().map(|dir| dir.join(DLL_NAME))) + .unwrap_or_else(|| PathBuf::from(DLL_NAME)) +} + +fn banner() { + println!("{CYAN} ___ ___ ___ ___ _____ ___ ___ ___ "); + println!(" | _ \\ _ \\ __/ __|_ _|_ _/ __| __|"); + println!(" | _/ / _|\\__ \\ | | | | (_ | _| "); + println!(" |_| |_|_\\___|___/ |_| |___\\___|___|{RESET} injector"); + println!("{YELLOW} {WATERMARK}{RESET}\n"); +} + +fn step(label: &str, message: &str) { + println!("{DIM}[{:>7}]{RESET} {CYAN}{label:<12}{RESET} {message}", clock()); +} +fn ok(label: &str, message: &str) { + println!("{DIM}[{:>7}]{RESET} {GREEN}{label:<12}{RESET} {message}", clock()); +} +fn fail(label: &str, message: &str) { + println!("{DIM}[{:>7}]{RESET} {RED}{label:<12}{RESET} {message}", clock()); +} + +/// Seconds since the injector started, for the log prefix. +fn clock() -> String { + use std::sync::OnceLock; + static START: OnceLock = OnceLock::new(); + format!("{:.1}s", START.get_or_init(Instant::now).elapsed().as_secs_f32()) +} + +fn main() -> ExitCode { + win::enable_ansi(); + let _ = clock(); + let args: Vec = std::env::args().skip(1).collect(); + let interactive = args.is_empty(); + + let (pid, dll): (Option, PathBuf) = match args.as_slice() { + [] => { + banner(); + invite_prompt(); + (pick_process(), default_dll()) + } + [pid] => (parse_pid(pid), default_dll()), + [pid, dll] => (parse_pid(pid), PathBuf::from(dll)), + _ => { + eprintln!("usage: PrestigeInjector.exe [ [dll path]]"); + return ExitCode::from(2); + } + }; + let Some(pid) = pid else { + // interactive mode quit with Esc, or an unparsable pid was given + return if interactive { ExitCode::SUCCESS } else { ExitCode::from(2) }; + }; + if !interactive { + banner(); + } + + let code = run(pid, &dll); + if interactive { + print!("\nPress Enter to close..."); + let _ = io::stdout().flush(); + let mut line = String::new(); + let _ = io::stdin().read_line(&mut line); + } + code +} + +fn parse_pid(text: &str) -> Option { + text.parse().ok() +} + +fn run(pid: u32, dll: &Path) -> ExitCode { + println!(); + step("target", &format!("process {pid}")); + let dll = match dll.canonicalize() { + Ok(p) => p, + Err(e) => { + fail("error", &format!("cannot find {}: {e}", dll.display())); + return ExitCode::from(1); + } + }; + let dll_display = dll.display().to_string(); + step("loader", &dll_display.trim_start_matches(r"\\?\").to_string()); + + // The DLL appends to prestige-native.log beside itself; remember where it ends so only this run's lines are shown. + let log_path = dll.with_file_name("prestige-native.log"); + let log_start = fs::metadata(&log_path).map(|m| m.len()).unwrap_or(0); + + step("checking", "64-bit JVM, process access, DLL not already loaded"); + step("injecting", "remote thread LoadLibraryW"); + match win::inject(pid, &dll) { + Ok(()) => ok("injected", "prestige_native.dll is loaded in the game process"), + Err(e) => { + fail("failed", &e); + return ExitCode::from(1); + } + } + + step("transforming", "following the loader log (attach, class loader, hook transformer)..."); + match follow_log(&log_path, log_start) { + Outcome::Done => { + println!(); + ok("success", "successfully injected - Prestige is running in the game"); + println!("{YELLOW} {WATERMARK}{RESET} {DIM}{INVITE_URL}{RESET}"); + ExitCode::SUCCESS + } + Outcome::Failed(line) => { + fail("failed", &format!("injection did not complete: {line}")); + println!("{DIM} details: {} and the game's latest.log{RESET}", log_path.display()); + ExitCode::from(1) + } + Outcome::TimedOut => { + fail("timeout", "no completion message from the loader within 3 minutes"); + println!("{DIM} check {} and the game's latest.log{RESET}", log_path.display()); + ExitCode::from(1) + } + } +} + +enum Outcome { + Done, + Failed(String), + TimedOut, +} + +/// Prints the lines the loader/bootstrap append to the log until they report success or failure. +fn follow_log(path: &Path, start: u64) -> Outcome { + let deadline = Instant::now() + FOLLOW_TIMEOUT; + let mut offset = start; + let mut pending = String::new(); + while Instant::now() < deadline { + if let Ok(mut file) = fs::File::open(path) { + if file.seek(SeekFrom::Start(offset)).is_ok() { + let mut chunk = String::new(); + if let Ok(n) = file.read_to_string(&mut chunk) { + offset += n as u64; + pending.push_str(&chunk); + } + } + } + while let Some(end) = pending.find('\n') { + let line: String = pending.drain(..=end).collect(); + let line = line.trim_end(); + // lines look like "[unix seconds] message" + let message = line.split_once("] ").map(|(_, m)| m).unwrap_or(line); + let lower = message.to_ascii_lowercase(); + if lower.contains("failed") || lower.contains("not found") { + fail("loader", message); + return Outcome::Failed(message.to_string()); + } + if message.contains("client initialised") { + ok("loader", message); + return Outcome::Done; + } + step("loader", message); + } + std::thread::sleep(Duration::from_millis(200)); + } + Outcome::TimedOut +} + +fn config_path() -> Option { + std::env::var_os("APPDATA").map(|dir| PathBuf::from(dir).join("PrestigeInjector").join("settings.txt")) +} + +/// First launch: open the Discord invite, then ask whether to open it again on later launches. +fn invite_prompt() { + let Some(path) = config_path() else { return }; + let saved = fs::read_to_string(&path).ok(); + let show = match saved.as_deref() { + None => true, // first launch + Some(text) => !text.lines().any(|l| l.trim() == "show_invite=false"), + }; + if !show { + return; + } + let first = saved.is_none(); + step("discord", &format!("opening {INVITE_URL}")); + if !win::open_url(INVITE_URL) { + fail("discord", &format!("could not open a browser, visit {INVITE_URL} manually")); + } + let again = ask_yes_no(if first { + "Show the Discord invite again next time you start the injector? [Y/n] " + } else { + "Keep showing the Discord invite on launch? [Y/n] " + }); + if let Some(dir) = path.parent() { + let _ = fs::create_dir_all(dir); + } + let _ = fs::write(&path, format!("show_invite={again}\n")); + println!(); +} + +fn ask_yes_no(question: &str) -> bool { + print!("{question}"); + let _ = io::stdout().flush(); + let mut line = String::new(); + if io::stdin().read_line(&mut line).is_err() { + return true; + } + !matches!(line.trim().to_ascii_lowercase().as_str(), "n" | "no") +} + +/// Interactive list of Minecraft JVM windows, refreshed every 750 ms. Returns the chosen pid. +fn pick_process() -> Option { + let mut selected = 0usize; + let mut processes = win::java_windows(); + let mut last_refresh = Instant::now(); + loop { + if selected >= processes.len() { + selected = processes.len().saturating_sub(1); + } + draw(&processes, selected); + let deadline = Instant::now() + Duration::from_millis(50); + while Instant::now() < deadline { + if let Some(key) = win::poll_key() { + match key { + win::Key::Up => selected = selected.saturating_sub(1), + win::Key::Down => selected = (selected + 1).min(processes.len().saturating_sub(1)), + win::Key::Enter => { + if let Some(p) = processes.get(selected) { + return Some(p.pid); + } + } + win::Key::Escape => return None, + } + draw(&processes, selected); + } + std::thread::sleep(Duration::from_millis(10)); + } + if last_refresh.elapsed() >= Duration::from_millis(750) { + processes = win::java_windows(); + last_refresh = Instant::now(); + } + } +} + +fn draw(processes: &[win::JavaWindow], selected: usize) { + let mut out = String::from("\x1b[2J\x1b[H"); + out.push_str(&format!("{CYAN}Prestige injector{RESET} - Minecraft 1.21.11 (Fabric, 64-bit) {YELLOW}{WATERMARK}{RESET}\n")); + out.push_str("Up/Down select, Enter inject, Esc quit\n\n"); + if processes.is_empty() { + out.push_str(" waiting for a javaw.exe / java.exe window...\n"); + } + for (i, p) in processes.iter().enumerate() { + let marker = if i == selected { ">" } else { " " }; + out.push_str(&format!("{marker} [{:>6}] {} ({})\n", p.pid, p.title, p.exe)); + } + print!("{out}"); + let _ = io::stdout().flush(); +} diff --git a/injector/crates/injector/src/win.rs b/injector/crates/injector/src/win.rs new file mode 100644 index 0000000..e4330a9 --- /dev/null +++ b/injector/crates/injector/src/win.rs @@ -0,0 +1,278 @@ +//! Win32 plumbing of the injector (raw bindings, no external crates). +use std::ffi::c_void; +use std::os::windows::ffi::OsStrExt; +use std::path::Path; +use std::time::Duration; + +type Handle = *mut c_void; + +const PROCESS_CREATE_THREAD: u32 = 0x0002; +const PROCESS_VM_OPERATION: u32 = 0x0008; +const PROCESS_VM_WRITE: u32 = 0x0020; +const PROCESS_VM_READ: u32 = 0x0010; +const PROCESS_QUERY_INFORMATION: u32 = 0x0400; +const PROCESS_QUERY_LIMITED_INFORMATION: u32 = 0x1000; +const MEM_COMMIT: u32 = 0x1000; +const MEM_RESERVE: u32 = 0x2000; +const MEM_RELEASE: u32 = 0x8000; +const PAGE_READWRITE: u32 = 0x04; +const TH32CS_SNAPMODULE: u32 = 0x8; +const TH32CS_SNAPMODULE32: u32 = 0x10; +const WAIT_OBJECT_0: u32 = 0; + +#[repr(C)] +struct ModuleEntry32W { + size: u32, + module_id: u32, + process_id: u32, + glblcnt_usage: u32, + proccnt_usage: u32, + base_addr: *mut u8, + base_size: u32, + module: Handle, + sz_module: [u16; 256], + sz_exe_path: [u16; 260], +} + +extern "system" { + fn OpenProcess(access: u32, inherit: i32, pid: u32) -> Handle; + fn CloseHandle(h: Handle) -> i32; + fn VirtualAllocEx(process: Handle, address: *mut c_void, size: usize, alloc_type: u32, protect: u32) -> *mut c_void; + fn VirtualFreeEx(process: Handle, address: *mut c_void, size: usize, free_type: u32) -> i32; + fn WriteProcessMemory(process: Handle, address: *mut c_void, buf: *const c_void, size: usize, written: *mut usize) -> i32; + fn CreateRemoteThread(process: Handle, attrs: *mut c_void, stack: usize, start: *mut c_void, param: *mut c_void, flags: u32, id: *mut u32) -> Handle; + fn WaitForSingleObject(h: Handle, ms: u32) -> u32; + fn GetExitCodeThread(h: Handle, code: *mut u32) -> i32; + fn GetModuleHandleW(name: *const u16) -> Handle; + fn GetProcAddress(module: Handle, name: *const u8) -> *mut c_void; + fn IsWow64Process(process: Handle, wow64: *mut i32) -> i32; + fn QueryFullProcessImageNameW(process: Handle, flags: u32, buf: *mut u16, size: *mut u32) -> i32; + fn GetLastError() -> u32; + fn CreateToolhelp32Snapshot(flags: u32, pid: u32) -> Handle; + fn Module32FirstW(snapshot: Handle, entry: *mut ModuleEntry32W) -> i32; + fn Module32NextW(snapshot: Handle, entry: *mut ModuleEntry32W) -> i32; + fn GetStdHandle(id: u32) -> Handle; + fn GetConsoleMode(h: Handle, mode: *mut u32) -> i32; + fn SetConsoleMode(h: Handle, mode: u32) -> i32; +} + +#[link(name = "user32")] +extern "system" { + fn EnumWindows(callback: unsafe extern "system" fn(Handle, isize) -> i32, param: isize) -> i32; + fn IsWindowVisible(hwnd: Handle) -> i32; + fn GetWindowTextW(hwnd: Handle, buf: *mut u16, max: i32) -> i32; + fn GetWindowThreadProcessId(hwnd: Handle, pid: *mut u32) -> u32; +} + +#[link(name = "shell32")] +extern "system" { + fn ShellExecuteW(hwnd: Handle, verb: *const u16, file: *const u16, params: *const u16, dir: *const u16, show: i32) -> isize; +} + +extern "C" { + fn _kbhit() -> i32; + fn _getch() -> i32; +} + +pub struct JavaWindow { + pub pid: u32, + pub title: String, + pub exe: String, +} + +pub enum Key { + Up, + Down, + Enter, + Escape, +} + +pub fn enable_ansi() { + unsafe { + let out = GetStdHandle(-11i32 as u32); + let mut mode = 0; + if GetConsoleMode(out, &mut mode) != 0 { + SetConsoleMode(out, mode | 0x0004); + } + } +} + +/// Non-blocking key read: arrows arrive as 0xE0/0x00 followed by 72 (up) / 80 (down). +pub fn poll_key() -> Option { + unsafe { + if _kbhit() == 0 { + return None; + } + match _getch() { + 13 => Some(Key::Enter), + 27 => Some(Key::Escape), + 0 | 0xE0 => match _getch() { + 72 => Some(Key::Up), + 80 => Some(Key::Down), + _ => None, + }, + _ => None, + } + } +} + +fn wide(path: &Path) -> Vec { + path.as_os_str().encode_wide().chain(std::iter::once(0)).collect() +} + +fn image_name(pid: u32) -> Option { + unsafe { + let process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, 0, pid); + if process.is_null() { + return None; + } + let mut buf = [0u16; 1024]; + let mut len = buf.len() as u32; + let ok = QueryFullProcessImageNameW(process, 0, buf.as_mut_ptr(), &mut len); + CloseHandle(process); + if ok == 0 { + return None; + } + Some(String::from_utf16_lossy(&buf[..len as usize])) + } +} + +unsafe extern "system" fn collect(hwnd: Handle, param: isize) -> i32 { + let out = &mut *(param as *mut Vec<(u32, String)>); + if IsWindowVisible(hwnd) == 0 { + return 1; + } + let mut buf = [0u16; 256]; + let len = GetWindowTextW(hwnd, buf.as_mut_ptr(), buf.len() as i32); + if len <= 0 { + return 1; + } + let mut pid = 0; + GetWindowThreadProcessId(hwnd, &mut pid); + out.push((pid, String::from_utf16_lossy(&buf[..len as usize]))); + 1 +} + +/// Visible top-level windows that belong to java.exe / javaw.exe, one entry per process. +pub fn java_windows() -> Vec { + let mut windows: Vec<(u32, String)> = Vec::new(); + unsafe { + EnumWindows(collect, &mut windows as *mut _ as isize); + } + let mut out: Vec = Vec::new(); + for (pid, title) in windows { + if out.iter().any(|w| w.pid == pid) { + continue; + } + let Some(path) = image_name(pid) else { continue }; + let exe = path.rsplit(['\\', '/']).next().unwrap_or("").to_string(); + if exe.eq_ignore_ascii_case("javaw.exe") || exe.eq_ignore_ascii_case("java.exe") { + out.push(JavaWindow { pid, title, exe }); + } + } + out +} + +fn last_error(what: &str) -> String { + format!("{what} failed (error {})", unsafe { GetLastError() }) +} + +/// True when the module file name is loaded in the process. +fn module_loaded(pid: u32, file_name: &str) -> bool { + unsafe { + let snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, pid); + if snapshot.is_null() || snapshot as isize == -1 { + return false; + } + let mut entry: ModuleEntry32W = std::mem::zeroed(); + entry.size = std::mem::size_of::() as u32; + let mut found = false; + let mut ok = Module32FirstW(snapshot, &mut entry); + while ok != 0 { + let len = entry.sz_module.iter().position(|&c| c == 0).unwrap_or(entry.sz_module.len()); + if String::from_utf16_lossy(&entry.sz_module[..len]).eq_ignore_ascii_case(file_name) { + found = true; + break; + } + ok = Module32NextW(snapshot, &mut entry); + } + CloseHandle(snapshot); + found + } +} + +/// LoadLibraryW(dll) in the target process through CreateRemoteThread. +pub fn inject(pid: u32, dll: &Path) -> Result<(), String> { + unsafe { + let access = PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ; + let process = OpenProcess(access, 0, pid); + if process.is_null() { + return Err(last_error("OpenProcess (run as the same user, or as administrator)")); + } + let result = inject_into(process, pid, dll); + CloseHandle(process); + result + } +} + +unsafe fn inject_into(process: Handle, pid: u32, dll: &Path) -> Result<(), String> { + let mut wow64 = 0; + if IsWow64Process(process, &mut wow64) != 0 && wow64 != 0 { + return Err("the target is a 32-bit JVM; only 64-bit JVMs are supported".into()); + } + let file_name = dll.file_name().map(|n| n.to_string_lossy().into_owned()).unwrap_or_default(); + if module_loaded(pid, &file_name) { + return Err(format!("{file_name} is already loaded in process {pid}")); + } + + let path = wide(dll); + let bytes = path.len() * 2; + let remote = VirtualAllocEx(process, std::ptr::null_mut(), bytes, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); + if remote.is_null() { + return Err(last_error("VirtualAllocEx")); + } + let cleanup = |err: String| { + VirtualFreeEx(process, remote, 0, MEM_RELEASE); + Err(err) + }; + if WriteProcessMemory(process, remote, path.as_ptr() as *const c_void, bytes, std::ptr::null_mut()) == 0 { + return cleanup(last_error("WriteProcessMemory")); + } + + // kernel32 is mapped at the same base in every process of a boot session, so the local address is valid remotely. + let kernel32 = GetModuleHandleW(wide(Path::new("kernel32.dll")).as_ptr()); + let load_library = GetProcAddress(kernel32, c"LoadLibraryW".as_ptr() as *const u8); + if load_library.is_null() { + return cleanup(last_error("resolve LoadLibraryW")); + } + let thread = CreateRemoteThread(process, std::ptr::null_mut(), 0, load_library, remote, 0, std::ptr::null_mut()); + if thread.is_null() { + return cleanup(last_error("CreateRemoteThread")); + } + let wait = WaitForSingleObject(thread, 30_000); + let mut exit = 0; + GetExitCodeThread(thread, &mut exit); + CloseHandle(thread); + if wait != WAIT_OBJECT_0 { + // The thread may still be running inside the target; leave the buffer alone. + return Err("remote LoadLibraryW did not finish within 30 seconds".into()); + } + VirtualFreeEx(process, remote, 0, MEM_RELEASE); + + // LoadLibraryW's return value is truncated to 32 bits by GetExitCodeThread, so confirm through the module list. + for _ in 0..20 { + if module_loaded(pid, &file_name) { + return Ok(()); + } + std::thread::sleep(Duration::from_millis(100)); + } + Err(format!("LoadLibraryW returned {exit:#x} but {file_name} is not mapped (missing dependency or blocked by security software?)")) +} + +/// Opens a URL in the default web browser. +pub fn open_url(url: &str) -> bool { + let verb: Vec = "open".encode_utf16().collect(); + let target: Vec = url.encode_utf16().chain(std::iter::once(0)).collect(); + // ShellExecute returns a value greater than 32 on success + unsafe { ShellExecuteW(std::ptr::null_mut(), verb.as_ptr(), target.as_ptr(), std::ptr::null(), std::ptr::null(), 1) > 32 } +} diff --git a/injector/crates/loader/Cargo.toml b/injector/crates/loader/Cargo.toml new file mode 100644 index 0000000..3b8e551 --- /dev/null +++ b/injector/crates/loader/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "prestige_native" +version = "0.1.0" +edition = "2021" +build = "build.rs" + +[lib] +crate-type = ["cdylib"] diff --git a/injector/crates/loader/build.rs b/injector/crates/loader/build.rs new file mode 100644 index 0000000..3cc4fd0 --- /dev/null +++ b/injector/crates/loader/build.rs @@ -0,0 +1,35 @@ +//! Locates the remapped Prestige payload jar (built by `gradlew remapJar`) so lib.rs can embed it with include_bytes!. +use std::env; +use std::fs; +use std::path::PathBuf; + +fn main() { + println!("cargo:rerun-if-env-changed=PRESTIGE_PAYLOAD"); + let jar = match env::var("PRESTIGE_PAYLOAD") { + Ok(p) => PathBuf::from(p), + Err(_) => newest_remapped_jar(), + }; + if !jar.is_file() { + panic!("payload jar not found: {} (run `gradlew remapJar` or set PRESTIGE_PAYLOAD)", jar.display()); + } + println!("cargo:rerun-if-changed={}", jar.display()); + println!("cargo:rustc-env=PRESTIGE_PAYLOAD_JAR={}", jar.display()); +} + +fn newest_remapped_jar() -> PathBuf { + let libs = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join("../../../build/libs"); + let mut best: Option<(std::time::SystemTime, PathBuf)> = None; + if let Ok(entries) = fs::read_dir(&libs) { + for entry in entries.flatten() { + let name = entry.file_name().to_string_lossy().to_string(); + if !name.starts_with("prestige-") || !name.ends_with(".jar") || name.ends_with("-dev.jar") || name.ends_with("-sources.jar") { + continue; + } + let time = entry.metadata().and_then(|m| m.modified()).unwrap_or(std::time::UNIX_EPOCH); + if best.as_ref().map_or(true, |(t, _)| time > *t) { + best = Some((time, entry.path())); + } + } + } + best.map(|(_, p)| p).unwrap_or_else(|| libs.join("prestige-0.1.0.jar")) +} diff --git a/injector/crates/loader/src/bridge.rs b/injector/crates/loader/src/bridge.rs new file mode 100644 index 0000000..0160bee --- /dev/null +++ b/injector/crates/loader/src/bridge.rs @@ -0,0 +1,106 @@ +//! JVMTI state and the two natives of dev.zprestige.prestige.inject.NativeBridge. +use crate::jni::*; +use std::ffi::{c_char, c_void}; +use std::sync::atomic::{AtomicPtr, AtomicUsize, Ordering}; +use std::sync::Mutex; + +static JVMTI: AtomicPtr<*const *const c_void> = AtomicPtr::new(std::ptr::null_mut()); +/// jclass whose bytes the ClassFileLoadHook should capture during the current RetransformClasses call (0 = none). +static CAPTURE_TARGET: AtomicUsize = AtomicUsize::new(0); +static CAPTURED: Mutex>> = Mutex::new(None); + +/// Acquires the JVMTI capabilities and enables the class file load hook. Called once from the worker thread. +pub unsafe fn init_jvmti(vm: VmPtr) -> Result<(), String> { + let jvmti = get_jvmti(vm)?; + let mut caps = Capabilities::default(); + for bit in [CAN_REDEFINE_CLASSES, CAN_REDEFINE_ANY_CLASS, CAN_GENERATE_ALL_CLASS_HOOK_EVENTS, CAN_RETRANSFORM_CLASSES, CAN_RETRANSFORM_ANY_CLASS] { + caps.set(bit); + } + let rc = add_capabilities(jvmti, &caps); + if rc != 0 { + return Err(format!("AddCapabilities failed ({rc})")); + } + enable_class_file_load_hook(jvmti, class_file_load_hook)?; + JVMTI.store(jvmti, Ordering::SeqCst); + Ok(()) +} + +/// Copies the class bytes the JVM hands to us while a classBytes() call retransforms its target; never modifies anything. +unsafe extern "system" fn class_file_load_hook( + _jvmti: JvmtiPtr, + env: EnvPtr, + class_being_redefined: JClass, + _loader: JObject, + _name: *const c_char, + _domain: JObject, + data_len: JInt, + data: *const u8, + _new_len: *mut JInt, + _new_data: *mut *mut u8, +) { + let target = CAPTURE_TARGET.load(Ordering::SeqCst); + if target == 0 || class_being_redefined.is_null() || data.is_null() { + return; + } + let jni = Jni::new(env); + if jni.is_same_object(class_being_redefined, target as JObject) { + if let Ok(mut slot) = CAPTURED.lock() { + *slot = Some(std::slice::from_raw_parts(data, data_len as usize).to_vec()); + } + } +} + +/// byte[] classBytes(Class): the bytes the JVM currently holds for the class (HotSpot reconstitutes them for retransformation). +pub unsafe extern "system" fn native_class_bytes(env: EnvPtr, _cls: JClass, target: JClass) -> JObject { + let jvmti = JVMTI.load(Ordering::SeqCst); + if jvmti.is_null() { + return std::ptr::null_mut(); + } + if let Ok(mut slot) = CAPTURED.lock() { + *slot = None; + } + CAPTURE_TARGET.store(target as usize, Ordering::SeqCst); + let rc = retransform_class(jvmti, target); + CAPTURE_TARGET.store(0, Ordering::SeqCst); + if rc != 0 { + crate::log!("RetransformClasses failed ({rc})"); + return std::ptr::null_mut(); + } + let bytes = CAPTURED.lock().ok().and_then(|mut slot| slot.take()); + let Some(bytes) = bytes else { + return std::ptr::null_mut(); + }; + let jni = Jni::new(env); + let array = jni.new_byte_array(bytes.len() as JInt); + if !array.is_null() { + jni.set_byte_array_region(array, 0, bytes.len() as JInt, bytes.as_ptr()); + } + array +} + +/// int redefine(Class, byte[]): JVMTI RedefineClasses of a single class; returns the JVMTI error code (0 = success). +pub unsafe extern "system" fn native_redefine(env: EnvPtr, _cls: JClass, target: JClass, bytes: JObject) -> JInt { + let jvmti = JVMTI.load(Ordering::SeqCst); + if jvmti.is_null() || bytes.is_null() { + return -1; + } + let jni = Jni::new(env); + let len = jni.get_array_length(bytes); + let mut buf = vec![0u8; len as usize]; + jni.get_byte_array_region(bytes, 0, len, buf.as_mut_ptr()); + let def = ClassDefinition { klass: target, class_byte_count: len, class_bytes: buf.as_ptr() }; + let rc = redefine_class(jvmti, &def); + if rc != 0 { + crate::log!("RedefineClasses failed ({rc})"); + } + rc +} + +/// void log(String): lets the Java side write progress lines into prestige-native.log. +pub unsafe extern "system" fn native_log(env: EnvPtr, _cls: JClass, message: JObject) { + if message.is_null() { + return; + } + let text = Jni::new(env).get_string_utf(message); + crate::log!("[java] {text}"); +} diff --git a/injector/crates/loader/src/jni.rs b/injector/crates/loader/src/jni.rs new file mode 100644 index 0000000..8ee91f1 --- /dev/null +++ b/injector/crates/loader/src/jni.rs @@ -0,0 +1,255 @@ +//! Minimal raw JNI / JVMTI bindings. Function-table indices were checked against the JDK 21 jni.h / jvmti.h. +use std::ffi::{c_char, c_void, CStr, CString}; + +pub type JObject = *mut c_void; +pub type JClass = JObject; +pub type JMethodId = *mut c_void; +pub type JValue = u64; +pub type JInt = i32; +pub type JBool = u8; + +/// JNIEnv*: pointer to a pointer to the function table. +pub type EnvPtr = *mut *const *const c_void; + +pub const JNI_OK: JInt = 0; +pub const JNI_VERSION_1_8: JInt = 0x0001_0008; +pub const JVMTI_VERSION_1_2: JInt = 0x3001_0200; + +#[repr(C)] +pub struct NativeMethod { + pub name: *const c_char, + pub signature: *const c_char, + pub fn_ptr: *mut c_void, +} + +/// Packs a JNI argument into the 8-byte jvalue slot. +pub fn obj(o: JObject) -> JValue { + o as usize as u64 +} +pub fn boolean(b: bool) -> JValue { + b as u64 +} + +pub struct Jni { + pub env: EnvPtr, +} + +macro_rules! f { + ($self:expr, $idx:expr, $ty:ty) => { + std::mem::transmute::<*const c_void, $ty>(*(*$self.env).add($idx)) + }; +} + +impl Jni { + /// # Safety + /// `env` must be a valid JNIEnv* of the current thread. + pub unsafe fn new(env: EnvPtr) -> Self { + Jni { env } + } + + pub unsafe fn find_class(&self, name: &str) -> JClass { + let n = CString::new(name).unwrap(); + f!(self, 6, unsafe extern "system" fn(EnvPtr, *const c_char) -> JClass)(self.env, n.as_ptr()) + } + pub unsafe fn exception_occurred(&self) -> JObject { + f!(self, 15, unsafe extern "system" fn(EnvPtr) -> JObject)(self.env) + } + pub unsafe fn exception_clear(&self) { + f!(self, 17, unsafe extern "system" fn(EnvPtr))(self.env) + } + pub unsafe fn new_global_ref(&self, o: JObject) -> JObject { + f!(self, 21, unsafe extern "system" fn(EnvPtr, JObject) -> JObject)(self.env, o) + } + pub unsafe fn delete_local_ref(&self, o: JObject) { + f!(self, 23, unsafe extern "system" fn(EnvPtr, JObject))(self.env, o) + } + pub unsafe fn is_same_object(&self, a: JObject, b: JObject) -> bool { + f!(self, 24, unsafe extern "system" fn(EnvPtr, JObject, JObject) -> JBool)(self.env, a, b) != 0 + } + pub unsafe fn get_object_class(&self, o: JObject) -> JClass { + f!(self, 31, unsafe extern "system" fn(EnvPtr, JObject) -> JClass)(self.env, o) + } + pub unsafe fn get_method_id(&self, c: JClass, name: &str, sig: &str) -> JMethodId { + let (n, s) = (CString::new(name).unwrap(), CString::new(sig).unwrap()); + f!(self, 33, unsafe extern "system" fn(EnvPtr, JClass, *const c_char, *const c_char) -> JMethodId)(self.env, c, n.as_ptr(), s.as_ptr()) + } + pub unsafe fn new_object(&self, c: JClass, ctor: JMethodId, args: &[JValue]) -> JObject { + f!(self, 30, unsafe extern "system" fn(EnvPtr, JClass, JMethodId, *const JValue) -> JObject)(self.env, c, ctor, args.as_ptr()) + } + pub unsafe fn call_object(&self, o: JObject, m: JMethodId, args: &[JValue]) -> JObject { + f!(self, 36, unsafe extern "system" fn(EnvPtr, JObject, JMethodId, *const JValue) -> JObject)(self.env, o, m, args.as_ptr()) + } + pub unsafe fn call_void(&self, o: JObject, m: JMethodId, args: &[JValue]) { + f!(self, 63, unsafe extern "system" fn(EnvPtr, JObject, JMethodId, *const JValue))(self.env, o, m, args.as_ptr()) + } + pub unsafe fn get_static_method_id(&self, c: JClass, name: &str, sig: &str) -> JMethodId { + let (n, s) = (CString::new(name).unwrap(), CString::new(sig).unwrap()); + f!(self, 113, unsafe extern "system" fn(EnvPtr, JClass, *const c_char, *const c_char) -> JMethodId)(self.env, c, n.as_ptr(), s.as_ptr()) + } + pub unsafe fn call_static_object(&self, c: JClass, m: JMethodId, args: &[JValue]) -> JObject { + f!(self, 116, unsafe extern "system" fn(EnvPtr, JClass, JMethodId, *const JValue) -> JObject)(self.env, c, m, args.as_ptr()) + } + pub unsafe fn call_static_void(&self, c: JClass, m: JMethodId, args: &[JValue]) { + f!(self, 143, unsafe extern "system" fn(EnvPtr, JClass, JMethodId, *const JValue))(self.env, c, m, args.as_ptr()) + } + pub unsafe fn new_string(&self, s: &str) -> JObject { + let c = CString::new(s).unwrap(); + f!(self, 167, unsafe extern "system" fn(EnvPtr, *const c_char) -> JObject)(self.env, c.as_ptr()) + } + pub unsafe fn get_string_utf(&self, s: JObject) -> String { + let chars = f!(self, 169, unsafe extern "system" fn(EnvPtr, JObject, *mut JBool) -> *const c_char)(self.env, s, std::ptr::null_mut()); + if chars.is_null() { + return String::new(); + } + let out = CStr::from_ptr(chars).to_string_lossy().into_owned(); + f!(self, 170, unsafe extern "system" fn(EnvPtr, JObject, *const c_char))(self.env, s, chars); + out + } + pub unsafe fn get_array_length(&self, a: JObject) -> JInt { + f!(self, 171, unsafe extern "system" fn(EnvPtr, JObject) -> JInt)(self.env, a) + } + pub unsafe fn new_object_array(&self, len: JInt, c: JClass, init: JObject) -> JObject { + f!(self, 172, unsafe extern "system" fn(EnvPtr, JInt, JClass, JObject) -> JObject)(self.env, len, c, init) + } + pub unsafe fn new_byte_array(&self, len: JInt) -> JObject { + f!(self, 176, unsafe extern "system" fn(EnvPtr, JInt) -> JObject)(self.env, len) + } + pub unsafe fn get_byte_array_region(&self, a: JObject, start: JInt, len: JInt, buf: *mut u8) { + f!(self, 200, unsafe extern "system" fn(EnvPtr, JObject, JInt, JInt, *mut u8))(self.env, a, start, len, buf) + } + pub unsafe fn set_byte_array_region(&self, a: JObject, start: JInt, len: JInt, buf: *const u8) { + f!(self, 208, unsafe extern "system" fn(EnvPtr, JObject, JInt, JInt, *const u8))(self.env, a, start, len, buf) + } + pub unsafe fn register_natives(&self, c: JClass, methods: &[NativeMethod]) -> JInt { + f!(self, 215, unsafe extern "system" fn(EnvPtr, JClass, *const NativeMethod, JInt) -> JInt)(self.env, c, methods.as_ptr(), methods.len() as JInt) + } + pub unsafe fn exception_check(&self) -> bool { + f!(self, 228, unsafe extern "system" fn(EnvPtr) -> JBool)(self.env) != 0 + } + + /// Returns "ExceptionClass: message" of the pending exception and clears it. + pub unsafe fn take_exception(&self) -> Option { + let ex = self.exception_occurred(); + if ex.is_null() { + return None; + } + self.exception_clear(); + let cls = self.get_object_class(ex); + let to_string = self.get_method_id(cls, "toString", "()Ljava/lang/String;"); + let text = if to_string.is_null() { + "".to_string() + } else { + let s = self.call_object(ex, to_string, &[]); + self.exception_clear(); + if s.is_null() { "".to_string() } else { self.get_string_utf(s) } + }; + Some(text) + } + + /// Converts a pending Java exception into an Err carrying `context`. + pub unsafe fn check(&self, context: &str) -> Result<(), String> { + match self.take_exception() { + Some(e) => Err(format!("{context}: {e}")), + None => Ok(()), + } + } +} + +/// JavaVM*: pointer to a pointer to the invoke interface. +pub type VmPtr = *mut *const *const c_void; + +pub unsafe fn attach_current_thread(vm: VmPtr) -> Result { + let attach = std::mem::transmute::<*const c_void, unsafe extern "system" fn(VmPtr, *mut EnvPtr, *mut c_void) -> JInt>(*(*vm).add(4)); + let mut env: EnvPtr = std::ptr::null_mut(); + let rc = attach(vm, &mut env, std::ptr::null_mut()); + if rc != JNI_OK || env.is_null() { + return Err(format!("AttachCurrentThread failed ({rc})")); + } + Ok(env) +} + +pub unsafe fn get_jvmti(vm: VmPtr) -> Result { + let get_env = std::mem::transmute::<*const c_void, unsafe extern "system" fn(VmPtr, *mut *mut c_void, JInt) -> JInt>(*(*vm).add(6)); + let mut out: *mut c_void = std::ptr::null_mut(); + let rc = get_env(vm, &mut out, JVMTI_VERSION_1_2); + if rc != JNI_OK || out.is_null() { + return Err(format!("GetEnv(JVMTI) failed ({rc})")); + } + Ok(out as JvmtiPtr) +} + +/// jvmtiEnv*: pointer to a pointer to the JVMTI function table (entry n of the spec is index n-1). +pub type JvmtiPtr = *mut *const *const c_void; + +#[repr(C)] +pub struct ClassDefinition { + pub klass: JClass, + pub class_byte_count: JInt, + pub class_bytes: *const u8, +} + +#[repr(C)] +#[derive(Default, Clone, Copy)] +pub struct Capabilities { + pub bits: [u32; 4], +} + +impl Capabilities { + pub fn set(&mut self, bit: u32) { + self.bits[(bit / 32) as usize] |= 1 << (bit % 32); + } +} + +// capability bit positions, counted in jvmtiCapabilities declaration order +pub const CAN_REDEFINE_CLASSES: u32 = 9; +pub const CAN_REDEFINE_ANY_CLASS: u32 = 21; +pub const CAN_GENERATE_ALL_CLASS_HOOK_EVENTS: u32 = 26; +pub const CAN_RETRANSFORM_CLASSES: u32 = 37; +pub const CAN_RETRANSFORM_ANY_CLASS: u32 = 38; + +pub const EVENT_CLASS_FILE_LOAD_HOOK: JInt = 54; + +pub type ClassFileLoadHook = unsafe extern "system" fn( + JvmtiPtr, + EnvPtr, + JClass, + JObject, + *const c_char, + JObject, + JInt, + *const u8, + *mut JInt, + *mut *mut u8, +); + +pub unsafe fn add_capabilities(j: JvmtiPtr, caps: &Capabilities) -> JInt { + let f = std::mem::transmute::<*const c_void, unsafe extern "system" fn(JvmtiPtr, *const Capabilities) -> JInt>(*(*j).add(141)); + f(j, caps) +} + +/// Installs the ClassFileLoadHook callback (field 5 of jvmtiEventCallbacks) and enables the event. +pub unsafe fn enable_class_file_load_hook(j: JvmtiPtr, hook: ClassFileLoadHook) -> Result<(), String> { + let mut callbacks = [0usize; 40]; + callbacks[4] = hook as usize; + let set_callbacks = std::mem::transmute::<*const c_void, unsafe extern "system" fn(JvmtiPtr, *const usize, JInt) -> JInt>(*(*j).add(121)); + let rc = set_callbacks(j, callbacks.as_ptr(), std::mem::size_of_val(&callbacks) as JInt); + if rc != 0 { + return Err(format!("SetEventCallbacks failed ({rc})")); + } + let set_mode = std::mem::transmute::<*const c_void, unsafe extern "C" fn(JvmtiPtr, JInt, JInt, JObject, ...) -> JInt>(*(*j).add(1)); + let rc = set_mode(j, 1, EVENT_CLASS_FILE_LOAD_HOOK, std::ptr::null_mut()); + if rc != 0 { + return Err(format!("SetEventNotificationMode failed ({rc})")); + } + Ok(()) +} + +pub unsafe fn retransform_class(j: JvmtiPtr, class: JClass) -> JInt { + let f = std::mem::transmute::<*const c_void, unsafe extern "system" fn(JvmtiPtr, JInt, *const JClass) -> JInt>(*(*j).add(151)); + f(j, 1, &class) +} + +pub unsafe fn redefine_class(j: JvmtiPtr, def: &ClassDefinition) -> JInt { + let f = std::mem::transmute::<*const c_void, unsafe extern "system" fn(JvmtiPtr, JInt, *const ClassDefinition) -> JInt>(*(*j).add(86)); + f(j, 1, def) +} diff --git a/injector/crates/loader/src/lib.rs b/injector/crates/loader/src/lib.rs new file mode 100644 index 0000000..b2229c6 --- /dev/null +++ b/injector/crates/loader/src/lib.rs @@ -0,0 +1,32 @@ +//! prestige_native.dll: loaded into a running Minecraft 1.21.11 (Fabric) JVM by PrestigeInjector.exe. +//! +//! The DLL worker waits for the JVM, appends the embedded Prestige payload jar to Fabric's Knot class loader, registers the +//! JVMTI-backed natives of `dev.zprestige.prestige.inject.NativeBridge` and starts `Bootstrap`, which transforms the already +//! loaded game classes and initialises the client. +mod bridge; +mod jni; +mod log; +mod worker; + +use std::ffi::c_void; + +const DLL_PROCESS_ATTACH: u32 = 1; + +extern "system" { + fn DisableThreadLibraryCalls(module: *mut c_void) -> i32; +} + +pub(crate) static mut MODULE: *mut c_void = std::ptr::null_mut(); + +#[no_mangle] +pub extern "system" fn DllMain(module: *mut c_void, reason: u32, _reserved: *mut c_void) -> i32 { + if reason == DLL_PROCESS_ATTACH { + unsafe { + MODULE = module; + DisableThreadLibraryCalls(module); + } + // Nothing but thread creation may happen under the loader lock. + let _ = std::thread::Builder::new().name("prestige-loader".into()).spawn(worker::run); + } + 1 +} diff --git a/injector/crates/loader/src/log.rs b/injector/crates/loader/src/log.rs new file mode 100644 index 0000000..d934c07 --- /dev/null +++ b/injector/crates/loader/src/log.rs @@ -0,0 +1,33 @@ +use std::ffi::c_void; +use std::fs::OpenOptions; +use std::io::Write; +use std::path::PathBuf; +use std::sync::OnceLock; +use std::time::{SystemTime, UNIX_EPOCH}; + +extern "system" { + fn GetModuleFileNameW(module: *mut c_void, buf: *mut u16, size: u32) -> u32; +} + +fn log_path() -> &'static PathBuf { + static PATH: OnceLock = OnceLock::new(); + PATH.get_or_init(|| { + let mut buf = [0u16; 1024]; + let len = unsafe { GetModuleFileNameW(crate::MODULE, buf.as_mut_ptr(), buf.len() as u32) } as usize; + let dll = PathBuf::from(String::from_utf16_lossy(&buf[..len])); + dll.with_file_name("prestige-native.log") + }) +} + +/// Appends a line to prestige-native.log beside the DLL. +pub fn log(message: &str) { + let secs = SystemTime::now().duration_since(UNIX_EPOCH).map(|d| d.as_secs()).unwrap_or(0); + if let Ok(mut file) = OpenOptions::new().create(true).append(true).open(log_path()) { + let _ = writeln!(file, "[{secs}] {message}"); + } +} + +#[macro_export] +macro_rules! log { + ($($arg:tt)*) => { $crate::log::log(&format!($($arg)*)) }; +} diff --git a/injector/crates/loader/src/worker.rs b/injector/crates/loader/src/worker.rs new file mode 100644 index 0000000..77b532c --- /dev/null +++ b/injector/crates/loader/src/worker.rs @@ -0,0 +1,175 @@ +//! The loader worker: JVM discovery, payload installation into Fabric's Knot class loader, native registration, bootstrap. +use crate::bridge::{init_jvmti, native_class_bytes, native_log, native_redefine}; +use crate::jni::*; +use crate::log; +use std::ffi::{c_char, c_void}; +use std::path::PathBuf; +use std::time::Duration; + +extern "system" { + fn GetModuleHandleA(name: *const c_char) -> *mut c_void; + fn GetProcAddress(module: *mut c_void, name: *const c_char) -> *mut c_void; + fn GetCurrentProcessId() -> u32; +} + +static PAYLOAD: &[u8] = include_bytes!(env!("PRESTIGE_PAYLOAD_JAR")); + +const NATIVE_BRIDGE: &str = "dev.zprestige.prestige.inject.NativeBridge"; +const BOOTSTRAP: &str = "dev.zprestige.prestige.inject.Bootstrap"; + +pub fn run() { + log!("worker started, pid {}", unsafe { GetCurrentProcessId() }); + match unsafe { install() } { + Ok(()) => log!("bootstrap returned"), + Err(e) => log!("FAILED: {e}"), + } +} + +unsafe fn install() -> Result<(), String> { + let vm = find_vm()?; + let env = attach_current_thread(vm)?; + let jni = Jni::new(env); + log!("attached to the JVM"); + + init_jvmti(vm)?; + log!("JVMTI ready"); + + let jar = write_payload()?; + log!("payload written to {}", jar.display()); + + let loader = add_to_knot(&jni, &jar)?; + log!("payload appended to the Fabric Knot class loader"); + + register_natives(&jni, loader)?; + log!("natives registered"); + + let bootstrap = class_for_name(&jni, BOOTSTRAP, loader)?; + let start = jni.get_static_method_id(bootstrap, "start", "()V"); + jni.check("resolve Bootstrap.start")?; + // Bootstrap.start waits for the client, installs the hooks and schedules the client initialisation. + jni.call_static_void(bootstrap, start, &[]); + jni.check("Bootstrap.start")?; + Ok(()) +} + +/// Waits for jvm.dll and a created JavaVM (the injector may run before Minecraft has started its JVM). +unsafe fn find_vm() -> Result { + let mut module = std::ptr::null_mut(); + for _ in 0..600 { + module = GetModuleHandleA(c"jvm.dll".as_ptr()); + if !module.is_null() { + break; + } + std::thread::sleep(Duration::from_millis(100)); + } + if module.is_null() { + return Err("jvm.dll is not loaded in this process".into()); + } + let get_vms = GetProcAddress(module, c"JNI_GetCreatedJavaVMs".as_ptr()); + if get_vms.is_null() { + return Err("JNI_GetCreatedJavaVMs export not found".into()); + } + let get_vms: unsafe extern "system" fn(*mut VmPtr, JInt, *mut JInt) -> JInt = std::mem::transmute(get_vms); + for _ in 0..600 { + let mut vm: VmPtr = std::ptr::null_mut(); + let mut count: JInt = 0; + if get_vms(&mut vm, 1, &mut count) == JNI_OK && count > 0 && !vm.is_null() { + return Ok(vm); + } + std::thread::sleep(Duration::from_millis(100)); + } + Err("no JavaVM was created".into()) +} + +fn write_payload() -> Result { + let dir = std::env::temp_dir().join("PrestigeLoader"); + std::fs::create_dir_all(&dir).map_err(|e| format!("create {}: {e}", dir.display()))?; + let path = dir.join(format!("prestige-payload-{}.jar", unsafe { GetCurrentProcessId() })); + std::fs::write(&path, PAYLOAD).map_err(|e| format!("write {}: {e}", path.display()))?; + Ok(path) +} + +/// FabricLauncherBase.getLauncher().addToClassPath(path) so the payload and the game classes share the Knot class loader. +/// Returns a global reference to the Knot target class loader. +unsafe fn add_to_knot(jni: &Jni, jar: &std::path::Path) -> Result { + // A thread attached from native code resolves classes through the system class loader, which holds fabric-loader. + let base = jni.find_class("net/fabricmc/loader/impl/launch/FabricLauncherBase"); + jni.check("FabricLauncherBase (is this a Fabric instance?)")?; + let get_launcher = jni.get_static_method_id(base, "getLauncher", "()Lnet/fabricmc/loader/impl/launch/FabricLauncher;"); + jni.check("FabricLauncherBase.getLauncher")?; + let launcher = jni.call_static_object(base, get_launcher, &[]); + jni.check("getLauncher()")?; + if launcher.is_null() { + return Err("Fabric launcher is not available yet".into()); + } + + let launcher_class = jni.find_class("net/fabricmc/loader/impl/launch/FabricLauncher"); + jni.check("FabricLauncher")?; + let add = jni.get_method_id(launcher_class, "addToClassPath", "(Ljava/nio/file/Path;[Ljava/lang/String;)V"); + jni.check("FabricLauncher.addToClassPath")?; + let target = jni.get_method_id(launcher_class, "getTargetClassLoader", "()Ljava/lang/ClassLoader;"); + jni.check("FabricLauncher.getTargetClassLoader")?; + + // Path path = new java.io.File(jar).toPath() + let file_class = jni.find_class("java/io/File"); + let file_ctor = jni.get_method_id(file_class, "", "(Ljava/lang/String;)V"); + let to_path = jni.get_method_id(file_class, "toPath", "()Ljava/nio/file/Path;"); + jni.check("java.io.File")?; + let jar_string = jni.new_string(&jar.to_string_lossy()); + let file = jni.new_object(file_class, file_ctor, &[obj(jar_string)]); + let path = jni.call_object(file, to_path, &[]); + jni.check("File.toPath")?; + + let string_class = jni.find_class("java/lang/String"); + let prefixes = jni.new_object_array(0, string_class, std::ptr::null_mut()); + jni.call_void(launcher, add, &[obj(path), obj(prefixes)]); + jni.check("addToClassPath")?; + + let loader = jni.call_object(launcher, target, &[]); + jni.check("getTargetClassLoader()")?; + if loader.is_null() { + return Err("Knot target class loader is null".into()); + } + Ok(jni.new_global_ref(loader)) +} + +/// Class.forName(name, true, loader) +unsafe fn class_for_name(jni: &Jni, name: &str, loader: JObject) -> Result { + let class_class = jni.find_class("java/lang/Class"); + let for_name = jni.get_static_method_id(class_class, "forName", "(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;"); + jni.check("Class.forName")?; + let name_string = jni.new_string(name); + let class = jni.call_static_object(class_class, for_name, &[obj(name_string), boolean(true), obj(loader)]); + jni.check(&format!("load {name}"))?; + if class.is_null() { + return Err(format!("{name} not found")); + } + Ok(class) +} + +unsafe fn register_natives(jni: &Jni, loader: JObject) -> Result<(), String> { + let class = class_for_name(jni, NATIVE_BRIDGE, loader)?; + let methods = [ + NativeMethod { + name: c"classBytes".as_ptr(), + signature: c"(Ljava/lang/Class;)[B".as_ptr(), + fn_ptr: native_class_bytes as *const () as usize as *mut c_void, + }, + NativeMethod { + name: c"redefine".as_ptr(), + signature: c"(Ljava/lang/Class;[B)I".as_ptr(), + fn_ptr: native_redefine as *const () as usize as *mut c_void, + }, + NativeMethod { + name: c"log".as_ptr(), + signature: c"(Ljava/lang/String;)V".as_ptr(), + fn_ptr: native_log as *const () as usize as *mut c_void, + }, + ]; + let rc = jni.register_natives(class, &methods); + if rc != JNI_OK { + let _ = jni.take_exception(); + return Err(format!("RegisterNatives failed ({rc})")); + } + Ok(()) +} diff --git a/src/main/java/dev/zprestige/prestige/BoolSetting.java b/src/main/java/dev/zprestige/prestige/BoolSetting.java index 0711198..978df3e 100644 --- a/src/main/java/dev/zprestige/prestige/BoolSetting.java +++ b/src/main/java/dev/zprestige/prestige/BoolSetting.java @@ -1,8 +1,6 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; public class BoolSetting extends Setting { @@ -12,104 +10,29 @@ public class BoolSetting extends Setting { return (Boolean)super.getValue(); } - public BoolSetting(String var1, boolean var2) { - super(var1, var2); + public BoolSetting(String settingName, boolean defaultValue) { + super(settingName, defaultValue); } - public BoolSetting setVisibility_BoolSetting(Object[] var1) { - Predicate var4 = (Predicate)var1[0]; - long var2 = (Long)var1[1]; - var2 = 93508073420995L ^ var2; - long var5 = var2 ^ 15920284625090L; - super.setVisibility(new Object[]{var4, var5}); + public BoolSetting visibleWhen(Predicate visibilityPredicate) { + super.setVisibility(visibilityPredicate); return this; } @Chainable - public BoolSetting setDescription_BoolSetting(String var1) { - super.setDescription(var1); + public BoolSetting withDescription(String newDescription) { + super.setDescription(newDescription); return this; } @Override - public Setting setVisibility(Object[] var1) { - Predicate var4 = (Predicate)var1[0]; - long var2 = (Long)var1[1]; - long var5 = var2 ^ 100541721415681L; - return this.setVisibility_BoolSetting(new Object[]{var4, var5}); + public Setting setVisibility(Predicate visibilityPredicate) { + return this.visibleWhen(visibilityPredicate); } @Chainable @Override - public Setting setDescription(String var1) { - return this.setDescription_BoolSetting(var1); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public Setting setDescription(String newDescription) { + return this.withDescription(newDescription); } } diff --git a/src/main/java/dev/zprestige/prestige/Category.java b/src/main/java/dev/zprestige/prestige/Category.java index 7254a45..f5212db 100644 --- a/src/main/java/dev/zprestige/prestige/Category.java +++ b/src/main/java/dev/zprestige/prestige/Category.java @@ -1,8 +1,5 @@ package dev.zprestige.prestige; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - public enum Category { Combat, Misc, @@ -11,76 +8,4 @@ public enum Category { Mace, Spear, Menu; - - static { - Object[] var10001 = new Object[]{0L}; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/ColorSetting.java b/src/main/java/dev/zprestige/prestige/ColorSetting.java index 3aa3049..2c958a1 100644 --- a/src/main/java/dev/zprestige/prestige/ColorSetting.java +++ b/src/main/java/dev/zprestige/prestige/ColorSetting.java @@ -2,8 +2,6 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; public class ColorSetting extends Setting { @@ -13,104 +11,29 @@ public class ColorSetting extends Setting { return (java.awt.Color)super.getValue(); } - public ColorSetting(String var1, Color var2) { - super(var1, var2); + public ColorSetting(String settingName, Color defaultColor) { + super(settingName, defaultColor); } - public ColorSetting setVisibility_ColorSetting(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - long var3 = (Long)var1[1]; - var3 = 17254503104146L ^ var3; - long var5 = var3 ^ 135571304499614L; - super.setVisibility(new Object[]{var2, var5}); + public ColorSetting visibleWhen(Predicate visibilityPredicate) { + super.setVisibility(visibilityPredicate); return this; } @Chainable - public ColorSetting setDescription_ColorSetting(String var1) { - super.setDescription(var1); + public ColorSetting withDescription(String newDescription) { + super.setDescription(newDescription); return this; } @Override - public Setting setVisibility(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - long var3 = (Long)var1[1]; - long var5 = var3 ^ 128626887849740L; - return this.setVisibility_ColorSetting(new Object[]{var2, var5}); + public Setting setVisibility(Predicate visibilityPredicate) { + return this.visibleWhen(visibilityPredicate); } @Chainable @Override - public Setting setDescription(String var1) { - return this.setDescription_ColorSetting(var1); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public Setting setDescription(String newDescription) { + return this.withDescription(newDescription); } } diff --git a/src/main/java/dev/zprestige/prestige/Constants.java b/src/main/java/dev/zprestige/prestige/Constants.java deleted file mode 100644 index b7f462c..0000000 --- a/src/main/java/dev/zprestige/prestige/Constants.java +++ /dev/null @@ -1,24 +0,0 @@ -package dev.zprestige.prestige; - -import java.lang.invoke.MethodHandle; -import java.lang.invoke.MethodHandles.Lookup; - -public final class Constants { - private Constants() { - } - - public static MethodHandle a(Lookup var0, String var1, Class var2, int var3) { - throw new IllegalStateException("prestige: native constant bridge was statically restored; this call must never happen"); - } - - public static int b(Lookup var0, String var1, Class var2, int var3) { - throw new IllegalStateException("prestige: native constant bridge was statically restored; this call must never happen"); - } - - public static long c(Lookup var0, String var1, Class var2, int var3) { - throw new IllegalStateException("prestige: native constant bridge was statically restored; this call must never happen"); - } - - public static void d(int var0, int var1, int var2) { - } -} diff --git a/src/main/java/dev/zprestige/prestige/EnumSetting.java b/src/main/java/dev/zprestige/prestige/EnumSetting.java index d70ead6..ea7b05c 100644 --- a/src/main/java/dev/zprestige/prestige/EnumSetting.java +++ b/src/main/java/dev/zprestige/prestige/EnumSetting.java @@ -1,8 +1,6 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; public class EnumSetting extends Setting { @@ -14,9 +12,9 @@ public class EnumSetting extends Setting { private final String[] options; - public EnumSetting(String var1, String var2, String[] var3) { - super(var1, var2); - this.options = var3; + public EnumSetting(String settingName, String defaultOption, String[] optionValues) { + super(settingName, defaultOption); + this.options = optionValues; } @Chainable @@ -24,100 +22,25 @@ public class EnumSetting extends Setting { return this.options; } - public EnumSetting setVisibility_EnumSetting(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - long var3 = (Long)var1[1]; - var3 = 87505960059751L ^ var3; - long var5 = var3 ^ 4743213844807L; - super.setVisibility(new Object[]{var2, var5}); + public EnumSetting visibleWhen(Predicate visibilityPredicate) { + super.setVisibility(visibilityPredicate); return this; } @Chainable - public EnumSetting setDescription_EnumSetting(String var1) { - super.setDescription(var1); + public EnumSetting withDescription(String newDescription) { + super.setDescription(newDescription); return this; } @Override - public Setting setVisibility(Object[] var1) { - Predicate var4 = (Predicate)var1[0]; - long var2 = (Long)var1[1]; - long var5 = var2 ^ 83315054463520L; - return this.setVisibility_EnumSetting(new Object[]{var4, var5}); + public Setting setVisibility(Predicate visibilityPredicate) { + return this.visibleWhen(visibilityPredicate); } @Chainable @Override - public Setting setDescription(String var1) { - return this.setDescription_EnumSetting(var1); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public Setting setDescription(String newDescription) { + return this.withDescription(newDescription); } } diff --git a/src/main/java/dev/zprestige/prestige/EventBus.java b/src/main/java/dev/zprestige/prestige/EventBus.java index a3f128c..4e798c5 100644 --- a/src/main/java/dev/zprestige/prestige/EventBus.java +++ b/src/main/java/dev/zprestige/prestige/EventBus.java @@ -4,8 +4,6 @@ import dev.zprestige.prestige.event.Event; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; @@ -18,55 +16,51 @@ import java.util.concurrent.CopyOnWriteArrayList; public class EventBus { private volatile Map listeners = new HashMap(); private final Object lock = new Object(); - private static final MethodType c; - private static final Set d; - public final CopyOnWriteArrayList e = new CopyOnWriteArrayList(); - private static final String g = "[Prestige/EventBus] listener threw (logged once per type): "; + private static final MethodType LISTENER_TYPE; + private static final Set LOGGED_FAILURES; + public final CopyOnWriteArrayList registrationBlockers = new CopyOnWriteArrayList(); + private static final String LISTENER_ERROR_PREFIX = "[Prestige/EventBus] listener threw (logged once per type): "; - public void register(Object[] var1) { - Object var4 = var1[0]; - long var2 = (Long)var1[1]; - var2 = 114818700636565L ^ var2; - long var5 = var2 ^ 56241223455158L; - if (var4 != null) { - if (this.e.isEmpty()) { - Class var8 = var4.getClass(); - ArrayList var9 = new ArrayList(); + public void register(Object subscriber) { + if (subscriber != null) { + if (this.registrationBlockers.isEmpty()) { + Class subscriberClass = subscriber.getClass(); + ArrayList found = new ArrayList(); - for (Method var13 : var8.getDeclaredMethods()) { - if (var13.isAnnotationPresent(Subscribe.class)) { - Class[] var14 = var13.getParameterTypes(); - if (var14.length == 1) { + for (Method method : subscriberClass.getDeclaredMethods()) { + if (method.isAnnotationPresent(Subscribe.class)) { + Class[] paramTypes = method.getParameterTypes(); + if (paramTypes.length == 1) { try { - var13.setAccessible(true); - MethodHandle var15 = MethodHandles.lookup().unreflect(var13).bindTo(var4).asType(c); - var9.add(new ListenerEntry(var13, var4, var14[0], var15)); - } catch (Throwable var21) { + method.setAccessible(true); + MethodHandle handle = MethodHandles.lookup().unreflect(method).bindTo(subscriber).asType(LISTENER_TYPE); + found.add(new ListenerEntry(method, subscriber, paramTypes[0], handle)); + } catch (Throwable ignored) { } } } } - if (!var9.isEmpty()) { + if (!found.isEmpty()) { synchronized (this.lock) { - if (!d(new Object[]{this.listeners, var4, var5})) { - HashMap var25 = new HashMap(this.listeners); + if (!isRegistered(this.listeners, subscriber)) { + HashMap updated = new HashMap(this.listeners); - for (ListenerEntry var27 : (Iterable)(var9)) { - ListenerEntry[] var28 = (ListenerEntry[])var25.get(var27.a_Class(new Object[0])); - ListenerEntry[] var29; - if (var28 == null) { - var29 = new ListenerEntry[]{var27}; + for (ListenerEntry entry : (Iterable)(found)) { + ListenerEntry[] existing = (ListenerEntry[])updated.get(entry.getEventType()); + ListenerEntry[] merged; + if (existing == null) { + merged = new ListenerEntry[]{entry}; } else { - var29 = new ListenerEntry[var28.length + 1]; - System.arraycopy(var28, 0, var29, 0, var28.length); - var29[var28.length] = var27; + merged = new ListenerEntry[existing.length + 1]; + System.arraycopy(existing, 0, merged, 0, existing.length); + merged[existing.length] = entry; } - var25.put(var27.a_Class(new Object[0]), var29); + updated.put(entry.getEventType(), merged); } - this.listeners = var25; + this.listeners = updated; } } } @@ -74,88 +68,77 @@ public class EventBus { } } - public void unregister(Object[] var1) { - Object var4 = var1[0]; - if (var4 != null) { + public void unregister(Object subscriber) { + if (subscriber != null) { synchronized (this.lock) { - HashMap var7 = new HashMap(this.listeners); - boolean var8 = false; + HashMap updated = new HashMap(this.listeners); + boolean changed = false; - for (Entry var10 : (Iterable)(new ArrayList(var7.entrySet()))) { - ListenerEntry[] var11 = (ListenerEntry[])var10.getValue(); - int var12 = 0; + for (Entry bucket : (Iterable)(new ArrayList(updated.entrySet()))) { + ListenerEntry[] entries = (ListenerEntry[])bucket.getValue(); + int remaining = 0; - for (ListenerEntry var16 : var11) { - if (var16.a_Object(new Object[0]) != var4) { - var12++; + for (ListenerEntry entry : entries) { + if (entry.getTarget() != subscriber) { + remaining++; } } - if (var12 != var11.length) { - var8 = true; - if (var12 == 0) { - var7.remove(var10.getKey()); + if (remaining != entries.length) { + changed = true; + if (remaining == 0) { + updated.remove(bucket.getKey()); } else { - ListenerEntry[] var21 = new ListenerEntry[var12]; - int var22 = 0; + ListenerEntry[] kept = new ListenerEntry[remaining]; + int index = 0; - for (ListenerEntry var18 : var11) { - if (var18.a_Object(new Object[0]) != var4) { - var21[var22++] = var18; + for (ListenerEntry candidate : entries) { + if (candidate.getTarget() != subscriber) { + kept[index++] = candidate; } } - var7.put((Class)var10.getKey(), var21); + updated.put((Class)bucket.getKey(), kept); } } } - if (var8) { - this.listeners = var7; + if (changed) { + this.listeners = updated; } } } } - public boolean post(Object[] var1) { - Event var4 = (Event)var1[0]; - long var2 = (Long)var1[1]; - var2 = 114818700636565L ^ var2; - long var5 = var2 ^ 52036292005796L; - Event.b(); - ListenerEntry[] var8 = (ListenerEntry[])this.listeners.get(var4.getClass()); - if (var8 == null) { - return var4.a_boolean___(new Object[0]); + public boolean post(Event event) { + ListenerEntry[] entries = (ListenerEntry[])this.listeners.get(event.getClass()); + if (entries == null) { + return event.isCancelled(); } else { - for (ListenerEntry var12 : var8) { + for (ListenerEntry entry : entries) { try { - var12.a_MethodHandle(new Object[0]).invokeExact((Event)var4); - } catch (Throwable var14) { - c(new Object[]{var12, var14, var5}); + entry.getHandle().invokeExact(event); + } catch (Throwable error) { + logListenerFailure(entry, error); } } - return var4.a_boolean___(new Object[0]); + return event.isCancelled(); } } - public boolean hasListeners(Object[] var1) { - Class var4 = (Class)var1[0]; - Event.b(); - ListenerEntry[] var6 = (ListenerEntry[])this.listeners.get(var4); - return var6 != null && var6.length > 0; + public boolean hasListeners(Class eventType) { + ListenerEntry[] entries = (ListenerEntry[])this.listeners.get(eventType); + return entries != null && entries.length > 0; } - public boolean hasListenerOfType(Object[] var1) { - Class var5 = (Class)var1[0]; - Class var4 = (Class)var1[1]; - Event.b(); - ListenerEntry[] var7 = (ListenerEntry[])this.listeners.get(var5); - if (var7 == null) { + public boolean hasListenerOfType(Class eventType, Class ownerType) { + ListenerEntry[] entries = (ListenerEntry[])this.listeners.get(eventType); + if (entries == null) { return false; } else { - for (ListenerEntry var11 : var7) { - if (var4.isInstance(var11.a_Object(new Object[0]))) { + for (ListenerEntry entry : entries) { + if (ownerType.isInstance(entry.getTarget())) { return true; } } @@ -164,14 +147,10 @@ public class EventBus { } } - private static boolean d(Object[] var0) { - Map var1 = (Map)var0[0]; - Object var4 = var0[1]; - Event.b(); - - for (ListenerEntry[] var7 : (Iterable)(var1.values())) { - for (ListenerEntry var11 : var7) { - if (var11.a_Object(new Object[0]) == var4) { + private static boolean isRegistered(Map listenerMap, Object subscriber) { + for (ListenerEntry[] entries : (Iterable)(listenerMap.values())) { + for (ListenerEntry entry : entries) { + if (entry.getTarget() == subscriber) { return true; } } @@ -180,103 +159,16 @@ public class EventBus { return false; } - private static void c(Object[] var0) { - ListenerEntry var4 = (ListenerEntry)var0[0]; - Throwable var3 = (Throwable)var0[1]; - Event.b(); - String var6 = var4.a_Object(new Object[0]).getClass().getName() + "#" + var4.a(new Object[0]).getName(); - if (d.add(var6 + ":" + var3.getClass().getName())) { - System.err.println(g + var6); - var3.printStackTrace(); + private static void logListenerFailure(ListenerEntry entry, Throwable error) { + String listenerName = entry.getTarget().getClass().getName() + "#" + entry.getMethod().getName(); + if (LOGGED_FAILURES.add(listenerName + ":" + error.getClass().getName())) { + System.err.println(LISTENER_ERROR_PREFIX + listenerName); + error.printStackTrace(); } } static { - c = MethodType.methodType(void.class, Event.class); - d = ConcurrentHashMap.newKeySet(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Object[] b() { - return new Object[0]; - } - - private static Object[] a(Object var0, Object var1) { - return new Object[]{var0, var1}; - } - - private static Object[] a(Object var0) { - return new Object[]{var0}; - } - - private static Throwable a(Throwable var0) { - return var0; + LISTENER_TYPE = MethodType.methodType(void.class, Event.class); + LOGGED_FAILURES = ConcurrentHashMap.newKeySet(); } } diff --git a/src/main/java/dev/zprestige/prestige/FloatSetting.java b/src/main/java/dev/zprestige/prestige/FloatSetting.java index e2a21f7..0bf12d0 100644 --- a/src/main/java/dev/zprestige/prestige/FloatSetting.java +++ b/src/main/java/dev/zprestige/prestige/FloatSetting.java @@ -1,8 +1,6 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; public class FloatSetting extends Setting { @@ -15,10 +13,10 @@ public class FloatSetting extends Setting { private final float min; private final float max; - public FloatSetting(String var1, float var2, float var3, float var4) { - super(var1, var2); - this.min = var3; - this.max = var4; + public FloatSetting(String settingName, float defaultValue, float minValue, float maxValue) { + super(settingName, defaultValue); + this.min = minValue; + this.max = maxValue; } @Chainable @@ -31,100 +29,25 @@ public class FloatSetting extends Setting { return this.max; } - public FloatSetting setVisibility_FloatSetting(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - long var3 = (Long)var1[1]; - var3 = 123628267853707L ^ var3; - long var5 = var3 ^ 130072979389281L; - super.setVisibility(new Object[]{var2, var5}); + public FloatSetting visibleWhen(Predicate visibilityPredicate) { + super.setVisibility(visibilityPredicate); return this; } @Chainable - public FloatSetting setDescription_FloatSetting(String var1) { - super.setDescription(var1); + public FloatSetting withDescription(String newDescription) { + super.setDescription(newDescription); return this; } @Override - public Setting setVisibility(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - long var3 = (Long)var1[1]; - long var5 = var3 ^ 6857104452842L; - return this.setVisibility_FloatSetting(new Object[]{var2, var5}); + public Setting setVisibility(Predicate visibilityPredicate) { + return this.visibleWhen(visibilityPredicate); } @Chainable @Override - public Setting setDescription(String var1) { - return this.setDescription_FloatSetting(var1); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public Setting setDescription(String newDescription) { + return this.withDescription(newDescription); } } diff --git a/src/main/java/dev/zprestige/prestige/Gamemode.java b/src/main/java/dev/zprestige/prestige/Gamemode.java index 38e109f..b703704 100644 --- a/src/main/java/dev/zprestige/prestige/Gamemode.java +++ b/src/main/java/dev/zprestige/prestige/Gamemode.java @@ -1,8 +1,5 @@ package dev.zprestige.prestige; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - public enum Gamemode { Crystal, Mace, @@ -11,76 +8,4 @@ public enum Gamemode { UHC, Cart, Any; - - static { - Object[] var10001 = new Object[]{0L}; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/IntSetting.java b/src/main/java/dev/zprestige/prestige/IntSetting.java index ada0b92..1d7910a 100644 --- a/src/main/java/dev/zprestige/prestige/IntSetting.java +++ b/src/main/java/dev/zprestige/prestige/IntSetting.java @@ -1,8 +1,6 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; public class IntSetting extends Setting { @@ -15,10 +13,10 @@ public class IntSetting extends Setting { private final int min; private final int max; - public IntSetting(String var1, int var2, int var3, int var4) { - super(var1, var2); - this.min = var3; - this.max = var4; + public IntSetting(String settingName, int defaultValue, int minValue, int maxValue) { + super(settingName, defaultValue); + this.min = minValue; + this.max = maxValue; } @Chainable @@ -31,100 +29,25 @@ public class IntSetting extends Setting { return this.max; } - public IntSetting setVisibility_IntSetting(Object[] var1) { - Predicate var4 = (Predicate)var1[0]; - long var2 = (Long)var1[1]; - var2 = 3997353521073L ^ var2; - long var5 = var2 ^ 73798710165983L; - super.setVisibility(new Object[]{var4, var5}); + public IntSetting visibleWhen(Predicate visibilityPredicate) { + super.setVisibility(visibilityPredicate); return this; } @Chainable - public IntSetting setDescription_IntSetting(String var1) { - super.setDescription(var1); + public IntSetting withDescription(String newDescription) { + super.setDescription(newDescription); return this; } @Override - public Setting setVisibility(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - long var3 = (Long)var1[1]; - long var5 = var3 ^ 71176956259950L; - return this.setVisibility_IntSetting(new Object[]{var2, var5}); + public Setting setVisibility(Predicate visibilityPredicate) { + return this.visibleWhen(visibilityPredicate); } @Chainable @Override - public Setting setDescription(String var1) { - return this.setDescription_IntSetting(var1); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public Setting setDescription(String newDescription) { + return this.withDescription(newDescription); } } diff --git a/src/main/java/dev/zprestige/prestige/KeybindSetting.java b/src/main/java/dev/zprestige/prestige/KeybindSetting.java index 44fcfb9..03d3ace 100644 --- a/src/main/java/dev/zprestige/prestige/KeybindSetting.java +++ b/src/main/java/dev/zprestige/prestige/KeybindSetting.java @@ -1,8 +1,6 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; import net.minecraft.client.MinecraftClient; import org.lwjgl.glfw.GLFW; @@ -14,126 +12,47 @@ public class KeybindSetting extends Setting { return (Integer)super.getValue(); } - private boolean toggleMode; + private boolean holdMode; - public KeybindSetting(String var1, int var2) { - super(var1, var2); + public KeybindSetting(String settingName, int defaultKey) { + super(settingName, defaultKey); } @Chainable - public boolean isToggleMode() { - return this.toggleMode; + public boolean isHoldMode() { + return this.holdMode; } @Chainable - public void setToggleMode(boolean var1) { - this.toggleMode = var1; + public void setHoldMode(boolean hold) { + this.holdMode = hold; } - public KeybindSetting setVisibility_KeybindSetting(Object[] var1) { - Predicate var4 = (Predicate)var1[0]; - long var2 = (Long)var1[1]; - var2 = 99049240658274L ^ var2; - long var5 = var2 ^ 41186392833473L; - super.setVisibility(new Object[]{var4, var5}); + public KeybindSetting visibleWhen(Predicate visibilityPredicate) { + super.setVisibility(visibilityPredicate); return this; } @Chainable - public KeybindSetting setDescription_KeybindSetting(String var1) { - super.setDescription(var1); + public KeybindSetting withDescription(String newDescription) { + super.setDescription(newDescription); return this; } - public boolean isPressed(Object[] var1) { + public boolean isPressed() { return this.getValue() != -1 && this.getValue() > 9994 - ? GLFW.glfwGetMouseButton(MinecraftClient.getInstance().getWindow().getHandle(), 9999 - (Integer)this.getValue()) == 1 - : GLFW.glfwGetKey(MinecraftClient.getInstance().getWindow().getHandle(), (Integer)this.getValue()) == 1; + ? GLFW.glfwGetMouseButton(MinecraftClient.getInstance().getWindow().getHandle(), 9999 - this.getValue()) == 1 + : GLFW.glfwGetKey(MinecraftClient.getInstance().getWindow().getHandle(), this.getValue()) == 1; } @Override - public Setting setVisibility(Object[] var1) { - Predicate var4 = (Predicate)var1[0]; - long var2 = (Long)var1[1]; - long var5 = var2 ^ 140053625863331L; - return this.setVisibility_KeybindSetting(new Object[]{var4, var5}); + public Setting setVisibility(Predicate visibilityPredicate) { + return this.visibleWhen(visibilityPredicate); } @Chainable @Override - public Setting setDescription(String var1) { - return this.setDescription_KeybindSetting(var1); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static MatchException b(MatchException var0) { - return var0; + public Setting setDescription(String newDescription) { + return this.withDescription(newDescription); } } diff --git a/src/main/java/dev/zprestige/prestige/ListenerEntry.java b/src/main/java/dev/zprestige/prestige/ListenerEntry.java index 89737aa..781af65 100644 --- a/src/main/java/dev/zprestige/prestige/ListenerEntry.java +++ b/src/main/java/dev/zprestige/prestige/ListenerEntry.java @@ -9,30 +9,30 @@ public class ListenerEntry { private final Class eventType; private final MethodHandle handle; - public ListenerEntry(Method var1, Object var2, Class var3) { - this(var1, var2, var3, null); + public ListenerEntry(Method subscriberMethod, Object subscriber, Class subscribedType) { + this(subscriberMethod, subscriber, subscribedType, null); } - public ListenerEntry(Method var1, Object var2, Class var3, MethodHandle var4) { - this.method = var1; - this.target = var2; - this.eventType = var3; - this.handle = var4; + public ListenerEntry(Method subscriberMethod, Object subscriber, Class subscribedType, MethodHandle boundHandle) { + this.method = subscriberMethod; + this.target = subscriber; + this.eventType = subscribedType; + this.handle = boundHandle; } - public Method a(Object[] var1) { + public Method getMethod() { return this.method; } - public Object a_Object(Object[] var1) { + public Object getTarget() { return this.target; } - public Class a_Class(Object[] var1) { + public Class getEventType() { return this.eventType; } - public MethodHandle a_MethodHandle(Object[] var1) { + public MethodHandle getHandle() { return this.handle; } } diff --git a/src/main/java/dev/zprestige/prestige/MenuModule.java b/src/main/java/dev/zprestige/prestige/MenuModule.java index 9d26a40..edd7cc1 100644 --- a/src/main/java/dev/zprestige/prestige/MenuModule.java +++ b/src/main/java/dev/zprestige/prestige/MenuModule.java @@ -1,8 +1,6 @@ package dev.zprestige.prestige; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; public class MenuModule extends Module { private final KeybindSetting menuKey; @@ -12,99 +10,25 @@ public class MenuModule extends Module { public MenuModule() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - Object[] var10006 = new Object[]{null, null, 137970699205822L}; - var10006[1] = 161; - var10006[0] = "Menu Key"; - this.menuKey = this.addKeybind(var10006); - this.descriptionMode = this.addEnum(new Object[]{"Descriptions", "Mouse", new String[]{"Mouse", "Search Bar"}, 85198277421524L}); - var10006 = new Object[]{null, null, 136800689510088L}; - var10006[1] = false; - var10006[0] = "Rounded"; - this.rounded = this.addBool(var10006); - this.menuColor = this.addColor(new Object[]{"Menu Color", new Color(131, 118, 252), 17358566314135L}); + this.menuKey = this.addKeybind("Menu Key", 161); + this.descriptionMode = this.addEnum("Descriptions", "Mouse", new String[]{"Mouse", "Search Bar"}); + this.rounded = this.addBool("Rounded", false); + this.menuColor = this.addColor("Menu Color", new Color(131, 118, 252)); } - public KeybindSetting getMenuKey(Object[] var1) { + public KeybindSetting getMenuKey() { return this.menuKey; } - public EnumSetting getDescriptionMode(Object[] var1) { + public EnumSetting getDescriptionMode() { return this.descriptionMode; } - public BoolSetting getRounded(Object[] var1) { + public BoolSetting getRounded() { return this.rounded; } - public ColorSetting getMenuColor(Object[] var1) { + public ColorSetting getMenuColor() { return this.menuColor; } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/Module.java b/src/main/java/dev/zprestige/prestige/Module.java index 3fefcfd..0fb23c1 100644 --- a/src/main/java/dev/zprestige/prestige/Module.java +++ b/src/main/java/dev/zprestige/prestige/Module.java @@ -3,17 +3,14 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; import dev.zprestige.prestige.annotation.NativeId; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; import dev.zprestige.prestige.hud.ModuleNotificationsElement; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.MinecraftAccess; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; -public class Module extends SettingHolder implements RenderContract2 { +public class Module extends SettingHolder implements MinecraftAccess { private final List coreSettings = new ArrayList(); private final BoolSetting enabledSetting = new BoolSetting("Enabled", false); private String name; @@ -24,139 +21,120 @@ public class Module extends SettingHolder implements RenderContract2 { private volatile List allSettingsCache; public Module() { - this.keybind = new KeybindSetting("Bind", -1).setDescription_KeybindSetting("Keybind for " + this.name); + this.keybind = new KeybindSetting("Bind", -1).withDescription("Keybind for " + this.name); this.coreSettings.add(this.enabledSetting); this.coreSettings.add(this.keybind); } - public Module(String var1, String var2, int var3) { + public Module(String moduleName, String moduleDescription, int categoryOrdinal) { this(); - Event.b(); - this.name = var1; - this.description = var2; + this.name = moduleName; + this.description = moduleDescription; - for (Category var10 : Category.values()) { - if (var10.ordinal() == var3) { - this.category = var10; + for (Category candidate : Category.values()) { + if (candidate.ordinal() == categoryOrdinal) { + this.category = candidate; break; } } } @NativeId("") - public void a(Object var1, String var2, String var3, int var4) { - if (var1 != null) { - this.settings.add((Setting)var1); + public void injectFromNative(Object injectedSetting, String moduleName, String moduleDescription, int categoryOrdinal) { + if (injectedSetting != null) { + this.settings.add((Setting)injectedSetting); this.allSettingsCache = null; } else { - this.name = var2; - this.description = var3; - this.category = Arrays.stream(Category.values()).filter(lpL71_0 -> ((dev.zprestige.prestige.Category)lpL71_0).ordinal() == var4).findFirst().orElse(this.category); + this.name = moduleName; + this.description = moduleDescription; + this.category = Arrays.stream(Category.values()).filter(candidate -> candidate.ordinal() == categoryOrdinal).findFirst().orElse(this.category); } } @Chainable public boolean isEnabled() { - return (Boolean)this.enabledSetting.getValue(); + return this.enabledSetting.getValue(); } - public int getKey(Object[] var1) { - return (Integer)this.keybind.getValue(); + public int getKey() { + return this.keybind.getValue(); } - public KeybindSetting getKeybind(Object[] var1) { + public KeybindSetting getKeybind() { return this.keybind; } - public void toggle(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 55958956532363L; - long var6 = var2 ^ 15872977247914L; - long var8 = var2 ^ 22594282158762L; - long var10 = var2 ^ 37299566365261L; - long var12 = var2 ^ 75993416544364L; - long var14 = var2 ^ 86929222885577L; - long var16 = var2 ^ 79146057582229L; + public void toggle() { this.enabledSetting.setValue(!this.isEnabled()); - this.setLastEnabled(new Object[]{this.isEnabled()}); + this.setLastEnabled(this.isEnabled()); if (this.isEnabled()) { - Prestige.eventBus.register(new Object[]{this, var6}); - if (b.world != null && b.player != null) { - this.onEnable(new Object[]{var8}); + Prestige.eventBus.register(this); + if (mc.world != null && mc.player != null) { + this.onEnable(); } else { - Prestige.moduleManager.queueEnable(new Object[]{this, var12}); + Prestige.moduleManager.queueEnable(this); } } else { - Prestige.eventBus.unregister(new Object[]{this, var4}); - if (b.world != null && b.player != null) { - this.onDisable(new Object[]{var14}); + Prestige.eventBus.unregister(this); + if (mc.world != null && mc.player != null) { + this.onDisable(); } else { - Prestige.moduleManager.queueDisable(new Object[]{this, var16}); + Prestige.moduleManager.queueDisable(this); } } - ModuleNotificationsElement.r(new Object[]{this, var10}); + ModuleNotificationsElement.notifyToggle(this); } - public void applyState(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 25781655103684L ^ var2; - long var4 = var2 ^ 120644081699938L; - long var6 = var2 ^ 89278968246339L; - long var8 = var2 ^ 83365083665475L; - long var10 = var2 ^ 139299437470884L; - long var12 = var2 ^ 28865644895877L; - long var14 = var2 ^ 17947047808544L; - long var16 = var2 ^ 27105383311484L; + public void applyState() { if (this.isEnabled()) { - Prestige.eventBus.register(new Object[]{this, var6}); - if (b.world != null && b.player != null) { - this.onEnable(new Object[]{var8}); + Prestige.eventBus.register(this); + if (mc.world != null && mc.player != null) { + this.onEnable(); } else { - Prestige.moduleManager.queueEnable(new Object[]{this, var12}); + Prestige.moduleManager.queueEnable(this); } } else { - Prestige.eventBus.unregister(new Object[]{this, var4}); - if (b.world != null && b.player != null) { - this.onDisable(new Object[]{var14}); + Prestige.eventBus.unregister(this); + if (mc.world != null && mc.player != null) { + this.onDisable(); } else { - Prestige.moduleManager.queueDisable(new Object[]{this, var16}); + Prestige.moduleManager.queueDisable(this); } } - ModuleNotificationsElement.r(new Object[]{this, var10}); + ModuleNotificationsElement.notifyToggle(this); } - public void dispose(Object[] var1) { + public void dispose() { this.name = null; - Event.b(); this.description = null; - ArrayList var5 = new ArrayList(); - var5.addAll(this.settings); - var5.addAll(this.coreSettings); + ArrayList allSettings = new ArrayList(); + allSettings.addAll(this.settings); + allSettings.addAll(this.coreSettings); - for (Setting var7 : (Iterable)(var5)) { - var7.setName(new Object[]{null}); - var7.setDescription(null); - var7.setValue(null); + for (Setting setting : (Iterable)(allSettings)) { + setting.setName(null); + setting.setDescription(null); + setting.setValue(null); } } - public void onEnable(Object[] var1) { + public void onEnable() { } - public void onDisable(Object[] var1) { + public void onDisable() { } - public boolean b(Object[] var1) { + public boolean isPersistent() { return true; } - public String getInfo(Object[] var1) { + public String getInfo() { return ""; } - public List getCoreSettings(Object[] var1) { + public List getCoreSettings() { return this.coreSettings; } @@ -165,9 +143,8 @@ public class Module extends SettingHolder implements RenderContract2 { return this.name; } - public void setName(Object[] var1) { - String var2 = (String)var1[0]; - this.name = var2; + public void setName(String newName) { + this.name = newName; } @Chainable @@ -175,9 +152,8 @@ public class Module extends SettingHolder implements RenderContract2 { return this.description; } - public void setDescription(Object[] var1) { - String var2 = (String)var1[0]; - this.description = var2; + public void setDescription(String newDescription) { + this.description = newDescription; } @Chainable @@ -185,123 +161,47 @@ public class Module extends SettingHolder implements RenderContract2 { return this.category; } - public void setCategory(Object[] var1) { - Category var2 = (Category)var1[0]; - this.category = var2; + public void setCategory(Category newCategory) { + this.category = newCategory; } - public boolean getLastEnabled(Object[] var1) { + public boolean getLastEnabled() { return this.lastEnabled; } - public void setLastEnabled(Object[] var1) { - boolean var2 = (Boolean)var1[0]; - this.lastEnabled = var2; + public void setLastEnabled(boolean wasEnabled) { + this.lastEnabled = wasEnabled; } @Chainable public List getSettings() { - Event.b(); - List var4 = this.allSettingsCache; - if (var4 == null) { - ArrayList var5 = new ArrayList(this.coreSettings.size() + this.settings.size()); - var5.addAll(this.coreSettings); - var5.addAll(this.settings); - var4 = List.copyOf(var5); - this.allSettingsCache = var4; + List cachedSettings = this.allSettingsCache; + if (cachedSettings == null) { + ArrayList combinedSettings = new ArrayList(this.coreSettings.size() + this.settings.size()); + combinedSettings.addAll(this.coreSettings); + combinedSettings.addAll(this.settings); + cachedSettings = List.copyOf(combinedSettings); + this.allSettingsCache = cachedSettings; } - return var4; + return cachedSettings; } - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Any); } @Chainable public int getGamemodeMask() { - Set var6 = this.getGamemodes(new Object[]{33917734280704L}); - Event.b(); - int var7 = 0; + Set gamemodes = this.getGamemodes(); + int gamemodeMask = 0; - for (Gamemode var9 : (Iterable)(var6)) { - if (var9 != Gamemode.Any) { - var7 |= 1 << var9.ordinal(); + for (Gamemode gamemode : (Iterable)(gamemodes)) { + if (gamemode != Gamemode.Any) { + gamemodeMask |= 1 << gamemode.ordinal(); } } - return var7; - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static MatchException b(MatchException var0) { - return var0; + return gamemodeMask; } } diff --git a/src/main/java/dev/zprestige/prestige/ModuleManager.java b/src/main/java/dev/zprestige/prestige/ModuleManager.java index b825d15..46f3242 100644 --- a/src/main/java/dev/zprestige/prestige/ModuleManager.java +++ b/src/main/java/dev/zprestige/prestige/ModuleManager.java @@ -2,64 +2,57 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.render.RenderContract2; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.render.MinecraftAccess; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue; -public class ModuleManager implements RenderContract2 { +public class ModuleManager implements MinecraftAccess { private final MenuModule menu; private List modules; private final ConcurrentLinkedQueue enableQueue; private final ConcurrentLinkedQueue disableQueue; - public static boolean f = true; + public static boolean headTickFallback = true; - public ModuleManager(long var1) { + public ModuleManager() { super(); - var1 = 0L; - var1 = 22310984220293L ^ var1; - long var3 = var1 ^ 31757000116027L; this.menu = new MenuModule(); this.modules = new ArrayList(); this.enableQueue = new ConcurrentLinkedQueue(); this.disableQueue = new ConcurrentLinkedQueue(); - Prestige.eventBus.register(new Object[]{this, var3}); + Prestige.eventBus.register(this); } @Subscribe - public void onTick(TickEvent19 var1) { - if (b.world != null && b.player != null) { + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { while (!this.enableQueue.isEmpty()) { - Module var9 = (Module)this.enableQueue.poll(); - if (var9 != null && var9.isEnabled()) { - var9.onEnable(new Object[]{136490818940166L}); + Module pendingEnable = (Module)this.enableQueue.poll(); + if (pendingEnable != null && pendingEnable.isEnabled()) { + pendingEnable.onEnable(); } } while (!this.disableQueue.isEmpty()) { - Module var10 = (Module)this.disableQueue.poll(); - if (var10 != null && !var10.isEnabled()) { - var10.onDisable(new Object[]{43569551062885L}); + Module pendingDisable = (Module)this.disableQueue.poll(); + if (pendingDisable != null && !pendingDisable.isEnabled()) { + pendingDisable.onDisable(); } } } } - public void queueEnable(Object[] var1) { - Module var4 = (Module)var1[0]; - if (!this.enableQueue.contains(var4)) { - this.enableQueue.offer(var4); + public void queueEnable(Module module) { + if (!this.enableQueue.contains(module)) { + this.enableQueue.offer(module); } } - public void queueDisable(Object[] var1) { - Module var4 = (Module)var1[0]; - if (!this.disableQueue.contains(var4)) { - this.disableQueue.offer(var4); + public void queueDisable(Module module) { + if (!this.disableQueue.contains(module)) { + this.disableQueue.offer(module); } } @@ -69,89 +62,21 @@ public class ModuleManager implements RenderContract2 { } @Chainable - public void setModules(List var1) { - this.modules = var1; + public void setModules(List moduleList) { + this.modules = moduleList; } - public MenuModule getMenu(Object[] var1) { + public MenuModule getMenu() { return this.menu; } @Chainable - public void setMenuColor(Color var1) { - this.menu.getMenuColor(new Object[0]).setValue(var1); + public void setMenuColor(Color color) { + this.menu.getMenuColor().setValue(color); } @Chainable - public void setMenuKey(int var1) { - this.menu.getMenuKey(new Object[0]).setValue(var1); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void setMenuKey(int key) { + this.menu.getMenuKey().setValue(key); } } diff --git a/src/main/java/dev/zprestige/prestige/MultiSetting.java b/src/main/java/dev/zprestige/prestige/MultiSetting.java index fe05bfa..fd85f92 100644 --- a/src/main/java/dev/zprestige/prestige/MultiSetting.java +++ b/src/main/java/dev/zprestige/prestige/MultiSetting.java @@ -1,9 +1,6 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import java.util.function.Predicate; @@ -19,15 +16,14 @@ public class MultiSetting extends Setting { private final boolean[] selected; private final Map indexByOption; - public MultiSetting(String var1, String[] var2, boolean[] var3) { - super(var1, ""); - Event.b(); - this.options = var2; - this.selected = var3; - this.indexByOption = new HashMap(var2.length * 2); + public MultiSetting(String settingName, String[] optionValues, boolean[] defaultSelection) { + super(settingName, ""); + this.options = optionValues; + this.selected = defaultSelection; + this.indexByOption = new HashMap(optionValues.length * 2); - for (int var7 = 0; var7 < var2.length; var7++) { - this.indexByOption.put(var2[var7], var7); + for (int index = 0; index < optionValues.length; index++) { + this.indexByOption.put(optionValues[index], index); } } @@ -36,24 +32,22 @@ public class MultiSetting extends Setting { return this.options; } - public boolean isSelected(Object[] var1) { - String var2 = (String)var1[0]; - Integer var5 = (Integer)this.indexByOption.get(var2); - if (var5 == null) { - throw new IllegalArgumentException("Value not found: " + var2); + public boolean isSelected(String option) { + Integer optionIndex = (Integer)this.indexByOption.get(option); + if (optionIndex == null) { + throw new IllegalArgumentException("Value not found: " + option); } else { - return this.selected[var5]; + return this.selected[optionIndex]; } } @Chainable - public void setSelected(String var1, boolean var2) { - Event.b(); - Integer var6 = (Integer)this.indexByOption.get(var1); - if (var6 == null) { - throw new IllegalArgumentException("Value not found: " + var1); + public void setSelected(String option, boolean selectedState) { + Integer optionIndex = (Integer)this.indexByOption.get(option); + if (optionIndex == null) { + throw new IllegalArgumentException("Value not found: " + option); } else { - this.selected[var6] = var2; + this.selected[optionIndex] = selectedState; } } @@ -62,104 +56,25 @@ public class MultiSetting extends Setting { return this.selected; } - public MultiSetting setVisibility_MultiSetting(Object[] var1) { - Predicate var4 = (Predicate)var1[0]; - long var2 = (Long)var1[1]; - var2 = 89151985553059L ^ var2; - long var5 = var2 ^ 96972061473817L; - super.setVisibility(new Object[]{var4, var5}); + public MultiSetting visibleWhen(Predicate visibilityPredicate) { + super.setVisibility(visibilityPredicate); return this; } @Chainable - public MultiSetting setDescription_MultiSetting(String var1) { - super.setDescription(var1); + public MultiSetting withDescription(String newDescription) { + super.setDescription(newDescription); return this; } @Override - public Setting setVisibility(Object[] var1) { - Predicate var4 = (Predicate)var1[0]; - long var2 = (Long)var1[1]; - long var5 = var2 ^ 10064201577146L; - return this.setVisibility_MultiSetting(new Object[]{var4, var5}); + public Setting setVisibility(Predicate visibilityPredicate) { + return this.visibleWhen(visibilityPredicate); } @Chainable @Override - public Setting setDescription(String var1) { - return this.setDescription_MultiSetting(var1); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static IllegalArgumentException a(IllegalArgumentException var0) { - return var0; + public Setting setDescription(String newDescription) { + return this.withDescription(newDescription); } } diff --git a/src/main/java/dev/zprestige/prestige/Native.java b/src/main/java/dev/zprestige/prestige/Native.java index 8f15049..d129d1d 100644 --- a/src/main/java/dev/zprestige/prestige/Native.java +++ b/src/main/java/dev/zprestige/prestige/Native.java @@ -4,46 +4,46 @@ import dev.zprestige.prestige.annotation.NativeId; import java.util.List; public class Native { - public static Class a; + public static Class callbackClass; @NativeId("f29b5f2e-3df2-4db8-bb6e-1c01a5f91f12") - public static void a(List var0) { + public static void registerModules(List modules) { } @NativeId("6937e6e7-60ef-45de-98e1-f177ec613e99") - public static void b(int var0, StringBuilder var1) { + public static void fetchString(int id, StringBuilder out) { } @NativeId("c4f1db16-7850-44eb-8f8a-863dfe33ab26") - public static void c(StringBuilder var0) { + public static void fetchStatus(StringBuilder out) { } @NativeId("774de945-aba3-4038-b5ae-d8ff48635feb") - public static void d(String var0, String var1, boolean var2, String var3, StringBuilder var4, String var5) { + public static void request(String key, String value, boolean flag, String extra, StringBuilder out, String context) { } @NativeId("b6356619-bb5a-4616-a076-93f620a7d9de") - public static void e(int var0, StringBuilder var1) { + public static void fetchText(int id, StringBuilder out) { } @NativeId("9ae73026-310d-4cbc-b283-12f3f530fe67") - public static void f(int var0, String var1, StringBuilder var2) { + public static void fetchField(int id, String key, StringBuilder out) { } @NativeId("08dcf01c-9943-4f66-8dfd-120714d7abdd") - public static void g(String var0) { + public static void submit(String message) { } @NativeId("018b2f19-e79e-7d6a-a56d-29feb6211b04") - public static void h() { + public static void onClientTick() { } @NativeId("70d16b96-40d4-4e4b-8d11-111b87ee88c2") - public static void i() { + public static void toggleMenu() { } @NativeId("0dfaa780-8d92-4e8f-aa2e-9dae747c4dd6") - public static boolean j() { + public static boolean isMenuOpen() { return false; } } diff --git a/src/main/java/dev/zprestige/prestige/RangeSetting.java b/src/main/java/dev/zprestige/prestige/RangeSetting.java index 6ebab19..3eb07be 100644 --- a/src/main/java/dev/zprestige/prestige/RangeSetting.java +++ b/src/main/java/dev/zprestige/prestige/RangeSetting.java @@ -1,9 +1,7 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.RandomUtil; import java.util.function.Predicate; public class RangeSetting extends Setting { @@ -19,13 +17,13 @@ public class RangeSetting extends Setting { private float high; private float rolled; - public RangeSetting(String var1, float var2, float var3, float var4, float var5) { - super(var1, var2); - this.low = var2; - this.high = var3; - this.min = var4; - this.max = var5; - this.rolled = var2; + public RangeSetting(String settingName, float defaultLow, float defaultHigh, float minValue, float maxValue) { + super(settingName, defaultLow); + this.low = defaultLow; + this.high = defaultHigh; + this.min = minValue; + this.max = maxValue; + this.rolled = defaultLow; } @Chainable @@ -34,8 +32,8 @@ public class RangeSetting extends Setting { } @Chainable - public void setLow(float var1) { - this.low = var1; + public void setLow(float newLow) { + this.low = newLow; } @Chainable @@ -44,8 +42,8 @@ public class RangeSetting extends Setting { } @Chainable - public void setHigh(float var1) { - this.high = var1; + public void setHigh(float newHigh) { + this.high = newHigh; } @Chainable @@ -58,128 +56,41 @@ public class RangeSetting extends Setting { return this.max; } - public float getRolled(Object[] var1) { + public float getRolled() { return this.rolled; } - public void setRolled(Object[] var1) { - float var2 = (Float)var1[0]; - this.rolled = var2; + public void setRolled(float newRolled) { + this.rolled = newRolled; } - public void reroll(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 104704689118488L ^ var2; - long var4 = var2 ^ 118870168785476L; - this.rolled = this.randomInRange(new Object[]{var4}); + public void reroll() { + this.rolled = this.randomInRange(); } - public float randomInRange(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 104704689118488L ^ var2; - long var4 = var2 ^ 76056962614760L; - float var10000 = this.low; - float var10001 = this.high; - Object[] var10004 = new Object[]{null, null, var4}; - var10004[1] = var10001; - var10004[0] = var10000; - return RenderUtil5.a(var10004); + public float randomInRange() { + return RandomUtil.randomFloat(this.low, this.high); } - public RangeSetting setVisibility_RangeSetting(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - long var3 = (Long)var1[1]; - var3 = 104704689118488L ^ var3; - long var5 = var3 ^ 113704341411105L; - super.setVisibility(new Object[]{var2, var5}); + public RangeSetting visibleWhen(Predicate visibilityPredicate) { + super.setVisibility(visibilityPredicate); return this; } @Chainable - public RangeSetting setDescription_RangeSetting(String var1) { - super.setDescription(var1); + public RangeSetting withDescription(String newDescription) { + super.setDescription(newDescription); return this; } @Override - public Setting setVisibility(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - long var3 = (Long)var1[1]; - long var5 = var3 ^ 61932072339513L; - return this.setVisibility_RangeSetting(new Object[]{var2, var5}); + public Setting setVisibility(Predicate visibilityPredicate) { + return this.visibleWhen(visibilityPredicate); } @Chainable @Override - public Setting setDescription(String var1) { - return this.setDescription_RangeSetting(var1); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public Setting setDescription(String newDescription) { + return this.withDescription(newDescription); } } diff --git a/src/main/java/dev/zprestige/prestige/Setting.java b/src/main/java/dev/zprestige/prestige/Setting.java index f44997c..96c1c4c 100644 --- a/src/main/java/dev/zprestige/prestige/Setting.java +++ b/src/main/java/dev/zprestige/prestige/Setting.java @@ -1,8 +1,6 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; public abstract class Setting { @@ -10,11 +8,10 @@ public abstract class Setting { private Object value; private String description; private Predicate visibility; - private static int[] e; - public Setting(String var1, Object var2) { - this.name = var1; - this.value = var2; + public Setting(String settingName, Object defaultValue) { + this.name = settingName; + this.value = defaultValue; } @Chainable @@ -22,9 +19,8 @@ public abstract class Setting { return this.name; } - public void setName(Object[] var1) { - String var2 = (String)var1[0]; - this.name = var2; + public void setName(String newName) { + this.name = newName; } @Chainable @@ -33,8 +29,8 @@ public abstract class Setting { } @Chainable - public void setValue(Object var1) { - this.value = var1; + public void setValue(Object newValue) { + this.value = newValue; } @Chainable @@ -43,14 +39,13 @@ public abstract class Setting { } @Chainable - public Setting setDescription(String var1) { - this.description = var1; + public Setting setDescription(String newDescription) { + this.description = newDescription; return this; } - public Setting setVisibility(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - this.visibility = var2; + public Setting setVisibility(Predicate visibilityPredicate) { + this.visibility = visibilityPredicate; return this; } @@ -58,84 +53,4 @@ public abstract class Setting { public boolean isVisible() { return this.visibility == null || this.visibility.test(this.getValue()); } - - public static void b(int[] var0) { - e = var0; - } - - public static int[] b() { - return e; - } - - static { - b(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/SettingHolder.java b/src/main/java/dev/zprestige/prestige/SettingHolder.java index ab77558..0e4b312 100644 --- a/src/main/java/dev/zprestige/prestige/SettingHolder.java +++ b/src/main/java/dev/zprestige/prestige/SettingHolder.java @@ -1,111 +1,32 @@ package dev.zprestige.prestige; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; public class SettingHolder { public final ArrayList settings = new ArrayList(); - public KeybindSetting addKeybind(Object[] var1) { - String var2 = (String)var1[0]; - int var5 = (Integer)var1[1]; - KeybindSetting var6 = new KeybindSetting(var2, var5); - this.settings.add(var6); - return var6; + public KeybindSetting addKeybind(String settingName, int defaultKey) { + KeybindSetting createdSetting = new KeybindSetting(settingName, defaultKey); + this.settings.add(createdSetting); + return createdSetting; } - public BoolSetting addBool(Object[] var1) { - String var2 = (String)var1[0]; - boolean var3 = (Boolean)var1[1]; - BoolSetting var6 = new BoolSetting(var2, var3); - this.settings.add(var6); - return var6; + public BoolSetting addBool(String settingName, boolean defaultValue) { + BoolSetting createdSetting = new BoolSetting(settingName, defaultValue); + this.settings.add(createdSetting); + return createdSetting; } - public EnumSetting addEnum(Object[] var1) { - String var4 = (String)var1[0]; - String var2 = (String)var1[1]; - String[] var3 = (String[])var1[2]; - EnumSetting var7 = new EnumSetting(var4, var2, var3); - this.settings.add(var7); - return var7; + public EnumSetting addEnum(String settingName, String defaultOption, String[] optionValues) { + EnumSetting createdSetting = new EnumSetting(settingName, defaultOption, optionValues); + this.settings.add(createdSetting); + return createdSetting; } - public ColorSetting addColor(Object[] var1) { - String var4 = (String)var1[0]; - Color var5 = (Color)var1[1]; - ColorSetting var6 = new ColorSetting(var4, var5); - this.settings.add(var6); - return var6; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public ColorSetting addColor(String settingName, Color defaultColor) { + ColorSetting createdSetting = new ColorSetting(settingName, defaultColor); + this.settings.add(createdSetting); + return createdSetting; } } diff --git a/src/main/java/dev/zprestige/prestige/TextSetting.java b/src/main/java/dev/zprestige/prestige/TextSetting.java index 30fad35..166ab06 100644 --- a/src/main/java/dev/zprestige/prestige/TextSetting.java +++ b/src/main/java/dev/zprestige/prestige/TextSetting.java @@ -1,8 +1,6 @@ package dev.zprestige.prestige; import dev.zprestige.prestige.annotation.Chainable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; public class TextSetting extends Setting { @@ -14,109 +12,34 @@ public class TextSetting extends Setting { private final String placeholder; - public TextSetting(String var1, String var2, String var3) { - super(var1, var2); - this.placeholder = var3; + public TextSetting(String settingName, String defaultText, String placeholderText) { + super(settingName, defaultText); + this.placeholder = placeholderText; } - public String getPlaceholder(Object[] var1) { + public String getPlaceholder() { return this.placeholder; } - public TextSetting setVisibility_TextSetting(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - long var3 = (Long)var1[1]; - var3 = 90219420051481L ^ var3; - long var5 = var3 ^ 38810053965316L; - super.setVisibility(new Object[]{var2, var5}); + public TextSetting visibleWhen(Predicate visibilityPredicate) { + super.setVisibility(visibilityPredicate); return this; } @Chainable - public TextSetting setDescription_TextSetting(String var1) { - super.setDescription(var1); + public TextSetting withDescription(String newDescription) { + super.setDescription(newDescription); return this; } @Override - public Setting setVisibility(Object[] var1) { - Predicate var4 = (Predicate)var1[0]; - long var2 = (Long)var1[1]; - long var5 = var2 ^ 124528063749661L; - return this.setVisibility_TextSetting(new Object[]{var4, var5}); + public Setting setVisibility(Predicate visibilityPredicate) { + return this.visibleWhen(visibilityPredicate); } @Chainable @Override - public Setting setDescription(String var1) { - return this.setDescription_TextSetting(var1); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public Setting setDescription(String newDescription) { + return this.withDescription(newDescription); } } diff --git a/src/main/java/dev/zprestige/prestige/client/Prestige.java b/src/main/java/dev/zprestige/prestige/client/Prestige.java index dd93d50..5077a55 100644 --- a/src/main/java/dev/zprestige/prestige/client/Prestige.java +++ b/src/main/java/dev/zprestige/prestige/client/Prestige.java @@ -4,247 +4,144 @@ import dev.zprestige.prestige.EventBus; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.ModuleManager; import dev.zprestige.prestige.Native; -import dev.zprestige.prestige.Setting; -import dev.zprestige.prestige.combat.AimManager; -import dev.zprestige.prestige.combat.DamageUtil; -import dev.zprestige.prestige.combat.RotationManager; -import dev.zprestige.prestige.combat.TargetManager; +import dev.zprestige.prestige.combat.ClickScheduler; +import dev.zprestige.prestige.combat.ExplosionDamageCalculator; +import dev.zprestige.prestige.combat.VisualRotationManager; +import dev.zprestige.prestige.combat.BotFilter; import dev.zprestige.prestige.combat.TargetTracker; import dev.zprestige.prestige.config.ConfigManager; -import dev.zprestige.prestige.event.EventManager; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.event.TickEvent25; -import dev.zprestige.prestige.event.TickEvent27; +import dev.zprestige.prestige.event.ModuleStateSync; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.event.Render2DEvent; +import dev.zprestige.prestige.event.Render3DEvent; import dev.zprestige.prestige.gui.ClickGuiScreen; import dev.zprestige.prestige.gui.HudEditorScreen; -import dev.zprestige.prestige.input.MouseManager; -import dev.zprestige.prestige.network.PacketManager; -import dev.zprestige.prestige.network.PacketQueue; -import dev.zprestige.prestige.network.PingManager; -import dev.zprestige.prestige.render.ESPUtil; +import dev.zprestige.prestige.input.KeybindManager; +import dev.zprestige.prestige.network.SilentSlotManager; +import dev.zprestige.prestige.network.InventorySwapQueue; +import dev.zprestige.prestige.network.TotemPopManager; +import dev.zprestige.prestige.render.EspShaderManager; import dev.zprestige.prestige.render.FontManager; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderContract5; -import dev.zprestige.prestige.render.RenderContract6; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderUtil; -import dev.zprestige.prestige.render.Renderer2D; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.RenderEvents; +import dev.zprestige.prestige.render.RenderCallback; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.RenderCore; +import dev.zprestige.prestige.render.SilentRotationManager; import dev.zprestige.prestige.social.FriendManager; -import dev.zprestige.prestige.util.BindManager; -import dev.zprestige.prestige.util.Timer; -import dev.zprestige.prestige.util.TpsTimer; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.util.SimulatedClickManager; +import dev.zprestige.prestige.util.FrameDeltaTimer; +import dev.zprestige.prestige.util.NotificationManager; import java.util.concurrent.atomic.AtomicBoolean; import net.fabricmc.api.ModInitializer; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ChatScreen; public class Prestige implements ModInitializer { - private static final AtomicBoolean a = new AtomicBoolean(false); + private static final AtomicBoolean initialized = new AtomicBoolean(false); public static EventBus eventBus; - public static FontManager c; + public static FontManager fontManager; public static ModuleManager moduleManager; - public static ConfigManager e; - public static DamageUtil f; - public static FriendManager g; - public static Timer h; - public static TargetManager i; - public static AimManager j; - public static ClickGuiScreen k; - public static HudEditorScreen l; - public static EventManager m; - public static TargetTracker n; - public static Renderer2D o; - public static RotationManager p; - public static BindManager q; - public static PingManager r; - public static MouseManager s; - public static PacketManager t; - public static PacketQueue u; - public static TpsTimer v; - public static boolean w = false; - private static Setting[] x; + public static ConfigManager configManager; + public static ExplosionDamageCalculator damageCalculator; + public static FriendManager friendManager; + public static FrameDeltaTimer frameDeltaTimer; + public static BotFilter botFilter; + public static ClickScheduler clickScheduler; + public static ClickGuiScreen clickGuiScreen; + public static HudEditorScreen hudEditorScreen; + public static ModuleStateSync moduleStateSync; + public static TargetTracker targetTracker; + public static SilentRotationManager silentRotationManager; + public static VisualRotationManager visualRotationManager; + public static SimulatedClickManager simulatedClickManager; + public static TotemPopManager totemPopManager; + public static KeybindManager keybindManager; + public static SilentSlotManager silentSlotManager; + public static InventorySwapQueue inventorySwapQueue; + public static NotificationManager notificationManager; + public static boolean selfDestructed = false; public void init() { - b(); - boolean var34 = false; + boolean partiallyInitialized = false; try { - if (a.compareAndSet(false, true)) { + if (initialized.compareAndSet(false, true)) { eventBus = new EventBus(); - moduleManager = new ModuleManager(121395157283000L); - Native.a(moduleManager.getModules()); - c = new FontManager(); - e = new ConfigManager(); - f = new DamageUtil(41691316515293L); - g = new FriendManager(); - h = new Timer(111601052018604L); - i = new TargetManager(137451367958631L); - j = new AimManager(); - k = new ClickGuiScreen(); - var34 = true; - l = new HudEditorScreen(90003821237034L); - m = new EventManager(53157928465092L); - n = new TargetTracker(139559845293095L); - o = new Renderer2D(112473680974252L); - p = new RotationManager(101976830556898L); - q = new BindManager(139206864016440L); - r = new PingManager(57309624251050L); - t = new PacketManager(117193470404248L); - u = new PacketQueue(87229227786379L); - s = new MouseManager(82291833307369L); - v = new TpsTimer(55175676787666L); - RenderUtil.g(new Object[]{Thread.currentThread()}); - RenderContract5.a + moduleManager = new ModuleManager(); + Native.registerModules(moduleManager.getModules()); + fontManager = new FontManager(); + configManager = new ConfigManager(); + damageCalculator = new ExplosionDamageCalculator(); + friendManager = new FriendManager(); + frameDeltaTimer = new FrameDeltaTimer(); + botFilter = new BotFilter(); + clickScheduler = new ClickScheduler(); + clickGuiScreen = new ClickGuiScreen(); + partiallyInitialized = true; + hudEditorScreen = new HudEditorScreen(); + moduleStateSync = new ModuleStateSync(); + targetTracker = new TargetTracker(); + silentRotationManager = new SilentRotationManager(); + visualRotationManager = new VisualRotationManager(); + simulatedClickManager = new SimulatedClickManager(); + totemPopManager = new TotemPopManager(); + silentSlotManager = new SilentSlotManager(); + inventorySwapQueue = new InventorySwapQueue(); + keybindManager = new KeybindManager(); + notificationManager = new NotificationManager(); + RenderCore.setRenderThread(Thread.currentThread()); + RenderEvents.HUD_RENDER .register( - (RenderContract6)(lpL44_0, lpL44_1) -> { - b(); - if (!w) { + (RenderCallback)(hudRenderer, hudContext) -> { + if (!selfDestructed) { if (MinecraftClient.getInstance().world != null && MinecraftClient.getInstance().player != null) { - if ((RenderContract2.b.currentScreen == null || RenderContract2.b.currentScreen instanceof ChatScreen) - && eventBus.hasListeners(new Object[]{TickEvent25.class, 135978089436075L})) { - new TickEvent25(((dev.zprestige.prestige.render.RenderHelper8)lpL44_0), ((dev.zprestige.prestige.data.MatrixCameraData)lpL44_1)).b_boolean__(new Object[]{122499962143880L}); + if ((MinecraftAccess.mc.currentScreen == null || MinecraftAccess.mc.currentScreen instanceof ChatScreen) + && eventBus.hasListeners(Render2DEvent.class)) { + new Render2DEvent((hudRenderer), (hudContext)).post(); } - new TickEvent24(((dev.zprestige.prestige.render.RenderHelper8)lpL44_0), ((dev.zprestige.prestige.data.MatrixCameraData)lpL44_1)).b_boolean__(new Object[]{122499962143880L}); - RenderState.b(new Object[]{93665931432117L}); + new FrameEvent((hudRenderer), (hudContext)).post(); + ShapeRenderer.flushDrawQueue(); } } } ); - RenderContract5.b.register((RenderContract6)(lpL43_0, lpL43_1) -> { - b(); - if (!w) { + RenderEvents.WORLD_RENDER.register((RenderCallback)(worldRenderer, worldContext) -> { + if (!selfDestructed) { if (MinecraftClient.getInstance().world != null && MinecraftClient.getInstance().player != null) { - MatrixStack.a(new Object[]{14373979246969L}); - new TickEvent27(((dev.zprestige.prestige.render.RenderHelper8)lpL43_0), ((dev.zprestige.prestige.data.MatrixCameraData)lpL43_1)).b_boolean__(new Object[]{122499962143880L}); + Render2D.captureViewport(); + new Render3DEvent((worldRenderer), (worldContext)).post(); } } }); } - } catch (Throwable var35) { - if (!var34) { - a.set(false); + } catch (Throwable error) { + if (!partiallyInitialized) { + initialized.set(false); } - var35.printStackTrace(); + error.printStackTrace(); } } - public static boolean a(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 9499999619609L ^ var1; - long var3 = var1 ^ 18103143018681L; - b(); - return ESPUtil.e || eventBus != null && eventBus.hasListeners(new Object[]{TickEvent27.class, var3}); + public static boolean needsWorldRender() { + return EspShaderManager.enabled || eventBus != null && eventBus.hasListeners(Render3DEvent.class); } - public static boolean b(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 9499999619609L ^ var1; - long var3 = var1 ^ 11198839193506L; - long var5 = var1 ^ 39355797438358L; - long var7 = var1 ^ 65000825783606L; - long var9 = var1 ^ 20328730886810L; - long var11 = var1 ^ 20640679731384L; - b(); + public static boolean needsHudRender() { return eventBus == null ? false - : a(new Object[]{var5}) - || eventBus.hasListeners(new Object[]{TickEvent25.class, var7}) - || eventBus.hasListenerOfType(new Object[]{TickEvent24.class, Module.class, var11}) - || l != null && l.c_boolean_(new Object[]{var3}) - || v != null && v.a_boolean______________________________________________(new Object[]{var9}); + : needsWorldRender() + || eventBus.hasListeners(Render2DEvent.class) + || eventBus.hasListenerOfType(FrameEvent.class, Module.class) + || hudEditorScreen != null && hudEditorScreen.shouldRenderHud() + || notificationManager != null && notificationManager.hasNotifications(); } - public static void a_void(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 9499999619609L ^ var1; - long var3 = var1 ^ 34804161661929L; - b(); - if (!w && eventBus != null && RenderContract2.b.world != null && RenderContract2.b.player != null) { - new TickEvent24(RenderUtil.b, null).b_boolean__(new Object[]{var3}); - } - } - - static { - b(null); - } - - public static void b(Setting[] var0) { - x = var0; - } - - public static Setting[] b() { - return x; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public static void postFrameEvent() { + if (!selfDestructed && eventBus != null && MinecraftAccess.mc.world != null && MinecraftAccess.mc.player != null) { + new FrameEvent(RenderCore.BUFFER_SOURCE, null).post(); } } @@ -252,8 +149,4 @@ public class Prestige implements ModInitializer { public void onInitialize() { this.init(); } - - private static Throwable a(Throwable var0) { - return var0; - } } diff --git a/src/main/java/dev/zprestige/prestige/combat/AimManager.java b/src/main/java/dev/zprestige/prestige/combat/AimManager.java deleted file mode 100644 index df0312e..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/AimManager.java +++ /dev/null @@ -1,141 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderHelper10; -import dev.zprestige.prestige.render.RenderHelper36; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class AimManager implements RenderContract2 { - private RenderHelper10 a = null; - - public boolean a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 68553623989839L ^ var2; - long var4 = var2 ^ 127895873690737L; - if (this.a != null) { - if ((float)(System.currentTimeMillis() - this.a.a_long_(new Object[0])) > this.a.a_float________________(new Object[0]) - && !this.a.a_boolean_________________________________________(new Object[0])) { - RenderHelper36 var10000 = new RenderHelper36(b.mouse); - long var10001 = b.getWindow().getHandle(); - int var10002 = this.a.a(new Object[0]); - Object[] var10007 = new Object[]{null, null, null, null, var4}; - var10007[3] = 0; - var10007[2] = 1; - var10007[1] = var10002; - var10007[0] = var10001; - var10000.a(var10007); - this.a.a_void____________________(new Object[]{true}); - } - - if ((float)(System.currentTimeMillis() - this.a.a_long_(new Object[0])) > this.a.a_float________________(new Object[0]) - && (float)(System.currentTimeMillis() - this.a.a_long_(new Object[0])) - > this.a.a_float________________(new Object[0]) + this.a.b(new Object[0])) { - RenderHelper36 var7 = new RenderHelper36(b.mouse); - long var8 = b.getWindow().getHandle(); - int var9 = this.a.a(new Object[0]); - Object[] var10 = new Object[]{null, null, null, null, var4}; - var10[3] = 0; - var10[2] = 0; - var10[1] = var9; - var10[0] = var8; - var7.a(var10); - this.a = null; - } - - return true; - } else { - return false; - } - } - - public void a_void_(Object[] var1) { - int var4 = (Integer)var1[0]; - float var5 = (Float)var1[1]; - long var2 = (Long)var1[2]; - var2 = 68553623989839L ^ var2; - long var6 = var2 ^ 21461094467110L; - long var10004 = System.currentTimeMillis(); - Object[] var10010 = new Object[]{null, null, var6}; - var10010[1] = 15.0F; - var10010[0] = 5.0F; - float var10006 = RenderUtil5.a(var10010); - Object[] var10011 = new Object[]{null, null, var6}; - var10011[1] = 55.0F; - var10011[0] = 35.0F; - float var10007 = RenderUtil5.a(var10011); - var10010 = new Object[]{null, null, var6}; - var10010[1] = var10007; - var10010[0] = var10006; - this.a = new RenderHelper10(var4, var10004, var5, RenderUtil5.a(var10010), false); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/AutoArmorHelper.java b/src/main/java/dev/zprestige/prestige/combat/AutoArmorHelper.java deleted file mode 100644 index a522bb3..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/AutoArmorHelper.java +++ /dev/null @@ -1,100 +0,0 @@ -package dev.zprestige.prestige.combat; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.entity.EquipmentSlot; - -// $VF: synthetic class -public class AutoArmorHelper { - public static final int[] a = new int[EquipmentSlot.values().length]; - - static { - try { - a[EquipmentSlot.HEAD.ordinal()] = 1; - } catch (NoSuchFieldError var3) { - } - - try { - a[EquipmentSlot.CHEST.ordinal()] = 2; - } catch (NoSuchFieldError var2) { - } - - try { - a[EquipmentSlot.LEGS.ordinal()] = 3; - } catch (NoSuchFieldError var1) { - } - - try { - a[EquipmentSlot.FEET.ordinal()] = 4; - } catch (NoSuchFieldError var0) { - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/BotFilter.java b/src/main/java/dev/zprestige/prestige/combat/BotFilter.java new file mode 100644 index 0000000..d6554f2 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/BotFilter.java @@ -0,0 +1,77 @@ +package dev.zprestige.prestige.combat; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.event.BotCheckEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.event.AntiBotQueryEvent; +import dev.zprestige.prestige.render.MinecraftAccess; +import java.util.HashSet; +import java.util.IdentityHashMap; +import java.util.Map; +import java.util.Set; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; + +public class BotFilter implements MinecraftAccess { + private final Set validatedPlayers; + private final Map validityCache; + + public BotFilter() { + super(); + this.validatedPlayers = new HashSet(); + this.validityCache = new IdentityHashMap(); + Prestige.eventBus.register(this); + } + + @Subscribe + public void onClientTick(ClientTickEvent event) { + this.validityCache.clear(); + if (!this.validatedPlayers.isEmpty()) { + this.validatedPlayers.removeIf(player -> !((net.minecraft.entity.Entity)player).isAlive()); + } + } + + @Subscribe + public void onGameJoin(GameJoinEvent event) { + this.validatedPlayers.clear(); + } + + public void markValidated(PlayerEntity player) { + this.validatedPlayers.add(player); + } + + public Set getValidatedPlayers() { + return this.validatedPlayers; + } + + public boolean isValidTarget(Entity entity) { + if (entity == mc.player) { + return false; + } else { + Boolean cached = (Boolean)this.validityCache.get(entity); + if (cached != null) { + return cached; + } else { + boolean valid = this.checkValidTarget(entity); + this.validityCache.put(entity, valid); + return valid; + } + } + } + + private boolean checkValidTarget(Entity entity) { + if (!(entity instanceof PlayerEntity)) { + return true; + } else if (!Prestige.eventBus.hasListeners(AntiBotQueryEvent.class)) { + return true; + } else if (!new AntiBotQueryEvent().post()) { + return true; + } else { + return Prestige.eventBus.hasListeners(BotCheckEvent.class) && new BotCheckEvent((PlayerEntity)entity).post() + ? false + : this.validatedPlayers.contains(entity) && entity.isAlive(); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/ClickScheduler.java b/src/main/java/dev/zprestige/prestige/combat/ClickScheduler.java new file mode 100644 index 0000000..ac91f33 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/ClickScheduler.java @@ -0,0 +1,35 @@ +package dev.zprestige.prestige.combat; + +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.ScheduledClick; +import dev.zprestige.prestige.render.MouseAccessor; +import dev.zprestige.prestige.render.RandomUtil; + +public class ClickScheduler implements MinecraftAccess { + private ScheduledClick pendingClick = null; + + public boolean processPendingClick() { + if (this.pendingClick != null) { + if ((float)(System.currentTimeMillis() - this.pendingClick.getScheduledAt()) > this.pendingClick.getPressDelay() + && !this.pendingClick.isPressed()) { + new MouseAccessor(mc.mouse).invokeMouseButton(mc.getWindow().getHandle(), this.pendingClick.getButton(), 1, 0); + this.pendingClick.setPressed(true); + } + + if ((float)(System.currentTimeMillis() - this.pendingClick.getScheduledAt()) > this.pendingClick.getPressDelay() + && (float)(System.currentTimeMillis() - this.pendingClick.getScheduledAt()) + > this.pendingClick.getPressDelay() + this.pendingClick.getHoldDuration()) { + new MouseAccessor(mc.mouse).invokeMouseButton(mc.getWindow().getHandle(), this.pendingClick.getButton(), 0, 0); + this.pendingClick = null; + } + + return true; + } else { + return false; + } + } + + public void scheduleClick(int button, float delayMs) { + this.pendingClick = new ScheduledClick(button, System.currentTimeMillis(), delayMs, RandomUtil.randomFloat(RandomUtil.randomFloat(5.0F, 15.0F), RandomUtil.randomFloat(35.0F, 55.0F)), false); + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/CombatHelper.java b/src/main/java/dev/zprestige/prestige/combat/CombatHelper.java deleted file mode 100644 index 6ab4959..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/CombatHelper.java +++ /dev/null @@ -1,86 +0,0 @@ -package dev.zprestige.prestige.combat; - -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class CombatHelper { - public String a = ""; - public String b; - public Color c = Color.WHITE; - public int d; - public int e; - public boolean f; - public float g; - - public CombatHelper(long var1) { - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/CombatHelper2.java b/src/main/java/dev/zprestige/prestige/combat/CombatHelper2.java deleted file mode 100644 index 82857a6..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/CombatHelper2.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.entity.LivingEntity; - -public class CombatHelper2 { - private final LivingEntity a; - private static final String c = "jumpingCooldown"; - - public CombatHelper2(LivingEntity var1) { - this.a = var1; - } - - public void a(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - var2 = 55898427641531L ^ var2; - long var5 = var2 ^ 35550231918533L; - long var7 = var2 ^ 25339285087169L; - FieldValue var9 = FieldAccessor.b(new Object[]{this.a, c, LivingEntity.class, int.class, var7}); - var9.a_void_____________(new Object[]{var4, var5}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/CombatHelper3.java b/src/main/java/dev/zprestige/prestige/combat/CombatHelper3.java deleted file mode 100644 index 014001d..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/CombatHelper3.java +++ /dev/null @@ -1,102 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.MinecraftClient; - -public class CombatHelper3 { - private final MinecraftClient a; - - public CombatHelper3(MinecraftClient var1) { - this.a = var1; - } - - public int a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 20571854547171L ^ var2; - long var4 = var2 ^ 50573642575059L; - long var6 = var2 ^ 97271680844069L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, "itemUseCooldown", MinecraftClient.class, int.class, var6}); - return (Integer)var8.a(new Object[]{var4}); - } - - public void a_void__(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - var2 = 20571854547171L ^ var2; - long var5 = var2 ^ 36864578943679L; - long var7 = var2 ^ 25124917358267L; - FieldValue var9 = FieldAccessor.b(new Object[]{this.a, "itemUseCooldown", MinecraftClient.class, int.class, var7}); - var9.a_void_____________(new Object[]{var4, var5}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/CombatUtil.java b/src/main/java/dev/zprestige/prestige/combat/CombatUtil.java deleted file mode 100644 index d54d593..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/CombatUtil.java +++ /dev/null @@ -1,214 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Items; -import net.minecraft.util.math.Vec3d; - -public class CombatUtil implements RenderContract2 { - public static boolean a(Object[] var0) { - Entity var1 = (Entity)var0[0]; - long var2 = (Long)var0[1]; - var2 = 42632450102655L ^ var2; - long var4 = var2 ^ 57986789991100L; - if (var1 instanceof PlayerEntity) { - return true; - } else if (var1 instanceof LivingEntity && b.getNetworkHandler() != null) { - String var7 = var1.getName().getString(); - - for (PlayerListEntry var9 : b.getNetworkHandler().getPlayerList()) { - if (PositionUtil.a_String________(new Object[]{var9.getProfile(), var4}).equals(var7)) { - return true; - } - } - - return false; - } else { - return false; - } - } - - public static PlayerEntity a_class_1657(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 42632450102655L ^ var1; - long var3 = var1 ^ 69502222699245L; - long var5 = var1 ^ 27342419042136L; - PlayerEntity var8 = null; - Event.b(); - - for (PlayerEntity var10 : b.world.getPlayers()) { - if (var10.isAlive() - && !var10.equals(b.player) - && !Prestige.g.a(new Object[]{var10.getName().getString(), var3}) - && Prestige.i.a_boolean_(new Object[]{var10, var5}) - && (var8 == null || b.player.squaredDistanceTo(var10) < b.player.squaredDistanceTo(var8))) { - var8 = var10; - } - } - - return var8; - } - - public static PlayerEntity b(Object[] var0) { - float var1 = (Float)var0[0]; - long var2 = (Long)var0[1]; - var2 = 42632450102655L ^ var2; - long var4 = var2 ^ 92283722434249L; - long var6 = var2 ^ 57728975127273L; - long var8 = var2 ^ 127570764469116L; - long var10 = var2 ^ 70986972797420L; - Event.b(); - PlayerEntity var13 = null; - - for (PlayerEntity var15 : b.world.getPlayers()) { - if (var15.isAlive() - && !var15.equals(b.player) - && !Prestige.g.a(new Object[]{var15.getName().getString(), var4}) - && Prestige.i.a_boolean_(new Object[]{var15, var8}) - && (var13 == null || b.player.squaredDistanceTo(var15) < b.player.squaredDistanceTo(var13)) - && !(WorldUtil.a(new Object[]{WorldUtil.a_RenderBatch_(new Object[]{var15.getEyePos(), var10}), var6}) > var1)) { - var13 = var15; - } - } - - return var13; - } - - public static Entity a_class_1297(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 42632450102655L ^ var1; - long var3 = var1 ^ 20222013439035L; - long var5 = var1 ^ 58876846827918L; - Entity var8 = null; - Event.b(); - - for (Entity var10 : b.world.getEntities()) { - if (var10.isAlive() - && !var10.equals(b.player) - && !Prestige.g.a(new Object[]{var10.getName().getString(), var3}) - && var10.isAttackable() - && Prestige.i.a_boolean_(new Object[]{var10, var5}) - && (var8 == null || b.player.squaredDistanceTo(var10) < b.player.squaredDistanceTo(var8))) { - var8 = var10; - } - } - - return var8; - } - - public static boolean b_boolean(Object[] var0) { - PlayerEntity var1 = (PlayerEntity)var0[0]; - long var2 = (Long)var0[1]; - var2 = 42632450102655L ^ var2; - long var4 = var2 ^ 91326150591869L; - return ( - var1.getMainHandStack().getItem() == Items.SHIELD - || var1.getOffHandStack().getItem() == Items.SHIELD && var1.getMainHandStack().get(DataComponentTypes.FOOD) == null - ) - && var1.isUsingItem() - && !c(new Object[]{var1, var4}); - } - - private static boolean c(Object[] var0) { - PlayerEntity var3 = (PlayerEntity)var0[0]; - long var1 = (Long)var0[1]; - var1 = 42632450102655L ^ var1; - long var4 = var1 ^ 105124625454497L; - long var6 = var1 ^ 10499210163888L; - if (b.player != null && var3 != null) { - Vec3d var9 = PositionUtil.b(new Object[]{var6}); - Vec3d var10 = PositionUtil.a(new Object[]{var3, var4}); - Vec3d var11 = var9.subtract(var10).normalize(); - float var12 = var3.getYaw(); - float var13 = var3.getPitch(); - Vec3d var14 = new Vec3d( - -Math.sin(Math.toRadians(var12)) * Math.cos(Math.toRadians(var13)), - -Math.sin(Math.toRadians(var13)), - Math.cos(Math.toRadians(var12)) * Math.cos(Math.toRadians(var13)) - ) - .normalize(); - double var15 = var14.dotProduct(var11); - return var15 < 0.0; - } else { - return false; - } - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/CombatUtil2.java b/src/main/java/dev/zprestige/prestige/combat/CombatUtil2.java deleted file mode 100644 index 8f2fbfe..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/CombatUtil2.java +++ /dev/null @@ -1,230 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper26; -import dev.zprestige.prestige.type.BlockBreakType; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.EnumSet; -import java.util.function.Predicate; -import net.minecraft.block.Blocks; -import net.minecraft.client.MinecraftClient; -import net.minecraft.entity.Entity; -import net.minecraft.entity.decoration.EndCrystalEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.state.property.Properties; -import net.minecraft.util.math.BlockPos; - -public final class CombatUtil2 { - private static final MinecraftClient a = MinecraftClient.getInstance(); - private static final int b = 5; - private static final double c = 5.0; - public static final RenderHelper26 d = new RenderHelper26(null, 0.0F, 0.0F); - - private CombatUtil2() { - } - - public static RenderHelper26 a(Object[] var0) { - PlayerEntity var1 = (PlayerEntity)var0[0]; - EnumSet var4 = (EnumSet)var0[1]; - float var5 = (Float)var0[2]; - long var2 = (Long)var0[3]; - var2 = 5849964192769L ^ var2; - long var6 = var2 ^ 34097876804470L; - long var8 = var2 ^ 86803075311893L; - long var10 = var2 ^ 13231043016274L; - long var12 = var2 ^ 33321315552121L; - long var14 = var2 ^ 45904547140773L; - if (a.player != null && a.world != null && var1 != null) { - RenderHelper26 var17 = d; - if (var4.contains(BlockBreakType.CRYSTAL)) { - for (Entity var19 : a.world.getEntities()) { - if (var19 instanceof EndCrystalEntity) { - float var20 = (float)Prestige.f.a(new Object[]{a.player, var19.getBlockPos().toCenterPos(), var10}); - BlockBreakType var10001 = BlockBreakType.CRYSTAL; - Object[] var10006 = new Object[]{null, null, null, null, var6}; - var10006[3] = var5; - var10006[2] = var20; - var10006[1] = var10001; - var10006[0] = var17; - var17 = c(var10006); - } - } - } - - if (var4.contains(BlockBreakType.ANCHOR)) { - Object[] var10004 = new Object[]{ - null, - (Predicate)lpL319_0 -> a_boolean(new Object[]{var1, ((net.minecraft.util.math.BlockPos)lpL319_0), 127524255025262L}) - && a.world.getBlockState(((net.minecraft.util.math.BlockPos)lpL319_0)).getBlock() == Blocks.RESPAWN_ANCHOR - && a.world.getBlockState(((net.minecraft.util.math.BlockPos)lpL319_0)).get(Properties.CHARGES) != 0, - var8 - }; - var10004[0] = 5; - - for (BlockPos var28 : (Iterable)(WorldUtil2.a_List___(var10004))) { - float var21 = (float)Prestige.f.k(new Object[]{a.player, var28.toCenterPos(), var14}); - BlockBreakType var31 = BlockBreakType.ANCHOR; - Object[] var35 = new Object[]{null, null, null, null, var6}; - var35[3] = var5; - var35[2] = var21; - var35[1] = var31; - var35[0] = var17; - var17 = c(var35); - } - } - - if (var4.contains(BlockBreakType.OBSIDIAN) && !a.player.isOnGround()) { - Object[] var34 = new Object[]{ - null, - (Predicate)lpL318_0 -> ((net.minecraft.util.math.BlockPos)lpL318_0).getY() < a.player.getY() - && a_boolean(new Object[]{var1, ((net.minecraft.util.math.BlockPos)lpL318_0), 127524255025262L}) - && a.world.getBlockState(((net.minecraft.util.math.BlockPos)lpL318_0)).getBlock() == Blocks.OBSIDIAN - && a.world.getBlockState(((net.minecraft.util.math.BlockPos)lpL318_0).up()).getBlock() == Blocks.AIR, - var8 - }; - var34[0] = 5; - - for (BlockPos var29 : (Iterable)(WorldUtil2.a_List___(var34))) { - float var30 = (float)Prestige.f.a(new Object[]{a.player, var29.up().toCenterPos(), var10}); - BlockBreakType var32 = BlockBreakType.OBSIDIAN; - Object[] var36 = new Object[]{null, null, null, null, var6}; - var36[3] = var5; - var36[2] = var30; - var36[1] = var32; - var36[0] = var17; - var17 = c(var36); - } - } - - if (var4.contains(BlockBreakType.MACE)) { - float var25 = a_float(new Object[]{var1, var12}); - if (var25 > 0.0F) { - BlockBreakType var33 = BlockBreakType.MACE; - Object[] var37 = new Object[]{null, null, null, null, var6}; - var37[3] = var5; - var37[2] = var25; - var37[1] = var33; - var37[0] = var17; - var17 = c(var37); - } - } - - return var17; - } else { - return d; - } - } - - public static RenderHelper26 b(Object[] var0) { - PlayerEntity var4 = (PlayerEntity)var0[0]; - EnumSet var1 = (EnumSet)var0[1]; - long var2 = (Long)var0[2]; - var2 = 5849964192769L ^ var2; - long var5 = var2 ^ 29537693058044L; - Object[] var10005 = new Object[]{null, null, null, var5}; - var10005[2] = 1.0F; - var10005[1] = var1; - var10005[0] = var4; - return a(var10005); - } - - public static float a_float(Object[] var0) { - PlayerEntity var1 = (PlayerEntity)var0[0]; - long var2 = (Long)var0[1]; - var2 = 5849964192769L ^ var2; - long var4 = var2 ^ 43436368200278L; - return InventoryUtil.o(new Object[]{var1.getMainHandStack(), var4}) && !(var1.fallDistance <= 1.5) && !(var1.getY() <= a.player.getY()) - ? (float)(6.0 + var1.fallDistance * 5.0) - : 0.0F; - } - - private static boolean a_boolean(Object[] var0) { - PlayerEntity var4 = (PlayerEntity)var0[0]; - BlockPos var3 = (BlockPos)var0[1]; - return var4.squaredDistanceTo(var3.getX() + 0.5, var3.getY() + 0.5, var3.getZ() + 0.5) < 25.0; - } - - private static RenderHelper26 c(Object[] var0) { - RenderHelper26 var6 = (RenderHelper26)var0[0]; - BlockBreakType var1 = (BlockBreakType)var0[1]; - float var4 = (Float)var0[2]; - float var5 = (Float)var0[3]; - if (var4 <= 0.0F) { - return var6; - } else { - float var8 = var4 * var1.confidence * var5; - return var8 <= var6.c ? var6 : new RenderHelper26(var1, var4, var8); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/DamageUtil.java b/src/main/java/dev/zprestige/prestige/combat/DamageUtil.java deleted file mode 100644 index f3d015c..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/DamageUtil.java +++ /dev/null @@ -1,723 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.DoubleBoolData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.math.MathHelper3; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldHelper; -import dev.zprestige.prestige.world.WorldHelper10; -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import it.unimi.dsi.fastutil.objects.Object2IntMaps; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.concurrent.ConcurrentHashMap; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.AttributeModifierSlot; -import net.minecraft.component.type.ItemEnchantmentsComponent; -import net.minecraft.enchantment.Enchantments; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.attribute.EntityAttributes; -import net.minecraft.entity.damage.DamageSource; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.tag.DamageTypeTags; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.HitResult.Type; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.Direction; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.shape.VoxelShape; -import net.minecraft.util.shape.VoxelShapes; -import net.minecraft.world.BlockView; -import net.minecraft.world.GameMode; -import net.minecraft.world.RaycastContext; -import net.minecraft.world.RaycastContext.FluidHandling; -import net.minecraft.world.RaycastContext.ShapeType; -import net.minecraft.world.explosion.Explosion; - -public class DamageUtil implements RenderContract2 { - private final Vec3d a; - private Explosion c; - private RaycastContext d; - private volatile long e; - private final ConcurrentHashMap f; - private static final ThreadLocal g = ThreadLocal.withInitial(Object2IntOpenHashMap::new); - private static final long i = Long.MIN_VALUE; - - public DamageUtil(long var1) { - super(); - var1 = 0L; - var1 = 18350856574938L ^ var1; - long var3 = var1 ^ 91927560072961L; - this.a = new Vec3d(0.0, 0.0, 0.0); - this.e = i; - this.f = new ConcurrentHashMap(); - Prestige.eventBus.register(new Object[]{this, var3}); - } - - @Subscribe - public void a(TickEvent3 var1) { - this.d = new RaycastContext(null, null, ShapeType.COLLIDER, FluidHandling.ANY, b.player); - } - - public double a(Object[] var1) { - LivingEntity var5 = (LivingEntity)var1[0]; - Vec3d var4 = (Vec3d)var1[1]; - long var2 = (Long)var1[2]; - var2 = 18350856574938L ^ var2; - long var6 = var2 ^ 62045040412105L; - Object[] var10008 = new Object[]{null, null, null, null, null, var6}; - var10008[4] = false; - var10008[3] = null; - var10008[2] = false; - var10008[1] = var4; - var10008[0] = var5; - return this.b(var10008); - } - - public double b(Object[] var1) { - LivingEntity var2 = (LivingEntity)var1[0]; - Vec3d var4 = (Vec3d)var1[1]; - boolean var7 = (Boolean)var1[2]; - BlockPos var3 = (BlockPos)var1[3]; - boolean var8 = (Boolean)var1[4]; - long var5 = (Long)var1[5]; - var5 = 18350856574938L ^ var5; - long var9 = var5 ^ 60394376658852L; - Event.b(); - long var12 = b.world.getTime(); - if (var12 != this.e) { - this.f.clear(); - this.e = var12; - } - - DoubleBoolData var14 = new DoubleBoolData(var2, var4.x, var4.y, var4.z, var7, var3, var8); - Double var15 = (Double)this.f.get(var14); - if (var15 != null) { - return var15; - } else { - Object[] var10008 = new Object[]{null, null, null, null, null, var9}; - var10008[4] = var8; - var10008[3] = var3; - var10008[2] = var7; - var10008[1] = var4; - var10008[0] = var2; - double var16 = this.c(var10008); - this.f.put(var14, var16); - return var16; - } - } - - private double c(Object[] var1) { - LivingEntity var2 = (LivingEntity)var1[0]; - Vec3d var7 = (Vec3d)var1[1]; - boolean var3 = (Boolean)var1[2]; - BlockPos var4 = (BlockPos)var1[3]; - boolean var8 = (Boolean)var1[4]; - long var5 = (Long)var1[5]; - var5 = 18350856574938L ^ var5; - long var9 = var5 ^ 70663714774065L; - long var11 = var5 ^ 116854953095835L; - long var13 = var5 ^ 140262527072875L; - long var15 = var5 ^ 45612110305298L; - long var17 = var5 ^ 23558358614720L; - long var19 = var5 ^ 125910066054471L; - if (var2 instanceof PlayerEntity - && b.getNetworkHandler().getPlayerListEntry(var2.getUuid()) != null - && b.getNetworkHandler().getPlayerListEntry(var2.getUuid()).getGameMode() == GameMode.CREATIVE) { - return 0.0; - } else { - Vec3d var22 = PositionUtil.a(new Object[]{var2, var11}); - MathHelper3 var10000 = new MathHelper3(this.a); - double var10001 = var22.x; - double var10002 = var22.y; - double var10003 = var22.z; - Object[] var10006 = new Object[]{null, null, null, var15}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - var10000.d(var10006); - if (var3) { - var10000 = new MathHelper3(this.a); - var10001 = this.a.x + var2.getVelocity().x; - var10002 = this.a.y + var2.getVelocity().y; - var10003 = this.a.z + var2.getVelocity().z; - var10006 = new Object[]{null, null, null, var15}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - var10000.d(var10006); - } - - double var23 = Math.sqrt(this.a.squaredDistanceTo(var7)); - if (var23 > 12.0) { - return 0.0; - } else { - RaycastContext var10004 = this.d; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, null, var9}; - var10012[5] = var8; - var10012[4] = var4; - var10012[3] = var10004; - var10012[2] = var3; - var10012[1] = var2; - var10012[0] = var7; - double var25 = this.o(var10012); - double var27 = (1.0 - var23 / 12.0) * var25; - double var29 = (var27 * var27 + var27) / 2.0 * 7.0 * 12.0 + 1.0; - Object[] var40 = new Object[]{null, var17}; - var40[0] = var29; - var29 = this.m(var40); - var29 = net.minecraft.entity.DamageUtil.getDamageLeft( - var2, - (float)var29, - b.world.getDamageSources().explosion(null), - var2.getArmor(), - (float)var2.getAttributeInstance(EntityAttributes.ARMOR_TOUGHNESS).getValue() - ); - Object[] var10005 = new Object[]{null, null, var19}; - var10005[1] = var29; - var10005[0] = var2; - var29 = this.n(var10005); - var10005 = new Object[]{null, null, b.world.getDamageSources().explosion(null), var13}; - var10005[1] = var29; - var10005[0] = var2; - var29 = j(var10005); - return var29 < 0.0 ? 0.0 : var29; - } - } - } - - public double d(Object[] var1) { - LivingEntity var3 = (LivingEntity)var1[0]; - Vec3d var7 = (Vec3d)var1[1]; - Vec3d var6 = (Vec3d)var1[2]; - BlockPos var2 = (BlockPos)var1[3]; - long var4 = (Long)var1[4]; - var4 = 18350856574938L ^ var4; - long var8 = var4 ^ 140583619040745L; - long var10 = var4 ^ 38438316372702L; - long var12 = var4 ^ 60626111085102L; - long var14 = var4 ^ 107516225165399L; - long var16 = var4 ^ 103216323854981L; - long var18 = var4 ^ 63983453963522L; - if (var3 instanceof PlayerEntity - && b.getNetworkHandler().getPlayerListEntry(var3.getUuid()) != null - && b.getNetworkHandler().getPlayerListEntry(var3.getUuid()).getGameMode() == GameMode.CREATIVE) { - return 0.0; - } else { - MathHelper3 var10000 = new MathHelper3(this.a); - double var10001 = var6.x; - double var10002 = var6.y; - double var10003 = var6.z; - Object[] var10006 = new Object[]{null, null, null, var14}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - var10000.d(var10006); - double var21 = Math.sqrt(this.a.squaredDistanceTo(var7)); - if (var21 > 12.0) { - return 0.0; - } else { - Vec3d var23 = var6.subtract(PositionUtil.a(new Object[]{var3, var10})); - RaycastContext var10004 = this.d; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, null, var8}; - var10012[5] = false; - var10012[4] = var2; - var10012[3] = var10004; - var10012[2] = var23; - var10012[1] = var3; - var10012[0] = var7; - double var24 = this.p(var10012); - double var26 = (1.0 - var21 / 12.0) * var24; - double var28 = (var26 * var26 + var26) / 2.0 * 7.0 * 12.0 + 1.0; - Object[] var35 = new Object[]{null, var16}; - var35[0] = var28; - var28 = this.m(var35); - var28 = net.minecraft.entity.DamageUtil.getDamageLeft( - var3, - (float)var28, - b.world.getDamageSources().explosion(null), - var3.getArmor(), - (float)var3.getAttributeInstance(EntityAttributes.ARMOR_TOUGHNESS).getValue() - ); - Object[] var10005 = new Object[]{null, null, var18}; - var10005[1] = var28; - var10005[0] = var3; - var28 = this.n(var10005); - var10005 = new Object[]{null, null, b.world.getDamageSources().explosion(null), var12}; - var10005[1] = var28; - var10005[0] = var3; - var28 = j(var10005); - return var28 < 0.0 ? 0.0 : var28; - } - } - } - - private double f(Object[] var1) { - LivingEntity var2 = (LivingEntity)var1[0]; - Vec3d var4 = (Vec3d)var1[1]; - BlockPos var5 = (BlockPos)var1[2]; - BlockPos var3 = (BlockPos)var1[3]; - BlockState var8 = (BlockState)var1[4]; - long var6 = (Long)var1[5]; - var6 = 18350856574938L ^ var6; - long var9 = var6 ^ 137608125675640L; - long var11 = var6 ^ 73609917046306L; - long var13 = var6 ^ 44044175812233L; - long var15 = var6 ^ 87825474003214L; - if (var2 instanceof PlayerEntity && ((PlayerEntity)var2).getAbilities().creativeMode) { - return 0.0; - } else { - double var18 = Math.sqrt(var2.squaredDistanceTo(var4)); - if (var18 > 10.0) { - return 0.0; - } else { - RaycastContext var10004 = this.d; - Object[] var10012 = new Object[]{null, null, null, null, null, null, var5, var3, var8, var9}; - var10012[5] = false; - var10012[4] = null; - var10012[3] = var10004; - var10012[2] = false; - var10012[1] = var2; - var10012[0] = var4; - double var20 = this.o(var10012); - double var22 = (1.0 - var18 / 10.0) * var20; - double var24 = (var22 * var22 + var22) / 2.0 * 7.0 * 10.0 + 1.0; - Object[] var31 = new Object[]{null, var13}; - var31[0] = var24; - var24 = this.m(var31); - Object[] var10005 = new Object[]{null, null, var15}; - var10005[1] = var24; - var10005[0] = var2; - var24 = this.n(var10005); - var24 = net.minecraft.entity.DamageUtil.getDamageLeft( - var2, - (float)var24, - b.world.getDamageSources().explosion(null), - var2.getArmor(), - (float)var2.getAttributeInstance(EntityAttributes.ARMOR_TOUGHNESS).getValue() - ); - var10005 = new Object[]{null, null, b.world.getDamageSources().explosion(null), var11}; - var10005[1] = var24; - var10005[0] = var2; - var24 = j(var10005); - return var24 < 0.0 ? 0.0 : var24; - } - } - } - - public double g(Object[] var1) { - LivingEntity var2 = (LivingEntity)var1[0]; - Vec3d var7 = (Vec3d)var1[1]; - double var3 = (Double)var1[2]; - long var5 = (Long)var1[3]; - var5 = 18350856574938L ^ var5; - long var8 = var5 ^ 50002521674027L; - Object[] var10009 = new Object[]{null, null, null, null, null, null, var8}; - var10009[2] = var3; - var10009[1] = var7; - var10009[0] = var2; - return this.i(var10009); - } - - public double h(Object[] var1) { - LivingEntity var5 = (LivingEntity)var1[0]; - Vec3d var3 = (Vec3d)var1[1]; - double var7 = (Double)var1[2]; - BlockPos var6 = (BlockPos)var1[3]; - BlockPos var2 = (BlockPos)var1[4]; - BlockState var4 = (BlockState)var1[5]; - long var9 = (Long)var1[6]; - var9 = 18350856574938L ^ var9; - long var11 = var9 ^ 93789556771378L; - Object[] var10009 = new Object[]{null, null, null, var6, var2, var4, var11}; - var10009[2] = var7; - var10009[1] = var3; - var10009[0] = var5; - return this.i(var10009); - } - - private double i(Object[] var1) { - LivingEntity var10 = (LivingEntity)var1[0]; - Vec3d var8 = (Vec3d)var1[1]; - double var6 = (Double)var1[2]; - BlockPos var4 = (BlockPos)var1[3]; - BlockPos var9 = (BlockPos)var1[4]; - BlockState var5 = (BlockState)var1[5]; - long var2 = (Long)var1[6]; - var2 = 18350856574938L ^ var2; - long var11 = var2 ^ 79313669683112L; - long var13 = var2 ^ 131904361501170L; - long var15 = var2 ^ 31933369002329L; - long var17 = var2 ^ 135126957141726L; - if (var10 instanceof PlayerEntity && ((PlayerEntity)var10).getAbilities().creativeMode) { - return 0.0; - } else { - double var20 = 4.0 + 1.5 * Math.min(var6, 5.0); - double var22 = Math.sqrt(var10.squaredDistanceTo(var8)); - if (var22 > var20 * 2.0) { - return 0.0; - } else { - RaycastContext var10004 = this.d; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, var9, var5, var11}; - var10012[5] = false; - var10012[4] = var4; - var10012[3] = var10004; - var10012[2] = false; - var10012[1] = var10; - var10012[0] = var8; - double var24 = this.o(var10012); - double var26 = (1.0 - var22 / (var20 * 2.0)) * var24; - double var28 = (var26 * var26 + var26) / 2.0 * 7.0 * (var20 * 2.0) + 1.0; - Object[] var35 = new Object[]{null, var15}; - var35[0] = var28; - var28 = this.m(var35); - Object[] var10005 = new Object[]{null, null, var17}; - var10005[1] = var28; - var10005[0] = var10; - var28 = this.n(var10005); - var28 = net.minecraft.entity.DamageUtil.getDamageLeft( - var10, - (float)var28, - b.world.getDamageSources().explosion(null), - var10.getArmor(), - (float)var10.getAttributeInstance(EntityAttributes.ARMOR_TOUGHNESS).getValue() - ); - var10005 = new Object[]{null, null, b.world.getDamageSources().explosion(null), var13}; - var10005[1] = var28; - var10005[0] = var10; - var28 = j(var10005); - return var28 < 0.0 ? 0.0 : var28; - } - } - } - - private static double j(Object[] var0) { - LivingEntity var3 = (LivingEntity)var0[0]; - double var1 = (Double)var0[1]; - DamageSource var6 = (DamageSource)var0[2]; - long var4 = (Long)var0[3]; - var4 = 18350856574938L ^ var4; - long var7 = var4 ^ 63254382195539L; - long var9 = var4 ^ 137971209152305L; - if (var6.isIn(DamageTypeTags.BYPASSES_INVULNERABILITY)) { - return var1; - } else { - int var12 = 0; - Object2IntMap var13 = (Object2IntMap)g.get(); - - for (EquipmentSlot var15 : AttributeModifierSlot.ARMOR) { - ItemStack var16 = var3.getEquippedStack(var15); - a_void___(new Object[]{var16, var13, var7}); - int var17 = a_int(new Object[]{var13, Enchantments.PROTECTION, var9}); - if (var17 > 0) { - var12 += var17; - } - - int var18 = a_int(new Object[]{var13, Enchantments.FIRE_PROTECTION, var9}); - if (var18 > 0 && var6.isIn(DamageTypeTags.IS_FIRE)) { - var12 += 2 * var18; - } - - int var19 = a_int(new Object[]{var13, Enchantments.BLAST_PROTECTION, var9}); - if (var19 > 0 && var6.isIn(DamageTypeTags.IS_EXPLOSION)) { - var12 += 2 * var19; - } - - int var20 = a_int(new Object[]{var13, Enchantments.PROJECTILE_PROTECTION, var9}); - if (var20 > 0 && var6.isIn(DamageTypeTags.IS_PROJECTILE)) { - var12 += 2 * var20; - } - - int var21 = a_int(new Object[]{var13, Enchantments.FEATHER_FALLING, var9}); - if (var21 > 0 && var6.isIn(DamageTypeTags.IS_FALL)) { - var12 += 3 * var21; - } - } - - return net.minecraft.entity.DamageUtil.getInflictedDamage((float)var1, var12); - } - } - - public static void a_void___(Object[] var0) { - ItemStack var4 = (ItemStack)var0[0]; - Object2IntMap var1 = (Object2IntMap)var0[1]; - Event.b(); - var1.clear(); - if (!var4.isEmpty()) { - for (Entry var8 : var4.getItem() == Items.ENCHANTED_BOOK - ? var4.getOrDefault(DataComponentTypes.STORED_ENCHANTMENTS, ItemEnchantmentsComponent.DEFAULT).getEnchantmentEntries() - : var4.getEnchantments().getEnchantmentEntries()) { - var1.put((RegistryEntry)var8.getKey(), var8.getIntValue()); - } - } - } - - public static int a_int(Object[] var0) { - Object2IntMap var4 = (Object2IntMap)var0[0]; - RegistryKey var1 = (RegistryKey)var0[1]; - Event.b(); - - for (Entry var7 : (Iterable)(Object2IntMaps.fastIterable(var4))) { - if (((RegistryEntry)var7.getKey()).matchesKey(var1)) { - return var7.getIntValue(); - } - } - - return 0; - } - - public double k(Object[] var1) { - LivingEntity var2 = (LivingEntity)var1[0]; - Vec3d var3 = (Vec3d)var1[1]; - long var4 = (Long)var1[2]; - var4 = 18350856574938L ^ var4; - long var6 = var4 ^ 7577744648969L; - return this.f(new Object[]{var2, var3, BlockPos.ofFloored(var3), null, null, var6}); - } - - public double l(Object[] var1) { - LivingEntity var6 = (LivingEntity)var1[0]; - Vec3d var4 = (Vec3d)var1[1]; - BlockPos var5 = (BlockPos)var1[2]; - BlockState var7 = (BlockState)var1[3]; - long var2 = (Long)var1[4]; - var2 = 18350856574938L ^ var2; - long var8 = var2 ^ 64892925663312L; - return this.f(new Object[]{var6, var4, BlockPos.ofFloored(var4), var5, var7, var8}); - } - - private double m(Object[] var1) { - double var2 = (Double)var1[0]; - - return switch (WorldHelper.a[b.world.getDifficulty().ordinal()]) { - case 1 -> 0.0; - case 2 -> Math.min(var2 / 2.0 + 1.0, var2); - case 3 -> var2 * 3.0 / 2.0; - default -> var2; - }; - } - - private double n(Object[] var1) { - LivingEntity var2 = (LivingEntity)var1[0]; - double var3 = (Double)var1[1]; - Event.b(); - double var8 = var3; - if (var2.hasStatusEffect(StatusEffects.RESISTANCE)) { - int var10 = var2.getStatusEffect(StatusEffects.RESISTANCE).getAmplifier() + 1; - var8 = var3 * (1.0 - var10 * 0.2); - } - - return var8 < 0.0 ? 0.0 : var8; - } - - private double o(Object[] var1) { - Vec3d var5 = (Vec3d)var1[0]; - Entity var8 = (Entity)var1[1]; - boolean var9 = (Boolean)var1[2]; - RaycastContext var10 = (RaycastContext)var1[3]; - BlockPos var6 = (BlockPos)var1[4]; - boolean var3 = (Boolean)var1[5]; - BlockPos var4 = (BlockPos)var1[6]; - BlockPos var7 = (BlockPos)var1[7]; - BlockState var2 = (BlockState)var1[8]; - long var11 = (Long)var1[9]; - var11 = 18350856574938L ^ var11; - long var13 = var11 ^ 113914657529415L; - Vec3d var10003 = var9 ? var8.getVelocity() : null; - Object[] var10012 = new Object[]{null, null, null, null, null, null, var4, var7, var2, var13}; - var10012[5] = var3; - var10012[4] = var6; - var10012[3] = var10; - var10012[2] = var10003; - var10012[1] = var8; - var10012[0] = var5; - return this.p(var10012); - } - - private double p(Object[] var1) { - Vec3d var3 = (Vec3d)var1[0]; - Entity var8 = (Entity)var1[1]; - Vec3d var4 = (Vec3d)var1[2]; - RaycastContext var10 = (RaycastContext)var1[3]; - BlockPos var5 = (BlockPos)var1[4]; - boolean var2 = (Boolean)var1[5]; - BlockPos var9 = (BlockPos)var1[6]; - BlockPos var11 = (BlockPos)var1[7]; - BlockState var12 = (BlockState)var1[8]; - long var6 = (Long)var1[9]; - var6 = 18350856574938L ^ var6; - long var13 = var6 ^ 54174853893221L; - long var15 = var6 ^ 53612852969307L; - long var17 = var6 ^ 16104425364068L; - Event.b(); - Box var20 = var8.getBoundingBox(); - if (var4 != null) { - var20 = var20.offset(var4.x, var4.y, var4.z); - } - - double var21 = 1.0 / ((var20.maxX - var20.minX) * 2.0 + 1.0); - double var23 = 1.0 / ((var20.maxY - var20.minY) * 2.0 + 1.0); - double var25 = 1.0 / ((var20.maxZ - var20.minZ) * 2.0 + 1.0); - double var27 = (1.0 - Math.floor(1.0 / var21) * var21) / 2.0; - double var29 = (1.0 - Math.floor(1.0 / var25) * var25) / 2.0; - if (var21 >= 0.0 && var23 >= 0.0 && var25 >= 0.0) { - int var31 = 0; - int var32 = 0; - MathHelper3 var33 = new MathHelper3(this.a); - WorldHelper10 var34 = new WorldHelper10(var10); - - for (double var35 = 0.0; var35 <= 1.0; var35 += var21) { - for (double var37 = 0.0; var37 <= 1.0; var37 += var23) { - for (double var39 = 0.0; var39 <= 1.0; var39 += var25) { - double var41 = MathHelper.lerp(var35, var20.minX, var20.maxX); - double var43 = MathHelper.lerp(var37, var20.minY, var20.maxY); - double var45 = MathHelper.lerp(var39, var20.minZ, var20.maxZ); - double var10001 = var41 + var27; - double var10003 = var45 + var29; - Object[] var10006 = new Object[]{null, null, null, var17}; - var10006[2] = var10003; - var10006[1] = var43; - var10006[0] = var10001; - var33.d(var10006); - var34.f(new Object[]{this.a, var3, ShapeType.COLLIDER, FluidHandling.NONE, var8, var15}); - Object[] var10009 = new Object[]{null, null, null, var9, var11, var12, var13}; - var10009[2] = var2; - var10009[1] = var5; - var10009[0] = var10; - if (this.a_class_3965(var10009).getType() == Type.MISS) { - var31++; - } - - var32++; - } - } - } - - return (double)var31 / var32; - } else { - return 0.0; - } - } - - private BlockHitResult a_class_3965(Object[] var1) { - RaycastContext var7 = (RaycastContext)var1[0]; - BlockPos var8 = (BlockPos)var1[1]; - boolean var9 = (Boolean)var1[2]; - BlockPos var5 = (BlockPos)var1[3]; - BlockPos var2 = (BlockPos)var1[4]; - BlockState var6 = (BlockState)var1[5]; - return BlockView.raycast(var7.getStart(), var7.getEnd(), var7, (lpL1_0, lpL1_1) -> { - BlockState var10; - if (var5 != null && ((net.minecraft.util.math.BlockPos)lpL1_1).equals(var5)) { - var10 = Blocks.AIR.getDefaultState(); - } else if (var2 != null && ((net.minecraft.util.math.BlockPos)lpL1_1).equals(var2)) { - var10 = var6; - } else if (((net.minecraft.util.math.BlockPos)lpL1_1).equals(var8)) { - var10 = Blocks.OBSIDIAN.getDefaultState(); - } else { - var10 = b.world.getBlockState(((net.minecraft.util.math.BlockPos)lpL1_1)); - if (var10.getBlock().getBlastResistance() < 600.0F && var9) { - var10 = Blocks.AIR.getDefaultState(); - } - } - - Vec3d var11 = ((net.minecraft.world.RaycastContext)lpL1_0).getStart(); - Vec3d var12 = ((net.minecraft.world.RaycastContext)lpL1_0).getEnd(); - VoxelShape var13 = ((net.minecraft.world.RaycastContext)lpL1_0).getBlockShape(var10, b.world, ((net.minecraft.util.math.BlockPos)lpL1_1)); - BlockHitResult var14 = b.world.raycastBlock(var11, var12, ((net.minecraft.util.math.BlockPos)lpL1_1), var13, var10); - VoxelShape var15 = VoxelShapes.empty(); - BlockHitResult var16 = var15.raycast(var11, var12, ((net.minecraft.util.math.BlockPos)lpL1_1)); - double var17 = var14 == null ? Double.MAX_VALUE : ((net.minecraft.world.RaycastContext)lpL1_0).getStart().squaredDistanceTo(var14.getPos()); - double var19 = var16 == null ? Double.MAX_VALUE : ((net.minecraft.world.RaycastContext)lpL1_0).getStart().squaredDistanceTo(var16.getPos()); - return var17 <= var19 ? var14 : var16; - }, lpL0_0 -> { - Vec3d var3 = ((net.minecraft.world.RaycastContext)lpL0_0).getStart().subtract(((net.minecraft.world.RaycastContext)lpL0_0).getEnd()); - return BlockHitResult.createMissed(((net.minecraft.world.RaycastContext)lpL0_0).getEnd(), Direction.getFacing(var3.x, var3.y, var3.z), BlockPos.ofFloored(((net.minecraft.world.RaycastContext)lpL0_0).getEnd())); - }); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/EquipmentSlotSwitchMap.java b/src/main/java/dev/zprestige/prestige/combat/EquipmentSlotSwitchMap.java new file mode 100644 index 0000000..4756e6d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/EquipmentSlotSwitchMap.java @@ -0,0 +1,30 @@ +package dev.zprestige.prestige.combat; + +import net.minecraft.entity.EquipmentSlot; + +// $VF: synthetic class +public class EquipmentSlotSwitchMap { + public static final int[] SWITCH_MAP = new int[EquipmentSlot.values().length]; + + static { + try { + SWITCH_MAP[EquipmentSlot.HEAD.ordinal()] = 1; + } catch (NoSuchFieldError headMissing) { + } + + try { + SWITCH_MAP[EquipmentSlot.CHEST.ordinal()] = 2; + } catch (NoSuchFieldError chestMissing) { + } + + try { + SWITCH_MAP[EquipmentSlot.LEGS.ordinal()] = 3; + } catch (NoSuchFieldError legsMissing) { + } + + try { + SWITCH_MAP[EquipmentSlot.FEET.ordinal()] = 4; + } catch (NoSuchFieldError feetMissing) { + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/ExplosionDamageCalculator.java b/src/main/java/dev/zprestige/prestige/combat/ExplosionDamageCalculator.java new file mode 100644 index 0000000..4dc1e01 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/ExplosionDamageCalculator.java @@ -0,0 +1,371 @@ +package dev.zprestige.prestige.combat; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.data.ExplosionDamageKey; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.math.Vec3dMutator; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.world.PositionUtil; +import dev.zprestige.prestige.world.DifficultySwitchMap; +import dev.zprestige.prestige.world.RaycastContextAccessor; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntMaps; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.AttributeModifierSlot; +import net.minecraft.component.type.ItemEnchantmentsComponent; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.tag.DamageTypeTags; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult.Type; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.GameMode; +import net.minecraft.world.RaycastContext; +import net.minecraft.world.RaycastContext.FluidHandling; +import net.minecraft.world.RaycastContext.ShapeType; + +public class ExplosionDamageCalculator implements MinecraftAccess { + private final Vec3d scratchPos; + private RaycastContext raycastContext; + private volatile long cacheTime; + private final ConcurrentHashMap damageCache; + private static final ThreadLocal ENCHANTMENT_BUFFER = ThreadLocal.withInitial(Object2IntOpenHashMap::new); + private static final long NO_CACHE_TIME = Long.MIN_VALUE; + + public ExplosionDamageCalculator() { + super(); + this.scratchPos = new Vec3d(0.0, 0.0, 0.0); + this.cacheTime = NO_CACHE_TIME; + this.damageCache = new ConcurrentHashMap(); + Prestige.eventBus.register(this); + } + + @Subscribe + public void onGameJoin(GameJoinEvent event) { + this.raycastContext = new RaycastContext(null, null, ShapeType.COLLIDER, FluidHandling.ANY, mc.player); + } + + public double getCrystalDamage(LivingEntity target, Vec3d crystalPos) { + return this.getCrystalDamage(target, crystalPos, false, null, false); + } + + public double getCrystalDamage(LivingEntity target, Vec3d crystalPos, boolean predictMotion, BlockPos obsidianPos, boolean ignoreTerrain) { + long worldTime = mc.world.getTime(); + if (worldTime != this.cacheTime) { + this.damageCache.clear(); + this.cacheTime = worldTime; + } + + ExplosionDamageKey cacheKey = new ExplosionDamageKey(target, crystalPos.x, crystalPos.y, crystalPos.z, predictMotion, obsidianPos, ignoreTerrain); + Double cached = (Double)this.damageCache.get(cacheKey); + if (cached != null) { + return cached; + } else { + double damage = this.computeCrystalDamage(target, crystalPos, predictMotion, obsidianPos, ignoreTerrain); + this.damageCache.put(cacheKey, damage); + return damage; + } + } + + private double computeCrystalDamage(LivingEntity target, Vec3d crystalPos, boolean predictMotion, BlockPos obsidianPos, boolean ignoreTerrain) { + if (target instanceof PlayerEntity + && mc.getNetworkHandler().getPlayerListEntry(target.getUuid()) != null + && mc.getNetworkHandler().getPlayerListEntry(target.getUuid()).getGameMode() == GameMode.CREATIVE) { + return 0.0; + } else { + Vec3d targetPos = PositionUtil.getEntityPos(target); + new Vec3dMutator(this.scratchPos).set(targetPos.x, targetPos.y, targetPos.z); + if (predictMotion) { + new Vec3dMutator(this.scratchPos).set(this.scratchPos.x + target.getVelocity().x, this.scratchPos.y + target.getVelocity().y, this.scratchPos.z + target.getVelocity().z); + } + + double distance = Math.sqrt(this.scratchPos.squaredDistanceTo(crystalPos)); + if (distance > 12.0) { + return 0.0; + } else { + double exposure = this.getExposure(crystalPos, target, predictMotion, this.raycastContext, obsidianPos, ignoreTerrain, null, null, null); + double impact = (1.0 - distance / 12.0) * exposure; + double damage = (impact * impact + impact) / 2.0 * 7.0 * 12.0 + 1.0; + damage = this.scaleByDifficulty(damage); + damage = net.minecraft.entity.DamageUtil.getDamageLeft( + target, + (float)damage, + mc.world.getDamageSources().explosion(null), + target.getArmor(), + (float)target.getAttributeInstance(EntityAttributes.ARMOR_TOUGHNESS).getValue() + ); + damage = this.applyResistance(target, damage); + damage = applyProtectionEnchantments(target, damage, mc.world.getDamageSources().explosion(null)); + return damage < 0.0 ? 0.0 : damage; + } + } + } + + public double getCrystalDamageAt(LivingEntity target, Vec3d crystalPos, Vec3d predictedPos, BlockPos obsidianPos) { + if (target instanceof PlayerEntity + && mc.getNetworkHandler().getPlayerListEntry(target.getUuid()) != null + && mc.getNetworkHandler().getPlayerListEntry(target.getUuid()).getGameMode() == GameMode.CREATIVE) { + return 0.0; + } else { + new Vec3dMutator(this.scratchPos).set(predictedPos.x, predictedPos.y, predictedPos.z); + double distance = Math.sqrt(this.scratchPos.squaredDistanceTo(crystalPos)); + if (distance > 12.0) { + return 0.0; + } else { + double exposure = this.getExposureWithOffset(crystalPos, target, predictedPos.subtract(PositionUtil.getEntityPos(target)), this.raycastContext, obsidianPos, false, null, null, null); + double impact = (1.0 - distance / 12.0) * exposure; + double damage = (impact * impact + impact) / 2.0 * 7.0 * 12.0 + 1.0; + damage = this.scaleByDifficulty(damage); + damage = net.minecraft.entity.DamageUtil.getDamageLeft( + target, + (float)damage, + mc.world.getDamageSources().explosion(null), + target.getArmor(), + (float)target.getAttributeInstance(EntityAttributes.ARMOR_TOUGHNESS).getValue() + ); + damage = this.applyResistance(target, damage); + damage = applyProtectionEnchantments(target, damage, mc.world.getDamageSources().explosion(null)); + return damage < 0.0 ? 0.0 : damage; + } + } + } + + private double computeAnchorDamage(LivingEntity target, Vec3d anchorPos, BlockPos anchorBlockPos, BlockPos placedBlockPos, BlockState placedBlockState) { + if (target instanceof PlayerEntity && ((PlayerEntity)target).getAbilities().creativeMode) { + return 0.0; + } else { + double distance = Math.sqrt(target.squaredDistanceTo(anchorPos)); + if (distance > 10.0) { + return 0.0; + } else { + double exposure = this.getExposure(anchorPos, target, false, this.raycastContext, null, false, anchorBlockPos, placedBlockPos, placedBlockState); + double impact = (1.0 - distance / 10.0) * exposure; + double damage = (impact * impact + impact) / 2.0 * 7.0 * 10.0 + 1.0; + damage = this.scaleByDifficulty(damage); + damage = this.applyResistance(target, damage); + damage = net.minecraft.entity.DamageUtil.getDamageLeft( + target, + (float)damage, + mc.world.getDamageSources().explosion(null), + target.getArmor(), + (float)target.getAttributeInstance(EntityAttributes.ARMOR_TOUGHNESS).getValue() + ); + damage = applyProtectionEnchantments(target, damage, mc.world.getDamageSources().explosion(null)); + return damage < 0.0 ? 0.0 : damage; + } + } + } + + public double getTntCartDamage(LivingEntity target, Vec3d cartPos, double cartSpeed) { + return this.computeTntCartDamage(target, cartPos, cartSpeed, null, null, null); + } + + public double getTntCartDamage(LivingEntity target, Vec3d cartPos, double cartSpeed, BlockPos obsidianPos, BlockPos placedBlockPos, BlockState placedBlockState) { + return this.computeTntCartDamage(target, cartPos, cartSpeed, obsidianPos, placedBlockPos, placedBlockState); + } + + private double computeTntCartDamage(LivingEntity target, Vec3d cartPos, double cartSpeed, BlockPos obsidianPos, BlockPos placedBlockPos, BlockState placedBlockState) { + if (target instanceof PlayerEntity && ((PlayerEntity)target).getAbilities().creativeMode) { + return 0.0; + } else { + double power = 4.0 + 1.5 * Math.min(cartSpeed, 5.0); + double distance = Math.sqrt(target.squaredDistanceTo(cartPos)); + if (distance > power * 2.0) { + return 0.0; + } else { + double exposure = this.getExposure(cartPos, target, false, this.raycastContext, obsidianPos, false, null, placedBlockPos, placedBlockState); + double impact = (1.0 - distance / (power * 2.0)) * exposure; + double damage = (impact * impact + impact) / 2.0 * 7.0 * (power * 2.0) + 1.0; + damage = this.scaleByDifficulty(damage); + damage = this.applyResistance(target, damage); + damage = net.minecraft.entity.DamageUtil.getDamageLeft( + target, + (float)damage, + mc.world.getDamageSources().explosion(null), + target.getArmor(), + (float)target.getAttributeInstance(EntityAttributes.ARMOR_TOUGHNESS).getValue() + ); + damage = applyProtectionEnchantments(target, damage, mc.world.getDamageSources().explosion(null)); + return damage < 0.0 ? 0.0 : damage; + } + } + } + + private static double applyProtectionEnchantments(LivingEntity target, double damage, DamageSource source) { + if (source.isIn(DamageTypeTags.BYPASSES_INVULNERABILITY)) { + return damage; + } else { + int protectionFactor = 0; + Object2IntMap enchantments = (Object2IntMap)ENCHANTMENT_BUFFER.get(); + + for (EquipmentSlot slot : AttributeModifierSlot.ARMOR) { + collectEnchantments(target.getEquippedStack(slot), enchantments); + int protection = getEnchantmentLevel(enchantments, Enchantments.PROTECTION); + if (protection > 0) { + protectionFactor += protection; + } + + int fireProtection = getEnchantmentLevel(enchantments, Enchantments.FIRE_PROTECTION); + if (fireProtection > 0 && source.isIn(DamageTypeTags.IS_FIRE)) { + protectionFactor += 2 * fireProtection; + } + + int blastProtection = getEnchantmentLevel(enchantments, Enchantments.BLAST_PROTECTION); + if (blastProtection > 0 && source.isIn(DamageTypeTags.IS_EXPLOSION)) { + protectionFactor += 2 * blastProtection; + } + + int projectileProtection = getEnchantmentLevel(enchantments, Enchantments.PROJECTILE_PROTECTION); + if (projectileProtection > 0 && source.isIn(DamageTypeTags.IS_PROJECTILE)) { + protectionFactor += 2 * projectileProtection; + } + + int featherFalling = getEnchantmentLevel(enchantments, Enchantments.FEATHER_FALLING); + if (featherFalling > 0 && source.isIn(DamageTypeTags.IS_FALL)) { + protectionFactor += 3 * featherFalling; + } + } + + return net.minecraft.entity.DamageUtil.getInflictedDamage((float)damage, protectionFactor); + } + } + + public static void collectEnchantments(ItemStack stack, Object2IntMap enchantments) { + enchantments.clear(); + if (!stack.isEmpty()) { + for (Entry entry : stack.getItem() == Items.ENCHANTED_BOOK + ? stack.getOrDefault(DataComponentTypes.STORED_ENCHANTMENTS, ItemEnchantmentsComponent.DEFAULT).getEnchantmentEntries() + : stack.getEnchantments().getEnchantmentEntries()) { + enchantments.put((RegistryEntry)entry.getKey(), entry.getIntValue()); + } + } + } + + public static int getEnchantmentLevel(Object2IntMap enchantments, RegistryKey enchantmentKey) { + for (Entry entry : (Iterable)(Object2IntMaps.fastIterable(enchantments))) { + if (((RegistryEntry)entry.getKey()).matchesKey(enchantmentKey)) { + return entry.getIntValue(); + } + } + + return 0; + } + + public double getAnchorDamage(LivingEntity target, Vec3d anchorPos) { + return this.computeAnchorDamage(target, anchorPos, BlockPos.ofFloored(anchorPos), null, null); + } + + public double getAnchorDamage(LivingEntity target, Vec3d anchorPos, BlockPos placedBlockPos, BlockState placedBlockState) { + return this.computeAnchorDamage(target, anchorPos, BlockPos.ofFloored(anchorPos), placedBlockPos, placedBlockState); + } + + private double scaleByDifficulty(double damage) { + return switch (DifficultySwitchMap.CASE_BY_ORDINAL[mc.world.getDifficulty().ordinal()]) { + case 1 -> 0.0; + case 2 -> Math.min(damage / 2.0 + 1.0, damage); + case 3 -> damage * 3.0 / 2.0; + default -> damage; + }; + } + + private double applyResistance(LivingEntity target, double damage) { + double reduced = damage; + if (target.hasStatusEffect(StatusEffects.RESISTANCE)) { + reduced = damage * (1.0 - (target.getStatusEffect(StatusEffects.RESISTANCE).getAmplifier() + 1) * 0.2); + } + + return reduced < 0.0 ? 0.0 : reduced; + } + + private double getExposure(Vec3d source, Entity entity, boolean predictMotion, RaycastContext context, BlockPos obsidianPos, boolean ignoreTerrain, BlockPos airPos, BlockPos placedBlockPos, BlockState placedBlockState) { + return this.getExposureWithOffset(source, entity, predictMotion ? entity.getVelocity() : null, context, obsidianPos, ignoreTerrain, airPos, placedBlockPos, placedBlockState); + } + + private double getExposureWithOffset(Vec3d source, Entity entity, Vec3d boxOffset, RaycastContext context, BlockPos obsidianPos, boolean ignoreTerrain, BlockPos airPos, BlockPos placedBlockPos, BlockState placedBlockState) { + Box box = entity.getBoundingBox(); + if (boxOffset != null) { + box = box.offset(boxOffset.x, boxOffset.y, boxOffset.z); + } + + double stepX = 1.0 / ((box.maxX - box.minX) * 2.0 + 1.0); + double stepY = 1.0 / ((box.maxY - box.minY) * 2.0 + 1.0); + double stepZ = 1.0 / ((box.maxZ - box.minZ) * 2.0 + 1.0); + double offsetX = (1.0 - Math.floor(1.0 / stepX) * stepX) / 2.0; + double offsetZ = (1.0 - Math.floor(1.0 / stepZ) * stepZ) / 2.0; + if (stepX >= 0.0 && stepY >= 0.0 && stepZ >= 0.0) { + int unobstructed = 0; + int samples = 0; + Vec3dMutator sampleSetter = new Vec3dMutator(this.scratchPos); + RaycastContextAccessor contextSetter = new RaycastContextAccessor(context); + + for (double fracX = 0.0; fracX <= 1.0; fracX += stepX) { + for (double fracY = 0.0; fracY <= 1.0; fracY += stepY) { + for (double fracZ = 0.0; fracZ <= 1.0; fracZ += stepZ) { + sampleSetter.set(MathHelper.lerp(fracX, box.minX, box.maxX) + offsetX, MathHelper.lerp(fracY, box.minY, box.maxY), MathHelper.lerp(fracZ, box.minZ, box.maxZ) + offsetZ); + contextSetter.setAll(this.scratchPos, source, ShapeType.COLLIDER, FluidHandling.NONE, entity); + if (this.raycastWithOverrides(context, obsidianPos, ignoreTerrain, airPos, placedBlockPos, placedBlockState).getType() == Type.MISS) { + unobstructed++; + } + + samples++; + } + } + } + + return (double)unobstructed / samples; + } else { + return 0.0; + } + } + + private BlockHitResult raycastWithOverrides(RaycastContext context, BlockPos obsidianPos, boolean ignoreTerrain, BlockPos airPos, BlockPos placedBlockPos, BlockState placedBlockState) { + return BlockView.raycast(context.getStart(), context.getEnd(), context, (ctx, blockPos) -> { + BlockState state; + if (airPos != null && blockPos.equals(airPos)) { + state = Blocks.AIR.getDefaultState(); + } else if (placedBlockPos != null && blockPos.equals(placedBlockPos)) { + state = placedBlockState; + } else if (blockPos.equals(obsidianPos)) { + state = Blocks.OBSIDIAN.getDefaultState(); + } else { + state = mc.world.getBlockState(blockPos); + if (state.getBlock().getBlastResistance() < 600.0F && ignoreTerrain) { + state = Blocks.AIR.getDefaultState(); + } + } + + Vec3d start = ctx.getStart(); + Vec3d end = ctx.getEnd(); + VoxelShape shape = ctx.getBlockShape(state, mc.world, blockPos); + BlockHitResult blockHit = mc.world.raycastBlock(start, end, blockPos, shape, state); + BlockHitResult emptyHit = VoxelShapes.empty().raycast(start, end, blockPos); + return (blockHit == null ? Double.MAX_VALUE : ctx.getStart().squaredDistanceTo(blockHit.getPos())) <= (emptyHit == null ? Double.MAX_VALUE : ctx.getStart().squaredDistanceTo(emptyHit.getPos())) ? blockHit : emptyHit; + }, missCtx -> { + Vec3d delta = missCtx.getStart().subtract(missCtx.getEnd()); + return BlockHitResult.createMissed(missCtx.getEnd(), Direction.getFacing(delta.x, delta.y, delta.z), BlockPos.ofFloored(missCtx.getEnd())); + }); + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/HudStyle.java b/src/main/java/dev/zprestige/prestige/combat/HudStyle.java new file mode 100644 index 0000000..116fe56 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/HudStyle.java @@ -0,0 +1,39 @@ +package dev.zprestige.prestige.combat; + +import java.awt.Color; + +public final class HudStyle { + public static final float SCALE_SMALL = 0.65F; + public static final float SCALE_MEDIUM = 0.75F; + public static final float SCALE_ROW = 0.9F; + public static final float SCALE_TITLE = 1.0F; + public static final float SCALE_VALUE = 1.0F; + public static final float SCALE_NORMAL = 1.0F; + public static final float CORNER_RADIUS = 4.0F; + public static final float PADDING_Y = 3.0F; + public static final float BADGE_PADDING = 1.5F; + public static final int BLUR_RADIUS = 5; + public static final float PADDING_X = 5.5F; + public static final float DIVIDER_INSET = 3.0F; + public static final float ROW_SPACING = 3.0F; + public static final float LINE_GAP = 1.0F; + public static final float DIVIDER_WIDTH = 0.5F; + public static final float BAR_HEIGHT = 4.0F; + public static final float BAR_GAP = 1.0F; + public static final Color BACKGROUND_COLOR = new Color(14, 14, 14, 200); + public static final Color TEXT_COLOR = Color.WHITE; + public static final Color SECONDARY_TEXT_COLOR = new Color(200, 200, 200, 220); + public static final Color MUTED_TEXT_COLOR = new Color(160, 160, 168, 200); + public static final Color DIVIDER_COLOR = new Color(255, 255, 255, 40); + + private HudStyle() { + } + + public static float getRowHeight(float fontHeight, float scale) { + return fontHeight * scale + 6.0F; + } + + public static float getCardHeight(float fontHeight) { + return 3.0F + fontHeight * 1.0F + 1.0F + 4.0F + 3.0F; + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/ItemUseCooldownAccessor.java b/src/main/java/dev/zprestige/prestige/combat/ItemUseCooldownAccessor.java new file mode 100644 index 0000000..b70f0fa --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/ItemUseCooldownAccessor.java @@ -0,0 +1,20 @@ +package dev.zprestige.prestige.combat; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.client.MinecraftClient; + +public class ItemUseCooldownAccessor { + private final MinecraftClient client; + + public ItemUseCooldownAccessor(MinecraftClient minecraftClient) { + this.client = minecraftClient; + } + + public int getItemUseCooldown() { + return (Integer)FieldAccessor.bindMapped(this.client, "itemUseCooldown", MinecraftClient.class, int.class).get(); + } + + public void setItemUseCooldown(int ticks) { + FieldAccessor.bindMapped(this.client, "itemUseCooldown", MinecraftClient.class, int.class).set(ticks); + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/JumpCooldownAccessor.java b/src/main/java/dev/zprestige/prestige/combat/JumpCooldownAccessor.java new file mode 100644 index 0000000..0b465b5 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/JumpCooldownAccessor.java @@ -0,0 +1,17 @@ +package dev.zprestige.prestige.combat; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.entity.LivingEntity; + +public class JumpCooldownAccessor { + private final LivingEntity entity; + private static final String JUMPING_COOLDOWN_FIELD = "jumpingCooldown"; + + public JumpCooldownAccessor(LivingEntity livingEntity) { + this.entity = livingEntity; + } + + public void setJumpingCooldown(int ticks) { + FieldAccessor.bindMapped(this.entity, JUMPING_COOLDOWN_FIELD, LivingEntity.class, int.class).set(ticks); + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/NameTagEntry.java b/src/main/java/dev/zprestige/prestige/combat/NameTagEntry.java new file mode 100644 index 0000000..679c37b --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/NameTagEntry.java @@ -0,0 +1,25 @@ +package dev.zprestige.prestige.combat; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.List; + +public class NameTagEntry { + public NameTagEntry() { + dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); + } + + public String name; + public Color nameColor; + public int pops; + public String popText; + public float healthRatio; + public float displayedHealthRatio; + public Color healthColor; + public String healthText; + public float nameWidth; + public float popTextWidth; + public float healthTextWidth; + public List items = new ArrayList(); + public List enchantLabels = new ArrayList(); +} diff --git a/src/main/java/dev/zprestige/prestige/combat/NameTags.java b/src/main/java/dev/zprestige/prestige/combat/NameTags.java deleted file mode 100644 index 1734f8a..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/NameTags.java +++ /dev/null @@ -1,25 +0,0 @@ -package dev.zprestige.prestige.combat; - -import java.awt.Color; -import java.util.ArrayList; -import java.util.List; - -public class NameTags { - public NameTags() { - dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - } - - public String a; - public Color b; - public int c; - public String d; - public float e; - public float f; - public Color g; - public String h; - public float i; - public float j; - public float k; - public List l = new ArrayList(); - public List m = new ArrayList(); -} diff --git a/src/main/java/dev/zprestige/prestige/combat/NameTagsUtil.java b/src/main/java/dev/zprestige/prestige/combat/NameTagsUtil.java deleted file mode 100644 index eb17723..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/NameTagsUtil.java +++ /dev/null @@ -1,112 +0,0 @@ -package dev.zprestige.prestige.combat; - -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class NameTagsUtil { - public static final float a = 0.65F; - public static final float b = 0.75F; - public static final float c = 0.9F; - public static final float d = 1.0F; - public static final float e = 1.0F; - public static final float f = 1.0F; - public static final float g = 4.0F; - public static final float h = 3.0F; - public static final float i = 1.5F; - public static final int j = 5; - public static final float k = 5.5F; - public static final float l = 3.0F; - public static final float m = 3.0F; - public static final float n = 1.0F; - public static final float o = 0.5F; - public static final float p = 4.0F; - public static final float q = 1.0F; - public static final Color r = new Color(14, 14, 14, 200); - public static final Color s = Color.WHITE; - public static final Color t = new Color(200, 200, 200, 220); - public static final Color u = new Color(160, 160, 168, 200); - public static final Color v = new Color(255, 255, 255, 40); - - private NameTagsUtil() { - } - - public static float a(Object[] var0) { - float var1 = (Float)var0[0]; - float var2 = (Float)var0[1]; - return var1 * var2 + 6.0F; - } - - public static float b(Object[] var0) { - float var1 = (Float)var0[0]; - return 3.0F + var1 * 1.0F + 1.0F + 4.0F + 3.0F; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/PearlFollowHelper.java b/src/main/java/dev/zprestige/prestige/combat/PearlFollowHelper.java deleted file mode 100644 index 6943655..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/PearlFollowHelper.java +++ /dev/null @@ -1,151 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.projectile.PersistentProjectileEntity; -import net.minecraft.entity.projectile.ProjectileUtil; -import net.minecraft.item.ItemStack; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.EntityHitResult; -import net.minecraft.util.hit.HitResult; -import net.minecraft.util.hit.HitResult.Type; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.World; - -public final class PearlFollowHelper extends PersistentProjectileEntity { - public boolean a; - - public PearlFollowHelper(World var1, LivingEntity var2, ItemStack var3, long var4) { - super(EntityType.ARROW, var2, var1, var3, var3); - } - - @Override - public void tick() { - Event.b(); - HitResult var4 = ProjectileUtil.getCollision(this, lpL396_0 -> this.canHit(((net.minecraft.entity.Entity)lpL396_0))); - if (var4.getType() != Type.MISS) { - this.onCollision(var4); - } else { - this.tickBlockCollision(); - if (!this.a) { - Vec3d var5 = this.getVelocity(); - double var6 = this.getX() + var5.x; - double var8 = this.getY() + var5.y; - double var10 = this.getZ() + var5.z; - this.updateRotation(); - float var12 = this.isTouchingWater() ? 0.8F : 0.99F; - this.setVelocity(var5.multiply(var12)); - if (!this.hasNoGravity()) { - Vec3d var13 = this.getVelocity(); - this.setVelocity(var13.x, var13.y - 0.03, var13.z); - } - - this.setPosition(var6, var8, var10); - } - } - } - - @Override - public void onBlockHit(BlockHitResult blockHitResult) { - this.a = true; - this.setPosition(blockHitResult.getPos()); - } - - @Override - public void onEntityHit(EntityHitResult entityHitResult) { - this.a = true; - this.setPosition(entityHitResult.getPos()); - } - - @Override - public ItemStack asItemStack() { - return null; - } - - @Override - public ItemStack getDefaultItemStack() { - return null; - } - - @Override - public void setVelocity(double x, double y, double z, float power, float uncertainty) { - Vec3d var11 = new Vec3d(x, y, z).normalize().multiply(power); - this.setVelocity(var11); - this.setYaw((float)(MathHelper.atan2(var11.x, var11.z) * 180.0F / (float)Math.PI)); - this.setPitch((float)(MathHelper.atan2(var11.y, var11.horizontalLength()) * 180.0F / (float)Math.PI)); - this.lastYaw = this.getYaw(); - this.lastPitch = this.getPitch(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/PearlFollowSimulatedPearl.java b/src/main/java/dev/zprestige/prestige/combat/PearlFollowSimulatedPearl.java new file mode 100644 index 0000000..389b953 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/PearlFollowSimulatedPearl.java @@ -0,0 +1,78 @@ +package dev.zprestige.prestige.combat; + +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.projectile.PersistentProjectileEntity; +import net.minecraft.entity.projectile.ProjectileUtil; +import net.minecraft.item.ItemStack; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.EntityHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.hit.HitResult.Type; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public final class PearlFollowSimulatedPearl extends PersistentProjectileEntity { + public boolean landed; + + public PearlFollowSimulatedPearl(World worldIn, LivingEntity shooter, ItemStack pearlStack) { + super(EntityType.ARROW, shooter, worldIn, pearlStack, pearlStack); + } + + @Override + public void tick() { + HitResult hitResult = ProjectileUtil.getCollision(this, candidate -> this.canHit(candidate)); + if (hitResult.getType() != Type.MISS) { + this.onCollision(hitResult); + } else { + this.tickBlockCollision(); + if (!this.landed) { + Vec3d motion = this.getVelocity(); + double nextX = this.getX() + motion.x; + double nextY = this.getY() + motion.y; + double nextZ = this.getZ() + motion.z; + this.updateRotation(); + this.setVelocity(motion.multiply(this.isTouchingWater() ? 0.8F : 0.99F)); + if (!this.hasNoGravity()) { + Vec3d currentMotion = this.getVelocity(); + this.setVelocity(currentMotion.x, currentMotion.y - 0.03, currentMotion.z); + } + + this.setPosition(nextX, nextY, nextZ); + } + } + } + + @Override + public void onBlockHit(BlockHitResult blockHitResult) { + this.landed = true; + this.setPosition(blockHitResult.getPos()); + } + + @Override + public void onEntityHit(EntityHitResult entityHitResult) { + this.landed = true; + this.setPosition(entityHitResult.getPos()); + } + + @Override + public ItemStack asItemStack() { + return null; + } + + @Override + public ItemStack getDefaultItemStack() { + return null; + } + + @Override + public void setVelocity(double x, double y, double z, float power, float uncertainty) { + Vec3d scaledMotion = new Vec3d(x, y, z).normalize().multiply(power); + this.setVelocity(scaledMotion); + this.setYaw((float)(MathHelper.atan2(scaledMotion.x, scaledMotion.z) * 180.0F / (float)Math.PI)); + this.setPitch((float)(MathHelper.atan2(scaledMotion.y, scaledMotion.horizontalLength()) * 180.0F / (float)Math.PI)); + this.lastYaw = this.getYaw(); + this.lastPitch = this.getPitch(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/PearlTrajectoryHelper.java b/src/main/java/dev/zprestige/prestige/combat/PearlTrajectoryHelper.java deleted file mode 100644 index 516b1b3..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/PearlTrajectoryHelper.java +++ /dev/null @@ -1,147 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.projectile.PersistentProjectileEntity; -import net.minecraft.entity.projectile.ProjectileUtil; -import net.minecraft.item.ItemStack; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.EntityHitResult; -import net.minecraft.util.hit.HitResult; -import net.minecraft.util.hit.HitResult.Type; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.World; - -public final class PearlTrajectoryHelper extends PersistentProjectileEntity { - public boolean a; - - public PearlTrajectoryHelper(World var1, LivingEntity var2, ItemStack var3, long var4) { - super(EntityType.ARROW, var2, var1, var3, var3); - } - - @Override - public void tick() { - Event.b(); - HitResult var4 = ProjectileUtil.getCollision(this, lpL397_0 -> this.canHit(((net.minecraft.entity.Entity)lpL397_0))); - if (var4.getType() != Type.MISS) { - this.onCollision(var4); - } - - this.tickBlockCollision(); - Vec3d var5 = this.getVelocity(); - double var6 = this.getX() + var5.x; - double var8 = this.getY() + var5.y; - double var10 = this.getZ() + var5.z; - this.updateRotation(); - float var12 = this.isTouchingWater() ? 0.8F : 0.99F; - this.setVelocity(var5.multiply(var12)); - if (!this.hasNoGravity()) { - Vec3d var13 = this.getVelocity(); - this.setVelocity(var13.x, var13.y - 0.03, var13.z); - } - - this.setPosition(var6, var8, var10); - } - - @Override - public void onBlockHit(BlockHitResult blockHitResult) { - this.a = true; - } - - @Override - public void onEntityHit(EntityHitResult entityHitResult) { - this.a = true; - } - - @Override - public ItemStack asItemStack() { - return null; - } - - @Override - public ItemStack getDefaultItemStack() { - return null; - } - - @Override - public void setVelocity(double x, double y, double z, float power, float uncertainty) { - Vec3d var11 = new Vec3d(x, y, z).normalize().multiply(power); - this.setVelocity(var11); - this.setYaw((float)(MathHelper.atan2(var11.x, var11.z) * 180.0F / (float)Math.PI)); - this.setPitch((float)(MathHelper.atan2(var11.y, var11.horizontalLength()) * 180.0F / (float)Math.PI)); - this.lastYaw = this.getYaw(); - this.lastPitch = this.getPitch(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/PearlTrajectorySimulatedPearl.java b/src/main/java/dev/zprestige/prestige/combat/PearlTrajectorySimulatedPearl.java new file mode 100644 index 0000000..13cabd1 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/PearlTrajectorySimulatedPearl.java @@ -0,0 +1,74 @@ +package dev.zprestige.prestige.combat; + +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.projectile.PersistentProjectileEntity; +import net.minecraft.entity.projectile.ProjectileUtil; +import net.minecraft.item.ItemStack; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.EntityHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.hit.HitResult.Type; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public final class PearlTrajectorySimulatedPearl extends PersistentProjectileEntity { + public boolean landed; + + public PearlTrajectorySimulatedPearl(World worldIn, LivingEntity shooter, ItemStack pearlStack) { + super(EntityType.ARROW, shooter, worldIn, pearlStack, pearlStack); + } + + @Override + public void tick() { + HitResult hitResult = ProjectileUtil.getCollision(this, candidate -> this.canHit(candidate)); + if (hitResult.getType() != Type.MISS) { + this.onCollision(hitResult); + } + + this.tickBlockCollision(); + Vec3d motion = this.getVelocity(); + double nextX = this.getX() + motion.x; + double nextY = this.getY() + motion.y; + double nextZ = this.getZ() + motion.z; + this.updateRotation(); + this.setVelocity(motion.multiply(this.isTouchingWater() ? 0.8F : 0.99F)); + if (!this.hasNoGravity()) { + Vec3d currentMotion = this.getVelocity(); + this.setVelocity(currentMotion.x, currentMotion.y - 0.03, currentMotion.z); + } + + this.setPosition(nextX, nextY, nextZ); + } + + @Override + public void onBlockHit(BlockHitResult blockHitResult) { + this.landed = true; + } + + @Override + public void onEntityHit(EntityHitResult entityHitResult) { + this.landed = true; + } + + @Override + public ItemStack asItemStack() { + return null; + } + + @Override + public ItemStack getDefaultItemStack() { + return null; + } + + @Override + public void setVelocity(double x, double y, double z, float power, float uncertainty) { + Vec3d scaledMotion = new Vec3d(x, y, z).normalize().multiply(power); + this.setVelocity(scaledMotion); + this.setYaw((float)(MathHelper.atan2(scaledMotion.x, scaledMotion.z) * 180.0F / (float)Math.PI)); + this.setPitch((float)(MathHelper.atan2(scaledMotion.y, scaledMotion.horizontalLength()) * 180.0F / (float)Math.PI)); + this.lastYaw = this.getYaw(); + this.lastPitch = this.getPitch(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/PotionDisplayEntry.java b/src/main/java/dev/zprestige/prestige/combat/PotionDisplayEntry.java new file mode 100644 index 0000000..54be321 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/PotionDisplayEntry.java @@ -0,0 +1,16 @@ +package dev.zprestige.prestige.combat; + +import java.awt.Color; + +public final class PotionDisplayEntry { + public String name = ""; + public String levelText; + public Color color = Color.WHITE; + public int duration; + public int maxDuration; + public boolean infinite; + public float visibility; + + public PotionDisplayEntry() { + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/RotationManager.java b/src/main/java/dev/zprestige/prestige/combat/RotationManager.java deleted file mode 100644 index f960515..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/RotationManager.java +++ /dev/null @@ -1,190 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.EntityEvent4; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.type.EventPhase; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.util.math.MathHelper; - -public class RotationManager implements RenderContract2 { - private static final float a = 0.4F; - private static final float c = 0.5F; - private boolean d; - private float e; - private float f; - private float g; - private float h; - private boolean i; - private float j; - private float k; - private float l; - private float m; - private float n; - private float o; - private float p; - private float q; - - public RotationManager(long var1) { - super(); - var1 = 0L; - var1 = 60632727332545L ^ var1; - long var3 = var1 ^ 14681560044837L; - this.d = false; - this.i = false; - Prestige.eventBus.register(new Object[]{this, var3}); - } - - @Subscribe - public void a(TickEvent19 var1) { - if (b.player == null) { - this.d = false; - } else if (!this.d) { - this.e = b.player.getYaw(); - this.f = b.player.getPitch(); - this.g = this.e; - this.h = this.f; - this.d = true; - } else { - RenderBatch var5 = Prestige.o.b_RenderBatch____________(new Object[0]); - if (var5 == null) { - this.e = b.player.getYaw(); - this.f = b.player.getPitch(); - this.g = this.e; - this.h = this.f; - } else { - this.g = this.e; - this.h = this.f; - float var6 = MathHelper.wrapDegrees(var5.a(new Object[0]) - this.e); - float var7 = var5.b(new Object[0]) - this.f; - this.e = MathHelper.wrapDegrees(this.e + var6 * 0.4F); - this.f = MathHelper.clamp(this.f + var7 * 0.4F, -90.0F, 90.0F); - } - } - } - - @Subscribe - public void a(EntityEvent4 var1) { - if (var1.a == b.player && this.d) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE) { - if (this.i) { - return; - } - - if (Prestige.o.b_RenderBatch____________(new Object[0]) == null) { - return; - } - - float var5 = Math.abs(MathHelper.wrapDegrees(this.e - b.player.getYaw())); - float var6 = Math.abs(this.f - b.player.getPitch()); - if (var5 < 0.5F && var6 < 0.5F) { - return; - } - - this.j = b.player.getYaw(); - this.k = b.player.getPitch(); - this.l = b.player.bodyYaw; - this.m = b.player.headYaw; - this.n = b.player.lastYaw; - this.o = b.player.lastPitch; - this.p = b.player.lastBodyYaw; - this.q = b.player.lastHeadYaw; - b.player.setYaw(this.e); - b.player.setPitch(this.f); - b.player.bodyYaw = this.e; - b.player.headYaw = this.e; - b.player.lastYaw = this.g; - b.player.lastPitch = this.h; - b.player.lastBodyYaw = this.g; - b.player.lastHeadYaw = this.g; - this.i = true; - } else if (var1.a_EventPhase(new Object[0]) == EventPhase.POST && this.i) { - b.player.setYaw(this.j); - b.player.setPitch(this.k); - b.player.bodyYaw = this.l; - b.player.headYaw = this.m; - b.player.lastYaw = this.n; - b.player.lastPitch = this.o; - b.player.lastBodyYaw = this.p; - b.player.lastHeadYaw = this.q; - this.i = false; - } - } - } - - public boolean a(Object[] var1) { - return this.i; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/TargetManager.java b/src/main/java/dev/zprestige/prestige/combat/TargetManager.java deleted file mode 100644 index e823c2b..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/TargetManager.java +++ /dev/null @@ -1,162 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PlayerEvent; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.event.TickEvent6; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashSet; -import java.util.IdentityHashMap; -import java.util.Map; -import java.util.Set; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; - -public class TargetManager implements RenderContract2 { - private final Set a; - private final Map c; - - public TargetManager(long var1) { - super(); - var1 = 0L; - var1 = 135428133275062L ^ var1; - long var3 = var1 ^ 106554379797719L; - this.a = new HashSet(); - this.c = new IdentityHashMap(); - Prestige.eventBus.register(new Object[]{this, var3}); - } - - @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - this.c.clear(); - if (!this.a.isEmpty()) { - this.a.removeIf(lpL9_0 -> !((net.minecraft.entity.Entity)lpL9_0).isAlive()); - } - } - - @Subscribe - public void a(TickEvent3 var1) { - this.a.clear(); - } - - public void a(Object[] var1) { - PlayerEntity var2 = (PlayerEntity)var1[0]; - this.a.add(var2); - } - - public Set a_Set(Object[] var1) { - return this.a; - } - - public boolean a_boolean_(Object[] var1) { - Entity var2 = (Entity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 135428133275062L ^ var3; - long var5 = var3 ^ 5217238789553L; - if (var2 == b.player) { - return false; - } else { - Boolean var8 = (Boolean)this.c.get(var2); - if (var8 != null) { - return var8; - } else { - boolean var9 = this.b(new Object[]{var2, var5}); - this.c.put(var2, var9); - return var9; - } - } - } - - private boolean b(Object[] var1) { - Entity var4 = (Entity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 135428133275062L ^ var2; - long var5 = var2 ^ 99671251868934L; - long var7 = var2 ^ 86195271010853L; - if (!(var4 instanceof PlayerEntity)) { - return true; - } else if (!Prestige.eventBus.hasListeners(new Object[]{TickEvent6.class, var7})) { - return true; - } else if (!new TickEvent6().b_boolean__(new Object[]{var5})) { - return true; - } else { - return Prestige.eventBus.hasListeners(new Object[]{PlayerEvent.class, var7}) && new PlayerEvent((PlayerEntity)var4).b_boolean__(new Object[]{var5}) - ? false - : this.a.contains(var4) && var4.isAlive(); - } - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/TargetSelector.java b/src/main/java/dev/zprestige/prestige/combat/TargetSelector.java new file mode 100644 index 0000000..c49746e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/TargetSelector.java @@ -0,0 +1,108 @@ +package dev.zprestige.prestige.combat; + +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.world.PositionUtil; +import dev.zprestige.prestige.world.RotationUtil; +import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Items; +import net.minecraft.util.math.Vec3d; + +public class TargetSelector implements MinecraftAccess { + public static boolean isPlayer(Entity entity) { + if (entity instanceof PlayerEntity) { + return true; + } else if (entity instanceof LivingEntity && mc.getNetworkHandler() != null) { + String entityName = entity.getName().getString(); + + for (PlayerListEntry entry : mc.getNetworkHandler().getPlayerList()) { + if (PositionUtil.getProfileName(entry.getProfile()).equals(entityName)) { + return true; + } + } + + return false; + } else { + return false; + } + } + + public static PlayerEntity getClosestEnemy() { + PlayerEntity closest = null; + + for (PlayerEntity player : mc.world.getPlayers()) { + if (player.isAlive() + && !player.equals(mc.player) + && !Prestige.friendManager.isFriend(player.getName().getString()) + && Prestige.botFilter.isValidTarget(player) + && (closest == null || mc.player.squaredDistanceTo(player) < mc.player.squaredDistanceTo(closest))) { + closest = player; + } + } + + return closest; + } + + public static PlayerEntity getClosestEnemyInFov(float maxAngle) { + PlayerEntity closest = null; + + for (PlayerEntity player : mc.world.getPlayers()) { + if (player.isAlive() + && !player.equals(mc.player) + && !Prestige.friendManager.isFriend(player.getName().getString()) + && Prestige.botFilter.isValidTarget(player) + && (closest == null || mc.player.squaredDistanceTo(player) < mc.player.squaredDistanceTo(closest)) + && !(RotationUtil.getAngleFromPlayerRotation(RotationUtil.getRotationTo(player.getEyePos())) > maxAngle)) { + closest = player; + } + } + + return closest; + } + + public static Entity getClosestEntity() { + Entity closest = null; + + for (Entity entity : mc.world.getEntities()) { + if (entity.isAlive() + && !entity.equals(mc.player) + && !Prestige.friendManager.isFriend(entity.getName().getString()) + && entity.isAttackable() + && Prestige.botFilter.isValidTarget(entity) + && (closest == null || mc.player.squaredDistanceTo(entity) < mc.player.squaredDistanceTo(closest))) { + closest = entity; + } + } + + return closest; + } + + public static boolean isBlockingWithShield(PlayerEntity player) { + return ( + player.getMainHandStack().getItem() == Items.SHIELD + || player.getOffHandStack().getItem() == Items.SHIELD && player.getMainHandStack().get(DataComponentTypes.FOOD) == null + ) + && player.isUsingItem() + && !isFacingAway(player); + } + + private static boolean isFacingAway(PlayerEntity player) { + if (mc.player != null && player != null) { + Vec3d toSelf = PositionUtil.getPlayerPos().subtract(PositionUtil.getEntityPos(player)).normalize(); + float yaw = player.getYaw(); + float pitch = player.getPitch(); + return new Vec3d( + -Math.sin(Math.toRadians(yaw)) * Math.cos(Math.toRadians(pitch)), + -Math.sin(Math.toRadians(pitch)), + Math.cos(Math.toRadians(yaw)) * Math.cos(Math.toRadians(pitch)) + ) + .normalize().dotProduct(toSelf) < 0.0; + } else { + return false; + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/TargetTracker.java b/src/main/java/dev/zprestige/prestige/combat/TargetTracker.java index 0f3babc..75e0f36 100644 --- a/src/main/java/dev/zprestige/prestige/combat/TargetTracker.java +++ b/src/main/java/dev/zprestige/prestige/combat/TargetTracker.java @@ -2,135 +2,56 @@ package dev.zprestige.prestige.combat; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.render.MinecraftAccess; import net.minecraft.entity.Entity; import net.minecraft.entity.decoration.EndCrystalEntity; import net.minecraft.entity.player.PlayerEntity; -public class TargetTracker implements RenderContract2 { - private PlayerEntity a; - private long c; +public class TargetTracker implements MinecraftAccess { + private PlayerEntity target; + private long lastAttackTime; - public TargetTracker(long var1) { + public TargetTracker() { super(); - var1 = 0L; - var1 = 108076624727597L ^ var1; - long var3 = var1 ^ 134580352215820L; - this.a = null; - this.c = 0L; - Prestige.eventBus.register(new Object[]{this, var3}); + this.target = null; + this.lastAttackTime = 0L; + Prestige.eventBus.register(this); } @Subscribe - public void a(TickEvent19 var1) { - if (this.a != null && (b.world == null || !this.a.isAlive() || this.a.distanceTo(b.player) > 15.0F || System.currentTimeMillis() - this.c > 5000L)) { - this.a = null; + public void onClientTick(ClientTickEvent event) { + if (this.target != null && (mc.world == null || !this.target.isAlive() || this.target.distanceTo(mc.player) > 15.0F || System.currentTimeMillis() - this.lastAttackTime > 5000L)) { + this.target = null; } } @Subscribe - public void a(EntityEvent var1) { - Event.b(); - Entity var9 = var1.a(new Object[0]); - if (var9 instanceof PlayerEntity var10) { - this.a_void____(new Object[]{var10, 64033097141446L}); - } else if (var9 instanceof EndCrystalEntity) { - for (PlayerEntity var12 : b.world.getPlayers()) { - if (var12 != null - && var12 != b.player - && !Prestige.g.a(new Object[]{var12.getName().getString(), 24848952222090L}) - && var12.distanceTo(var9) <= 5.0F) { - this.a_void____(new Object[]{var12, 64033097141446L}); + public void onAttackEntity(AttackEntityEvent event) { + Entity attacked = event.getTarget(); + if (attacked instanceof PlayerEntity attackedPlayer) { + this.setTarget(attackedPlayer); + } else if (attacked instanceof EndCrystalEntity) { + for (PlayerEntity player : mc.world.getPlayers()) { + if (player != null + && player != mc.player + && !Prestige.friendManager.isFriend(player.getName().getString()) + && player.distanceTo(attacked) <= 5.0F) { + this.setTarget(player); } } } } - public PlayerEntity a(Object[] var1) { - return this.a; + public PlayerEntity getTarget() { + return this.target; } - public void a_void____(Object[] var1) { - PlayerEntity var2 = (PlayerEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 108076624727597L ^ var3; - long var5 = var3 ^ 86787500893025L; - if (!Prestige.g.a(new Object[]{var2.getName().getString(), var5})) { - this.a = var2; - this.c = System.currentTimeMillis(); - } - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public void setTarget(PlayerEntity newTarget) { + if (!Prestige.friendManager.isFriend(newTarget.getName().getString())) { + this.target = newTarget; + this.lastAttackTime = System.currentTimeMillis(); } } } diff --git a/src/main/java/dev/zprestige/prestige/combat/ThreatAssessor.java b/src/main/java/dev/zprestige/prestige/combat/ThreatAssessor.java new file mode 100644 index 0000000..c1af0d1 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/ThreatAssessor.java @@ -0,0 +1,88 @@ +package dev.zprestige.prestige.combat; + +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.inventory.InventoryUtil; +import dev.zprestige.prestige.render.ThreatAssessment; +import dev.zprestige.prestige.type.ThreatType; +import dev.zprestige.prestige.world.BlockUtil; +import java.util.EnumSet; +import java.util.function.Predicate; +import net.minecraft.block.Blocks; +import net.minecraft.client.MinecraftClient; +import net.minecraft.entity.Entity; +import net.minecraft.entity.decoration.EndCrystalEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; + +public final class ThreatAssessor { + private static final MinecraftClient mc = MinecraftClient.getInstance(); + public static final ThreatAssessment NO_THREAT = new ThreatAssessment(null, 0.0F, 0.0F); + + private ThreatAssessor() { + } + + public static ThreatAssessment findBiggestThreat(PlayerEntity enemy, EnumSet threatTypes, float sensitivity) { + if (mc.player != null && mc.world != null && enemy != null) { + ThreatAssessment biggest = NO_THREAT; + if (threatTypes.contains(ThreatType.CRYSTAL)) { + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EndCrystalEntity) { + biggest = keepBiggerThreat(biggest, ThreatType.CRYSTAL, (float)Prestige.damageCalculator.getCrystalDamage(mc.player, entity.getBlockPos().toCenterPos()), sensitivity); + } + } + } + + if (threatTypes.contains(ThreatType.ANCHOR)) { + for (BlockPos anchorPos : (Iterable)(BlockUtil.getBlocksInRadius(5, (Predicate)anchorCandidate -> isNearPlayer(enemy, anchorCandidate) + && mc.world.getBlockState(anchorCandidate).getBlock() == Blocks.RESPAWN_ANCHOR + && mc.world.getBlockState(anchorCandidate).get(Properties.CHARGES) != 0))) { + biggest = keepBiggerThreat(biggest, ThreatType.ANCHOR, (float)Prestige.damageCalculator.getAnchorDamage(mc.player, anchorPos.toCenterPos()), sensitivity); + } + } + + if (threatTypes.contains(ThreatType.OBSIDIAN) && !mc.player.isOnGround()) { + for (BlockPos obsidianPos : (Iterable)(BlockUtil.getBlocksInRadius(5, (Predicate)obsidianCandidate -> obsidianCandidate.getY() < mc.player.getY() + && isNearPlayer(enemy, obsidianCandidate) + && mc.world.getBlockState(obsidianCandidate).getBlock() == Blocks.OBSIDIAN + && mc.world.getBlockState(obsidianCandidate.up()).getBlock() == Blocks.AIR))) { + biggest = keepBiggerThreat(biggest, ThreatType.OBSIDIAN, (float)Prestige.damageCalculator.getCrystalDamage(mc.player, obsidianPos.up().toCenterPos()), sensitivity); + } + } + + if (threatTypes.contains(ThreatType.MACE)) { + float maceDamage = getMaceDamage(enemy); + if (maceDamage > 0.0F) { + biggest = keepBiggerThreat(biggest, ThreatType.MACE, maceDamage, sensitivity); + } + } + + return biggest; + } else { + return NO_THREAT; + } + } + + public static ThreatAssessment findBiggestThreat(PlayerEntity enemy, EnumSet threatTypes) { + return findBiggestThreat(enemy, threatTypes, 1.0F); + } + + public static float getMaceDamage(PlayerEntity attacker) { + return InventoryUtil.isMace(attacker.getMainHandStack()) && !(attacker.fallDistance <= 1.5) && !(attacker.getY() <= mc.player.getY()) + ? (float)(6.0 + attacker.fallDistance * 5.0) + : 0.0F; + } + + private static boolean isNearPlayer(PlayerEntity player, BlockPos pos) { + return player.squaredDistanceTo(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5) < 25.0; + } + + private static ThreatAssessment keepBiggerThreat(ThreatAssessment current, ThreatType type, float damage, float sensitivity) { + if (damage <= 0.0F) { + return current; + } else { + float weightedDamage = damage * type.confidence * sensitivity; + return weightedDamage <= current.weightedDamage ? current : new ThreatAssessment(type, damage, weightedDamage); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/TrajectoriesHelper.java b/src/main/java/dev/zprestige/prestige/combat/TrajectoriesHelper.java deleted file mode 100644 index 083e767..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/TrajectoriesHelper.java +++ /dev/null @@ -1,147 +0,0 @@ -package dev.zprestige.prestige.combat; - -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.projectile.PersistentProjectileEntity; -import net.minecraft.entity.projectile.ProjectileUtil; -import net.minecraft.item.ItemStack; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.EntityHitResult; -import net.minecraft.util.hit.HitResult; -import net.minecraft.util.hit.HitResult.Type; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.World; - -public final class TrajectoriesHelper extends PersistentProjectileEntity { - public boolean a; - - public TrajectoriesHelper(World var1, LivingEntity var2, ItemStack var3, long var4) { - super(EntityType.ARROW, var2, var1, var3, var3); - } - - @Override - public void tick() { - Event.b(); - HitResult var4 = ProjectileUtil.getCollision(this, lpL398_0 -> this.canHit(((net.minecraft.entity.Entity)lpL398_0))); - if (var4.getType() != Type.MISS) { - this.onCollision(var4); - } - - this.tickBlockCollision(); - Vec3d var5 = this.getVelocity(); - double var6 = this.getX() + var5.x; - double var8 = this.getY() + var5.y; - double var10 = this.getZ() + var5.z; - this.updateRotation(); - float var12 = this.isTouchingWater() ? 0.8F : 0.99F; - this.setVelocity(var5.multiply(var12)); - if (!this.hasNoGravity()) { - Vec3d var13 = this.getVelocity(); - this.setVelocity(var13.x, var13.y - 0.03, var13.z); - } - - this.setPosition(var6, var8, var10); - } - - @Override - public void onBlockHit(BlockHitResult blockHitResult) { - this.a = true; - } - - @Override - public ItemStack asItemStack() { - return null; - } - - @Override - public ItemStack getDefaultItemStack() { - return null; - } - - @Override - public void onEntityHit(EntityHitResult entityHitResult) { - this.a = true; - } - - @Override - public void setVelocity(double x, double y, double z, float power, float uncertainty) { - Vec3d var11 = new Vec3d(x, y, z).normalize().multiply(power); - this.setVelocity(var11); - this.setYaw((float)(MathHelper.atan2(var11.x, var11.z) * 180.0F / (float)Math.PI)); - this.setPitch((float)(MathHelper.atan2(var11.y, var11.horizontalLength()) * 180.0F / (float)Math.PI)); - this.lastYaw = this.getYaw(); - this.lastPitch = this.getPitch(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/combat/TrajectoriesSimulatedPearl.java b/src/main/java/dev/zprestige/prestige/combat/TrajectoriesSimulatedPearl.java new file mode 100644 index 0000000..ff6a8eb --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/TrajectoriesSimulatedPearl.java @@ -0,0 +1,74 @@ +package dev.zprestige.prestige.combat; + +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.projectile.PersistentProjectileEntity; +import net.minecraft.entity.projectile.ProjectileUtil; +import net.minecraft.item.ItemStack; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.EntityHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.hit.HitResult.Type; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public final class TrajectoriesSimulatedPearl extends PersistentProjectileEntity { + public boolean landed; + + public TrajectoriesSimulatedPearl(World worldIn, LivingEntity shooter, ItemStack pearlStack) { + super(EntityType.ARROW, shooter, worldIn, pearlStack, pearlStack); + } + + @Override + public void tick() { + HitResult hitResult = ProjectileUtil.getCollision(this, candidate -> this.canHit(candidate)); + if (hitResult.getType() != Type.MISS) { + this.onCollision(hitResult); + } + + this.tickBlockCollision(); + Vec3d motion = this.getVelocity(); + double nextX = this.getX() + motion.x; + double nextY = this.getY() + motion.y; + double nextZ = this.getZ() + motion.z; + this.updateRotation(); + this.setVelocity(motion.multiply(this.isTouchingWater() ? 0.8F : 0.99F)); + if (!this.hasNoGravity()) { + Vec3d currentMotion = this.getVelocity(); + this.setVelocity(currentMotion.x, currentMotion.y - 0.03, currentMotion.z); + } + + this.setPosition(nextX, nextY, nextZ); + } + + @Override + public void onBlockHit(BlockHitResult blockHitResult) { + this.landed = true; + } + + @Override + public ItemStack asItemStack() { + return null; + } + + @Override + public ItemStack getDefaultItemStack() { + return null; + } + + @Override + public void onEntityHit(EntityHitResult entityHitResult) { + this.landed = true; + } + + @Override + public void setVelocity(double x, double y, double z, float power, float uncertainty) { + Vec3d scaledMotion = new Vec3d(x, y, z).normalize().multiply(power); + this.setVelocity(scaledMotion); + this.setYaw((float)(MathHelper.atan2(scaledMotion.x, scaledMotion.z) * 180.0F / (float)Math.PI)); + this.setPitch((float)(MathHelper.atan2(scaledMotion.y, scaledMotion.horizontalLength()) * 180.0F / (float)Math.PI)); + this.lastYaw = this.getYaw(); + this.lastPitch = this.getPitch(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/combat/TwoDESPHelper.java b/src/main/java/dev/zprestige/prestige/combat/TwoDESPHelper.java deleted file mode 100644 index 469f11b..0000000 --- a/src/main/java/dev/zprestige/prestige/combat/TwoDESPHelper.java +++ /dev/null @@ -1,14 +0,0 @@ -package dev.zprestige.prestige.combat; - -import net.minecraft.entity.player.PlayerEntity; - -public final class TwoDESPHelper { - public PlayerEntity a; - public String b; - public float c; - public float d; - public float e; - public float f; - public float g; - public boolean h; -} diff --git a/src/main/java/dev/zprestige/prestige/combat/TwoDEspTarget.java b/src/main/java/dev/zprestige/prestige/combat/TwoDEspTarget.java new file mode 100644 index 0000000..c545709 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/TwoDEspTarget.java @@ -0,0 +1,14 @@ +package dev.zprestige.prestige.combat; + +import net.minecraft.entity.player.PlayerEntity; + +public final class TwoDEspTarget { + public PlayerEntity player; + public String name; + public float health; + public float maxHealth; + public float width; + public float height; + public float distance; + public boolean friend; +} diff --git a/src/main/java/dev/zprestige/prestige/combat/VisualRotationManager.java b/src/main/java/dev/zprestige/prestige/combat/VisualRotationManager.java new file mode 100644 index 0000000..335fa4e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/combat/VisualRotationManager.java @@ -0,0 +1,115 @@ +package dev.zprestige.prestige.combat; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.event.PlayerRenderStateEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.type.EventPhase; +import net.minecraft.util.math.MathHelper; + +public class VisualRotationManager implements MinecraftAccess { + private boolean initialized; + private float renderYaw; + private float renderPitch; + private float prevRenderYaw; + private float prevRenderPitch; + private boolean applied; + private float savedYaw; + private float savedPitch; + private float savedBodyYaw; + private float savedHeadYaw; + private float savedLastYaw; + private float savedLastPitch; + private float savedLastBodyYaw; + private float savedLastHeadYaw; + + public VisualRotationManager() { + super(); + this.initialized = false; + this.applied = false; + Prestige.eventBus.register(this); + } + + @Subscribe + public void onClientTick(ClientTickEvent event) { + if (mc.player == null) { + this.initialized = false; + } else if (!this.initialized) { + this.renderYaw = mc.player.getYaw(); + this.renderPitch = mc.player.getPitch(); + this.prevRenderYaw = this.renderYaw; + this.prevRenderPitch = this.renderPitch; + this.initialized = true; + } else { + Rotation targetRotation = Prestige.silentRotationManager.getServerRotation(); + if (targetRotation == null) { + this.renderYaw = mc.player.getYaw(); + this.renderPitch = mc.player.getPitch(); + this.prevRenderYaw = this.renderYaw; + this.prevRenderPitch = this.renderPitch; + } else { + this.prevRenderYaw = this.renderYaw; + this.prevRenderPitch = this.renderPitch; + float yawDelta = MathHelper.wrapDegrees(targetRotation.getYaw() - this.renderYaw); + float pitchDelta = targetRotation.getPitch() - this.renderPitch; + this.renderYaw = MathHelper.wrapDegrees(this.renderYaw + yawDelta * 0.4F); + this.renderPitch = MathHelper.clamp(this.renderPitch + pitchDelta * 0.4F, -90.0F, 90.0F); + } + } + } + + @Subscribe + public void onPlayerRenderState(PlayerRenderStateEvent event) { + if (event.entity == mc.player && this.initialized) { + if (event.getPhase() == EventPhase.PRE) { + if (this.applied) { + return; + } + + if (Prestige.silentRotationManager.getServerRotation() == null) { + return; + } + + float yawDiff = Math.abs(MathHelper.wrapDegrees(this.renderYaw - mc.player.getYaw())); + float pitchDiff = Math.abs(this.renderPitch - mc.player.getPitch()); + if (yawDiff < 0.5F && pitchDiff < 0.5F) { + return; + } + + this.savedYaw = mc.player.getYaw(); + this.savedPitch = mc.player.getPitch(); + this.savedBodyYaw = mc.player.bodyYaw; + this.savedHeadYaw = mc.player.headYaw; + this.savedLastYaw = mc.player.lastYaw; + this.savedLastPitch = mc.player.lastPitch; + this.savedLastBodyYaw = mc.player.lastBodyYaw; + this.savedLastHeadYaw = mc.player.lastHeadYaw; + mc.player.setYaw(this.renderYaw); + mc.player.setPitch(this.renderPitch); + mc.player.bodyYaw = this.renderYaw; + mc.player.headYaw = this.renderYaw; + mc.player.lastYaw = this.prevRenderYaw; + mc.player.lastPitch = this.prevRenderPitch; + mc.player.lastBodyYaw = this.prevRenderYaw; + mc.player.lastHeadYaw = this.prevRenderYaw; + this.applied = true; + } else if (event.getPhase() == EventPhase.POST && this.applied) { + mc.player.setYaw(this.savedYaw); + mc.player.setPitch(this.savedPitch); + mc.player.bodyYaw = this.savedBodyYaw; + mc.player.headYaw = this.savedHeadYaw; + mc.player.lastYaw = this.savedLastYaw; + mc.player.lastPitch = this.savedLastPitch; + mc.player.lastBodyYaw = this.savedLastBodyYaw; + mc.player.lastHeadYaw = this.savedLastHeadYaw; + this.applied = false; + } + } + } + + public boolean isRotationApplied() { + return this.applied; + } +} diff --git a/src/main/java/dev/zprestige/prestige/config/ClasspathResource.java b/src/main/java/dev/zprestige/prestige/config/ClasspathResource.java new file mode 100644 index 0000000..627ad79 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/config/ClasspathResource.java @@ -0,0 +1,49 @@ +package dev.zprestige.prestige.config; + +import java.io.InputStream; +import java.util.Objects; + +public class ClasspathResource { + private final String path; + private static final String NOT_FOUND_MESSAGE = "resource not found: "; + + private ClasspathResource(String resourcePath) { + this.path = resourcePath; + } + + public static ClasspathResource of(String resourcePath) { + return new ClasspathResource(resourcePath.startsWith("/") ? resourcePath.substring(1) : resourcePath); + } + + public InputStream openStream() { + InputStream stream = ClasspathResource.class.getClassLoader().getResourceAsStream(this.path); + if (stream == null) { + throw new IllegalArgumentException(NOT_FOUND_MESSAGE + this); + } else { + return stream; + } + } + + public String getPath() { + return this.path; + } + + @Override + public String toString() { + return this.path; + } + + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } else { + return !(other instanceof ClasspathResource resource) ? false : this.path.equals(resource.path); + } + } + + @Override + public int hashCode() { + return Objects.hash(this.path); + } +} diff --git a/src/main/java/dev/zprestige/prestige/config/ClasspathResourcePack.java b/src/main/java/dev/zprestige/prestige/config/ClasspathResourcePack.java new file mode 100644 index 0000000..278719a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/config/ClasspathResourcePack.java @@ -0,0 +1,75 @@ +package dev.zprestige.prestige.config; + +import dev.zprestige.prestige.client.Prestige; +import java.io.IOException; +import java.util.Optional; +import java.util.Set; +import net.minecraft.resource.InputSupplier; +import net.minecraft.resource.Resource; +import net.minecraft.resource.ResourcePack; +import net.minecraft.resource.ResourcePackInfo; +import net.minecraft.resource.ResourceType; +import net.minecraft.resource.ResourcePack.ResultConsumer; +import net.minecraft.resource.metadata.ResourceMetadataSerializer; +import net.minecraft.util.Identifier; +import org.jetbrains.annotations.Nullable; + +public class ClasspathResourcePack implements ResourcePack { + @Nullable + @Override + public InputSupplier openRoot(String[] segments) { + return null; + } + + @Nullable + @Override + public InputSupplier open(ResourceType type, Identifier id) { + return null; + } + + @Override + public void findResources(ResourceType type, String namespace, String prefix, ResultConsumer consumer) { + } + + @Override + public Set getNamespaces(ResourceType type) { + return null; + } + + @Nullable + @Override + public Object parseMetadata(ResourceMetadataSerializer metadataSerializer) throws IOException { + return null; + } + + @Override + public String getId() { + return "Prestige"; + } + + @Override + public Optional getKnownPackInfo() { + return ResourcePack.super.getKnownPackInfo(); + } + + @Override + public ResourcePackInfo getInfo() { + return null; + } + + @Override + public void close() { + } + + public static Resource createAssetResource(Identifier id) { + return new Resource(new ClasspathResourcePack(), () -> Prestige.class.getClassLoader().getResourceAsStream("assets/prestige/" + id.getPath())); + } + + public static Resource createResource(String path) { + return new Resource(new ClasspathResourcePack(), () -> Prestige.class.getClassLoader().getResourceAsStream(path)); + } + + public static InputSupplier createInputSupplier(String path) { + return () -> Prestige.class.getClassLoader().getResourceAsStream(path); + } +} diff --git a/src/main/java/dev/zprestige/prestige/config/ConfigHelper.java b/src/main/java/dev/zprestige/prestige/config/ConfigHelper.java deleted file mode 100644 index 9fa5948..0000000 --- a/src/main/java/dev/zprestige/prestige/config/ConfigHelper.java +++ /dev/null @@ -1,130 +0,0 @@ -package dev.zprestige.prestige.config; - -import com.google.gson.JsonObject; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class ConfigHelper { - private int a; - private float b; - private float c; - private float d; - private float e; - private float f; - - public ConfigHelper() { - } - - public ConfigHelper(int var1, float var2, float var3, float var4, float var5, float var6) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = var4; - this.e = var5; - this.f = var6; - } - - public static ConfigHelper a(Object[] var0) { - JsonObject var1 = (JsonObject)var0[0]; - ConfigHelper var4 = new ConfigHelper(); - var4.a = var1.get("emSize").getAsInt(); - var4.b = var1.get("lineHeight").getAsFloat(); - var4.c = var1.get("ascender").getAsFloat(); - var4.d = var1.get("descender").getAsFloat(); - var4.e = var1.get("underlineY").getAsFloat(); - var4.f = var1.get("underlineThickness").getAsFloat(); - return var4; - } - - public int a_int_(Object[] var1) { - return this.a; - } - - public float a_float_(Object[] var1) { - return this.b; - } - - public float b(Object[] var1) { - return this.c; - } - - public float c(Object[] var1) { - return this.d; - } - - public float d(Object[] var1) { - return this.e; - } - - public float e(Object[] var1) { - return this.f; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/config/ConfigHelper2.java b/src/main/java/dev/zprestige/prestige/config/ConfigHelper2.java deleted file mode 100644 index 29e7044..0000000 --- a/src/main/java/dev/zprestige/prestige/config/ConfigHelper2.java +++ /dev/null @@ -1,152 +0,0 @@ -package dev.zprestige.prestige.config; - -import com.google.gson.JsonObject; -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class ConfigHelper2 { - private int a; - private float b; - private float c; - private float d; - private float e; - private float f; - private float g; - private float h; - private float i; - private float j; - - public static ConfigHelper2 a(Object[] var0) { - JsonObject var1 = (JsonObject)var0[0]; - Event.b(); - ConfigHelper2 var5 = new ConfigHelper2(); - var5.a = var1.get("unicode").getAsInt(); - var5.b = var1.get("advance").getAsFloat(); - if (var1.has("planeBounds")) { - JsonObject var6 = var1.get("planeBounds").getAsJsonObject(); - var5.c = var6.get("left").getAsFloat(); - var5.d = var6.get("bottom").getAsFloat(); - var5.e = var6.get("right").getAsFloat(); - var5.f = var6.get("top").getAsFloat(); - } - - if (var1.has("atlasBounds")) { - JsonObject var7 = var1.get("atlasBounds").getAsJsonObject(); - var5.g = var7.get("left").getAsFloat(); - var5.h = var7.get("bottom").getAsFloat(); - var5.i = var7.get("right").getAsFloat(); - var5.j = var7.get("top").getAsFloat(); - } - - return var5; - } - - public int a_int__(Object[] var1) { - return this.a; - } - - public float a_float__(Object[] var1) { - return this.b; - } - - public float b(Object[] var1) { - return this.c; - } - - public float c(Object[] var1) { - return this.d; - } - - public float d(Object[] var1) { - return this.e; - } - - public float e(Object[] var1) { - return this.f; - } - - public float f(Object[] var1) { - return this.g; - } - - public float g(Object[] var1) { - return this.h; - } - - public float h(Object[] var1) { - return this.i; - } - - public float i(Object[] var1) { - return this.j; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/config/ConfigHelper3.java b/src/main/java/dev/zprestige/prestige/config/ConfigHelper3.java deleted file mode 100644 index 5fe0d6c..0000000 --- a/src/main/java/dev/zprestige/prestige/config/ConfigHelper3.java +++ /dev/null @@ -1,127 +0,0 @@ -package dev.zprestige.prestige.config; - -import dev.zprestige.prestige.event.Event; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Objects; - -public class ConfigHelper3 { - private final String a; - private static final String c = "resource not found: "; - - private ConfigHelper3(String var1) { - this.a = var1; - } - - public static ConfigHelper3 a(Object[] var0) { - String var1 = (String)var0[0]; - String var5 = var1.startsWith("/") ? var1.substring(1) : var1; - return new ConfigHelper3(var5); - } - - public InputStream a_InputStream(Object[] var1) { - Event.b(); - InputStream var5 = ConfigHelper3.class.getClassLoader().getResourceAsStream(this.a); - if (var5 == null) { - throw new IllegalArgumentException(c + this); - } else { - return var5; - } - } - - public String a_String(Object[] var1) { - return this.a; - } - - @Override - public String toString() { - return this.a; - } - - @Override - public boolean equals(Object var1) { - if (this == var1) { - return true; - } else { - return !(var1 instanceof ConfigHelper3 var5) ? false : this.a.equals(var5.a); - } - } - - @Override - public int hashCode() { - return Objects.hash(this.a); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static IllegalArgumentException a(IllegalArgumentException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/config/ConfigManager.java b/src/main/java/dev/zprestige/prestige/config/ConfigManager.java index e93d634..cc85302 100644 --- a/src/main/java/dev/zprestige/prestige/config/ConfigManager.java +++ b/src/main/java/dev/zprestige/prestige/config/ConfigManager.java @@ -3,7 +3,6 @@ package dev.zprestige.prestige.config; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; import dev.zprestige.prestige.ColorSetting; import dev.zprestige.prestige.KeybindSetting; import dev.zprestige.prestige.Module; @@ -12,18 +11,15 @@ import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Setting; import dev.zprestige.prestige.annotation.Chainable; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.ModuleStringBoolData; -import dev.zprestige.prestige.event.Event; +import dev.zprestige.prestige.data.PendingModuleActivation; import dev.zprestige.prestige.hud.HudElement; -import dev.zprestige.prestige.math.MathUtil5; -import dev.zprestige.prestige.render.RenderHelper11; +import dev.zprestige.prestige.math.SettingValueParser; +import dev.zprestige.prestige.render.ConfigReport; import dev.zprestige.prestige.type.NotificationType; -import dev.zprestige.prestige.type.SettingFlag; -import dev.zprestige.prestige.type.TrajectoryType; -import dev.zprestige.prestige.util.TpsTimer; +import dev.zprestige.prestige.type.HudAlignment; +import dev.zprestige.prestige.type.HudAnchor; +import dev.zprestige.prestige.util.NotificationManager; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; @@ -35,926 +31,653 @@ import java.util.Map.Entry; import net.minecraft.client.MinecraftClient; public class ConfigManager { - private static final Gson a = new Gson(); - private static final int b = 100000; - private static final int c = 64; - private String d; - private String e; - private static final long m = 8000L; + private static final Gson GSON = new Gson(); + private String lastCompleteSnapshot; + private String lastLoadReport; + private static final long NOTIFICATION_DURATION_MS = 8000L; @Chainable - public String a() { - Event.b(); - RenderHelper11 var16 = new RenderHelper11("save"); - JsonObject var17 = new JsonObject(); + public String saveToJson() { + ConfigReport report = new ConfigReport("save"); + JsonObject root = new JsonObject(); try { if (Prestige.moduleManager == null) { - var16.b(new Object[]{"Config", "module manager is not ready", null}); + report.error("Config", "module manager is not ready", null); } else { - HashSet var18 = new HashSet(); - var18.add("Menu"); - JsonObject var19 = new JsonObject(); + HashSet sectionNames = new HashSet(); + sectionNames.add("Menu"); + JsonObject menuSection = new JsonObject(); - for (Setting var21 : (Iterable)(Prestige.moduleManager.getMenu(new Object[0]).settings)) { - this.g(new Object[]{var19, var21, "Menu", var16, 128387161211156L}); + for (Setting menuSetting : (Iterable)(Prestige.moduleManager.getMenu().settings)) { + this.saveSetting(menuSection, menuSetting, "Menu", report); } - var17.add("Menu", var19); + root.add("Menu", menuSection); - for (Module var32 : (Iterable)(Prestige.moduleManager.getModules())) { - String var22 = var32.getName(); - if (var22 == null || var22.isBlank()) { - var16.b(new Object[]{"Unnamed module", "module has no config name", null}); - } else if (!var18.add(var22)) { - var16.b(new Object[]{var22, "duplicate config section name", null}); + for (Module module : (Iterable)(Prestige.moduleManager.getModules())) { + String moduleName = module.getName(); + if (moduleName == null || moduleName.isBlank()) { + report.error("Unnamed module", "module has no config name", null); + } else if (!sectionNames.add(moduleName)) { + report.error(moduleName, "duplicate config section name", null); } else { - JsonObject var23 = new JsonObject(); + JsonObject moduleSection = new JsonObject(); - for (Setting var25 : (Iterable)(var32.getCoreSettings(new Object[0]))) { - this.g(new Object[]{var23, var25, var22, var16, 128387161211156L}); + for (Setting coreSetting : (Iterable)(module.getCoreSettings())) { + this.saveSetting(moduleSection, coreSetting, moduleName, report); } - for (Setting var38 : (Iterable)(var32.settings)) { - this.g(new Object[]{var23, var38, var22, var16, 128387161211156L}); + for (Setting setting : (Iterable)(module.settings)) { + this.saveSetting(moduleSection, setting, moduleName, report); } - var17.add(var22, var23); + root.add(moduleName, moduleSection); } } - if (Prestige.l == null) { - var16.b(new Object[]{"HUD", "HUD editor is not ready", null}); + if (Prestige.hudEditorScreen == null) { + report.error("HUD", "HUD editor is not ready", null); } else { - for (HudElement var35 : Prestige.l.a_HudElementArr(new Object[0])) { - String var37 = var35.a_String____(new Object[0]); - if (var37 == null || var37.isBlank()) { - var16.b(new Object[]{"HUD", "component has no config name", null}); - } else if (!var18.add(var37)) { - var16.b(new Object[]{"HUD > " + var37, "duplicate config section name", null}); + for (HudElement element : Prestige.hudEditorScreen.getElements()) { + String elementName = element.getName(); + if (elementName == null || elementName.isBlank()) { + report.error("HUD", "component has no config name", null); + } else if (!sectionNames.add(elementName)) { + report.error("HUD > " + elementName, "duplicate config section name", null); } else { try { - JsonObject var39 = new JsonObject(); - var39.addProperty("Enabled", var35.e_boolean(new Object[]{15166320517519L})); - var39.addProperty("X", var35.a_float_______(new Object[0])); - var39.addProperty("Y", var35.b_float___(new Object[0])); - if (var35.b_boolean____(new Object[0])) { - var16.c(new Object[]{3}); + JsonObject elementSection = new JsonObject(); + elementSection.addProperty("Enabled", element.isEnabled()); + elementSection.addProperty("X", element.getX()); + elementSection.addProperty("Y", element.getY()); + if (element.isPositionPending()) { + report.addValues(3); } else { - var39.addProperty("RuleX", var35.i.name()); - var39.addProperty("RuleY", var35.j.name()); - var39.addProperty("OffX", var35.k); - var39.addProperty("OffY", var35.l); - var16.c(new Object[]{7}); + elementSection.addProperty("RuleX", element.anchorX.name()); + elementSection.addProperty("RuleY", element.anchorY.name()); + elementSection.addProperty("OffX", element.offsetX); + elementSection.addProperty("OffY", element.offsetY); + report.addValues(7); } - var17.add(var37, var39); - } catch (Throwable var27) { - j(new Object[]{var27, 77239967061762L}); - var16.b(new Object[]{"HUD > " + var37, d_String(new Object[]{var27, 126091222217669L}), var27}); + root.add(elementName, elementSection); + } catch (Throwable elementError) { + rethrowIfFatal(elementError); + report.error("HUD > " + elementName, describeError(elementError), elementError); } } } } } - } catch (Throwable var28) { - j(new Object[]{var28, 77239967061762L}); - var16.b(new Object[]{"Config", "unexpected save failure: " + d_String(new Object[]{var28, 126091222217669L}), var28}); + } catch (Throwable saveError) { + rethrowIfFatal(saveError); + report.error("Config", "unexpected save failure: " + describeError(saveError), saveError); } - String var29; + String json; try { - var29 = var17.toString(); - } catch (Throwable var26) { - j(new Object[]{var26, 77239967061762L}); - var16.b(new Object[]{"Config", "could not serialize snapshot: " + d_String(new Object[]{var26, 126091222217669L}), var26}); - var29 = "{}"; + json = root.toString(); + } catch (Throwable serializeError) { + rethrowIfFatal(serializeError); + report.error("Config", "could not serialize snapshot: " + describeError(serializeError), serializeError); + json = "{}"; } - if (var16.a_boolean__________________________________________(new Object[]{17026319865315L})) { - if (this.d != null) { - var16.a(new Object[]{"Config", "save was aborted; the previous complete snapshot was kept", null}); - var29 = this.d; + if (report.hasErrors()) { + if (this.lastCompleteSnapshot != null) { + report.warn("Config", "save was aborted; the previous complete snapshot was kept", null); + json = this.lastCompleteSnapshot; } else { - var16.b(new Object[]{"Config", "save was aborted; no complete fallback snapshot exists", null}); - var29 = "{}"; + report.error("Config", "save was aborted; no complete fallback snapshot exists", null); + json = "{}"; } } else { - this.d = var29; + this.lastCompleteSnapshot = json; } - i(new Object[]{var16, 29277096836346L}); - return var29; + notifyResult(report); + return json; } @Chainable - public void a(String var1) { - Event.b(); - RenderHelper11 var25 = new RenderHelper11("load"); + public void loadFromJson(String json) { + ConfigReport report = new ConfigReport("load"); try { - JsonObject var26 = this.a_JsonObject(new Object[]{var1, var25, 50406667818198L}); - if (var26 == null) { + JsonObject root = this.parseConfigJson(json, report); + if (root == null) { return; } if (Prestige.moduleManager != null) { - HashSet var27 = new HashSet(); - var27.add("Menu"); - ArrayList var28 = new ArrayList(); - Set var29 = Collections.newSetFromMap(new IdentityHashMap()); - this.a(new Object[]{var26, var29, var25, 33673993163928L}); - this.b(new Object[]{var26, var25, 86545728593565L}); + HashSet sectionNames = new HashSet(); + sectionNames.add("Menu"); + ArrayList pendingStates = new ArrayList(); + Set predisabled = Collections.newSetFromMap(new IdentityHashMap()); + this.disableModulesBeforeLoad(root, predisabled, report); + this.loadMenuSection(root, report); - for (Module var31 : (Iterable)(Prestige.moduleManager.getModules())) { - String var32 = var31.getName(); - if (var32 != null && !var32.isBlank()) { - if (!var27.add(var32)) { - var25.b(new Object[]{var32, "duplicate module config name; section was skipped", null}); + for (Module module : (Iterable)(Prestige.moduleManager.getModules())) { + String moduleName = module.getName(); + if (moduleName != null && !moduleName.isBlank()) { + if (!sectionNames.add(moduleName)) { + report.error(moduleName, "duplicate module config name; section was skipped", null); } else { - this.c(new Object[]{var26, var31, var32, var29, var28, var25, 63085766558568L}); + this.loadModuleSection(root, module, moduleName, predisabled, pendingStates, report); } } } - if (Prestige.l == null) { - var25.a(new Object[]{"HUD", "HUD editor is not ready; HUD layout was skipped", null}); + if (Prestige.hudEditorScreen == null) { + report.warn("HUD", "HUD editor is not ready; HUD layout was skipped", null); } else { - for (HudElement var33 : Prestige.l.a_HudElementArr(new Object[0])) { - String var34 = var33.a_String____(new Object[0]); - if (var34 == null || var34.isBlank()) { - var25.b(new Object[]{"HUD", "component has no config name", null}); - } else if (!var27.add(var34)) { - var25.b(new Object[]{"HUD > " + var34, "duplicate config section name; section was skipped", null}); + for (HudElement element : Prestige.hudEditorScreen.getElements()) { + String elementName = element.getName(); + if (elementName == null || elementName.isBlank()) { + report.error("HUD", "component has no config name", null); + } else if (!sectionNames.add(elementName)) { + report.error("HUD > " + elementName, "duplicate config section name; section was skipped", null); } else { - this.e(new Object[]{var26, var33, var34, var25, 5466957899849L}); + this.loadHudSection(root, element, elementName, report); } } } - this.h(new Object[]{var26, var27, "", "module or HUD section", var25, 9248152575382L}); + this.reportUnknownKeys(root, sectionNames, "", "module or HUD section", report); - for (ModuleStringBoolData var43 : (Iterable)(var28)) { - JsonElement var10001 = var43.aE(); - Module var10002 = var43.aC(); - String var10003 = var43.aD(); - boolean var10004 = var43.aF(); - Object[] var10008 = new Object[]{null, null, null, null, var25, 81130270711953L}; - var10008[3] = var10004; - var10008[2] = var10003; - var10008[1] = var10002; - var10008[0] = var10001; - this.d(var10008); + for (PendingModuleActivation pending : (Iterable)(pendingStates)) { + this.applyModuleEnabledState(pending.enabledValue(), pending.module(), pending.sectionName(), pending.alreadyApplied(), report); } - if (var25.c == 0) { - var25.b(new Object[]{"Config", "no recognized config sections were found", null}); + if (report.sectionCount == 0) { + report.error("Config", "no recognized config sections were found", null); } return; } - var25.b(new Object[]{"Config", "module manager is not ready", null}); - } catch (Throwable var38) { - j(new Object[]{var38, 77239967061762L}); - var25.b(new Object[]{"Config", "unexpected load failure: " + d_String(new Object[]{var38, 126091222217669L}), var38}); + report.error("Config", "module manager is not ready", null); + } catch (Throwable error) { + rethrowIfFatal(error); + report.error("Config", "unexpected load failure: " + describeError(error), error); return; } finally { - this.e = var25.a_String_______(new Object[0]); - i(new Object[]{var25, 29277096836346L}); + this.lastLoadReport = report.getSummary(); + notifyResult(report); } } @Chainable - public String b() { - String var1 = this.e; - this.e = null; - return var1; + public String consumeLoadReport() { + String report = this.lastLoadReport; + this.lastLoadReport = null; + return report; } - private void a(Object[] var1) { - JsonObject var4 = (JsonObject)var1[0]; - Set var3 = (Set)var1[1]; - RenderHelper11 var2 = (RenderHelper11)var1[2]; - long var5 = (Long)var1[3]; - var5 = 96496729806863L ^ var5; - long var7 = var5 ^ 37162905344827L; - long var9 = var5 ^ 132314134132321L; - long var11 = var5 ^ 103654541799618L; - long var13 = var5 ^ 107987087481170L; - long var15 = var5 ^ 16891702107029L; - long var17 = var5 ^ 65759533973330L; - Event.b(); - HashSet var20 = new HashSet(); - var20.add("Menu"); - Iterator var21 = Prestige.moduleManager.getModules().iterator(); + private void disableModulesBeforeLoad(JsonObject root, Set predisabled, ConfigReport report) { + HashSet seenNames = new HashSet(); + seenNames.add("Menu"); + Iterator moduleIterator = Prestige.moduleManager.getModules().iterator(); while (true) { - Module var22; - String var23; - boolean var27; + Module module; + String name; + boolean currentlyEnabled; while (true) { - boolean var26; + boolean configEnabled; while (true) { - if (!var21.hasNext()) { + if (!moduleIterator.hasNext()) { return; } - var22 = (Module)var21.next(); - var23 = var22.getName(); - if (var23 != null && !var23.isBlank() && var20.add(var23)) { - JsonElement var24 = var4.get(var23); - if (var24 != null && var24.isJsonObject()) { - JsonObject var25 = var24.getAsJsonObject(); - if (var25.has("Enabled")) { + module = (Module)moduleIterator.next(); + name = module.getName(); + if (name != null && !name.isBlank() && seenNames.add(name)) { + JsonElement section = root.get(name); + if (section != null && section.isJsonObject()) { + JsonObject sectionObject = section.getAsJsonObject(); + if (sectionObject.has("Enabled")) { try { - var26 = MathUtil5.a_boolean________(new Object[]{this.a_String_(new Object[]{var25.get("Enabled"), var11}), var9}); + configEnabled = SettingValueParser.parseBoolean(this.readScalarString(sectionObject.get("Enabled"))); break; - } catch (Throwable var32) { - j(new Object[]{var32, var15}); + } catch (Throwable parseError) { + rethrowIfFatal(parseError); } } } } } - if (!var26) { + if (!configEnabled) { try { - var27 = var22.isEnabled(); + currentlyEnabled = module.isEnabled(); break; - } catch (Throwable var33) { - j(new Object[]{var33, var15}); - var2.b(new Object[]{var23 + " > Enabled", "could not inspect current module state: " + d_String(new Object[]{var33, var17}), var33}); + } catch (Throwable stateError) { + rethrowIfFatal(stateError); + report.error(name + " > Enabled", "could not inspect current module state: " + describeError(stateError), stateError); } } } - if (var27) { - var3.add(var22); - String var28 = var23 + " > Enabled"; + if (currentlyEnabled) { + predisabled.add(module); + String settingPath = name + " > Enabled"; try { - var22.toggle(new Object[]{var7}); - if (var22.isEnabled()) { - var22.toggle(new Object[]{var7}); + module.toggle(); + if (module.isEnabled()) { + module.toggle(); } - if (!var22.isEnabled()) { - var2.c(new Object[]{1}); + if (!module.isEnabled()) { + report.addValues(1); } else { - var2.a(new Object[]{var28, "module changed its own state while being disabled", null}); + report.warn(settingPath, "module changed its own state while being disabled", null); } - } catch (Throwable var34) { - j(new Object[]{var34, var15}); - Object[] var10006 = new Object[]{null, null, var34, var13}; - var10006[1] = true; - var10006[0] = var22; - boolean var30 = this.a_boolean__(var10006); - String var31 = var30 ? "disable lifecycle failed; previous state was restored" : "disable lifecycle failed; state may be inconsistent"; - var2.b(new Object[]{var28, var31, var34}); + } catch (Throwable toggleError) { + rethrowIfFatal(toggleError); + report.error(settingPath, this.restoreModuleState(module, true, toggleError) ? "disable lifecycle failed; previous state was restored" : "disable lifecycle failed; state may be inconsistent", toggleError); } } } } - private void b(Object[] var1) { - JsonObject var2 = (JsonObject)var1[0]; - RenderHelper11 var3 = (RenderHelper11)var1[1]; - long var4 = (Long)var1[2]; - var4 = 96496729806863L ^ var4; - long var6 = var4 ^ 8706910453811L; - long var8 = var4 ^ 18813483277060L; - long var10 = var4 ^ 79939548172944L; - if (var2.has("Menu")) { - var3.c++; - JsonObject var13 = this.b_JsonObject(new Object[]{var2.get("Menu"), "Menu", var3, var6}); - if (var13 != null) { - HashSet var14 = new HashSet(); + private void loadMenuSection(JsonObject root, ConfigReport report) { + if (root.has("Menu")) { + report.sectionCount++; + JsonObject section = this.requireSectionObject(root.get("Menu"), "Menu", report); + if (section != null) { + HashSet seenSettings = new HashSet(); - for (Setting var16 : (Iterable)(Prestige.moduleManager.getMenu(new Object[0]).settings)) { - this.f(new Object[]{var13, var16, "Menu", var14, var3, var10}); + for (Setting setting : (Iterable)(Prestige.moduleManager.getMenu().settings)) { + this.loadSetting(section, setting, "Menu", seenSettings, report); } - this.h(new Object[]{var13, var14, "Menu", "setting", var3, var8}); + this.reportUnknownKeys(section, seenSettings, "Menu", "setting", report); } } } - private void c(Object[] var1) { - JsonObject var7 = (JsonObject)var1[0]; - Module var2 = (Module)var1[1]; - String var3 = (String)var1[2]; - Set var8 = (Set)var1[3]; - List var9 = (List)var1[4]; - RenderHelper11 var6 = (RenderHelper11)var1[5]; - long var4 = (Long)var1[6]; - var4 = 96496729806863L ^ var4; - long var10 = var4 ^ 123407556550086L; - long var12 = var4 ^ 113019533182705L; - long var14 = var4 ^ 69691540459365L; - if (var7.has(var3)) { - var6.c++; - JsonObject var17 = this.b_JsonObject(new Object[]{var7.get(var3), var3, var6, var10}); - if (var17 != null) { - HashSet var18 = new HashSet(); - boolean var19 = false; + private void loadModuleSection(JsonObject root, Module module, String name, Set predisabled, List pendingStates, ConfigReport report) { + if (root.has(name)) { + report.sectionCount++; + JsonObject section = this.requireSectionObject(root.get(name), name, report); + if (section != null) { + HashSet seenSettings = new HashSet(); + boolean hasEnabledSetting = false; - for (Setting var21 : (Iterable)(var2.getCoreSettings(new Object[0]))) { - if ("Enabled".equals(var21.getName())) { - var19 = true; - var18.add("Enabled"); + for (Setting coreSetting : (Iterable)(module.getCoreSettings())) { + if ("Enabled".equals(coreSetting.getName())) { + hasEnabledSetting = true; + seenSettings.add("Enabled"); } else { - this.f(new Object[]{var17, var21, var3, var18, var6, var14}); + this.loadSetting(section, coreSetting, name, seenSettings, report); } } - for (Setting var24 : (Iterable)(var2.settings)) { - this.f(new Object[]{var17, var24, var3, var18, var6, var14}); + for (Setting setting : (Iterable)(module.settings)) { + this.loadSetting(section, setting, name, seenSettings, report); } - this.h(new Object[]{var17, var18, var3, "setting", var6, var12}); - if (var19 && var17.has("Enabled")) { - var9.add(new ModuleStringBoolData(var2, var3, var17.get("Enabled"), var8.contains(var2))); + this.reportUnknownKeys(section, seenSettings, name, "setting", report); + if (hasEnabledSetting && section.has("Enabled")) { + pendingStates.add(new PendingModuleActivation(module, name, section.get("Enabled"), predisabled.contains(module))); } } } } - private void d(Object[] var1) { - JsonElement var8 = (JsonElement)var1[0]; - Module var2 = (Module)var1[1]; - String var4 = (String)var1[2]; - boolean var3 = (Boolean)var1[3]; - RenderHelper11 var5 = (RenderHelper11)var1[4]; - long var6 = (Long)var1[5]; - var6 = 96496729806863L ^ var6; - long var9 = var6 ^ 130452708159282L; - long var11 = var6 ^ 51947669766760L; - long var13 = var6 ^ 10085635278027L; - long var15 = var6 ^ 58684175330651L; - long var17 = var6 ^ 96985419263900L; - long var19 = var6 ^ 119465039121243L; - long var21 = var6 ^ 121114916499154L; - Event.b(); - String var24 = var4 + " > Enabled"; - if (!var3) { + private void applyModuleEnabledState(JsonElement enabledValue, Module module, String name, boolean alreadyDisabled, ConfigReport report) { + String settingPath = name + " > Enabled"; + if (!alreadyDisabled) { try { - boolean var25 = MathUtil5.a_boolean________(new Object[]{this.a_String_(new Object[]{var8, var13}), var11}); - boolean var26 = var2.isEnabled(); - if (var25 == var26) { - var5.c(new Object[]{1}); + boolean wantEnabled = SettingValueParser.parseBoolean(this.readScalarString(enabledValue)); + boolean wasEnabled = module.isEnabled(); + if (wantEnabled == wasEnabled) { + report.addValues(1); return; } - if (var25 && !var2.b(new Object[]{var21})) { - var5.a(new Object[]{var24, "activation is blocked for downloaded configs; settings were still loaded", null}); + if (wantEnabled && !module.isPersistent()) { + report.warn(settingPath, "activation is blocked for downloaded configs; settings were still loaded", null); return; } try { - var2.toggle(new Object[]{var9}); - if (var2.isEnabled() == var25) { - var5.c(new Object[]{1}); + module.toggle(); + if (module.isEnabled() == wantEnabled) { + report.addValues(1); } else { - var5.a(new Object[]{var24, "module changed its own state during activation", null}); + report.warn(settingPath, "module changed its own state during activation", null); } - } catch (Throwable var31) { - j(new Object[]{var31, var17}); - Object[] var10006 = new Object[]{null, null, var31, var15}; - var10006[1] = var26; - var10006[0] = var2; - boolean var29 = this.a_boolean__(var10006); - String var30 = var29 ? "module lifecycle failed; previous state was restored" : "module lifecycle failed; state may be inconsistent"; - var5.b(new Object[]{var24, var30, var31}); + } catch (Throwable toggleError) { + rethrowIfFatal(toggleError); + report.error(settingPath, this.restoreModuleState(module, wasEnabled, toggleError) ? "module lifecycle failed; previous state was restored" : "module lifecycle failed; state may be inconsistent", toggleError); } - } catch (Throwable var32) { - j(new Object[]{var32, var17}); - var5.b(new Object[]{var24, d_String(new Object[]{var32, var19}), var32}); + } catch (Throwable error) { + rethrowIfFatal(error); + report.error(settingPath, describeError(error), error); } } } - private boolean a_boolean__(Object[] var1) { - Module var4 = (Module)var1[0]; - boolean var3 = (Boolean)var1[1]; - Throwable var2 = (Throwable)var1[2]; - long var5 = (Long)var1[3]; - var5 = 96496729806863L ^ var5; - long var7 = var5 ^ 22237184105062L; - long var9 = var5 ^ 64498351692488L; - + private boolean restoreModuleState(Module module, boolean expectedEnabled, Throwable failure) { try { - if (var4.isEnabled() != var3) { - var4.toggle(new Object[]{var7}); + if (module.isEnabled() != expectedEnabled) { + module.toggle(); } - return var4.isEnabled() == var3; - } catch (Throwable var13) { - j(new Object[]{var13, var9}); - var2.addSuppressed(var13); + return module.isEnabled() == expectedEnabled; + } catch (Throwable restoreError) { + rethrowIfFatal(restoreError); + failure.addSuppressed(restoreError); return false; } } - private void e(Object[] var1) { - JsonObject var7 = (JsonObject)var1[0]; - HudElement var2 = (HudElement)var1[1]; - String var4 = (String)var1[2]; - RenderHelper11 var3 = (RenderHelper11)var1[3]; - long var5 = (Long)var1[4]; - var5 = 96496729806863L ^ var5; - long var8 = var5 ^ 100411059039696L; - long var10 = var5 ^ 5502290586488L; - long var12 = var5 ^ 58875693054694L; - long var14 = var5 ^ 101797762110170L; - long var16 = var5 ^ 23108292749124L; - long var18 = var5 ^ 36929804059523L; - long var20 = var5 ^ 85373803017959L; - long var22 = var5 ^ 87860093076389L; - long var24 = var5 ^ 85724311003336L; - long var26 = var5 ^ 55444573469968L; - long var28 = var5 ^ 107814391728816L; - long var30 = var5 ^ 119585972925391L; - long var32 = var5 ^ 74892457757715L; - long var34 = var5 ^ 104387745518025L; - long var36 = var5 ^ 59274824819998L; - if (var7.has(var4)) { - var3.c++; - String var39 = "HUD > " + var4; - JsonObject var40 = this.b_JsonObject(new Object[]{var7.get(var4), var39, var3, var20}); - if (var40 != null) { - Set var41 = Set.of("Enabled", "X", "Y", "Anchor", "RuleX", "RuleY", "OffX", "OffY"); - this.h(new Object[]{var40, var41, var39, "setting", var3, var8}); - boolean var42 = var40.has("RuleX") && var40.has("RuleY") && var40.has("OffX") && var40.has("OffY"); - boolean var43 = var40.has("X"); - boolean var44 = var40.has("Y"); - if (var42) { + private void loadHudSection(JsonObject root, HudElement element, String name, ConfigReport report) { + if (root.has(name)) { + report.sectionCount++; + String sectionPath = "HUD > " + name; + JsonObject section = this.requireSectionObject(root.get(name), sectionPath, report); + if (section != null) { + Set knownKeys = Set.of("Enabled", "X", "Y", "Anchor", "RuleX", "RuleY", "OffX", "OffY"); + this.reportUnknownKeys(section, knownKeys, sectionPath, "setting", report); + boolean hasRules = section.has("RuleX") && section.has("RuleY") && section.has("OffX") && section.has("OffY"); + boolean hasX = section.has("X"); + boolean hasY = section.has("Y"); + if (hasRules) { try { - SettingFlag var45 = SettingFlag.valueOf(this.a_String_(new Object[]{var40.get("RuleX"), var32})); - SettingFlag var46 = SettingFlag.valueOf(this.a_String_(new Object[]{var40.get("RuleY"), var32})); - float var47 = MathUtil5.a_float_____________(new Object[]{this.a_String_(new Object[]{var40.get("OffX"), var32}), var24}); - float var48 = MathUtil5.a_float_____________(new Object[]{this.a_String_(new Object[]{var40.get("OffY"), var32}), var24}); - Object[] var10007 = new Object[]{null, null, null, null, var26}; - var10007[3] = var48; - var10007[2] = var47; - var10007[1] = var46; - var10007[0] = var45; - var2.f_void(var10007); - var3.c(new Object[]{4}); - } catch (IllegalArgumentException var52) { - var3.b(new Object[]{var39 + " > Position", "unknown positioning rule; position was skipped", null}); - } catch (Throwable var53) { - j(new Object[]{var53, var16}); - var3.b(new Object[]{var39 + " > Position", d_String(new Object[]{var53, var18}), var53}); + element.setAnchors(HudAlignment.valueOf(this.readScalarString(section.get("RuleX"))), HudAlignment.valueOf(this.readScalarString(section.get("RuleY"))), SettingValueParser.parseFloat(this.readScalarString(section.get("OffX"))), SettingValueParser.parseFloat(this.readScalarString(section.get("OffY")))); + report.addValues(4); + } catch (IllegalArgumentException unknownRule) { + report.error(sectionPath + " > Position", "unknown positioning rule; position was skipped", null); + } catch (Throwable ruleError) { + rethrowIfFatal(ruleError); + report.error(sectionPath + " > Position", describeError(ruleError), ruleError); } - } else if (var43 != var44) { - var3.b(new Object[]{var39 + " > Position", "X and Y must both be present; position was skipped", null}); - } else if (var43) { + } else if (hasX != hasY) { + report.error(sectionPath + " > Position", "X and Y must both be present; position was skipped", null); + } else if (hasX) { try { label128: { - float var58 = MathUtil5.a_float_____________(new Object[]{this.a_String_(new Object[]{var40.get("X"), var32}), var24}); - float var60 = MathUtil5.a_float_____________(new Object[]{this.a_String_(new Object[]{var40.get("Y"), var32}), var24}); + float x = SettingValueParser.parseFloat(this.readScalarString(section.get("X"))); + float y = SettingValueParser.parseFloat(this.readScalarString(section.get("Y"))); label129: { { - if (var40.has("Anchor")) { + if (section.has("Anchor")) { try { - TrajectoryType var10001 = TrajectoryType.valueOf(this.a_String_(new Object[]{var40.get("Anchor"), var32})); - Object[] var10006 = new Object[]{null, null, null, var12}; - var10006[2] = var60; - var10006[1] = var58; - var10006[0] = var10001; - var2.g(var10006); - var3.c(new Object[]{3}); + element.setCornerAnchor(HudAnchor.valueOf(this.readScalarString(section.get("Anchor"))), x, y); + report.addValues(3); break label128; - } catch (IllegalArgumentException var54) { + } catch (IllegalArgumentException unknownAnchor) { break label129; } } } - Object[] var10005 = new Object[]{null, null, var10}; - var10005[1] = var60; - var10005[0] = var58; - var2.a_void_______(var10005); - var3.c(new Object[]{2}); + element.setPosition(x, y); + report.addValues(2); break label128; } - var3.b(new Object[]{var39 + " > Anchor", "unknown anchor; position was skipped", null}); + report.error(sectionPath + " > Anchor", "unknown anchor; position was skipped", null); } - } catch (Throwable var56) { - j(new Object[]{var56, var16}); - var3.b(new Object[]{var39 + " > Position", d_String(new Object[]{var56, var18}), var56}); + } catch (Throwable positionError) { + rethrowIfFatal(positionError); + report.error(sectionPath + " > Position", describeError(positionError), positionError); } } - if (var40.has("Enabled")) { + if (section.has("Enabled")) { try { - boolean var59 = MathUtil5.a_boolean________(new Object[]{this.a_String_(new Object[]{var40.get("Enabled"), var32}), var28}); - if (var59 != var2.e_boolean(new Object[]{var34})) { - boolean var61 = var2.e_boolean(new Object[]{var34}); + if (SettingValueParser.parseBoolean(this.readScalarString(section.get("Enabled"))) != element.isEnabled()) { + boolean wasEnabled = element.isEnabled(); try { - var2.j(new Object[]{var30}); - } catch (Throwable var50) { - j(new Object[]{var50, var16}); - Object[] var63 = new Object[]{null, null, var50, var14}; - var63[1] = var61; - var63[0] = var2; - boolean var62 = this.b_boolean_(var63); - String var49 = var62 ? "HUD lifecycle failed; previous state was restored" : "HUD lifecycle failed; state may be inconsistent"; - var3.b(new Object[]{var39 + " > Enabled", var49, var50}); + element.toggle(); + } catch (Throwable toggleError) { + rethrowIfFatal(toggleError); + report.error(sectionPath + " > Enabled", this.restoreHudState(element, wasEnabled, toggleError) ? "HUD lifecycle failed; previous state was restored" : "HUD lifecycle failed; state may be inconsistent", toggleError); return; } } - var3.c(new Object[]{1}); - } catch (Throwable var51) { - j(new Object[]{var51, var16}); - var3.b(new Object[]{var39 + " > Enabled", d_String(new Object[]{var51, var18}), var51}); + report.addValues(1); + } catch (Throwable enabledError) { + rethrowIfFatal(enabledError); + report.error(sectionPath + " > Enabled", describeError(enabledError), enabledError); } } } } } - private boolean b_boolean_(Object[] var1) { - HudElement var5 = (HudElement)var1[0]; - boolean var4 = (Boolean)var1[1]; - Throwable var6 = (Throwable)var1[2]; - long var2 = (Long)var1[3]; - var2 = 96496729806863L ^ var2; - long var7 = var2 ^ 113891817421082L; - long var9 = var2 ^ 94173269318428L; - long var11 = var2 ^ 33340080713105L; - + private boolean restoreHudState(HudElement element, boolean expectedEnabled, Throwable failure) { try { - if (var5.e_boolean(new Object[]{var9}) != var4) { - var5.j(new Object[]{var7}); + if (element.isEnabled() != expectedEnabled) { + element.toggle(); } - return var5.e_boolean(new Object[]{var9}) == var4; - } catch (Throwable var15) { - j(new Object[]{var15, var11}); - var6.addSuppressed(var15); + return element.isEnabled() == expectedEnabled; + } catch (Throwable restoreError) { + rethrowIfFatal(restoreError); + failure.addSuppressed(restoreError); return false; } } - private void f(Object[] var1) { - JsonObject var5 = (JsonObject)var1[0]; - Setting var2 = (Setting)var1[1]; - String var8 = (String)var1[2]; - Set var7 = (Set)var1[3]; - RenderHelper11 var6 = (RenderHelper11)var1[4]; - long var3 = (Long)var1[5]; - var3 = 96496729806863L ^ var3; - long var9 = var3 ^ 107052151354858L; - long var11 = var3 ^ 18849944105048L; - long var13 = var3 ^ 70634159414031L; - long var15 = var3 ^ 128299157553096L; - if (var2 != null && var2.getName() != null && !var2.getName().isBlank()) { - String var18 = var2.getName(); - if (!var7.add(var18)) { - var6.b(new Object[]{var8 + " > " + var18, "duplicate registered setting name", null}); - } else if (var5.has(var18)) { - String var19 = var8 + " > " + var18; + private void loadSetting(JsonObject section, Setting setting, String sectionName, Set seenSettings, ConfigReport report) { + if (setting != null && setting.getName() != null && !setting.getName().isBlank()) { + String settingName = setting.getName(); + if (!seenSettings.add(settingName)) { + report.error(sectionName + " > " + settingName, "duplicate registered setting name", null); + } else if (section.has(settingName)) { + String settingPath = sectionName + " > " + settingName; try { - MathUtil5.a(new Object[]{var2, this.a_String_(new Object[]{var5.get(var18), var11}), var9}); - var6.c(new Object[]{1}); - } catch (Throwable var21) { - j(new Object[]{var21, var13}); - var6.b(new Object[]{var19, d_String(new Object[]{var21, var15}), var21}); + SettingValueParser.applyValue(setting, this.readScalarString(section.get(settingName))); + report.addValues(1); + } catch (Throwable error) { + rethrowIfFatal(error); + report.error(settingPath, describeError(error), error); } } } else { - var6.a(new Object[]{var8, "an unnamed setting was skipped", null}); + report.warn(sectionName, "an unnamed setting was skipped", null); } } - private void g(Object[] var1) { - JsonObject var2 = (JsonObject)var1[0]; - Setting var7 = (Setting)var1[1]; - String var5 = (String)var1[2]; - RenderHelper11 var6 = (RenderHelper11)var1[3]; - long var3 = (Long)var1[4]; - var3 = 96496729806863L ^ var3; - long var8 = var3 ^ 121466085324506L; - long var10 = var3 ^ 111294525115929L; - long var12 = var3 ^ 89794695424734L; - if (var7 != null && var7.getName() != null && !var7.getName().isBlank()) { - String var15 = var5 + " > " + var7.getName(); - if (var2.has(var7.getName())) { - var6.b(new Object[]{var15, "duplicate registered setting name", null}); + private void saveSetting(JsonObject section, Setting setting, String sectionName, ConfigReport report) { + if (setting != null && setting.getName() != null && !setting.getName().isBlank()) { + String settingPath = sectionName + " > " + setting.getName(); + if (section.has(setting.getName())) { + report.error(settingPath, "duplicate registered setting name", null); } else { try { - var2.addProperty(var7.getName(), this.b_String(new Object[]{var7, var8})); - var6.c(new Object[]{1}); - } catch (Throwable var17) { - j(new Object[]{var17, var10}); - var6.b(new Object[]{var15, d_String(new Object[]{var17, var12}), var17}); + section.addProperty(setting.getName(), this.serializeSetting(setting)); + report.addValues(1); + } catch (Throwable error) { + rethrowIfFatal(error); + report.error(settingPath, describeError(error), error); } } } else { - var6.a(new Object[]{var5, "an unnamed setting was skipped", null}); + report.warn(sectionName, "an unnamed setting was skipped", null); } } - private JsonObject a_JsonObject(Object[] var1) { - String var2 = (String)var1[0]; - RenderHelper11 var5 = (RenderHelper11)var1[1]; - long var3 = (Long)var1[2]; - var3 = 96496729806863L ^ var3; - long var6 = var3 ^ 44758310302231L; - if (var2 != null && !var2.isBlank()) { - if (var2.length() > 100000) { - var5.b(new Object[]{"Config", "downloaded config is too large", null}); + private JsonObject parseConfigJson(String json, ConfigReport report) { + if (json != null && !json.isBlank()) { + if (json.length() > 100000) { + report.error("Config", "downloaded config is too large", null); return null; - } else if (this.c_boolean(new Object[]{var2, var6})) { - var5.b(new Object[]{"Config", "downloaded config is nested too deeply", null}); + } else if (this.isNestedTooDeeply(json)) { + report.error("Config", "downloaded config is nested too deeply", null); return null; } else { - JsonObject var9; + JsonObject root; try { - var9 = a.fromJson(var2, JsonObject.class); - } catch (Exception var8) { - var5.b(new Object[]{"Config", "downloaded config is not valid JSON", var8}); + root = GSON.fromJson(json, JsonObject.class); + } catch (Exception parseError) { + report.error("Config", "downloaded config is not valid JSON", parseError); return null; } - if (var9 == null) { - var5.b(new Object[]{"Config", "downloaded config contained JSON null", null}); + if (root == null) { + report.error("Config", "downloaded config contained JSON null", null); return null; } else { - return var9; + return root; } } } else { - var5.b(new Object[]{"Config", "downloaded config was empty", null}); + report.error("Config", "downloaded config was empty", null); return null; } } - private boolean c_boolean(Object[] var1) { - String var4 = (String)var1[0]; - Event.b(); - int var6 = 0; - boolean var7 = false; - boolean var8 = false; + private boolean isNestedTooDeeply(String json) { + int depth = 0; + boolean inString = false; + boolean escaped = false; - for (int var9 = 0; var9 < var4.length(); var9++) { - char var10 = var4.charAt(var9); - if (var7) { - if (var8) { - var8 = false; - } else if (var10 == '\\') { - var8 = true; - } else if (var10 == '"') { - var7 = false; + for (int i = 0; i < json.length(); i++) { + char ch = json.charAt(i); + if (inString) { + if (escaped) { + escaped = false; + } else if (ch == '\\') { + escaped = true; + } else if (ch == '"') { + inString = false; } - } else if (var10 == '"') { - var7 = true; - } else if (var10 == '{' || var10 == '[') { - if (++var6 > 64) { + } else if (ch == '"') { + inString = true; + } else if (ch == '{' || ch == '[') { + if (++depth > 64) { return true; } - } else if (var10 == '}' || var10 == ']') { - var6--; + } else if (ch == '}' || ch == ']') { + depth--; } } return false; } - private JsonObject b_JsonObject(Object[] var1) { - JsonElement var2 = (JsonElement)var1[0]; - String var6 = (String)var1[1]; - RenderHelper11 var3 = (RenderHelper11)var1[2]; - if (var2 == null || var2.isJsonNull()) { - var3.b(new Object[]{var6, "section is null", null}); + private JsonObject requireSectionObject(JsonElement element, String path, ConfigReport report) { + if (element == null || element.isJsonNull()) { + report.error(path, "section is null", null); return null; - } else if (!var2.isJsonObject()) { - var3.b(new Object[]{var6, "section must be a JSON object", null}); + } else if (!element.isJsonObject()) { + report.error(path, "section must be a JSON object", null); return null; } else { - return var2.getAsJsonObject(); + return element.getAsJsonObject(); } } - private String a_String_(Object[] var1) { - JsonElement var2 = (JsonElement)var1[0]; - if (var2 == null || var2.isJsonNull()) { + private String readScalarString(JsonElement element) { + if (element == null || element.isJsonNull()) { throw new IllegalArgumentException("value is null"); - } else if (!var2.isJsonPrimitive()) { + } else if (!element.isJsonPrimitive()) { throw new IllegalArgumentException("expected a single value"); } else { - return var2.getAsString(); + return element.getAsString(); } } - private void h(Object[] var1) { - JsonObject var3 = (JsonObject)var1[0]; - Set var2 = (Set)var1[1]; - String var4 = (String)var1[2]; - String var7 = (String)var1[3]; - RenderHelper11 var8 = (RenderHelper11)var1[4]; - Event.b(); - - for (Entry var11 : var3.entrySet()) { - if (!var2.contains(var11.getKey())) { - String var12 = var4.isEmpty() ? (String)var11.getKey() : var4 + " > " + (String)var11.getKey(); - var8.a(new Object[]{var12, var7 + " is not available in this version; skipped", null}); + private void reportUnknownKeys(JsonObject section, Set knownKeys, String pathPrefix, String kind, ConfigReport report) { + for (Entry entry : section.entrySet()) { + if (!knownKeys.contains(entry.getKey())) { + report.warn(pathPrefix.isEmpty() ? (String)entry.getKey() : pathPrefix + " > " + (String)entry.getKey(), kind + " is not available in this version; skipped", null); } } } - private String b_String(Object[] var1) { - Setting var2 = (Setting)var1[0]; - long var3 = (Long)var1[1]; - var3 = 96496729806863L ^ var3; - long var5 = var3 ^ 54118292651812L; - if (var2 instanceof ColorSetting var18) { - Color var19 = (Color)var18.getValue(); - if (var19 == null) { + private String serializeSetting(Setting setting) { + if (setting instanceof ColorSetting colorSetting) { + Color color = colorSetting.getValue(); + if (color == null) { throw new IllegalStateException("color is null"); } else { - return var19.getRed() + "." + var19.getGreen() + "." + var19.getBlue() + "." + var19.getAlpha(); + return color.getRed() + "." + color.getGreen() + "." + color.getBlue() + "." + color.getAlpha(); } - } else if (var2 instanceof KeybindSetting var17) { - if (var17.getValue() == null) { + } else if (setting instanceof KeybindSetting keybindSetting) { + if (keybindSetting.getValue() == null) { throw new IllegalStateException("bind is null"); } else { - return var17.getValue() + "." + var17.isToggleMode(); + return keybindSetting.getValue() + "." + keybindSetting.isHoldMode(); } - } else if (var2 instanceof MultiSetting var16) { - StringBuilder var9 = new StringBuilder(); + } else if (setting instanceof MultiSetting multiSetting) { + StringBuilder builder = new StringBuilder(); - for (String var13 : var16.getOptions()) { - if (!var13.isEmpty()) { - var9.append(var13).append(".").append(var16.isSelected(new Object[]{var13, var5})).append("&"); + for (String option : multiSetting.getOptions()) { + if (!option.isEmpty()) { + builder.append(option).append(".").append(multiSetting.isSelected(option)).append("&"); } } - return var9.toString(); - } else if (var2 instanceof RangeSetting var15) { - return var15.getLow() + "|" + var15.getHigh(); + return builder.toString(); + } else if (setting instanceof RangeSetting rangeSetting) { + return rangeSetting.getLow() + "|" + rangeSetting.getHigh(); } else { - Object var8 = var2.getValue(); - if (var8 == null) { + Object value = setting.getValue(); + if (value == null) { throw new IllegalStateException("value is null"); } else { - return var8.toString(); + return value.toString(); } } } - private static void i(Object[] var0) { - RenderHelper11 var1 = (RenderHelper11)var0[0]; - long var2 = (Long)var0[1]; - var2 = 96496729806863L ^ var2; - long var4 = var2 ^ 72704133099798L; - long var6 = var2 ^ 12490493998071L; - if (!"load".equals(var1.a) && (var1.a_boolean__________________________________________(new Object[]{var4}) || var1.e != 0)) { - Runnable var9 = () -> { - if (Prestige.v != null) { - String var8 = "load".equals(var1.a) ? "loaded" : "saved"; - TpsTimer var10000 = Prestige.v; - String var10001 = "Config " + var8; - int var10002 = var1.d; - int var10003 = var1.e; - int var10004 = var1.b; - Object[] var10008 = new Object[]{null, null, null, var8, 114751876588817L}; - var10008[2] = var10004; - var10008[1] = var10003; - var10008[0] = var10002; - String var9x = c_String(var10008); - long var10x = m; - Object[] var10007 = new Object[]{ - null, - null, - null, - var1.d > 0 ? NotificationType.ERROR : (var1.e > 0 ? NotificationType.WARNING : NotificationType.SUCCESS), - 104881728073391L - }; - var10007[2] = var10x; - var10007[1] = var9x; - var10007[0] = var10001; - var10000.a(var10007); + private static void notifyResult(ConfigReport report) { + if (!"load".equals(report.operation) && (report.hasErrors() || report.warningCount != 0)) { + Runnable showResult = () -> { + if (Prestige.notificationManager != null) { + String verb = "load".equals(report.operation) ? "loaded" : "saved"; + NotificationManager notifications = Prestige.notificationManager; + String title = "Config " + verb; + String summary = formatSummary(report.errorCount, report.warningCount, report.valueCount, verb); + long durationMs = NOTIFICATION_DURATION_MS; + notifications.addNotification(title, summary, durationMs, (NotificationType)(report.errorCount > 0 ? NotificationType.ERROR : (report.warningCount > 0 ? NotificationType.WARNING : NotificationType.SUCCESS))); } }; try { - MinecraftClient var10 = MinecraftClient.getInstance(); - if (var10 != null && !var10.isOnThread()) { - var10.execute(var9); + MinecraftClient client = MinecraftClient.getInstance(); + if (client != null && !client.isOnThread()) { + client.execute(showResult); } else { - var9.run(); + showResult.run(); } - } catch (Throwable var11) { - j(new Object[]{var11, var6}); + } catch (Throwable error) { + rethrowIfFatal(error); } } } - public static String c_String(Object[] var0) { - int var2 = (Integer)var0[0]; - int var6 = (Integer)var0[1]; - int var1 = (Integer)var0[2]; - String var5 = (String)var0[3]; - return var2 + " errors, " + var6 + " skipped, " + var1 + " " + var5; + public static String formatSummary(int errors, int skipped, int applied, String verb) { + return errors + " errors, " + skipped + " skipped, " + applied + " " + verb; } - private static String d_String(Object[] var0) { - Throwable var3 = (Throwable)var0[0]; - Event.b(); - String var5 = var3.getMessage(); - return var5 != null && !var5.isBlank() ? var5 : var3.getClass().getSimpleName(); + private static String describeError(Throwable error) { + String message = error.getMessage(); + return message != null && !message.isBlank() ? message : error.getClass().getSimpleName(); } - private static void j(Object[] var0) { - Throwable var1 = (Throwable)var0[0]; - if (var1 instanceof ThreadDeath var6) { - throw var6; - } else if (var1 instanceof VirtualMachineError var5) { - throw var5; + private static void rethrowIfFatal(Throwable error) { + if (error instanceof ThreadDeath threadDeath) { + throw threadDeath; + } else if (error instanceof VirtualMachineError vmError) { + throw vmError; } else { - if (var1 instanceof InterruptedException) { + if (error instanceof InterruptedException) { Thread.currentThread().interrupt(); } } } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; - } } diff --git a/src/main/java/dev/zprestige/prestige/config/ConfigUtil.java b/src/main/java/dev/zprestige/prestige/config/ConfigUtil.java deleted file mode 100644 index 5f8e468..0000000 --- a/src/main/java/dev/zprestige/prestige/config/ConfigUtil.java +++ /dev/null @@ -1,162 +0,0 @@ -package dev.zprestige.prestige.config; - -import dev.zprestige.prestige.client.Prestige; -import java.io.IOException; -import java.lang.invoke.CallSite; -import java.lang.invoke.MethodHandle; -import java.lang.invoke.MethodHandles; -import java.lang.invoke.MethodType; -import java.lang.invoke.MutableCallSite; -import java.lang.invoke.MethodHandles.Lookup; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import javax.crypto.Cipher; -import javax.crypto.SecretKey; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.DESKeySpec; -import javax.crypto.spec.IvParameterSpec; -import net.minecraft.resource.InputSupplier; -import net.minecraft.resource.Resource; -import net.minecraft.resource.ResourcePack; -import net.minecraft.resource.ResourcePackInfo; -import net.minecraft.resource.ResourceType; -import net.minecraft.resource.ResourcePack.ResultConsumer; -import net.minecraft.resource.metadata.ResourceMetadataSerializer; -import net.minecraft.util.Identifier; -import org.jetbrains.annotations.Nullable; - -public class ConfigUtil implements ResourcePack { - - @Nullable - @Override - public InputSupplier openRoot(String[] segments) { - return null; - } - - @Nullable - @Override - public InputSupplier open(ResourceType type, Identifier id) { - return null; - } - - @Override - public void findResources(ResourceType type, String namespace, String prefix, ResultConsumer consumer) { - } - - @Override - public Set getNamespaces(ResourceType type) { - return null; - } - - @Nullable - @Override - public Object parseMetadata(ResourceMetadataSerializer metadataSerializer) throws IOException { - return null; - } - - @Override - public String getId() { - return "Prestige"; - } - - @Override - public Optional getKnownPackInfo() { - return ResourcePack.super.getKnownPackInfo(); - } - - @Override - public ResourcePackInfo getInfo() { - return null; - } - - @Override - public void close() { - } - - public static Resource a(Object[] var0) { - Identifier var1 = (Identifier)var0[0]; - return new Resource(new ConfigUtil(), () -> Prestige.class.getClassLoader().getResourceAsStream("assets/prestige/" + var1.getPath())); - } - - public static Resource b(Object[] var0) { - String var1 = (String)var0[0]; - return new Resource(new ConfigUtil(), () -> Prestige.class.getClassLoader().getResourceAsStream(var1)); - } - - public static InputSupplier a_class_7367(Object[] var0) { - String var1 = (String)var0[0]; - return () -> Prestige.class.getClassLoader().getResourceAsStream(var1); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/config/MsdfFontMetrics.java b/src/main/java/dev/zprestige/prestige/config/MsdfFontMetrics.java new file mode 100644 index 0000000..248e0ab --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/config/MsdfFontMetrics.java @@ -0,0 +1,59 @@ +package dev.zprestige.prestige.config; + +import com.google.gson.JsonObject; + +public class MsdfFontMetrics { + private int emSize; + private float lineHeight; + private float ascender; + private float descender; + private float underlineY; + private float underlineThickness; + + public MsdfFontMetrics() { + } + + public MsdfFontMetrics(int size, float lineSpacing, float ascent, float descent, float underlineOffset, float underlineHeight) { + this.emSize = size; + this.lineHeight = lineSpacing; + this.ascender = ascent; + this.descender = descent; + this.underlineY = underlineOffset; + this.underlineThickness = underlineHeight; + } + + public static MsdfFontMetrics fromJson(JsonObject json) { + MsdfFontMetrics metrics = new MsdfFontMetrics(); + metrics.emSize = json.get("emSize").getAsInt(); + metrics.lineHeight = json.get("lineHeight").getAsFloat(); + metrics.ascender = json.get("ascender").getAsFloat(); + metrics.descender = json.get("descender").getAsFloat(); + metrics.underlineY = json.get("underlineY").getAsFloat(); + metrics.underlineThickness = json.get("underlineThickness").getAsFloat(); + return metrics; + } + + public int getEmSize() { + return this.emSize; + } + + public float getLineHeight() { + return this.lineHeight; + } + + public float getAscender() { + return this.ascender; + } + + public float getDescender() { + return this.descender; + } + + public float getUnderlineY() { + return this.underlineY; + } + + public float getUnderlineThickness() { + return this.underlineThickness; + } +} diff --git a/src/main/java/dev/zprestige/prestige/config/MsdfGlyph.java b/src/main/java/dev/zprestige/prestige/config/MsdfGlyph.java new file mode 100644 index 0000000..118b1dd --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/config/MsdfGlyph.java @@ -0,0 +1,79 @@ +package dev.zprestige.prestige.config; + +import com.google.gson.JsonObject; + +public class MsdfGlyph { + private int codePoint; + private float advance; + private float planeLeft; + private float planeBottom; + private float planeRight; + private float planeTop; + private float atlasLeft; + private float atlasBottom; + private float atlasRight; + private float atlasTop; + + public static MsdfGlyph fromJson(JsonObject json) { + MsdfGlyph glyph = new MsdfGlyph(); + glyph.codePoint = json.get("unicode").getAsInt(); + glyph.advance = json.get("advance").getAsFloat(); + if (json.has("planeBounds")) { + JsonObject planeBounds = json.get("planeBounds").getAsJsonObject(); + glyph.planeLeft = planeBounds.get("left").getAsFloat(); + glyph.planeBottom = planeBounds.get("bottom").getAsFloat(); + glyph.planeRight = planeBounds.get("right").getAsFloat(); + glyph.planeTop = planeBounds.get("top").getAsFloat(); + } + + if (json.has("atlasBounds")) { + JsonObject atlasBounds = json.get("atlasBounds").getAsJsonObject(); + glyph.atlasLeft = atlasBounds.get("left").getAsFloat(); + glyph.atlasBottom = atlasBounds.get("bottom").getAsFloat(); + glyph.atlasRight = atlasBounds.get("right").getAsFloat(); + glyph.atlasTop = atlasBounds.get("top").getAsFloat(); + } + + return glyph; + } + + public int getCodePoint() { + return this.codePoint; + } + + public float getAdvance() { + return this.advance; + } + + public float getPlaneLeft() { + return this.planeLeft; + } + + public float getPlaneBottom() { + return this.planeBottom; + } + + public float getPlaneRight() { + return this.planeRight; + } + + public float getPlaneTop() { + return this.planeTop; + } + + public float getAtlasLeft() { + return this.atlasLeft; + } + + public float getAtlasBottom() { + return this.atlasBottom; + } + + public float getAtlasRight() { + return this.atlasRight; + } + + public float getAtlasTop() { + return this.atlasTop; + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/AnchorCandidate.java b/src/main/java/dev/zprestige/prestige/data/AnchorCandidate.java new file mode 100644 index 0000000..1ebe4ab --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/AnchorCandidate.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.data; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; + +public record AnchorCandidate(BlockPos anchorPos, BlockPos supportPos, Vec3d hitVec, boolean anchorExists, int charges, double distance, boolean sameLevel, boolean adjacent, int scanIndex, double targetDamageEstimate, double predictedDamageEstimate, double score) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/AnchorCatchPearlLanding.java b/src/main/java/dev/zprestige/prestige/data/AnchorCatchPearlLanding.java new file mode 100644 index 0000000..3d02efd --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/AnchorCatchPearlLanding.java @@ -0,0 +1,6 @@ +package dev.zprestige.prestige.data; + +import net.minecraft.util.math.Vec3d; + +public record AnchorCatchPearlLanding(Vec3d landingPos, int ticksUntilLanding) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/LongData4.java b/src/main/java/dev/zprestige/prestige/data/AuraCartPlacement.java similarity index 58% rename from src/main/java/dev/zprestige/prestige/data/LongData4.java rename to src/main/java/dev/zprestige/prestige/data/AuraCartPlacement.java index 2347c0f..4723c4b 100644 --- a/src/main/java/dev/zprestige/prestige/data/LongData4.java +++ b/src/main/java/dev/zprestige/prestige/data/AuraCartPlacement.java @@ -2,5 +2,5 @@ package dev.zprestige.prestige.data; import net.minecraft.util.math.BlockPos; -public record LongData4(BlockPos ay, long az) { +public record AuraCartPlacement(BlockPos pos, long time) { } diff --git a/src/main/java/dev/zprestige/prestige/data/VecData2.java b/src/main/java/dev/zprestige/prestige/data/AutoAnchorPlaceTarget.java similarity index 62% rename from src/main/java/dev/zprestige/prestige/data/VecData2.java rename to src/main/java/dev/zprestige/prestige/data/AutoAnchorPlaceTarget.java index 1c96fae..4bbbfe9 100644 --- a/src/main/java/dev/zprestige/prestige/data/VecData2.java +++ b/src/main/java/dev/zprestige/prestige/data/AutoAnchorPlaceTarget.java @@ -3,5 +3,5 @@ package dev.zprestige.prestige.data; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; -public record VecData2(BlockPos ae, Vec3d af) { +public record AutoAnchorPlaceTarget(BlockPos supportPos, Vec3d hitVec) { } diff --git a/src/main/java/dev/zprestige/prestige/data/AutoAnchorPlan.java b/src/main/java/dev/zprestige/prestige/data/AutoAnchorPlan.java new file mode 100644 index 0000000..7831fd5 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/AutoAnchorPlan.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.data; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; + +public record AutoAnchorPlan(BlockPos anchorPos, BlockPos anchorSupportPos, Vec3d anchorHitVec, boolean anchorExists, BlockPos blockerPos, BlockPos blockerSupportPos, Vec3d blockerHitVec) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/BlendFuncState.java b/src/main/java/dev/zprestige/prestige/data/BlendFuncState.java new file mode 100644 index 0000000..027a5b9 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/BlendFuncState.java @@ -0,0 +1,29 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlRenderPass; +import dev.zprestige.prestige.render.RenderStateElement; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL14; + +public record BlendFuncState(boolean enabled, boolean restoreEnabled, int srcRgb, int dstRgb, int srcAlpha, int dstAlpha) implements RenderStateElement { + @Override + public void apply(GlRenderPass renderPass) { + if (this.enabled) { + GL11.glEnable(3042); + GL14.glBlendFuncSeparate(this.srcRgb, this.dstRgb, this.srcAlpha, this.dstAlpha); + } else { + GL11.glDisable(3042); + } + } + + @Override + public void cleanup() { + if (this.restoreEnabled != this.enabled) { + if (this.restoreEnabled) { + GL11.glEnable(3042); + } else { + GL11.glDisable(3042); + } + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/BlendToggleState.java b/src/main/java/dev/zprestige/prestige/data/BlendToggleState.java new file mode 100644 index 0000000..d2a5aa9 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/BlendToggleState.java @@ -0,0 +1,29 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlRenderPass; +import dev.zprestige.prestige.render.RenderStateElement; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL14; + +public record BlendToggleState(boolean enabled, boolean wasEnabled) implements RenderStateElement { + @Override + public void apply(GlRenderPass renderPass) { + if (this.enabled) { + GL11.glEnable(3042); + GL14.glBlendFuncSeparate(770, 771, 1, 771); + } else { + GL11.glDisable(3042); + } + } + + @Override + public void cleanup() { + if (this.wasEnabled != this.enabled) { + if (this.wasEnabled) { + GL11.glEnable(3042); + } else { + GL11.glDisable(3042); + } + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/BoolData.java b/src/main/java/dev/zprestige/prestige/data/BoolData.java deleted file mode 100644 index 3f31dbc..0000000 --- a/src/main/java/dev/zprestige/prestige/data/BoolData.java +++ /dev/null @@ -1,89 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.RenderPass; -import dev.zprestige.prestige.render.Uniform; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.lwjgl.opengl.GL11; - -public record BoolData(boolean bP, boolean bQ) implements Uniform { - @Override - public void a(RenderPass var1) { - GL11.glDepthMask(this.bP); - } - - @Override - public void a() { - if (this.bQ != this.bP) { - GL11.glDepthMask(this.bQ); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/BoolData2.java b/src/main/java/dev/zprestige/prestige/data/BoolData2.java deleted file mode 100644 index 5f3f569..0000000 --- a/src/main/java/dev/zprestige/prestige/data/BoolData2.java +++ /dev/null @@ -1,99 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.RenderPass; -import dev.zprestige.prestige.render.Uniform; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL14; - -public record BoolData2(boolean b1, boolean b2) implements Uniform { - @Override - public void a(RenderPass var1) { - if (this.b1) { - GL11.glEnable(3042); - GL14.glBlendFuncSeparate(770, 771, 1, 771); - } else { - GL11.glDisable(3042); - } - } - - @Override - public void a() { - if (this.b2 != this.b1) { - if (this.b2) { - GL11.glEnable(3042); - } else { - GL11.glDisable(3042); - } - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/BoolIntData.java b/src/main/java/dev/zprestige/prestige/data/BoolIntData.java deleted file mode 100644 index e4767b0..0000000 --- a/src/main/java/dev/zprestige/prestige/data/BoolIntData.java +++ /dev/null @@ -1,99 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.RenderPass; -import dev.zprestige.prestige.render.Uniform; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL14; - -public record BoolIntData(boolean bH, boolean bI, int bJ, int bK, int bL, int bM) implements Uniform { - @Override - public void a(RenderPass var1) { - if (this.bH) { - GL11.glEnable(3042); - GL14.glBlendFuncSeparate(this.bJ, this.bK, this.bL, this.bM); - } else { - GL11.glDisable(3042); - } - } - - @Override - public void a() { - if (this.bI != this.bH) { - if (this.bI) { - GL11.glEnable(3042); - } else { - GL11.glDisable(3042); - } - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/BoolIntData2.java b/src/main/java/dev/zprestige/prestige/data/BoolIntData2.java deleted file mode 100644 index 8075039..0000000 --- a/src/main/java/dev/zprestige/prestige/data/BoolIntData2.java +++ /dev/null @@ -1,103 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.RenderPass; -import dev.zprestige.prestige.render.Uniform; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.lwjgl.opengl.GL11; - -public record BoolIntData2(boolean bU, boolean bV, int bW, int bX, int bY, int bZ) implements Uniform { - @Override - public void a(RenderPass var1) { - if (this.bU) { - GL11.glEnable(3089); - GL11.glScissor(this.bW, this.bX, this.bY, this.bZ); - } else { - GL11.glDisable(3089); - } - } - - @Override - public void a() { - if (this.bV != this.bU) { - if (this.bV) { - GL11.glEnable(3089); - } else { - GL11.glDisable(3089); - } - } - } - - @Override - public boolean a_boolean() { - return true; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/BufferData.java b/src/main/java/dev/zprestige/prestige/data/BufferData.java deleted file mode 100644 index 5c56ecc..0000000 --- a/src/main/java/dev/zprestige/prestige/data/BufferData.java +++ /dev/null @@ -1,8 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.GpuBuffer; -import dev.zprestige.prestige.render.RenderHelper31; -import java.util.concurrent.atomic.AtomicReference; - -public record BufferData(GpuBuffer au, GpuBuffer av, RenderHelper31 aw, AtomicReference ax) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/BufferQuadIntData.java b/src/main/java/dev/zprestige/prestige/data/BufferQuadIntData.java deleted file mode 100644 index 2a276d9..0000000 --- a/src/main/java/dev/zprestige/prestige/data/BufferQuadIntData.java +++ /dev/null @@ -1,6 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.GpuBuffer; - -public record BufferQuadIntData(GpuBuffer cc, IntBoolData cd, int ce, long cf) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/MatrixCameraData.java b/src/main/java/dev/zprestige/prestige/data/CameraMatrices.java similarity index 55% rename from src/main/java/dev/zprestige/prestige/data/MatrixCameraData.java rename to src/main/java/dev/zprestige/prestige/data/CameraMatrices.java index e3a16c4..6b92e95 100644 --- a/src/main/java/dev/zprestige/prestige/data/MatrixCameraData.java +++ b/src/main/java/dev/zprestige/prestige/data/CameraMatrices.java @@ -3,5 +3,5 @@ package dev.zprestige.prestige.data; import net.minecraft.client.render.Camera; import org.joml.Matrix4f; -public record MatrixCameraData(Matrix4f bA, Matrix4f bB, Camera bC) { +public record CameraMatrices(Matrix4f projection, Matrix4f modelView, Camera camera) { } diff --git a/src/main/java/dev/zprestige/prestige/data/DoubleData.java b/src/main/java/dev/zprestige/prestige/data/CartBlockerPlacement.java similarity index 58% rename from src/main/java/dev/zprestige/prestige/data/DoubleData.java rename to src/main/java/dev/zprestige/prestige/data/CartBlockerPlacement.java index 05ccb80..123b2a1 100644 --- a/src/main/java/dev/zprestige/prestige/data/DoubleData.java +++ b/src/main/java/dev/zprestige/prestige/data/CartBlockerPlacement.java @@ -3,5 +3,5 @@ package dev.zprestige.prestige.data; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; -public record DoubleData(BlockPos al, BlockHitResult am, double an) { +public record CartBlockerPlacement(BlockPos pos, BlockHitResult hitResult, double damage) { } diff --git a/src/main/java/dev/zprestige/prestige/data/VecIntData.java b/src/main/java/dev/zprestige/prestige/data/CartCatchPearlLanding.java similarity index 50% rename from src/main/java/dev/zprestige/prestige/data/VecIntData.java rename to src/main/java/dev/zprestige/prestige/data/CartCatchPearlLanding.java index ac4fc3d..9ec9a48 100644 --- a/src/main/java/dev/zprestige/prestige/data/VecIntData.java +++ b/src/main/java/dev/zprestige/prestige/data/CartCatchPearlLanding.java @@ -2,5 +2,5 @@ package dev.zprestige.prestige.data; import net.minecraft.util.math.Vec3d; -public record VecIntData(Vec3d a, int b) { +public record CartCatchPearlLanding(Vec3d landingPos, int ticksUntilLanding) { } diff --git a/src/main/java/dev/zprestige/prestige/data/VecDoubleData.java b/src/main/java/dev/zprestige/prestige/data/CartThreat.java similarity index 54% rename from src/main/java/dev/zprestige/prestige/data/VecDoubleData.java rename to src/main/java/dev/zprestige/prestige/data/CartThreat.java index 9e007c9..757b74e 100644 --- a/src/main/java/dev/zprestige/prestige/data/VecDoubleData.java +++ b/src/main/java/dev/zprestige/prestige/data/CartThreat.java @@ -3,5 +3,5 @@ package dev.zprestige.prestige.data; import net.minecraft.entity.vehicle.TntMinecartEntity; import net.minecraft.util.math.Vec3d; -public record VecDoubleData(TntMinecartEntity ao, Vec3d ap, double aq, double ar) { +public record CartThreat(TntMinecartEntity cart, Vec3d explosionPos, double horizontalSpeed, double damage) { } diff --git a/src/main/java/dev/zprestige/prestige/data/ConsumerData.java b/src/main/java/dev/zprestige/prestige/data/ConsumerData.java deleted file mode 100644 index 29ff7d6..0000000 --- a/src/main/java/dev/zprestige/prestige/data/ConsumerData.java +++ /dev/null @@ -1,131 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.world.WorldContract; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.render.VertexConsumer; - -public record ConsumerData(WorldContract bp) implements VertexConsumer { - @Override - public VertexConsumer vertex(float x, float y, float z) { - WorldContract var10000 = this.bp; - Object[] var10006 = new Object[]{null, null, null, 65484385065975L}; - var10006[2] = z; - var10006[1] = y; - var10006[0] = x; - var10000.c_WorldContract(var10006); - return this; - } - - @Override - public VertexConsumer color(int red, int green, int blue, int alpha) { - WorldContract var10000 = this.bp; - Object[] var10004 = new Object[]{null, 106573078251021L}; - var10004[0] = -16776961; - var10000.e(var10004); - return this; - } - - @Override - public VertexConsumer color(int argb) { - WorldContract var10000 = this.bp; - Object[] var10004 = new Object[]{null, 106573078251021L}; - var10004[0] = -16776961; - var10000.e(var10004); - return this; - } - - @Override - public VertexConsumer lineWidth(float width) { - return null; - } - - @Override - public VertexConsumer texture(float u, float v) { - this.bp.b_WorldContract(new Object[]{new float[]{u, v}, 118034685045795L}); - return this; - } - - @Override - public VertexConsumer overlay(int u, int v) { - return this; - } - - @Override - public VertexConsumer light(int u, int v) { - return this; - } - - @Override - public VertexConsumer normal(float x, float y, float z) { - return this; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/ConsumerData2.java b/src/main/java/dev/zprestige/prestige/data/ConsumerData2.java deleted file mode 100644 index 31369c8..0000000 --- a/src/main/java/dev/zprestige/prestige/data/ConsumerData2.java +++ /dev/null @@ -1,87 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.RenderPass; -import dev.zprestige.prestige.render.Uniform; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.function.Consumer; - -public record ConsumerData2(Consumer b4) implements Uniform { - @Override - public void a(RenderPass var1) { - this.b4.accept(IntData.a(var1.d.a(new Object[0]))); - } - - @Override - public boolean a_boolean() { - return true; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/LongData3.java b/src/main/java/dev/zprestige/prestige/data/DelayedPacket.java similarity index 56% rename from src/main/java/dev/zprestige/prestige/data/LongData3.java rename to src/main/java/dev/zprestige/prestige/data/DelayedPacket.java index efbcb0c..f07e335 100644 --- a/src/main/java/dev/zprestige/prestige/data/LongData3.java +++ b/src/main/java/dev/zprestige/prestige/data/DelayedPacket.java @@ -2,5 +2,5 @@ package dev.zprestige.prestige.data; import net.minecraft.network.packet.Packet; -public record LongData3(Packet as, long at) { +public record DelayedPacket(Packet packet, long releaseTime) { } diff --git a/src/main/java/dev/zprestige/prestige/data/DepthFuncState.java b/src/main/java/dev/zprestige/prestige/data/DepthFuncState.java new file mode 100644 index 0000000..2722d75 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/DepthFuncState.java @@ -0,0 +1,19 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlRenderPass; +import dev.zprestige.prestige.render.RenderStateElement; +import org.lwjgl.opengl.GL11; + +public record DepthFuncState(int depthFunc, int restoreDepthFunc) implements RenderStateElement { + @Override + public void apply(GlRenderPass renderPass) { + GL11.glDepthFunc(this.depthFunc); + } + + @Override + public void cleanup() { + if (this.restoreDepthFunc != this.depthFunc) { + GL11.glDepthFunc(this.restoreDepthFunc); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/DepthMaskState.java b/src/main/java/dev/zprestige/prestige/data/DepthMaskState.java new file mode 100644 index 0000000..8c5938d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/DepthMaskState.java @@ -0,0 +1,19 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlRenderPass; +import dev.zprestige.prestige.render.RenderStateElement; +import org.lwjgl.opengl.GL11; + +public record DepthMaskState(boolean depthWrite, boolean restoreDepthWrite) implements RenderStateElement { + @Override + public void apply(GlRenderPass renderPass) { + GL11.glDepthMask(this.depthWrite); + } + + @Override + public void cleanup() { + if (this.restoreDepthWrite != this.depthWrite) { + GL11.glDepthMask(this.restoreDepthWrite); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/LongData.java b/src/main/java/dev/zprestige/prestige/data/DimensionChunkKey.java similarity index 59% rename from src/main/java/dev/zprestige/prestige/data/LongData.java rename to src/main/java/dev/zprestige/prestige/data/DimensionChunkKey.java index 2a81b1e..7032e14 100644 --- a/src/main/java/dev/zprestige/prestige/data/LongData.java +++ b/src/main/java/dev/zprestige/prestige/data/DimensionChunkKey.java @@ -3,5 +3,5 @@ package dev.zprestige.prestige.data; import net.minecraft.registry.RegistryKey; import net.minecraft.world.World; -public record LongData(RegistryKey bn, long bo) { +public record DimensionChunkKey(RegistryKey dimension, long chunkPos) { } diff --git a/src/main/java/dev/zprestige/prestige/data/DoubleBoolData.java b/src/main/java/dev/zprestige/prestige/data/DoubleBoolData.java deleted file mode 100644 index e42c33c..0000000 --- a/src/main/java/dev/zprestige/prestige/data/DoubleBoolData.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.zprestige.prestige.data; - -import net.minecraft.entity.LivingEntity; -import net.minecraft.util.math.BlockPos; - -public record DoubleBoolData(LivingEntity aG, double aH, double aI, double aJ, boolean aK, BlockPos aL, boolean aM) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/DrawBatchKey.java b/src/main/java/dev/zprestige/prestige/data/DrawBatchKey.java new file mode 100644 index 0000000..ab554cf --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/DrawBatchKey.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.DrawPipeline; +import org.joml.Vector4f; + +public record DrawBatchKey(Vector4f scissorRect, DrawPipeline drawMode) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/DrawFloatData.java b/src/main/java/dev/zprestige/prestige/data/DrawFloatData.java deleted file mode 100644 index c734bc0..0000000 --- a/src/main/java/dev/zprestige/prestige/data/DrawFloatData.java +++ /dev/null @@ -1,6 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.RenderContract4; - -public record DrawFloatData(RenderContract4 ca, float cb) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/DrawModeBuffers.java b/src/main/java/dev/zprestige/prestige/data/DrawModeBuffers.java new file mode 100644 index 0000000..23ece9a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/DrawModeBuffers.java @@ -0,0 +1,8 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlBuffer; +import dev.zprestige.prestige.render.VertexArray; +import java.util.concurrent.atomic.AtomicReference; + +public record DrawModeBuffers(GlBuffer vertexBuffer, GlBuffer indexBuffer, VertexArray vertexArray, AtomicReference activeBuilder) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/ExplosionDamageKey.java b/src/main/java/dev/zprestige/prestige/data/ExplosionDamageKey.java new file mode 100644 index 0000000..e602f0e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/ExplosionDamageKey.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.data; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.util.math.BlockPos; + +public record ExplosionDamageKey(LivingEntity target, double x, double y, double z, boolean predictMovement, BlockPos obsidianPos, boolean ignoreTerrain) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/FloatDoubleIntData.java b/src/main/java/dev/zprestige/prestige/data/FloatDoubleIntData.java deleted file mode 100644 index d72bb90..0000000 --- a/src/main/java/dev/zprestige/prestige/data/FloatDoubleIntData.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.data; - -public record FloatDoubleIntData(float bt, double bu, int bv, double bw) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/FontFloatData.java b/src/main/java/dev/zprestige/prestige/data/FontFloatData.java deleted file mode 100644 index 2b15fea..0000000 --- a/src/main/java/dev/zprestige/prestige/data/FontFloatData.java +++ /dev/null @@ -1,102 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.RenderHelper22; -import dev.zprestige.prestige.render.RenderPass; -import dev.zprestige.prestige.render.Shader; -import dev.zprestige.prestige.render.Uniform; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL13C; -import org.lwjgl.opengl.GL20; - -public record FontFloatData(FontRenderer bc, float bd, float be) implements Uniform { - private static final int a; - - @Override - public void a(RenderPass var1) { - GL13C.glActiveTexture(33984); - GL11.glBindTexture(3553, this.bc.a); - GL20.glUniform2f(a, this.bd, this.be); - } - - static { - Object var11 = new String[]{"msdfTexture", "unitRange"}; - a = RenderHelper22.e.d(new Object[]{((Object[])var11)[1], 0L}); - Shader var10000 = RenderHelper22.e; - Object var10001 = ((Object[])var11)[0]; - Object[] var10005 = new Object[]{null, null, 0L}; - var10005[1] = 0; - var10005[0] = var10001; - var10000.a_void_____________________________(var10005); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/FramebufferBindState.java b/src/main/java/dev/zprestige/prestige/data/FramebufferBindState.java new file mode 100644 index 0000000..2d337f8 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/FramebufferBindState.java @@ -0,0 +1,16 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlRenderPassBuilder; +import dev.zprestige.prestige.render.RenderStateElement; +import java.util.function.IntSupplier; + +public record FramebufferBindState(IntSupplier framebuffer) implements RenderStateElement { + public FramebufferBindState(int framebufferId) { + this(() -> framebufferId); + } + + @Override + public void configure(GlRenderPassBuilder drawContext) { + drawContext.setFramebuffer(this.framebuffer.getAsInt()); + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/GlCapabilityState.java b/src/main/java/dev/zprestige/prestige/data/GlCapabilityState.java new file mode 100644 index 0000000..3b47b2e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/GlCapabilityState.java @@ -0,0 +1,36 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlRenderPass; +import dev.zprestige.prestige.render.RenderStateElement; +import org.lwjgl.opengl.GL11; + +public record GlCapabilityState(int capability, boolean enabled, boolean restoreEnabled) implements RenderStateElement { + public GlCapabilityState(int glCapability, boolean enabledState) { + this(glCapability, enabledState, enabledState); + } + + @Override + public void apply(GlRenderPass renderPass) { + if (this.enabled) { + GL11.glEnable(this.capability); + } else { + GL11.glDisable(this.capability); + } + } + + @Override + public void cleanup() { + if (this.restoreEnabled != this.enabled) { + if (this.restoreEnabled) { + GL11.glEnable(this.capability); + } else { + GL11.glDisable(this.capability); + } + } + } + + @Override + public boolean allowsDuplicates() { + return true; + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/IntBoolData.java b/src/main/java/dev/zprestige/prestige/data/IntBoolData.java deleted file mode 100644 index 8a96243..0000000 --- a/src/main/java/dev/zprestige/prestige/data/IntBoolData.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.data; - -public record IntBoolData(int cg, int ch, int ci, boolean cj) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/IntBoolData2.java b/src/main/java/dev/zprestige/prestige/data/IntBoolData2.java deleted file mode 100644 index 9339450..0000000 --- a/src/main/java/dev/zprestige/prestige/data/IntBoolData2.java +++ /dev/null @@ -1,106 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.RenderPass; -import dev.zprestige.prestige.render.Uniform; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.lwjgl.opengl.GL11; - -public record IntBoolData2(int bR, boolean bS, boolean bT) implements Uniform { - public IntBoolData2(int var1, boolean var2) { - this(var1, var2, var2); - } - - @Override - public void a(RenderPass var1) { - if (this.bS) { - GL11.glEnable(this.bR); - } else { - GL11.glDisable(this.bR); - } - } - - @Override - public void a() { - if (this.bT != this.bS) { - if (this.bT) { - GL11.glEnable(this.bR); - } else { - GL11.glDisable(this.bR); - } - } - } - - @Override - public boolean a_boolean() { - return true; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/IntData.java b/src/main/java/dev/zprestige/prestige/data/IntData.java deleted file mode 100644 index 0cb4503..0000000 --- a/src/main/java/dev/zprestige/prestige/data/IntData.java +++ /dev/null @@ -1,153 +0,0 @@ -package dev.zprestige.prestige.data; - -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; -import org.lwjgl.opengl.GL20; - -public record IntData(int bz) { - private static final Map a = new HashMap(); - - public static IntData a(int var0) { - return new IntData(var0); - } - - private int a(String var1) { - return (Integer)((Map)a.computeIfAbsent(this.bz, lpL401_0 -> new HashMap<>())).computeIfAbsent(var1, lpL400_0 -> GL20.glGetUniformLocation(this.bz, ((java.lang.String)lpL400_0))); - } - - public IntData a(String var1, int var2) { - GL20.glUniform1i(this.a(var1), var2); - return this; - } - - public IntData a(String var1, int var2, int var3) { - GL20.glUniform2i(this.a(var1), var2, var3); - return this; - } - - public IntData a(String var1, int var2, int var3, int var4) { - GL20.glUniform3i(this.a(var1), var2, var3, var4); - return this; - } - - public IntData a(String var1, int var2, int var3, int var4, int var5) { - GL20.glUniform4i(this.a(var1), var2, var3, var4, var5); - return this; - } - - public IntData a(String var1, float var2) { - GL20.glUniform1f(this.a(var1), var2); - return this; - } - - public IntData a(String var1, float var2, float var3) { - GL20.glUniform2f(this.a(var1), var2, var3); - return this; - } - - public IntData a(String var1, float var2, float var3, float var4) { - GL20.glUniform3f(this.a(var1), var2, var3, var4); - return this; - } - - public IntData a(String var1, float var2, float var3, float var4, float var5) { - GL20.glUniform4f(this.a(var1), var2, var3, var4, var5); - return this; - } - - public IntData a(String var1, boolean var2, float[] var3) { - GL20.glUniformMatrix4fv(this.a(var1), var2, var3); - return this; - } - - public IntData b(String var1, boolean var2, float[] var3) { - GL20.glUniformMatrix3fv(this.a(var1), var2, var3); - return this; - } - - public IntData c(String var1, boolean var2, float[] var3) { - GL20.glUniformMatrix2fv(this.a(var1), var2, var3); - return this; - } - - public IntData a(String var1, Color var2) { - GL20.glUniform4f(this.a(var1), var2.getRed() / 255.0F, var2.getGreen() / 255.0F, var2.getBlue() / 255.0F, var2.getAlpha() / 255.0F); - return this; - } - - public IntData b(String var1, float var2, float var3, float var4, float var5) { - GL20.glUniform4f(this.a(var1), var2, var3, var4, var5); - return this; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/IntData2.java b/src/main/java/dev/zprestige/prestige/data/IntData2.java deleted file mode 100644 index 9cf99e5..0000000 --- a/src/main/java/dev/zprestige/prestige/data/IntData2.java +++ /dev/null @@ -1,89 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.RenderPass; -import dev.zprestige.prestige.render.Uniform; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.lwjgl.opengl.GL11; - -public record IntData2(int bN, int bO) implements Uniform { - @Override - public void a(RenderPass var1) { - GL11.glDepthFunc(this.bN); - } - - @Override - public void a() { - if (this.bO != this.bN) { - GL11.glDepthFunc(this.bO); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/IntData3.java b/src/main/java/dev/zprestige/prestige/data/IntData3.java deleted file mode 100644 index e3324c3..0000000 --- a/src/main/java/dev/zprestige/prestige/data/IntData3.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.data; - -public record IntData3(int b5, int b6, int b7, int b8) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/IntSupplierData.java b/src/main/java/dev/zprestige/prestige/data/IntSupplierData.java deleted file mode 100644 index 5249786..0000000 --- a/src/main/java/dev/zprestige/prestige/data/IntSupplierData.java +++ /dev/null @@ -1,86 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.DrawContext; -import dev.zprestige.prestige.render.Uniform; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.function.IntSupplier; - -public record IntSupplierData(IntSupplier b3) implements Uniform { - public IntSupplierData(int var1) { - this(() -> var1); - } - - @Override - public void a(DrawContext var1) { - var1.a(new Object[]{this.b3.getAsInt()}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/ModuleStringFloatData.java b/src/main/java/dev/zprestige/prestige/data/KeybindListEntry.java similarity index 50% rename from src/main/java/dev/zprestige/prestige/data/ModuleStringFloatData.java rename to src/main/java/dev/zprestige/prestige/data/KeybindListEntry.java index 1755e1b..f011e27 100644 --- a/src/main/java/dev/zprestige/prestige/data/ModuleStringFloatData.java +++ b/src/main/java/dev/zprestige/prestige/data/KeybindListEntry.java @@ -2,5 +2,5 @@ package dev.zprestige.prestige.data; import dev.zprestige.prestige.Module; -public record ModuleStringFloatData(Module a_, String ba, float bb) { +public record KeybindListEntry(Module module, String keyName, float alpha) { } diff --git a/src/main/java/dev/zprestige/prestige/data/MeshInfo.java b/src/main/java/dev/zprestige/prestige/data/MeshInfo.java new file mode 100644 index 0000000..acb8aa2 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/MeshInfo.java @@ -0,0 +1,6 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.VertexLayout; + +public record MeshInfo(VertexLayout layout, int vertexCount, int indexCount) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/MethodLookupKey.java b/src/main/java/dev/zprestige/prestige/data/MethodLookupKey.java new file mode 100644 index 0000000..f3764b9 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/MethodLookupKey.java @@ -0,0 +1,40 @@ +package dev.zprestige.prestige.data; + +import java.util.Arrays; + +public record MethodLookupKey(Class ownerClass, String methodName, Class returnType, Class[] parameterTypes, Class receiverClass) { + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } else if (other != null && this.getClass() == other.getClass()) { + MethodLookupKey that = (MethodLookupKey)other; + if (!this.ownerClass.equals(that.ownerClass)) { + return false; + } else if (!this.receiverClass.equals(that.receiverClass)) { + return false; + } else if (!this.methodName.equals(that.methodName)) { + return false; + } else if (!this.returnType.equals(that.returnType)) { + return false; + } else if (this.parameterTypes.length != that.parameterTypes.length) { + return false; + } else { + for (int index = 0; index < this.parameterTypes.length; index++) { + if (!this.parameterTypes[index].equals(that.parameterTypes[index])) { + return false; + } + } + + return true; + } + } else { + return false; + } + } + + @Override + public int hashCode() { + return 31 * (31 * (31 * (31 * this.ownerClass.hashCode() + this.methodName.hashCode()) + this.returnType.hashCode()) + this.receiverClass.hashCode()) + Arrays.hashCode((Object[])this.parameterTypes); + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/ModuleStringBoolData.java b/src/main/java/dev/zprestige/prestige/data/ModuleStringBoolData.java deleted file mode 100644 index 24615ef..0000000 --- a/src/main/java/dev/zprestige/prestige/data/ModuleStringBoolData.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.zprestige.prestige.data; - -import com.google.gson.JsonElement; -import dev.zprestige.prestige.Module; - -public record ModuleStringBoolData(Module aC, String aD, JsonElement aE, boolean aF) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/MsdfFontState.java b/src/main/java/dev/zprestige/prestige/data/MsdfFontState.java new file mode 100644 index 0000000..ae1279a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/MsdfFontState.java @@ -0,0 +1,25 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.CoreShaders; +import dev.zprestige.prestige.render.GlRenderPass; +import dev.zprestige.prestige.render.RenderStateElement; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL13C; +import org.lwjgl.opengl.GL20; + +public record MsdfFontState(GlTextureHandle font, float unitRangeX, float unitRangeY) implements RenderStateElement { + private static final int UNIT_RANGE_LOCATION; + + @Override + public void apply(GlRenderPass renderPass) { + GL13C.glActiveTexture(33984); + GL11.glBindTexture(3553, this.font.glId); + GL20.glUniform2f(UNIT_RANGE_LOCATION, this.unitRangeX, this.unitRangeY); + } + + static { + UNIT_RANGE_LOCATION = CoreShaders.MSDF_TEXT.getUniformLocation("unitRange"); + CoreShaders.MSDF_TEXT.setUniformInt("msdfTexture", 0); + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/OutlineCaptureConsumer.java b/src/main/java/dev/zprestige/prestige/data/OutlineCaptureConsumer.java new file mode 100644 index 0000000..9109d18 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/OutlineCaptureConsumer.java @@ -0,0 +1,50 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.world.MeshBuilder; +import net.minecraft.client.render.VertexConsumer; + +public record OutlineCaptureConsumer(MeshBuilder writer) implements VertexConsumer { + @Override + public VertexConsumer vertex(float x, float y, float z) { + this.writer.putVertex(x, y, z); + return this; + } + + @Override + public VertexConsumer color(int red, int green, int blue, int alpha) { + this.writer.putColor(-16776961); + return this; + } + + @Override + public VertexConsumer color(int argb) { + this.writer.putColor(-16776961); + return this; + } + + @Override + public VertexConsumer lineWidth(float width) { + return null; + } + + @Override + public VertexConsumer texture(float u, float v) { + this.writer.putFloats(new float[]{u, v}); + return this; + } + + @Override + public VertexConsumer overlay(int u, int v) { + return this; + } + + @Override + public VertexConsumer light(int u, int v) { + return this; + } + + @Override + public VertexConsumer normal(float x, float y, float z) { + return this; + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/PassConsumerData.java b/src/main/java/dev/zprestige/prestige/data/PassConsumerData.java deleted file mode 100644 index ea1e357..0000000 --- a/src/main/java/dev/zprestige/prestige/data/PassConsumerData.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.RenderPass; -import java.util.function.Consumer; - -public record PassConsumerData(RenderPass bx, Consumer by) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/PearlCatchAnchorPlan.java b/src/main/java/dev/zprestige/prestige/data/PearlCatchAnchorPlan.java new file mode 100644 index 0000000..14e5cf7 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/PearlCatchAnchorPlan.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.data; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; + +public record PearlCatchAnchorPlan(BlockPos anchorPos, BlockPos anchorSupportPos, Vec3d anchorHitVec, BlockPos blockerPos, BlockPos blockerSupportPos, Vec3d blockerHitVec, boolean anchorExists) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/VecData.java b/src/main/java/dev/zprestige/prestige/data/PearlCatchPlaceTarget.java similarity index 62% rename from src/main/java/dev/zprestige/prestige/data/VecData.java rename to src/main/java/dev/zprestige/prestige/data/PearlCatchPlaceTarget.java index 0d38d31..703cb2f 100644 --- a/src/main/java/dev/zprestige/prestige/data/VecData.java +++ b/src/main/java/dev/zprestige/prestige/data/PearlCatchPlaceTarget.java @@ -3,5 +3,5 @@ package dev.zprestige.prestige.data; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; -public record VecData(BlockPos j, Vec3d k) { +public record PearlCatchPlaceTarget(BlockPos supportPos, Vec3d hitVec) { } diff --git a/src/main/java/dev/zprestige/prestige/data/PearlFollowLanding.java b/src/main/java/dev/zprestige/prestige/data/PearlFollowLanding.java new file mode 100644 index 0000000..1ffc0e5 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/PearlFollowLanding.java @@ -0,0 +1,6 @@ +package dev.zprestige.prestige.data; + +import net.minecraft.util.math.Vec3d; + +public record PearlFollowLanding(Vec3d landingPos, int flightTicks, double peakY) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/PearlThrowOption.java b/src/main/java/dev/zprestige/prestige/data/PearlThrowOption.java new file mode 100644 index 0000000..781b22d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/PearlThrowOption.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.data; + +public record PearlThrowOption(float pitch, double distanceToTarget, int flightTicks, double peakY) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/PendingModuleActivation.java b/src/main/java/dev/zprestige/prestige/data/PendingModuleActivation.java new file mode 100644 index 0000000..1ab56a5 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/PendingModuleActivation.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.data; + +import com.google.gson.JsonElement; +import dev.zprestige.prestige.Module; + +public record PendingModuleActivation(Module module, String sectionName, JsonElement enabledValue, boolean alreadyApplied) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/ProgramUniforms.java b/src/main/java/dev/zprestige/prestige/data/ProgramUniforms.java new file mode 100644 index 0000000..ee3be24 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/ProgramUniforms.java @@ -0,0 +1,83 @@ +package dev.zprestige.prestige.data; + +import java.awt.Color; +import java.util.HashMap; +import java.util.Map; +import org.lwjgl.opengl.GL20; + +public record ProgramUniforms(int programId) { + private static final Map LOCATION_CACHE = new HashMap(); + + public static ProgramUniforms of(int program) { + return new ProgramUniforms(program); + } + + private int getUniformLocation(String uniformName) { + return (Integer)((Map)LOCATION_CACHE.computeIfAbsent(this.programId, programKey -> new HashMap<>())).computeIfAbsent(uniformName, uniform -> GL20.glGetUniformLocation(this.programId, ((java.lang.String)uniform))); + } + + public ProgramUniforms setInt(String uniformName, int value) { + GL20.glUniform1i(this.getUniformLocation(uniformName), value); + return this; + } + + public ProgramUniforms setInt2(String uniformName, int x, int y) { + GL20.glUniform2i(this.getUniformLocation(uniformName), x, y); + return this; + } + + public ProgramUniforms setInt3(String uniformName, int x, int y, int z) { + GL20.glUniform3i(this.getUniformLocation(uniformName), x, y, z); + return this; + } + + public ProgramUniforms setInt4(String uniformName, int x, int y, int z, int w) { + GL20.glUniform4i(this.getUniformLocation(uniformName), x, y, z, w); + return this; + } + + public ProgramUniforms setFloat(String uniformName, float value) { + GL20.glUniform1f(this.getUniformLocation(uniformName), value); + return this; + } + + public ProgramUniforms setVec2(String uniformName, float x, float y) { + GL20.glUniform2f(this.getUniformLocation(uniformName), x, y); + return this; + } + + public ProgramUniforms setVec3(String uniformName, float x, float y, float z) { + GL20.glUniform3f(this.getUniformLocation(uniformName), x, y, z); + return this; + } + + public ProgramUniforms setVec4(String uniformName, float x, float y, float z, float w) { + GL20.glUniform4f(this.getUniformLocation(uniformName), x, y, z, w); + return this; + } + + public ProgramUniforms setMatrix4(String uniformName, boolean transpose, float[] matrix) { + GL20.glUniformMatrix4fv(this.getUniformLocation(uniformName), transpose, matrix); + return this; + } + + public ProgramUniforms setMatrix3(String uniformName, boolean transpose, float[] matrix) { + GL20.glUniformMatrix3fv(this.getUniformLocation(uniformName), transpose, matrix); + return this; + } + + public ProgramUniforms setMatrix2(String uniformName, boolean transpose, float[] matrix) { + GL20.glUniformMatrix2fv(this.getUniformLocation(uniformName), transpose, matrix); + return this; + } + + public ProgramUniforms setColor(String uniformName, Color color) { + GL20.glUniform4f(this.getUniformLocation(uniformName), color.getRed() / 255.0F, color.getGreen() / 255.0F, color.getBlue() / 255.0F, color.getAlpha() / 255.0F); + return this; + } + + public ProgramUniforms setFloat4(String uniformName, float x, float y, float z, float w) { + GL20.glUniform4f(this.getUniformLocation(uniformName), x, y, z, w); + return this; + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/FloatData.java b/src/main/java/dev/zprestige/prestige/data/QueuedCrystalAttack.java similarity index 50% rename from src/main/java/dev/zprestige/prestige/data/FloatData.java rename to src/main/java/dev/zprestige/prestige/data/QueuedCrystalAttack.java index 1ef0132..9eac527 100644 --- a/src/main/java/dev/zprestige/prestige/data/FloatData.java +++ b/src/main/java/dev/zprestige/prestige/data/QueuedCrystalAttack.java @@ -2,5 +2,5 @@ package dev.zprestige.prestige.data; import net.minecraft.entity.Entity; -public record FloatData(Entity ag, float ah, float ai) { +public record QueuedCrystalAttack(Entity entity, float yaw, float pitch) { } diff --git a/src/main/java/dev/zprestige/prestige/data/QueuedDraw.java b/src/main/java/dev/zprestige/prestige/data/QueuedDraw.java new file mode 100644 index 0000000..f67c4d6 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/QueuedDraw.java @@ -0,0 +1,6 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.DrawCommand; + +public record QueuedDraw(DrawCommand drawable, float depth) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/QueuedRenderPass.java b/src/main/java/dev/zprestige/prestige/data/QueuedRenderPass.java new file mode 100644 index 0000000..7f8b2cb --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/QueuedRenderPass.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlRenderPass; +import java.util.function.Consumer; + +public record QueuedRenderPass(GlRenderPass renderPass, Consumer drawCallback) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/RoundedOutlineKey.java b/src/main/java/dev/zprestige/prestige/data/RoundedOutlineKey.java new file mode 100644 index 0000000..663b851 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/RoundedOutlineKey.java @@ -0,0 +1,6 @@ +package dev.zprestige.prestige.data; + +import org.joml.Vector4f; + +public record RoundedOutlineKey(Vector4f cornerRadii, float outlineThickness) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/LongData2.java b/src/main/java/dev/zprestige/prestige/data/SafeCartPlacement.java similarity index 58% rename from src/main/java/dev/zprestige/prestige/data/LongData2.java rename to src/main/java/dev/zprestige/prestige/data/SafeCartPlacement.java index 058251a..7c9c365 100644 --- a/src/main/java/dev/zprestige/prestige/data/LongData2.java +++ b/src/main/java/dev/zprestige/prestige/data/SafeCartPlacement.java @@ -2,5 +2,5 @@ package dev.zprestige.prestige.data; import net.minecraft.util.math.BlockPos; -public record LongData2(BlockPos aj, long ak) { +public record SafeCartPlacement(BlockPos pos, long time) { } diff --git a/src/main/java/dev/zprestige/prestige/data/ScissorState.java b/src/main/java/dev/zprestige/prestige/data/ScissorState.java new file mode 100644 index 0000000..5b94d95 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/ScissorState.java @@ -0,0 +1,33 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlRenderPass; +import dev.zprestige.prestige.render.RenderStateElement; +import org.lwjgl.opengl.GL11; + +public record ScissorState(boolean enabled, boolean restoreEnabled, int x, int y, int width, int height) implements RenderStateElement { + @Override + public void apply(GlRenderPass renderPass) { + if (this.enabled) { + GL11.glEnable(3089); + GL11.glScissor(this.x, this.y, this.width, this.height); + } else { + GL11.glDisable(3089); + } + } + + @Override + public void cleanup() { + if (this.restoreEnabled != this.enabled) { + if (this.restoreEnabled) { + GL11.glEnable(3089); + } else { + GL11.glDisable(3089); + } + } + } + + @Override + public boolean allowsDuplicates() { + return true; + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/ShaderBindState.java b/src/main/java/dev/zprestige/prestige/data/ShaderBindState.java new file mode 100644 index 0000000..341da8a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/ShaderBindState.java @@ -0,0 +1,12 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlRenderPassBuilder; +import dev.zprestige.prestige.render.Shader; +import dev.zprestige.prestige.render.RenderStateElement; + +public record ShaderBindState(Shader shader) implements RenderStateElement { + @Override + public void configure(GlRenderPassBuilder drawContext) { + drawContext.setShader(this.shader); + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/ShaderData.java b/src/main/java/dev/zprestige/prestige/data/ShaderData.java deleted file mode 100644 index 10a8f91..0000000 --- a/src/main/java/dev/zprestige/prestige/data/ShaderData.java +++ /dev/null @@ -1,82 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.DrawContext; -import dev.zprestige.prestige.render.Shader; -import dev.zprestige.prestige.render.Uniform; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public record ShaderData(Shader b0) implements Uniform { - @Override - public void a(DrawContext var1) { - var1.e(new Object[]{this.b0}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/StorageBlockMarker.java b/src/main/java/dev/zprestige/prestige/data/StorageBlockMarker.java new file mode 100644 index 0000000..bb17eb9 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/StorageBlockMarker.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.data; + +public record StorageBlockMarker(int x, int y, int z, int abgrColor) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/StringData.java b/src/main/java/dev/zprestige/prestige/data/StringData.java deleted file mode 100644 index 8b6550d..0000000 --- a/src/main/java/dev/zprestige/prestige/data/StringData.java +++ /dev/null @@ -1,114 +0,0 @@ -package dev.zprestige.prestige.data; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Arrays; - -public record StringData(Class bi, String bj, Class bk, Class[] bl, Class bm) { - @Override - public boolean equals(Object var1) { - if (this == var1) { - return true; - } else if (var1 != null && this.getClass() == var1.getClass()) { - StringData var5 = (StringData)var1; - if (!this.bi.equals(var5.bi)) { - return false; - } else if (!this.bm.equals(var5.bm)) { - return false; - } else if (!this.bj.equals(var5.bj)) { - return false; - } else if (!this.bk.equals(var5.bk)) { - return false; - } else if (this.bl.length != var5.bl.length) { - return false; - } else { - for (int var6 = 0; var6 < this.bl.length; var6++) { - if (!this.bl[var6].equals(var5.bl[var6])) { - return false; - } - } - - return true; - } - } else { - return false; - } - } - - @Override - public int hashCode() { - int var3 = this.bi.hashCode(); - var3 = 31 * var3 + this.bj.hashCode(); - var3 = 31 * var3 + this.bk.hashCode(); - var3 = 31 * var3 + this.bm.hashCode(); - return 31 * var3 + Arrays.hashCode((Object[])this.bl); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/data/BoolData3.java b/src/main/java/dev/zprestige/prestige/data/TrajectoryPath.java similarity index 59% rename from src/main/java/dev/zprestige/prestige/data/BoolData3.java rename to src/main/java/dev/zprestige/prestige/data/TrajectoryPath.java index eba203b..21d7465 100644 --- a/src/main/java/dev/zprestige/prestige/data/BoolData3.java +++ b/src/main/java/dev/zprestige/prestige/data/TrajectoryPath.java @@ -3,5 +3,5 @@ package dev.zprestige.prestige.data; import java.util.ArrayList; import net.minecraft.util.math.Vec3d; -public record BoolData3(ArrayList b9, boolean b_) { +public record TrajectoryPath(ArrayList points, boolean landed) { } diff --git a/src/main/java/dev/zprestige/prestige/data/UniformCallbackState.java b/src/main/java/dev/zprestige/prestige/data/UniformCallbackState.java new file mode 100644 index 0000000..bbcb16d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/UniformCallbackState.java @@ -0,0 +1,17 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlRenderPass; +import dev.zprestige.prestige.render.RenderStateElement; +import java.util.function.Consumer; + +public record UniformCallbackState(Consumer callback) implements RenderStateElement { + @Override + public void apply(GlRenderPass renderPass) { + this.callback.accept(ProgramUniforms.of(renderPass.shader.getProgramId())); + } + + @Override + public boolean allowsDuplicates() { + return true; + } +} diff --git a/src/main/java/dev/zprestige/prestige/data/VecBoolData.java b/src/main/java/dev/zprestige/prestige/data/VecBoolData.java deleted file mode 100644 index a8774fc..0000000 --- a/src/main/java/dev/zprestige/prestige/data/VecBoolData.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.zprestige.prestige.data; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; - -public record VecBoolData(BlockPos c, BlockPos d, Vec3d e, BlockPos f, BlockPos g, Vec3d h, boolean i) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/VecBoolData2.java b/src/main/java/dev/zprestige/prestige/data/VecBoolData2.java deleted file mode 100644 index 16aeb70..0000000 --- a/src/main/java/dev/zprestige/prestige/data/VecBoolData2.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.zprestige.prestige.data; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; - -public record VecBoolData2(BlockPos l, BlockPos m, Vec3d n, boolean o, BlockPos p, BlockPos q, Vec3d r) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/VecBoolIntData.java b/src/main/java/dev/zprestige/prestige/data/VecBoolIntData.java deleted file mode 100644 index d408334..0000000 --- a/src/main/java/dev/zprestige/prestige/data/VecBoolIntData.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.zprestige.prestige.data; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; - -public record VecBoolIntData(BlockPos s, BlockPos t, Vec3d u, boolean v, int w, double x, boolean y, boolean z, int aa, double ab, double ac, double ad) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/VecIntData2.java b/src/main/java/dev/zprestige/prestige/data/VecIntData2.java deleted file mode 100644 index 6b96e0b..0000000 --- a/src/main/java/dev/zprestige/prestige/data/VecIntData2.java +++ /dev/null @@ -1,6 +0,0 @@ -package dev.zprestige.prestige.data; - -import net.minecraft.util.math.Vec3d; - -public record VecIntData2(Vec3d aA, int aB) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/VecIntDoubleData.java b/src/main/java/dev/zprestige/prestige/data/VecIntDoubleData.java deleted file mode 100644 index 0c65056..0000000 --- a/src/main/java/dev/zprestige/prestige/data/VecIntDoubleData.java +++ /dev/null @@ -1,6 +0,0 @@ -package dev.zprestige.prestige.data; - -import net.minecraft.util.math.Vec3d; - -public record VecIntDoubleData(Vec3d bq, int br, double bs) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/VectorData.java b/src/main/java/dev/zprestige/prestige/data/VectorData.java deleted file mode 100644 index 25cf341..0000000 --- a/src/main/java/dev/zprestige/prestige/data/VectorData.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.DrawMode; -import org.joml.Vector4f; - -public record VectorData(Vector4f bD, DrawMode bE) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/VectorFloatData.java b/src/main/java/dev/zprestige/prestige/data/VectorFloatData.java deleted file mode 100644 index e315391..0000000 --- a/src/main/java/dev/zprestige/prestige/data/VectorFloatData.java +++ /dev/null @@ -1,6 +0,0 @@ -package dev.zprestige.prestige.data; - -import org.joml.Vector4f; - -public record VectorFloatData(Vector4f bF, float bG) { -} diff --git a/src/main/java/dev/zprestige/prestige/data/VertexAttributeBinding.java b/src/main/java/dev/zprestige/prestige/data/VertexAttributeBinding.java new file mode 100644 index 0000000..2f09d9a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/VertexAttributeBinding.java @@ -0,0 +1,6 @@ +package dev.zprestige.prestige.data; + +import dev.zprestige.prestige.render.GlBuffer; + +public record VertexAttributeBinding(GlBuffer buffer, VertexElement element, int stride, long offset) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/VertexElement.java b/src/main/java/dev/zprestige/prestige/data/VertexElement.java new file mode 100644 index 0000000..3a502d3 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/data/VertexElement.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.data; + +public record VertexElement(int componentCount, int glType, int componentSize, boolean normalized) { +} diff --git a/src/main/java/dev/zprestige/prestige/data/VertexIntData.java b/src/main/java/dev/zprestige/prestige/data/VertexIntData.java deleted file mode 100644 index b03f0c0..0000000 --- a/src/main/java/dev/zprestige/prestige/data/VertexIntData.java +++ /dev/null @@ -1,6 +0,0 @@ -package dev.zprestige.prestige.data; - -import dev.zprestige.prestige.render.VertexFormat; - -public record VertexIntData(VertexFormat bf, int bg, int bh) { -} diff --git a/src/main/java/dev/zprestige/prestige/engine/EngineDev.java b/src/main/java/dev/zprestige/prestige/engine/EngineDev.java index abb704f..a6ccfda 100644 --- a/src/main/java/dev/zprestige/prestige/engine/EngineDev.java +++ b/src/main/java/dev/zprestige/prestige/engine/EngineDev.java @@ -65,6 +65,7 @@ public final class EngineDev implements ClientModInitializer { switch (cmd) { case "wait" -> waitTicks = Integer.parseInt(arg); case "report" -> log(EngineState.details()); + case "injectselftest" -> log(dev.zprestige.prestige.inject.SelfTest.run()); case "listeners" -> { String text = DevCmd.listeners(); if (!arg.isEmpty()) { diff --git a/src/main/java/dev/zprestige/prestige/engine/EnginePlugin.java b/src/main/java/dev/zprestige/prestige/engine/EnginePlugin.java index 5f73d3b..a3743f7 100644 --- a/src/main/java/dev/zprestige/prestige/engine/EnginePlugin.java +++ b/src/main/java/dev/zprestige/prestige/engine/EnginePlugin.java @@ -52,14 +52,9 @@ public final class EnginePlugin implements IMixinConfigPlugin { String forced = System.getProperty("prestige.engine.namespace"); // test override ("named" / "intermediary") if (forced != null) namespace = forced; else try { namespace = FabricLoader.getInstance().getMappingResolver().getCurrentRuntimeNamespace(); } catch (Throwable t) { namespace = "named"; } - boolean named = namespace.equals("named"); - ClassLoader loader = EnginePlugin.class.getClassLoader(); - byte[] tiny = named ? null : resource("prestige-engine/mappings.tiny"); List transformers = lines("prestige-engine/transformers.list"); - expectedTargets = lines(named ? "prestige-engine/targets.named.list" : "prestige-engine/targets.intermediary.list").size(); - manager = new TransformerManager(new ResourceClassProvider(loader, new HashSet<>(transformers)), tiny == null ? null : new ByteArrayInputStream(tiny)); - manager.setFailStrategy(FailStrategy.CANCEL); - for (String name : transformers) manager.addTransformer(name); + expectedTargets = lines(namespace.equals("named") ? "prestige-engine/targets.named.list" : "prestige-engine/targets.intermediary.list").size(); + manager = createManager(namespace, transformers); if (manager.getTransformedClasses().size() != expectedTargets) throw new IllegalStateException("Expected " + expectedTargets + " Minecraft targets, got " + manager.getTransformedClasses().size()); EngineState.installed = true; @@ -69,6 +64,16 @@ public final class EnginePlugin implements IMixinConfigPlugin { } } + /** Builds the ClassTransform manager for the given runtime namespace ("named" or "intermediary") and transformer class names. */ + public static TransformerManager createManager(String namespace, List transformers) throws IOException { + ClassLoader loader = EnginePlugin.class.getClassLoader(); + byte[] tiny = namespace.equals("named") ? null : resource("prestige-engine/mappings.tiny"); + TransformerManager manager = new TransformerManager(new ResourceClassProvider(loader, new HashSet<>(transformers)), tiny == null ? null : new ByteArrayInputStream(tiny)); + manager.setFailStrategy(FailStrategy.CANCEL); + for (String name : transformers) manager.addTransformer(name); + return manager; + } + /** Class bytes from the mod class path; the callbacks (void CInject/CModifyArgs handlers) get the readiness gate on the way. */ private static final class ResourceClassProvider implements IClassProvider { private final ClassLoader loader; @@ -131,14 +136,14 @@ public final class EnginePlugin implements IMixinConfigPlugin { } } - private static byte[] resource(String name) throws IOException { + public static byte[] resource(String name) throws IOException { try (InputStream in = EnginePlugin.class.getClassLoader().getResourceAsStream(name)) { if (in == null) throw new IllegalStateException("Missing engine resource: " + name); return in.readAllBytes(); } } - private static List lines(String name) throws IOException { + public static List lines(String name) throws IOException { return new String(resource(name), StandardCharsets.UTF_8).lines().map(String::trim).filter(s -> !s.isEmpty()).toList(); } diff --git a/src/main/java/dev/zprestige/prestige/event/AddParticleEvent.java b/src/main/java/dev/zprestige/prestige/event/AddParticleEvent.java new file mode 100644 index 0000000..2c4c97a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/AddParticleEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class AddParticleEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/AntiBotQueryEvent.java b/src/main/java/dev/zprestige/prestige/event/AntiBotQueryEvent.java new file mode 100644 index 0000000..e597e49 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/AntiBotQueryEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class AntiBotQueryEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/AttackEntityEvent.java b/src/main/java/dev/zprestige/prestige/event/AttackEntityEvent.java new file mode 100644 index 0000000..2b66fda --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/AttackEntityEvent.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.entity.Entity; + +public class AttackEntityEvent extends Event { + private final Entity target; + + public AttackEntityEvent(Entity attacked) { + this.target = attacked; + } + + public Entity getTarget() { + return this.target; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/AutoAttackEvent.java b/src/main/java/dev/zprestige/prestige/event/AutoAttackEvent.java new file mode 100644 index 0000000..65fad86 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/AutoAttackEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class AutoAttackEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/BlockBoolEvent.java b/src/main/java/dev/zprestige/prestige/event/BlockBoolEvent.java deleted file mode 100644 index a7f5cab..0000000 --- a/src/main/java/dev/zprestige/prestige/event/BlockBoolEvent.java +++ /dev/null @@ -1,25 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.block.Block; - -public class BlockBoolEvent extends Event { - private final Block a; - private boolean b = false; - - public BlockBoolEvent(Block var1) { - this.a = var1; - } - - public Block a(Object[] var1) { - return this.a; - } - - public boolean c(Object[] var1) { - return this.b; - } - - public void b(Object[] var1) { - boolean var2 = (Boolean)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/BlockPosBlockEvent.java b/src/main/java/dev/zprestige/prestige/event/BlockPosBlockEvent.java deleted file mode 100644 index 763d2a4..0000000 --- a/src/main/java/dev/zprestige/prestige/event/BlockPosBlockEvent.java +++ /dev/null @@ -1,22 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; - -public class BlockPosBlockEvent extends Event { - private final BlockPos a; - private final BlockState b; - - public BlockPosBlockEvent(BlockPos var1, BlockState var2) { - this.a = var1; - this.b = var2; - } - - public BlockPos a(Object[] var1) { - return this.a; - } - - public BlockState a_class_2680(Object[] var1) { - return this.b; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/BlockStateUpdateEvent.java b/src/main/java/dev/zprestige/prestige/event/BlockStateUpdateEvent.java new file mode 100644 index 0000000..5fa0dfc --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/BlockStateUpdateEvent.java @@ -0,0 +1,22 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; + +public class BlockStateUpdateEvent extends Event { + private final BlockPos pos; + private final BlockState state; + + public BlockStateUpdateEvent(BlockPos blockPos, BlockState newState) { + this.pos = blockPos; + this.state = newState; + } + + public BlockPos getPos() { + return this.pos; + } + + public BlockState getState() { + return this.state; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/BlockVisibilityEvent.java b/src/main/java/dev/zprestige/prestige/event/BlockVisibilityEvent.java new file mode 100644 index 0000000..554b3f1 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/BlockVisibilityEvent.java @@ -0,0 +1,24 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.block.Block; + +public class BlockVisibilityEvent extends Event { + private final Block block; + private boolean visible = false; + + public BlockVisibilityEvent(Block queriedBlock) { + this.block = queriedBlock; + } + + public Block getBlock() { + return this.block; + } + + public boolean isVisible() { + return this.visible; + } + + public void setVisible(boolean value) { + this.visible = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/BoolEvent.java b/src/main/java/dev/zprestige/prestige/event/BoolEvent.java deleted file mode 100644 index 13d46a5..0000000 --- a/src/main/java/dev/zprestige/prestige/event/BoolEvent.java +++ /dev/null @@ -1,20 +0,0 @@ -package dev.zprestige.prestige.event; - -import dev.zprestige.prestige.type.EventPhase; - -public class BoolEvent extends Event { - private boolean b; - - public BoolEvent(EventPhase var1) { - super(var1); - } - - public boolean c(Object[] var1) { - return this.b; - } - - public void b(Object[] var1) { - boolean var2 = (Boolean)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/BoolPositionEvent.java b/src/main/java/dev/zprestige/prestige/event/BoolPositionEvent.java deleted file mode 100644 index 0b9a79c..0000000 --- a/src/main/java/dev/zprestige/prestige/event/BoolPositionEvent.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.event; - -import java.awt.Color; -import net.minecraft.util.math.Vec3d; - -public class BoolPositionEvent extends Event { - public boolean b; - public boolean a; - public boolean c; - public Vec3d d; - public Vec3d e; - public String f; - public Color g; - public Color h; -} diff --git a/src/main/java/dev/zprestige/prestige/event/BotCheckEvent.java b/src/main/java/dev/zprestige/prestige/event/BotCheckEvent.java new file mode 100644 index 0000000..f176ff5 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/BotCheckEvent.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.entity.player.PlayerEntity; + +public class BotCheckEvent extends Event { + private final PlayerEntity player; + + public BotCheckEvent(PlayerEntity candidate) { + this.player = candidate; + } + + public PlayerEntity getPlayer() { + return this.player; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/BoundingBoxEvent.java b/src/main/java/dev/zprestige/prestige/event/BoundingBoxEvent.java new file mode 100644 index 0000000..71826fa --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/BoundingBoxEvent.java @@ -0,0 +1,26 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.entity.Entity; +import net.minecraft.util.math.Box; + +public class BoundingBoxEvent extends Event { + private final Entity entity; + private Box box; + + public BoundingBoxEvent(Entity owner, Box originalBox) { + this.entity = owner; + this.box = originalBox; + } + + public Entity getEntity() { + return this.entity; + } + + public Box getBox() { + return this.box; + } + + public void setBox(Box newBox) { + this.box = newBox; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/CameraPositionEvent.java b/src/main/java/dev/zprestige/prestige/event/CameraPositionEvent.java new file mode 100644 index 0000000..95d973f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/CameraPositionEvent.java @@ -0,0 +1,38 @@ +package dev.zprestige.prestige.event; + +public class CameraPositionEvent extends Event { + public static boolean applyingOverride = false; + private double x; + private double y; + private double z; + + public CameraPositionEvent(double posX, double posY, double posZ) { + this.x = posX; + this.y = posY; + this.z = posZ; + } + + public final double getX() { + return this.x; + } + + public final void setX(double value) { + this.x = value; + } + + public final double getY() { + return this.y; + } + + public final void setY(double value) { + this.y = value; + } + + public final double getZ() { + return this.z; + } + + public final void setZ(double value) { + this.z = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/CameraRotationEvent.java b/src/main/java/dev/zprestige/prestige/event/CameraRotationEvent.java new file mode 100644 index 0000000..27ec5b7 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/CameraRotationEvent.java @@ -0,0 +1,28 @@ +package dev.zprestige.prestige.event; + +public class CameraRotationEvent extends Event { + public static boolean applyingOverride = false; + private float yaw; + private float pitch; + + public CameraRotationEvent(float initialYaw, float initialPitch) { + this.yaw = initialYaw; + this.pitch = initialPitch; + } + + public float getYaw() { + return this.yaw; + } + + public void setYaw(float value) { + this.yaw = value; + } + + public float getPitch() { + return this.pitch; + } + + public void setPitch(float value) { + this.pitch = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/ChunkDataEvent.java b/src/main/java/dev/zprestige/prestige/event/ChunkDataEvent.java new file mode 100644 index 0000000..607b2d5 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ChunkDataEvent.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.world.chunk.WorldChunk; + +public class ChunkDataEvent extends Event { + private final WorldChunk chunk; + + public ChunkDataEvent(WorldChunk loadedChunk) { + this.chunk = loadedChunk; + } + + public WorldChunk getChunk() { + return this.chunk; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/ClientTickEvent.java b/src/main/java/dev/zprestige/prestige/event/ClientTickEvent.java new file mode 100644 index 0000000..3a9c3b5 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ClientTickEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class ClientTickEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/ColorEvent.java b/src/main/java/dev/zprestige/prestige/event/ColorEvent.java deleted file mode 100644 index f721a7f..0000000 --- a/src/main/java/dev/zprestige/prestige/event/ColorEvent.java +++ /dev/null @@ -1,36 +0,0 @@ -package dev.zprestige.prestige.event; - -import java.awt.Color; - -public class ColorEvent extends Event { - private Color a; - private Color b; - - public ColorEvent(Color var1) { - this.a = var1; - this.b = null; - } - - public ColorEvent(Color var1, Color var2) { - this.a = var1; - this.b = var2; - } - - public Color a(Object[] var1) { - return this.a; - } - - public void b(Object[] var1) { - Color var2 = (Color)var1[0]; - this.a = var2; - } - - public Color b_Color(Object[] var1) { - return this.b; - } - - public void c(Object[] var1) { - Color var2 = (Color)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/DoAttackEvent.java b/src/main/java/dev/zprestige/prestige/event/DoAttackEvent.java new file mode 100644 index 0000000..e6ac694 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/DoAttackEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class DoAttackEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/DoItemUseEvent.java b/src/main/java/dev/zprestige/prestige/event/DoItemUseEvent.java new file mode 100644 index 0000000..90bdcfe --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/DoItemUseEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class DoItemUseEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/DoubleEvent.java b/src/main/java/dev/zprestige/prestige/event/DoubleEvent.java deleted file mode 100644 index 04d47e8..0000000 --- a/src/main/java/dev/zprestige/prestige/event/DoubleEvent.java +++ /dev/null @@ -1,41 +0,0 @@ -package dev.zprestige.prestige.event; - -public class DoubleEvent extends Event { - public static boolean a = false; - private double b; - private double c; - private double d; - - public DoubleEvent(double var1, double var3, double var5) { - this.b = var1; - this.c = var3; - this.d = var5; - } - - public final double a(Object[] var1) { - return this.b; - } - - public final void b(Object[] var1) { - double var2 = (Double)var1[0]; - this.b = var2; - } - - public final double b_double(Object[] var1) { - return this.c; - } - - public final void c(Object[] var1) { - double var2 = (Double)var1[0]; - this.c = var2; - } - - public final double c_double(Object[] var1) { - return this.d; - } - - public final void d(Object[] var1) { - double var2 = (Double)var1[0]; - this.d = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/DoubleEvent2.java b/src/main/java/dev/zprestige/prestige/event/DoubleEvent2.java deleted file mode 100644 index b996314..0000000 --- a/src/main/java/dev/zprestige/prestige/event/DoubleEvent2.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.zprestige.prestige.event; - -public final class DoubleEvent2 extends Event { - private final double a; - private final double b; - - public DoubleEvent2(double var1, double var3) { - this.a = var1; - this.b = var3; - } - - public double a(Object[] var1) { - return this.a; - } - - public double b(Object[] var1) { - return this.b; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/DoubleEvent3.java b/src/main/java/dev/zprestige/prestige/event/DoubleEvent3.java deleted file mode 100644 index 05e3006..0000000 --- a/src/main/java/dev/zprestige/prestige/event/DoubleEvent3.java +++ /dev/null @@ -1,40 +0,0 @@ -package dev.zprestige.prestige.event; - -public final class DoubleEvent3 extends Event { - private double a; - private double b; - private double c; - - public DoubleEvent3(double var1, double var3, double var5) { - this.a = var1; - this.b = var3; - this.c = var5; - } - - public double a(Object[] var1) { - return this.a; - } - - public void b(Object[] var1) { - double var2 = (Double)var1[0]; - this.a = var2; - } - - public double b_double_(Object[] var1) { - return this.b; - } - - public void c(Object[] var1) { - double var2 = (Double)var1[0]; - this.b = var2; - } - - public double c_double_(Object[] var1) { - return this.c; - } - - public void d(Object[] var1) { - double var2 = (Double)var1[0]; - this.c = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/EntityAddRemoveEvent.java b/src/main/java/dev/zprestige/prestige/event/EntityAddRemoveEvent.java new file mode 100644 index 0000000..637989e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/EntityAddRemoveEvent.java @@ -0,0 +1,17 @@ +package dev.zprestige.prestige.event; + +import dev.zprestige.prestige.type.EventPhase; +import net.minecraft.entity.Entity; + +public class EntityAddRemoveEvent extends Event { + private final Entity entity; + + public EntityAddRemoveEvent(Entity changedEntity, EventPhase eventPhase) { + super(eventPhase); + this.entity = changedEntity; + } + + public Entity getEntity() { + return this.entity; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/EntityBoolEvent.java b/src/main/java/dev/zprestige/prestige/event/EntityBoolEvent.java deleted file mode 100644 index 4391bba..0000000 --- a/src/main/java/dev/zprestige/prestige/event/EntityBoolEvent.java +++ /dev/null @@ -1,12 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.entity.Entity; - -public class EntityBoolEvent extends Event { - public final Entity a; - public boolean b; - - public EntityBoolEvent(Entity var1) { - this.a = var1; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/EntityEvent.java b/src/main/java/dev/zprestige/prestige/event/EntityEvent.java deleted file mode 100644 index eac671d..0000000 --- a/src/main/java/dev/zprestige/prestige/event/EntityEvent.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.entity.Entity; - -public class EntityEvent extends Event { - private final Entity a; - - public EntityEvent(Entity var1) { - this.a = var1; - } - - public Entity a(Object[] var1) { - return this.a; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/EntityEvent2.java b/src/main/java/dev/zprestige/prestige/event/EntityEvent2.java deleted file mode 100644 index 48c529f..0000000 --- a/src/main/java/dev/zprestige/prestige/event/EntityEvent2.java +++ /dev/null @@ -1,27 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.entity.Entity; -import net.minecraft.util.math.Box; - -public class EntityEvent2 extends Event { - private final Entity a; - private Box b; - - public EntityEvent2(Entity var1, Box var2) { - this.a = var1; - this.b = var2; - } - - public Entity a(Object[] var1) { - return this.a; - } - - public Box a_class_238(Object[] var1) { - return this.b; - } - - public void b(Object[] var1) { - Box var2 = (Box)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/EntityEvent3.java b/src/main/java/dev/zprestige/prestige/event/EntityEvent3.java deleted file mode 100644 index bd7cf1b..0000000 --- a/src/main/java/dev/zprestige/prestige/event/EntityEvent3.java +++ /dev/null @@ -1,17 +0,0 @@ -package dev.zprestige.prestige.event; - -import dev.zprestige.prestige.type.EventPhase; -import net.minecraft.entity.Entity; - -public class EntityEvent3 extends Event { - private final Entity a; - - public EntityEvent3(Entity var1, EventPhase var2) { - super(var2); - this.a = var1; - } - - public Entity a(Object[] var1) { - return this.a; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/EntityEvent4.java b/src/main/java/dev/zprestige/prestige/event/EntityEvent4.java deleted file mode 100644 index eb09959..0000000 --- a/src/main/java/dev/zprestige/prestige/event/EntityEvent4.java +++ /dev/null @@ -1,13 +0,0 @@ -package dev.zprestige.prestige.event; - -import dev.zprestige.prestige.type.EventPhase; -import net.minecraft.entity.Entity; - -public class EntityEvent4 extends Event { - public final Entity a; - - public EntityEvent4(Entity var1, EventPhase var2) { - super(var2); - this.a = var1; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/EntityEvent5.java b/src/main/java/dev/zprestige/prestige/event/EntityEvent5.java deleted file mode 100644 index 8ee20c7..0000000 --- a/src/main/java/dev/zprestige/prestige/event/EntityEvent5.java +++ /dev/null @@ -1,27 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.entity.Entity; -import net.minecraft.text.Text; - -public class EntityEvent5 extends Event { - private final Entity a; - private Text b; - - public EntityEvent5(Entity var1, Text var2) { - this.a = var1; - this.b = var2; - } - - public Entity a(Object[] var1) { - return this.a; - } - - public Text a_class_2561(Object[] var1) { - return this.b; - } - - public void b(Object[] var1) { - Text var2 = (Text)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/EntityEvent6.java b/src/main/java/dev/zprestige/prestige/event/EntityEvent6.java deleted file mode 100644 index 307c054..0000000 --- a/src/main/java/dev/zprestige/prestige/event/EntityEvent6.java +++ /dev/null @@ -1,47 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.entity.Entity; -import net.minecraft.text.Text; - -public class EntityEvent6 extends Event { - private Text a; - private Text b; - private Entity c; - - public EntityEvent6(Text var1, Text var2) { - this(var1, var2, null); - } - - public EntityEvent6(Text var1, Text var2, Entity var3) { - this.a = var1; - this.b = var2; - this.c = var3; - } - - public Entity a(Object[] var1) { - return this.c; - } - - public void b(Object[] var1) { - Entity var2 = (Entity)var1[0]; - this.c = var2; - } - - public Text a_class_2561_(Object[] var1) { - return this.a; - } - - public void c(Object[] var1) { - Text var2 = (Text)var1[0]; - this.a = var2; - } - - public Text b_class_2561(Object[] var1) { - return this.b; - } - - public void d(Object[] var1) { - Text var2 = (Text)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/EntityFloatEvent.java b/src/main/java/dev/zprestige/prestige/event/EntityFloatEvent.java deleted file mode 100644 index adbc005..0000000 --- a/src/main/java/dev/zprestige/prestige/event/EntityFloatEvent.java +++ /dev/null @@ -1,26 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.entity.Entity; - -public class EntityFloatEvent extends Event { - private final Entity a; - private float b; - - public EntityFloatEvent(Entity var1, float var2) { - this.a = var1; - this.b = var2; - } - - public Entity a(Object[] var1) { - return this.a; - } - - public float a_float___(Object[] var1) { - return this.b; - } - - public void b(Object[] var1) { - float var2 = (Float)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/Event.java b/src/main/java/dev/zprestige/prestige/event/Event.java index 5359e20..4e41da1 100644 --- a/src/main/java/dev/zprestige/prestige/event/Event.java +++ b/src/main/java/dev/zprestige/prestige/event/Event.java @@ -2,118 +2,32 @@ package dev.zprestige.prestige.event; import dev.zprestige.prestige.client.Prestige; import dev.zprestige.prestige.type.EventPhase; -import java.lang.reflect.Field; -import java.lang.reflect.Method; public class Event { - private final EventPhase a; - private boolean b = false; - private static String[] c; + private final EventPhase phase; + private boolean cancelled = false; - public Event(EventPhase var1) { - this.a = var1; + public Event(EventPhase eventPhase) { + this.phase = eventPhase; } public Event() { this(EventPhase.NONE); } - public boolean a_boolean___(Object[] var1) { - return this.b; + public boolean isCancelled() { + return this.cancelled; } - public EventPhase a_EventPhase(Object[] var1) { - return this.a; + public EventPhase getPhase() { + return this.phase; } - public void a_void_____(Object[] var1) { - this.b = true; + public void cancel() { + this.cancelled = true; } - public boolean b_boolean__(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 40579119770306L ^ var2; - long var4 = var2 ^ 79390605381451L; - return Prestige.eventBus == null ? false : Prestige.eventBus.post(new Object[]{this, var4}); - } - - public static void b(String[] var0) { - c = var0; - } - - public static String[] b() { - return c; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static MatchException b(MatchException var0) { - return var0; + public boolean post() { + return Prestige.eventBus == null ? false : Prestige.eventBus.post(this); } } diff --git a/src/main/java/dev/zprestige/prestige/event/EventManager.java b/src/main/java/dev/zprestige/prestige/event/EventManager.java deleted file mode 100644 index d2ea4b4..0000000 --- a/src/main/java/dev/zprestige/prestige/event/EventManager.java +++ /dev/null @@ -1,118 +0,0 @@ -package dev.zprestige.prestige.event; - -import dev.zprestige.prestige.Module; -import dev.zprestige.prestige.Native; -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.render.RenderContract5; -import dev.zprestige.prestige.render.RenderContract6; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class EventManager { - private boolean a; - - public EventManager(long var1) { - super(); - var1 = 0L; - var1 = 22342114103836L ^ var1; - long var3 = var1 ^ 73431247940062L; - this.a = false; - Prestige.eventBus.register(new Object[]{this, var3}); - RenderContract5.a.register((RenderContract6)(lpL45_0, lpL45_1) -> this.a = Prestige.l.b_boolean___(new Object[]{((dev.zprestige.prestige.render.RenderHelper8)lpL45_0), ((dev.zprestige.prestige.data.MatrixCameraData)lpL45_1), 115071973472424L})); - } - - @Subscribe - public void a(TickEvent4 var1) { - Event.b(); - Native.h(); - - for (Module var8 : (Iterable)(Prestige.moduleManager.getModules())) { - boolean var9 = var8.isEnabled(); - if (var9 && !var8.getLastEnabled(new Object[0])) { - var8.applyState(new Object[]{35734372290945L}); - } - - if (!var9 && var8.getLastEnabled(new Object[0])) { - var8.applyState(new Object[]{35734372290945L}); - } - - var8.setLastEnabled(new Object[]{var9}); - } - } - - @Subscribe - public void a(TickEvent17 var1) { - if (this.a) { - var1.a_void_____(new Object[0]); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/ExplosionEvent.java b/src/main/java/dev/zprestige/prestige/event/ExplosionEvent.java new file mode 100644 index 0000000..09581a8 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ExplosionEvent.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.event; + +public class ExplosionEvent extends Event { + public float power; + public double x; + public double y; + public double z; + + public ExplosionEvent(float explosionPower, double posX, double posY, double posZ) { + this.power = explosionPower; + this.x = posX; + this.y = posY; + this.z = posZ; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/ExtendedReachAttackEvent.java b/src/main/java/dev/zprestige/prestige/event/ExtendedReachAttackEvent.java new file mode 100644 index 0000000..67db376 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ExtendedReachAttackEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class ExtendedReachAttackEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/FireOverlayEvent.java b/src/main/java/dev/zprestige/prestige/event/FireOverlayEvent.java new file mode 100644 index 0000000..5b210b8 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/FireOverlayEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class FireOverlayEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/FloatColorEvent.java b/src/main/java/dev/zprestige/prestige/event/FloatColorEvent.java deleted file mode 100644 index 971cf5a..0000000 --- a/src/main/java/dev/zprestige/prestige/event/FloatColorEvent.java +++ /dev/null @@ -1,52 +0,0 @@ -package dev.zprestige.prestige.event; - -import java.awt.Color; - -public class FloatColorEvent extends Event { - private float a; - private float b; - private Color c; - private Float d; - - public FloatColorEvent(float var1, float var2, Color var3) { - this.a = var1; - this.b = var2; - this.c = var3; - } - - public Color a(Object[] var1) { - return this.c; - } - - public void b(Object[] var1) { - Color var2 = (Color)var1[0]; - this.c = var2; - } - - public float a_float____(Object[] var1) { - return this.a; - } - - public void c(Object[] var1) { - float var2 = (Float)var1[0]; - this.a = var2; - } - - public float b_float(Object[] var1) { - return this.b; - } - - public void d(Object[] var1) { - float var2 = (Float)var1[0]; - this.b = var2; - } - - public Float a_Float(Object[] var1) { - return this.d; - } - - public void e(Object[] var1) { - Float var2 = (Float)var1[0]; - this.d = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/FloatDoubleEvent.java b/src/main/java/dev/zprestige/prestige/event/FloatDoubleEvent.java deleted file mode 100644 index 9f0f823..0000000 --- a/src/main/java/dev/zprestige/prestige/event/FloatDoubleEvent.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.event; - -public class FloatDoubleEvent extends Event { - public float a; - public double b; - public double c; - public double d; - - public FloatDoubleEvent(float var1, double var2, double var4, double var6) { - this.a = var1; - this.b = var2; - this.c = var4; - this.d = var6; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/FloatEvent.java b/src/main/java/dev/zprestige/prestige/event/FloatEvent.java deleted file mode 100644 index 43b5279..0000000 --- a/src/main/java/dev/zprestige/prestige/event/FloatEvent.java +++ /dev/null @@ -1,30 +0,0 @@ -package dev.zprestige.prestige.event; - -public class FloatEvent extends Event { - public static boolean a = false; - private float b; - private float c; - - public FloatEvent(float var1, float var2) { - this.b = var1; - this.c = var2; - } - - public float a(Object[] var1) { - return this.b; - } - - public void b(Object[] var1) { - float var2 = (Float)var1[0]; - this.b = var2; - } - - public float b_float_(Object[] var1) { - return this.c; - } - - public void c(Object[] var1) { - float var2 = (Float)var1[0]; - this.c = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/FloatEvent2.java b/src/main/java/dev/zprestige/prestige/event/FloatEvent2.java deleted file mode 100644 index ce512fe..0000000 --- a/src/main/java/dev/zprestige/prestige/event/FloatEvent2.java +++ /dev/null @@ -1,34 +0,0 @@ -package dev.zprestige.prestige.event; - -import dev.zprestige.prestige.type.EventPhase; - -public class FloatEvent2 extends Event { - private float a; - private float b; - public static float c; - public static float d; - - public FloatEvent2(EventPhase var1, float var2, float var3) { - super(var1); - this.a = var2; - this.b = var3; - } - - public float a(Object[] var1) { - return this.a; - } - - public void b(Object[] var1) { - float var2 = (Float)var1[0]; - this.a = var2; - } - - public float b_float__(Object[] var1) { - return this.b; - } - - public void c(Object[] var1) { - float var2 = (Float)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/FloatEvent3.java b/src/main/java/dev/zprestige/prestige/event/FloatEvent3.java deleted file mode 100644 index 6cda144..0000000 --- a/src/main/java/dev/zprestige/prestige/event/FloatEvent3.java +++ /dev/null @@ -1,16 +0,0 @@ -package dev.zprestige.prestige.event; - -import dev.zprestige.prestige.type.EventPhase; - -public class FloatEvent3 extends Event { - public float a; - public float b; - public static float c; - public static float d; - - public FloatEvent3(EventPhase var1, float var2, float var3) { - super(var1); - this.a = var2; - this.b = var3; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/FloatEvent4.java b/src/main/java/dev/zprestige/prestige/event/FloatEvent4.java deleted file mode 100644 index 2cc78ed..0000000 --- a/src/main/java/dev/zprestige/prestige/event/FloatEvent4.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.zprestige.prestige.event; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.function.Predicate; - -public class FloatEvent4 extends Event { - private float a; - - public FloatEvent4(float var1) { - this.a = var1; - } - - public float a(Object[] var1) { - return this.a; - } - - public void b(Object[] var1) { - float var2 = (Float)var1[0]; - this.a = var2; - } - - public static Predicate a_Predicate(Object[] var0) { - return lpL24_0 -> !((net.minecraft.entity.Entity)lpL24_0).isSpectator() && ((net.minecraft.entity.Entity)lpL24_0).canHit(); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/FloatEvent5.java b/src/main/java/dev/zprestige/prestige/event/FloatEvent5.java deleted file mode 100644 index 4bcbdd6..0000000 --- a/src/main/java/dev/zprestige/prestige/event/FloatEvent5.java +++ /dev/null @@ -1,34 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.Arm; - -public class FloatEvent5 extends Event { - private final MatrixStack a; - private final Arm b; - private final float c; - private final float d; - - public FloatEvent5(MatrixStack var1, Arm var2, float var3, float var4) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = var4; - } - - public MatrixStack a(Object[] var1) { - return this.a; - } - - public Arm a_class_1306(Object[] var1) { - return this.b; - } - - public float a_float_____(Object[] var1) { - return this.c; - } - - public float b(Object[] var1) { - return this.d; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/FloatMatrixEvent.java b/src/main/java/dev/zprestige/prestige/event/FloatMatrixEvent.java deleted file mode 100644 index 6d5b40f..0000000 --- a/src/main/java/dev/zprestige/prestige/event/FloatMatrixEvent.java +++ /dev/null @@ -1,28 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.client.render.Camera; -import org.joml.Matrix4f; - -public class FloatMatrixEvent extends Event { - private final Camera a; - private final float b; - private final Matrix4f c; - - public FloatMatrixEvent(Camera var1, float var2, Matrix4f var3) { - this.a = var1; - this.b = var2; - this.c = var3; - } - - public Camera a(Object[] var1) { - return this.a; - } - - public float a_float______(Object[] var1) { - return this.b; - } - - public Matrix4f a_Matrix4f(Object[] var1) { - return this.c; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/FloatPositionEvent.java b/src/main/java/dev/zprestige/prestige/event/FloatPositionEvent.java deleted file mode 100644 index 49cbb1b..0000000 --- a/src/main/java/dev/zprestige/prestige/event/FloatPositionEvent.java +++ /dev/null @@ -1,35 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.util.math.Vec3d; - -public class FloatPositionEvent extends Event { - private float a; - private Vec3d b; - - public FloatPositionEvent(float var1) { - this.a = var1; - } - - public FloatPositionEvent(float var1, Vec3d var2) { - this.a = var1; - this.b = var2; - } - - public float a(Object[] var1) { - return this.a; - } - - public void b(Object[] var1) { - float var2 = (Float)var1[0]; - this.a = var2; - } - - public Vec3d a_class_243(Object[] var1) { - return this.b; - } - - public void c(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/FloatingItemTickEvent.java b/src/main/java/dev/zprestige/prestige/event/FloatingItemTickEvent.java new file mode 100644 index 0000000..bd9e629 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/FloatingItemTickEvent.java @@ -0,0 +1,17 @@ +package dev.zprestige.prestige.event; + +public class FloatingItemTickEvent extends Event { + private int extraTicks; + + public FloatingItemTickEvent(int initialExtraTicks) { + this.extraTicks = initialExtraTicks; + } + + public int getExtraTicks() { + return this.extraTicks; + } + + public void setExtraTicks(int value) { + this.extraTicks = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/FogEvent.java b/src/main/java/dev/zprestige/prestige/event/FogEvent.java new file mode 100644 index 0000000..46c1e0b --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/FogEvent.java @@ -0,0 +1,48 @@ +package dev.zprestige.prestige.event; + +import java.awt.Color; + +public class FogEvent extends Event { + private float start; + private float end; + private Color color; + private Float skyEnd; + + public FogEvent(float fogStart, float fogEnd, Color fogColor) { + this.start = fogStart; + this.end = fogEnd; + this.color = fogColor; + } + + public Color getColor() { + return this.color; + } + + public void setColor(Color newColor) { + this.color = newColor; + } + + public float getStart() { + return this.start; + } + + public void setStart(float value) { + this.start = value; + } + + public float getEnd() { + return this.end; + } + + public void setEnd(float value) { + this.end = value; + } + + public Float getSkyEnd() { + return this.skyEnd; + } + + public void setSkyEnd(Float value) { + this.skyEnd = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/FrameEvent.java b/src/main/java/dev/zprestige/prestige/event/FrameEvent.java new file mode 100644 index 0000000..ebb0496 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/FrameEvent.java @@ -0,0 +1,14 @@ +package dev.zprestige.prestige.event; + +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.render.BufferSource; + +public class FrameEvent extends Event { + public final BufferSource renderer; + public final CameraMatrices context; + + public FrameEvent(BufferSource batchRenderer, CameraMatrices renderContext) { + this.renderer = batchRenderer; + this.context = renderContext; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/FrustumSetupEvent.java b/src/main/java/dev/zprestige/prestige/event/FrustumSetupEvent.java new file mode 100644 index 0000000..189cbf0 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/FrustumSetupEvent.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.client.render.Frustum; + +public class FrustumSetupEvent extends Event { + private final Frustum frustum; + + public FrustumSetupEvent(Frustum capturedFrustum) { + this.frustum = capturedFrustum; + } + + public Frustum getFrustum() { + return this.frustum; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/FullBrightEvent.java b/src/main/java/dev/zprestige/prestige/event/FullBrightEvent.java new file mode 100644 index 0000000..32bc0ed --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/FullBrightEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class FullBrightEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/GameJoinEvent.java b/src/main/java/dev/zprestige/prestige/event/GameJoinEvent.java new file mode 100644 index 0000000..124019f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/GameJoinEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class GameJoinEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/HandSwingDurationEvent.java b/src/main/java/dev/zprestige/prestige/event/HandSwingDurationEvent.java new file mode 100644 index 0000000..473b4a0 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/HandSwingDurationEvent.java @@ -0,0 +1,9 @@ +package dev.zprestige.prestige.event; + +public class HandSwingDurationEvent extends Event { + public int duration; + + public HandSwingDurationEvent(int initialDuration) { + this.duration = initialDuration; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/HandleBlockBreakingEvent.java b/src/main/java/dev/zprestige/prestige/event/HandleBlockBreakingEvent.java new file mode 100644 index 0000000..5e0444d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/HandleBlockBreakingEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class HandleBlockBreakingEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/HealthIndicatorEvent.java b/src/main/java/dev/zprestige/prestige/event/HealthIndicatorEvent.java new file mode 100644 index 0000000..06a2ca1 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/HealthIndicatorEvent.java @@ -0,0 +1,25 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.entity.player.PlayerEntity; + +public class HealthIndicatorEvent extends Event { + private final PlayerEntity player; + private String suffix; + + public HealthIndicatorEvent(PlayerEntity labelledPlayer, String initialSuffix) { + this.player = labelledPlayer; + this.suffix = initialSuffix; + } + + public PlayerEntity getPlayer() { + return this.player; + } + + public String getSuffix() { + return this.suffix; + } + + public void setSuffix(String value) { + this.suffix = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/HurtCamEvent.java b/src/main/java/dev/zprestige/prestige/event/HurtCamEvent.java new file mode 100644 index 0000000..e3bfd06 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/HurtCamEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class HurtCamEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/IntEvent.java b/src/main/java/dev/zprestige/prestige/event/IntEvent.java deleted file mode 100644 index b403b6e..0000000 --- a/src/main/java/dev/zprestige/prestige/event/IntEvent.java +++ /dev/null @@ -1,18 +0,0 @@ -package dev.zprestige.prestige.event; - -public class IntEvent extends Event { - private int a; - - public IntEvent(int var1) { - this.a = var1; - } - - public int a(Object[] var1) { - return this.a; - } - - public void b(Object[] var1) { - int var2 = (Integer)var1[0]; - this.a = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/IntEvent2.java b/src/main/java/dev/zprestige/prestige/event/IntEvent2.java deleted file mode 100644 index 9f533f7..0000000 --- a/src/main/java/dev/zprestige/prestige/event/IntEvent2.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.zprestige.prestige.event; - -public class IntEvent2 extends Event { - private final int a; - private final int b; - - public IntEvent2(int var1, int var2) { - this.a = var1; - this.b = var2; - } - - public int a(Object[] var1) { - return this.a; - } - - public int b(Object[] var1) { - return this.b; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/IntEvent3.java b/src/main/java/dev/zprestige/prestige/event/IntEvent3.java deleted file mode 100644 index 4f83ce3..0000000 --- a/src/main/java/dev/zprestige/prestige/event/IntEvent3.java +++ /dev/null @@ -1,9 +0,0 @@ -package dev.zprestige.prestige.event; - -public class IntEvent3 extends Event { - public int a; - - public IntEvent3(int var1) { - this.a = var1; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/IntEvent4.java b/src/main/java/dev/zprestige/prestige/event/IntEvent4.java deleted file mode 100644 index 1c58ad8..0000000 --- a/src/main/java/dev/zprestige/prestige/event/IntEvent4.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.zprestige.prestige.event; - -public class IntEvent4 extends Event { - private final int a; - private final int b; - - public IntEvent4(int var1, int var2) { - this.a = var1; - this.b = var2; - } - - public int a(Object[] var1) { - return this.a; - } - - public int b(Object[] var1) { - return this.b; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/ItemBobbingEvent.java b/src/main/java/dev/zprestige/prestige/event/ItemBobbingEvent.java new file mode 100644 index 0000000..446cb20 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ItemBobbingEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class ItemBobbingEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/ItemEvent.java b/src/main/java/dev/zprestige/prestige/event/ItemEvent.java deleted file mode 100644 index cdbd0a7..0000000 --- a/src/main/java/dev/zprestige/prestige/event/ItemEvent.java +++ /dev/null @@ -1,20 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.item.ItemStack; - -public class ItemEvent extends Event { - private ItemStack a; - - public ItemEvent(ItemStack var1) { - this.a = var1; - } - - public ItemStack a(Object[] var1) { - return this.a; - } - - public void b(Object[] var1) { - ItemStack var2 = (ItemStack)var1[0]; - this.a = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/KeyEvent.java b/src/main/java/dev/zprestige/prestige/event/KeyEvent.java new file mode 100644 index 0000000..0f8482f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/KeyEvent.java @@ -0,0 +1,19 @@ +package dev.zprestige.prestige.event; + +public class KeyEvent extends Event { + private final int key; + private final int action; + + public KeyEvent(int keyCode, int keyAction) { + this.key = keyCode; + this.action = keyAction; + } + + public int getKey() { + return this.key; + } + + public int getAction() { + return this.action; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/KeyboardInputTickEvent.java b/src/main/java/dev/zprestige/prestige/event/KeyboardInputTickEvent.java new file mode 100644 index 0000000..d91df23 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/KeyboardInputTickEvent.java @@ -0,0 +1,9 @@ +package dev.zprestige.prestige.event; + +import dev.zprestige.prestige.type.EventPhase; + +public class KeyboardInputTickEvent extends Event { + public KeyboardInputTickEvent(EventPhase eventPhase) { + super(eventPhase); + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/LabelTextEvent.java b/src/main/java/dev/zprestige/prestige/event/LabelTextEvent.java new file mode 100644 index 0000000..58b7ad4 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/LabelTextEvent.java @@ -0,0 +1,26 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.entity.Entity; +import net.minecraft.text.Text; + +public class LabelTextEvent extends Event { + private final Entity entity; + private Text text; + + public LabelTextEvent(Entity labelledEntity, Text initialText) { + this.entity = labelledEntity; + this.text = initialText; + } + + public Entity getEntity() { + return this.entity; + } + + public Text getText() { + return this.text; + } + + public void setText(Text newText) { + this.text = newText; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/LivingEvent.java b/src/main/java/dev/zprestige/prestige/event/LivingEvent.java deleted file mode 100644 index 5e09bdb..0000000 --- a/src/main/java/dev/zprestige/prestige/event/LivingEvent.java +++ /dev/null @@ -1,11 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.entity.LivingEntity; - -public class LivingEvent extends Event { - public final LivingEntity a; - - public LivingEvent(LivingEntity var1) { - this.a = var1; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/LoadingScreenEvent.java b/src/main/java/dev/zprestige/prestige/event/LoadingScreenEvent.java new file mode 100644 index 0000000..81e6741 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/LoadingScreenEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class LoadingScreenEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/LongEvent.java b/src/main/java/dev/zprestige/prestige/event/LongEvent.java deleted file mode 100644 index e593204..0000000 --- a/src/main/java/dev/zprestige/prestige/event/LongEvent.java +++ /dev/null @@ -1,18 +0,0 @@ -package dev.zprestige.prestige.event; - -public class LongEvent extends Event { - private long a; - - public LongEvent(long var1) { - this.a = var1; - } - - public long a(Object[] var1) { - return this.a; - } - - public void b(Object[] var1) { - long var2 = (Long)var1[0]; - this.a = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/ModuleStateSync.java b/src/main/java/dev/zprestige/prestige/event/ModuleStateSync.java new file mode 100644 index 0000000..9cf41b3 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ModuleStateSync.java @@ -0,0 +1,44 @@ +package dev.zprestige.prestige.event; + +import dev.zprestige.prestige.Module; +import dev.zprestige.prestige.Native; +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.render.RenderEvents; +import dev.zprestige.prestige.render.RenderCallback; + +public class ModuleStateSync { + private boolean hudDrawn; + + public ModuleStateSync() { + super(); + this.hudDrawn = false; + Prestige.eventBus.register(this); + RenderEvents.HUD_RENDER.register((RenderCallback)(renderer, context) -> this.hudDrawn = Prestige.hudEditorScreen.renderHud(renderer, context)); + } + + @Subscribe + public void onPreTick(PreTickEvent event) { + Native.onClientTick(); + + for (Module module : (Iterable)(Prestige.moduleManager.getModules())) { + boolean enabled = module.isEnabled(); + if (enabled && !module.getLastEnabled()) { + module.applyState(); + } + + if (!enabled && module.getLastEnabled()) { + module.applyState(); + } + + module.setLastEnabled(enabled); + } + } + + @Subscribe + public void onRenderStatusEffects(RenderStatusEffectsEvent event) { + if (this.hudDrawn) { + event.cancel(); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/MouseButtonEvent.java b/src/main/java/dev/zprestige/prestige/event/MouseButtonEvent.java new file mode 100644 index 0000000..fc38d24 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/MouseButtonEvent.java @@ -0,0 +1,19 @@ +package dev.zprestige.prestige.event; + +public class MouseButtonEvent extends Event { + private final int button; + private final int action; + + public MouseButtonEvent(int mouseButton, int buttonAction) { + this.button = mouseButton; + this.action = buttonAction; + } + + public int getButton() { + return this.button; + } + + public int getAction() { + return this.action; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/MouseUpdateEvent.java b/src/main/java/dev/zprestige/prestige/event/MouseUpdateEvent.java new file mode 100644 index 0000000..6176594 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/MouseUpdateEvent.java @@ -0,0 +1,19 @@ +package dev.zprestige.prestige.event; + +public final class MouseUpdateEvent extends Event { + private final double deltaX; + private final double deltaY; + + public MouseUpdateEvent(double cursorDeltaX, double cursorDeltaY) { + this.deltaX = cursorDeltaX; + this.deltaY = cursorDeltaY; + } + + public double getDeltaX() { + return this.deltaX; + } + + public double getDeltaY() { + return this.deltaY; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/MovementYawEvent.java b/src/main/java/dev/zprestige/prestige/event/MovementYawEvent.java new file mode 100644 index 0000000..f34c127 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/MovementYawEvent.java @@ -0,0 +1,33 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.util.math.Vec3d; + +public class MovementYawEvent extends Event { + private float yaw; + private Vec3d movementInput; + + public MovementYawEvent(float initialYaw) { + this.yaw = initialYaw; + } + + public MovementYawEvent(float initialYaw, Vec3d input) { + this.yaw = initialYaw; + this.movementInput = input; + } + + public float getYaw() { + return this.yaw; + } + + public void setYaw(float value) { + this.yaw = value; + } + + public Vec3d getMovementInput() { + return this.movementInput; + } + + public void setMovementInput(Vec3d newInput) { + this.movementInput = newInput; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/OverlayMessageEvent.java b/src/main/java/dev/zprestige/prestige/event/OverlayMessageEvent.java new file mode 100644 index 0000000..b70b46c --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/OverlayMessageEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class OverlayMessageEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/PacketEvent.java b/src/main/java/dev/zprestige/prestige/event/PacketEvent.java deleted file mode 100644 index 43f2a74..0000000 --- a/src/main/java/dev/zprestige/prestige/event/PacketEvent.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.network.packet.Packet; - -public class PacketEvent extends Event { - private final Packet a; - - public PacketEvent(Packet var1) { - this.a = var1; - } - - public Packet a(Object[] var1) { - return this.a; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/PacketEvent2.java b/src/main/java/dev/zprestige/prestige/event/PacketEvent2.java deleted file mode 100644 index 5b5c52f..0000000 --- a/src/main/java/dev/zprestige/prestige/event/PacketEvent2.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.network.packet.Packet; - -public class PacketEvent2 extends Event { - private final Packet a; - - public PacketEvent2(Packet var1) { - this.a = var1; - } - - public Packet a(Object[] var1) { - return this.a; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/PacketReceiveEvent.java b/src/main/java/dev/zprestige/prestige/event/PacketReceiveEvent.java new file mode 100644 index 0000000..9aa5438 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/PacketReceiveEvent.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.network.packet.Packet; + +public class PacketReceiveEvent extends Event { + private final Packet packet; + + public PacketReceiveEvent(Packet receivedPacket) { + this.packet = receivedPacket; + } + + public Packet getPacket() { + return this.packet; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/PacketSendEvent.java b/src/main/java/dev/zprestige/prestige/event/PacketSendEvent.java new file mode 100644 index 0000000..b628215 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/PacketSendEvent.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.network.packet.Packet; + +public class PacketSendEvent extends Event { + private final Packet packet; + + public PacketSendEvent(Packet sentPacket) { + this.packet = sentPacket; + } + + public Packet getPacket() { + return this.packet; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/PlayerEvent.java b/src/main/java/dev/zprestige/prestige/event/PlayerEvent.java deleted file mode 100644 index f489b83..0000000 --- a/src/main/java/dev/zprestige/prestige/event/PlayerEvent.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.entity.player.PlayerEntity; - -public class PlayerEvent extends Event { - private final PlayerEntity a; - - public PlayerEvent(PlayerEntity var1) { - this.a = var1; - } - - public PlayerEntity a(Object[] var1) { - return this.a; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/PlayerRenderStateEvent.java b/src/main/java/dev/zprestige/prestige/event/PlayerRenderStateEvent.java new file mode 100644 index 0000000..1db80d0 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/PlayerRenderStateEvent.java @@ -0,0 +1,13 @@ +package dev.zprestige.prestige.event; + +import dev.zprestige.prestige.type.EventPhase; +import net.minecraft.entity.Entity; + +public class PlayerRenderStateEvent extends Event { + public final Entity entity; + + public PlayerRenderStateEvent(Entity renderedEntity, EventPhase eventPhase) { + super(eventPhase); + this.entity = renderedEntity; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/PlayerStringEvent.java b/src/main/java/dev/zprestige/prestige/event/PlayerStringEvent.java deleted file mode 100644 index 00d6fd1..0000000 --- a/src/main/java/dev/zprestige/prestige/event/PlayerStringEvent.java +++ /dev/null @@ -1,26 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.entity.player.PlayerEntity; - -public class PlayerStringEvent extends Event { - private final PlayerEntity a; - private String b; - - public PlayerStringEvent(PlayerEntity var1, String var2) { - this.a = var1; - this.b = var2; - } - - public PlayerEntity a(Object[] var1) { - return this.a; - } - - public String a_String__(Object[] var1) { - return this.b; - } - - public void b(Object[] var1) { - String var2 = (String)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/PreTickEvent.java b/src/main/java/dev/zprestige/prestige/event/PreTickEvent.java new file mode 100644 index 0000000..a17d349 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/PreTickEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class PreTickEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/RainGradientEvent.java b/src/main/java/dev/zprestige/prestige/event/RainGradientEvent.java new file mode 100644 index 0000000..fa7a43e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/RainGradientEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class RainGradientEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/ReachEvent.java b/src/main/java/dev/zprestige/prestige/event/ReachEvent.java new file mode 100644 index 0000000..a79ba76 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ReachEvent.java @@ -0,0 +1,23 @@ +package dev.zprestige.prestige.event; + +import java.util.function.Predicate; + +public class ReachEvent extends Event { + private float extraReach; + + public ReachEvent(float initialExtra) { + this.extraReach = initialExtra; + } + + public float getExtraReach() { + return this.extraReach; + } + + public void setExtraReach(float value) { + this.extraReach = value; + } + + public static Predicate getHittableFilter() { + return entity -> !((net.minecraft.entity.Entity)entity).isSpectator() && ((net.minecraft.entity.Entity)entity).canHit(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/Render2DEvent.java b/src/main/java/dev/zprestige/prestige/event/Render2DEvent.java new file mode 100644 index 0000000..068b511 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/Render2DEvent.java @@ -0,0 +1,14 @@ +package dev.zprestige.prestige.event; + +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.render.BufferSource; + +public class Render2DEvent extends Event { + public final BufferSource renderer; + public final CameraMatrices context; + + public Render2DEvent(BufferSource batchRenderer, CameraMatrices renderContext) { + this.renderer = batchRenderer; + this.context = renderContext; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/Render3DEvent.java b/src/main/java/dev/zprestige/prestige/event/Render3DEvent.java new file mode 100644 index 0000000..28bdc91 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/Render3DEvent.java @@ -0,0 +1,14 @@ +package dev.zprestige.prestige.event; + +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.render.BufferSource; + +public class Render3DEvent extends Event { + public final BufferSource renderer; + public final CameraMatrices context; + + public Render3DEvent(BufferSource batchRenderer, CameraMatrices renderContext) { + this.renderer = batchRenderer; + this.context = renderContext; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/RenderCrosshairEvent.java b/src/main/java/dev/zprestige/prestige/event/RenderCrosshairEvent.java new file mode 100644 index 0000000..4bf8f09 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/RenderCrosshairEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class RenderCrosshairEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/RenderLabelEvent.java b/src/main/java/dev/zprestige/prestige/event/RenderLabelEvent.java new file mode 100644 index 0000000..c16ad3e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/RenderLabelEvent.java @@ -0,0 +1,44 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.entity.Entity; +import net.minecraft.text.Text; + +public class RenderLabelEvent extends Event { + private Text originalText; + private Text displayText; + private Entity entity; + + public RenderLabelEvent(Text original, Text display) { + this(original, display, null); + } + + public RenderLabelEvent(Text original, Text display, Entity labelledEntity) { + this.originalText = original; + this.displayText = display; + this.entity = labelledEntity; + } + + public Entity getEntity() { + return this.entity; + } + + public void setEntity(Entity newEntity) { + this.entity = newEntity; + } + + public Text getOriginalText() { + return this.originalText; + } + + public void setOriginalText(Text newText) { + this.originalText = newText; + } + + public Text getDisplayText() { + return this.displayText; + } + + public void setDisplayText(Text newText) { + this.displayText = newText; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/RenderScoreboardEvent.java b/src/main/java/dev/zprestige/prestige/event/RenderScoreboardEvent.java new file mode 100644 index 0000000..22655b6 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/RenderScoreboardEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class RenderScoreboardEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/RenderStatusEffectsEvent.java b/src/main/java/dev/zprestige/prestige/event/RenderStatusEffectsEvent.java new file mode 100644 index 0000000..9d2c8b4 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/RenderStatusEffectsEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class RenderStatusEffectsEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/ResetAttackCooldownEvent.java b/src/main/java/dev/zprestige/prestige/event/ResetAttackCooldownEvent.java new file mode 100644 index 0000000..6bcc82e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ResetAttackCooldownEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class ResetAttackCooldownEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/ResolutionChangedEvent.java b/src/main/java/dev/zprestige/prestige/event/ResolutionChangedEvent.java new file mode 100644 index 0000000..2caf06e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ResolutionChangedEvent.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.client.util.Window; + +public class ResolutionChangedEvent extends Event { + private final Window window; + + public ResolutionChangedEvent(Window gameWindow) { + this.window = gameWindow; + } + + public Window getWindow() { + return this.window; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/ScreenBackgroundEvent.java b/src/main/java/dev/zprestige/prestige/event/ScreenBackgroundEvent.java new file mode 100644 index 0000000..81ba881 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ScreenBackgroundEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class ScreenBackgroundEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/event/SendMovementPacketsEvent.java b/src/main/java/dev/zprestige/prestige/event/SendMovementPacketsEvent.java new file mode 100644 index 0000000..58fbafe --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/SendMovementPacketsEvent.java @@ -0,0 +1,32 @@ +package dev.zprestige.prestige.event; + +import dev.zprestige.prestige.type.EventPhase; + +public class SendMovementPacketsEvent extends Event { + private float yaw; + private float pitch; + public static float savedYaw; + public static float savedPitch; + + public SendMovementPacketsEvent(EventPhase eventPhase, float initialYaw, float initialPitch) { + super(eventPhase); + this.yaw = initialYaw; + this.pitch = initialPitch; + } + + public float getYaw() { + return this.yaw; + } + + public void setYaw(float value) { + this.yaw = value; + } + + public float getPitch() { + return this.pitch; + } + + public void setPitch(float value) { + this.pitch = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/ShieldBreakEvent.java b/src/main/java/dev/zprestige/prestige/event/ShieldBreakEvent.java new file mode 100644 index 0000000..ad44c8f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ShieldBreakEvent.java @@ -0,0 +1,11 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.entity.LivingEntity; + +public class ShieldBreakEvent extends Event { + public final LivingEntity entity; + + public ShieldBreakEvent(LivingEntity shieldHolder) { + this.entity = shieldHolder; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/ShieldRenderSettingsEvent.java b/src/main/java/dev/zprestige/prestige/event/ShieldRenderSettingsEvent.java new file mode 100644 index 0000000..a8ce944 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/ShieldRenderSettingsEvent.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.event; + +import java.awt.Color; +import net.minecraft.util.math.Vec3d; + +public class ShieldRenderSettingsEvent extends Event { + public boolean enabled; + public boolean overlay; + public boolean renderSelf; + public Vec3d offset; + public Vec3d scale; + public String renderMode; + public Color defaultColor; + public Color brokenColor; +} diff --git a/src/main/java/dev/zprestige/prestige/event/SkinTexturesEvent.java b/src/main/java/dev/zprestige/prestige/event/SkinTexturesEvent.java new file mode 100644 index 0000000..c40819c --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/SkinTexturesEvent.java @@ -0,0 +1,25 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.entity.player.SkinTextures; + +public class SkinTexturesEvent extends Event { + private SkinTextures skinTextures; + private final String playerName; + + public SkinTexturesEvent(SkinTextures textures, String name) { + this.skinTextures = textures; + this.playerName = name; + } + + public SkinTextures getSkinTextures() { + return this.skinTextures; + } + + public void setSkinTextures(SkinTextures newTextures) { + this.skinTextures = newTextures; + } + + public String getPlayerName() { + return this.playerName; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/SkyColorEvent.java b/src/main/java/dev/zprestige/prestige/event/SkyColorEvent.java new file mode 100644 index 0000000..f671392 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/SkyColorEvent.java @@ -0,0 +1,34 @@ +package dev.zprestige.prestige.event; + +import java.awt.Color; + +public class SkyColorEvent extends Event { + private Color skyColor; + private Color horizonColor; + + public SkyColorEvent(Color initialSky) { + this.skyColor = initialSky; + this.horizonColor = null; + } + + public SkyColorEvent(Color initialSky, Color initialHorizon) { + this.skyColor = initialSky; + this.horizonColor = initialHorizon; + } + + public Color getSkyColor() { + return this.skyColor; + } + + public void setSkyColor(Color color) { + this.skyColor = color; + } + + public Color getHorizonColor() { + return this.horizonColor; + } + + public void setHorizonColor(Color color) { + this.horizonColor = color; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/StringEvent.java b/src/main/java/dev/zprestige/prestige/event/StringEvent.java deleted file mode 100644 index a7d0364..0000000 --- a/src/main/java/dev/zprestige/prestige/event/StringEvent.java +++ /dev/null @@ -1,26 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.entity.player.SkinTextures; - -public class StringEvent extends Event { - private SkinTextures a; - private final String b; - - public StringEvent(SkinTextures var1, String var2) { - this.a = var1; - this.b = var2; - } - - public SkinTextures a(Object[] var1) { - return this.a; - } - - public void b(Object[] var1) { - SkinTextures var2 = (SkinTextures)var1[0]; - this.a = var2; - } - - public String a_String___(Object[] var1) { - return this.b; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/StringEvent2.java b/src/main/java/dev/zprestige/prestige/event/StringEvent2.java deleted file mode 100644 index fd48721..0000000 --- a/src/main/java/dev/zprestige/prestige/event/StringEvent2.java +++ /dev/null @@ -1,29 +0,0 @@ -package dev.zprestige.prestige.event; - -public class StringEvent2 extends Event { - private String a; - private String b; - - public StringEvent2(String var1, String var2) { - this.a = var1; - this.b = var2; - } - - public String a(Object[] var1) { - return this.a; - } - - public void b(Object[] var1) { - String var2 = (String)var1[0]; - this.a = var2; - } - - public String b_String_(Object[] var1) { - return this.b; - } - - public void c(Object[] var1) { - String var2 = (String)var1[0]; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/SwingArmEvent.java b/src/main/java/dev/zprestige/prestige/event/SwingArmEvent.java new file mode 100644 index 0000000..1db9805 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/SwingArmEvent.java @@ -0,0 +1,34 @@ +package dev.zprestige.prestige.event; + +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Arm; + +public class SwingArmEvent extends Event { + private final MatrixStack matrices; + private final Arm arm; + private final float swingProgress; + private final float equipProgress; + + public SwingArmEvent(MatrixStack matrixStack, Arm swingingArm, float initialSwingProgress, float initialEquipProgress) { + this.matrices = matrixStack; + this.arm = swingingArm; + this.swingProgress = initialSwingProgress; + this.equipProgress = initialEquipProgress; + } + + public MatrixStack getMatrices() { + return this.matrices; + } + + public Arm getArm() { + return this.arm; + } + + public float getSwingProgress() { + return this.swingProgress; + } + + public float getEquipProgress() { + return this.equipProgress; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/SwingHandEvent.java b/src/main/java/dev/zprestige/prestige/event/SwingHandEvent.java new file mode 100644 index 0000000..0466161 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/SwingHandEvent.java @@ -0,0 +1,19 @@ +package dev.zprestige.prestige.event; + +import dev.zprestige.prestige.type.EventPhase; + +public class SwingHandEvent extends Event { + private boolean skipPost; + + public SwingHandEvent(EventPhase eventPhase) { + super(eventPhase); + } + + public boolean isSkipPost() { + return this.skipPost; + } + + public void setSkipPost(boolean value) { + this.skipPost = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/TextReplaceEvent.java b/src/main/java/dev/zprestige/prestige/event/TextReplaceEvent.java new file mode 100644 index 0000000..2475125 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/TextReplaceEvent.java @@ -0,0 +1,27 @@ +package dev.zprestige.prestige.event; + +public class TextReplaceEvent extends Event { + private String target; + private String text; + + public TextReplaceEvent(String initialTarget, String initialText) { + this.target = initialTarget; + this.text = initialText; + } + + public String getTarget() { + return this.target; + } + + public void setTarget(String value) { + this.target = value; + } + + public String getText() { + return this.text; + } + + public void setText(String value) { + this.text = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent.java b/src/main/java/dev/zprestige/prestige/event/TickEvent.java deleted file mode 100644 index f97ac8e..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent10.java b/src/main/java/dev/zprestige/prestige/event/TickEvent10.java deleted file mode 100644 index e18e6f7..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent10.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent10 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent11.java b/src/main/java/dev/zprestige/prestige/event/TickEvent11.java deleted file mode 100644 index 1e7dabb..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent11.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent11 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent12.java b/src/main/java/dev/zprestige/prestige/event/TickEvent12.java deleted file mode 100644 index 311bba3..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent12.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent12 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent13.java b/src/main/java/dev/zprestige/prestige/event/TickEvent13.java deleted file mode 100644 index 3fc6bd2..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent13.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.world.chunk.WorldChunk; - -public class TickEvent13 extends Event { - private final WorldChunk a; - - public TickEvent13(WorldChunk var1) { - this.a = var1; - } - - public WorldChunk a(Object[] var1) { - return this.a; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent14.java b/src/main/java/dev/zprestige/prestige/event/TickEvent14.java deleted file mode 100644 index 92d3db7..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent14.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent14 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent15.java b/src/main/java/dev/zprestige/prestige/event/TickEvent15.java deleted file mode 100644 index ff773e4..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent15.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent15 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent16.java b/src/main/java/dev/zprestige/prestige/event/TickEvent16.java deleted file mode 100644 index 94dade4..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent16.java +++ /dev/null @@ -1,9 +0,0 @@ -package dev.zprestige.prestige.event; - -import dev.zprestige.prestige.type.EventPhase; - -public class TickEvent16 extends Event { - public TickEvent16(EventPhase var1) { - super(var1); - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent17.java b/src/main/java/dev/zprestige/prestige/event/TickEvent17.java deleted file mode 100644 index b19f6fa..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent17.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent17 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent18.java b/src/main/java/dev/zprestige/prestige/event/TickEvent18.java deleted file mode 100644 index 6158258..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent18.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent18 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent19.java b/src/main/java/dev/zprestige/prestige/event/TickEvent19.java deleted file mode 100644 index 70e6034..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent19.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent19 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent2.java b/src/main/java/dev/zprestige/prestige/event/TickEvent2.java deleted file mode 100644 index b3386fd..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent2.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent2 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent20.java b/src/main/java/dev/zprestige/prestige/event/TickEvent20.java deleted file mode 100644 index 527edee..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent20.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent20 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent21.java b/src/main/java/dev/zprestige/prestige/event/TickEvent21.java deleted file mode 100644 index 9da9eaf..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent21.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent21 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent22.java b/src/main/java/dev/zprestige/prestige/event/TickEvent22.java deleted file mode 100644 index defc60d..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent22.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.client.render.Frustum; - -public class TickEvent22 extends Event { - private final Frustum a; - - public TickEvent22(Frustum var1) { - this.a = var1; - } - - public Frustum a(Object[] var1) { - return this.a; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent23.java b/src/main/java/dev/zprestige/prestige/event/TickEvent23.java deleted file mode 100644 index 3b603cd..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent23.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent23 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent24.java b/src/main/java/dev/zprestige/prestige/event/TickEvent24.java deleted file mode 100644 index ad398dd..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent24.java +++ /dev/null @@ -1,14 +0,0 @@ -package dev.zprestige.prestige.event; - -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.render.RenderHelper8; - -public class TickEvent24 extends Event { - public final RenderHelper8 a; - public final MatrixCameraData b; - - public TickEvent24(RenderHelper8 var1, MatrixCameraData var2) { - this.a = var1; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent25.java b/src/main/java/dev/zprestige/prestige/event/TickEvent25.java deleted file mode 100644 index 107b860..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent25.java +++ /dev/null @@ -1,14 +0,0 @@ -package dev.zprestige.prestige.event; - -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.render.RenderHelper8; - -public class TickEvent25 extends Event { - public final RenderHelper8 a; - public final MatrixCameraData b; - - public TickEvent25(RenderHelper8 var1, MatrixCameraData var2) { - this.a = var1; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent26.java b/src/main/java/dev/zprestige/prestige/event/TickEvent26.java deleted file mode 100644 index e640dc9..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent26.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent26 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent27.java b/src/main/java/dev/zprestige/prestige/event/TickEvent27.java deleted file mode 100644 index f21521a..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent27.java +++ /dev/null @@ -1,14 +0,0 @@ -package dev.zprestige.prestige.event; - -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.render.RenderHelper8; - -public class TickEvent27 extends Event { - public final RenderHelper8 a; - public final MatrixCameraData b; - - public TickEvent27(RenderHelper8 var1, MatrixCameraData var2) { - this.a = var1; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent28.java b/src/main/java/dev/zprestige/prestige/event/TickEvent28.java deleted file mode 100644 index cb01dcd..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent28.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent28 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent29.java b/src/main/java/dev/zprestige/prestige/event/TickEvent29.java deleted file mode 100644 index 8efb17d..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent29.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.event; - -import net.minecraft.client.util.Window; - -public class TickEvent29 extends Event { - private final Window a; - - public TickEvent29(Window var1) { - this.a = var1; - } - - public Window a(Object[] var1) { - return this.a; - } -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent3.java b/src/main/java/dev/zprestige/prestige/event/TickEvent3.java deleted file mode 100644 index 29870ac..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent3.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent3 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent30.java b/src/main/java/dev/zprestige/prestige/event/TickEvent30.java deleted file mode 100644 index 9ff9542..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent30.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent30 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent31.java b/src/main/java/dev/zprestige/prestige/event/TickEvent31.java deleted file mode 100644 index 38a4282..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent31.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent31 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent4.java b/src/main/java/dev/zprestige/prestige/event/TickEvent4.java deleted file mode 100644 index 412e615..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent4.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent4 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent5.java b/src/main/java/dev/zprestige/prestige/event/TickEvent5.java deleted file mode 100644 index e94c0e4..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent5.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent5 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent6.java b/src/main/java/dev/zprestige/prestige/event/TickEvent6.java deleted file mode 100644 index 6ec6ef5..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent6.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent6 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent7.java b/src/main/java/dev/zprestige/prestige/event/TickEvent7.java deleted file mode 100644 index 8959225..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent7.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent7 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent8.java b/src/main/java/dev/zprestige/prestige/event/TickEvent8.java deleted file mode 100644 index 8556d53..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent8.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent8 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TickEvent9.java b/src/main/java/dev/zprestige/prestige/event/TickEvent9.java deleted file mode 100644 index 26c1fba..0000000 --- a/src/main/java/dev/zprestige/prestige/event/TickEvent9.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.event; - -public class TickEvent9 extends Event { -} diff --git a/src/main/java/dev/zprestige/prestige/event/TimeOfDayEvent.java b/src/main/java/dev/zprestige/prestige/event/TimeOfDayEvent.java new file mode 100644 index 0000000..1be07be --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/TimeOfDayEvent.java @@ -0,0 +1,17 @@ +package dev.zprestige.prestige.event; + +public class TimeOfDayEvent extends Event { + private long time; + + public TimeOfDayEvent(long initialTime) { + this.time = initialTime; + } + + public long getTime() { + return this.time; + } + + public void setTime(long value) { + this.time = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/TravelEvent.java b/src/main/java/dev/zprestige/prestige/event/TravelEvent.java new file mode 100644 index 0000000..c29d833 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/TravelEvent.java @@ -0,0 +1,16 @@ +package dev.zprestige.prestige.event; + +import dev.zprestige.prestige.type.EventPhase; + +public class TravelEvent extends Event { + public float yaw; + public float pitch; + public static float savedYaw; + public static float savedPitch; + + public TravelEvent(EventPhase eventPhase, float initialYaw, float initialPitch) { + super(eventPhase); + this.yaw = initialYaw; + this.pitch = initialPitch; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/VelocityUpdateEvent.java b/src/main/java/dev/zprestige/prestige/event/VelocityUpdateEvent.java new file mode 100644 index 0000000..acd8b06 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/VelocityUpdateEvent.java @@ -0,0 +1,37 @@ +package dev.zprestige.prestige.event; + +public final class VelocityUpdateEvent extends Event { + private double velocityX; + private double velocityY; + private double velocityZ; + + public VelocityUpdateEvent(double x, double y, double z) { + this.velocityX = x; + this.velocityY = y; + this.velocityZ = z; + } + + public double getVelocityX() { + return this.velocityX; + } + + public void setVelocityX(double value) { + this.velocityX = value; + } + + public double getVelocityY() { + return this.velocityY; + } + + public void setVelocityY(double value) { + this.velocityY = value; + } + + public double getVelocityZ() { + return this.velocityZ; + } + + public void setVelocityZ(double value) { + this.velocityZ = value; + } +} diff --git a/src/main/java/dev/zprestige/prestige/event/WorldRendererReloadEvent.java b/src/main/java/dev/zprestige/prestige/event/WorldRendererReloadEvent.java new file mode 100644 index 0000000..66f150c --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/event/WorldRendererReloadEvent.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.event; + +public class WorldRendererReloadEvent extends Event { +} diff --git a/src/main/java/dev/zprestige/prestige/gui/ClickGuiScreen.java b/src/main/java/dev/zprestige/prestige/gui/ClickGuiScreen.java index e38e0f3..9ea7211 100644 --- a/src/main/java/dev/zprestige/prestige/gui/ClickGuiScreen.java +++ b/src/main/java/dev/zprestige/prestige/gui/ClickGuiScreen.java @@ -1,32 +1,29 @@ package dev.zprestige.prestige.gui; import dev.zprestige.prestige.Native; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.MinecraftAccess; import net.minecraft.client.gui.Click; import net.minecraft.client.gui.DrawContext; -public class ClickGuiScreen extends BaseScreen implements RenderContract2 { - private boolean a = false; - private boolean b = false; +public class ClickGuiScreen extends BaseScreen implements MinecraftAccess { + private boolean nativeGuiShown = false; + private boolean guiClosed = false; - public void a(Object[] var1) { - this.b = false; + public void resetClosedState() { + this.guiClosed = false; } @Override public void render(DrawContext context, int mouseX, int mouseY, float deltaTicks) { - if (this.a && !Native.j()) { + if (this.nativeGuiShown && !Native.isMenuOpen()) { this.close(); } else { - if (!this.a && !this.b) { - if (!Native.j()) { - Native.i(); + if (!this.nativeGuiShown && !this.guiClosed) { + if (!Native.isMenuOpen()) { + Native.toggleMenu(); } - this.a = true; + this.nativeGuiShown = true; } } } @@ -53,81 +50,12 @@ public class ClickGuiScreen extends BaseScreen implements RenderContract2 { @Override public void close() { - Event.b(); - this.b = true; - this.a = false; - if (Native.j()) { - Native.i(); + this.guiClosed = true; + this.nativeGuiShown = false; + if (Native.isMenuOpen()) { + Native.toggleMenu(); } super.close(); } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/gui/GuiHelper.java b/src/main/java/dev/zprestige/prestige/gui/GuiHelper.java deleted file mode 100644 index 1b7b750..0000000 --- a/src/main/java/dev/zprestige/prestige/gui/GuiHelper.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.zprestige.prestige.gui; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.screen.slot.Slot; - -public class GuiHelper { - private final HandledScreen a; - private static final String c = "focusedSlot"; - - public GuiHelper(HandledScreen var1) { - this.a = var1; - } - - public Slot a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 46992337785370L ^ var2; - long var4 = var2 ^ 133087166982124L; - long var6 = var2 ^ 13752731961882L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, c, HandledScreen.class, Slot.class, var6}); - return (Slot)var8.a(new Object[]{var4}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/gui/HandledScreenAccessor.java b/src/main/java/dev/zprestige/prestige/gui/HandledScreenAccessor.java new file mode 100644 index 0000000..ebe6ff8 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/gui/HandledScreenAccessor.java @@ -0,0 +1,18 @@ +package dev.zprestige.prestige.gui; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.screen.slot.Slot; + +public class HandledScreenAccessor { + private final HandledScreen screen; + private static final String FOCUSED_SLOT_FIELD = "focusedSlot"; + + public HandledScreenAccessor(HandledScreen handledScreen) { + this.screen = handledScreen; + } + + public Slot getFocusedSlot() { + return (Slot)FieldAccessor.bindMapped(this.screen, FOCUSED_SLOT_FIELD, HandledScreen.class, Slot.class).get(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/gui/HudEditorScreen.java b/src/main/java/dev/zprestige/prestige/gui/HudEditorScreen.java index 38575aa..2dd7c3d 100644 --- a/src/main/java/dev/zprestige/prestige/gui/HudEditorScreen.java +++ b/src/main/java/dev/zprestige/prestige/gui/HudEditorScreen.java @@ -1,9 +1,8 @@ package dev.zprestige.prestige.gui; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; import dev.zprestige.prestige.hud.CartHelperElement; import dev.zprestige.prestige.hud.CooldownIndicatorElement; import dev.zprestige.prestige.hud.CrosshairElement; @@ -21,22 +20,19 @@ import dev.zprestige.prestige.hud.TargetElement; import dev.zprestige.prestige.hud.TimeElement; import dev.zprestige.prestige.hud.WatermarkElement; import dev.zprestige.prestige.hud.WebsiteElement; -import dev.zprestige.prestige.math.MathHelper4; +import dev.zprestige.prestige.math.UiMath; import dev.zprestige.prestige.module.visual.HudEditor; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderContract5; -import dev.zprestige.prestige.render.RenderContract6; -import dev.zprestige.prestige.render.RenderHelper21; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; -import dev.zprestige.prestige.type.Axis; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.RenderEvents; +import dev.zprestige.prestige.render.RenderCallback; +import dev.zprestige.prestige.render.SnapGuide; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; +import dev.zprestige.prestige.type.GuideAxis; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import net.minecraft.client.Mouse; import net.minecraft.client.gui.Click; @@ -47,669 +43,350 @@ import org.joml.Vector4f; import org.lwjgl.glfw.GLFW; public class HudEditorScreen extends BaseScreen { - private final HudElement[] a; - private final ArrayList b; - private boolean c; - private float d; - private float e; - private float f; - private float g; - private int h; - private boolean i; - private HudElement j; - private static final int[] k = new int[]{263, 262, 265, 264, 82}; - private final long[] l; - private final boolean[] m; - private float n; - private long o; - private static final float p = 140.0F; - private static final float q = 24.0F; - private static final float r = 20.0F; + private final HudElement[] elements; + private final ArrayList snapLines; + private boolean draggingPanel; + private float panelDragOffsetX; + private float panelDragOffsetY; + private float panelX; + private float panelY; + private int pendingClick; + private boolean defaultPositionsApplied; + private HudElement selectedElement; + private static final int[] EDITOR_KEYS = new int[]{263, 262, 265, 264, 82}; + private final long[] keyRepeatAt; + private final boolean[] keyWasDown; + private float fadeProgress; + private long lastFrameTime; - public static float a(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 31417140128405L ^ var1; - long var3 = var1 ^ 136619947291882L; - return HudEditor.b_float______________(new Object[]{var3}) / 100.0F; + public static float getHudScale() { + return HudEditor.getHudScalePercent() / 100.0F; } - public static float b(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 31417140128405L ^ var1; - long var3 = var1 ^ 86449951420142L; - return 2.0F * a(new Object[]{var3}); + public static float getHudPixelScale() { + return 2.0F * getHudScale(); } - public HudEditorScreen(long var1) { + public HudEditorScreen() { super(); - var1 = 0L; - var1 = 31417140128405L ^ var1; - long var3 = var1 ^ 82258139621509L; - long var5 = var1 ^ 45469756952905L; - long var7 = var1 ^ 62489419464663L; - long var9 = var1 ^ 112858639643060L; - long var11 = var1 ^ 15800096486225L; - long var13 = var1 ^ 88196451292706L; - long var15 = var1 ^ 55164932215004L; - long var17 = var1 ^ 84511101675290L; - long var19 = var1 ^ 116826991623579L; - long var21 = var1 ^ 140392464330147L; - long var23 = var1 ^ 84882787092113L; - long var25 = var1 ^ 13389506241451L; - long var27 = var1 ^ 114328870863646L; - long var29 = var1 ^ 86933154160008L; - long var31 = var1 ^ 69908061708237L; - long var33 = var1 ^ 113259016269802L; - this.a = new HudElement[]{ - new CrosshairElement(var23), - new CooldownIndicatorElement(var13), - new OffscreenArrowElement(var17), - new ModuleNotificationsElement(var25), - new TargetElement(var11), - new FPSElement(var19), - new TPSElement(var7), - new KeybindsElement(var27), - new ModuleListElement(var15), - new LatencyElement(var29), - new TimeElement(var33), - new PotionDisplayElement(var5), - new ResourcesElement(var3), - new CartHelperElement(var9), - new WatermarkElement(var21), - new WebsiteElement(var31) + this.elements = new HudElement[]{ + new CrosshairElement(), + new CooldownIndicatorElement(), + new OffscreenArrowElement(), + new ModuleNotificationsElement(), + new TargetElement(), + new FPSElement(), + new TPSElement(), + new KeybindsElement(), + new ModuleListElement(), + new LatencyElement(), + new TimeElement(), + new PotionDisplayElement(), + new ResourcesElement(), + new CartHelperElement(), + new WatermarkElement(), + new WebsiteElement() }; - this.b = new ArrayList(); - this.c = false; - this.d = 0.0F; - this.e = 0.0F; - this.f = -1.0F; - this.g = -1.0F; - this.h = 0; - this.i = false; - this.j = null; - this.l = new long[k.length]; - this.m = new boolean[k.length]; - this.n = 0.0F; - this.o = System.currentTimeMillis(); - RenderContract5.a.register((RenderContract6)(lpL399_0, lpL399_1) -> { - if (RenderContract2.b.currentScreen == this) { - Mouse var10 = RenderContract2.b.mouse; - int var10003 = (int)Math.round(var10.getX() / RenderContract2.b.getWindow().getScaleFactor()); - int var10004 = (int)Math.round(var10.getY() / RenderContract2.b.getWindow().getScaleFactor()); - float var10005 = MatrixStack.a_float_______________(new Object[]{601921721859L}); - Object[] var10008 = new Object[]{null, null, null, null, null, 91519599449274L}; - var10008[4] = var10005; - var10008[3] = var10004; - var10008[2] = var10003; - var10008[1] = ((dev.zprestige.prestige.data.MatrixCameraData)lpL399_1); - var10008[0] = ((dev.zprestige.prestige.render.RenderHelper8)lpL399_0); - this.a_void______(var10008); + this.snapLines = new ArrayList(); + this.draggingPanel = false; + this.panelDragOffsetX = 0.0F; + this.panelDragOffsetY = 0.0F; + this.panelX = -1.0F; + this.panelY = -1.0F; + this.pendingClick = 0; + this.defaultPositionsApplied = false; + this.selectedElement = null; + this.keyRepeatAt = new long[EDITOR_KEYS.length]; + this.keyWasDown = new boolean[EDITOR_KEYS.length]; + this.fadeProgress = 0.0F; + this.lastFrameTime = System.currentTimeMillis(); + RenderEvents.HUD_RENDER.register((RenderCallback)(renderBatch, renderMatrices) -> { + if (MinecraftAccess.mc.currentScreen == this) { + Mouse mouse = MinecraftAccess.mc.mouse; + this.renderEditor(renderBatch, renderMatrices, (int)Math.round(mouse.getX() / MinecraftAccess.mc.getWindow().getScaleFactor()), (int)Math.round(mouse.getY() / MinecraftAccess.mc.getWindow().getScaleFactor()), Render2D.getTickDelta()); } }); } @Override public void init() { - Event.b(); super.init(); - if (this.f == -1.0F && this.g == -1.0F) { - float var8 = RenderContract2.b.getWindow().getFramebufferWidth() / b(new Object[]{99410855139333L}); - float var9 = RenderContract2.b.getWindow().getFramebufferHeight() / b(new Object[]{99410855139333L}); - this.f = var8 / 2.0F - 70.0F; - this.g = var9 / 2.0F - this.c(new Object[0]) / 2.0F; + if (this.panelX == -1.0F && this.panelY == -1.0F) { + float screenWidth = MinecraftAccess.mc.getWindow().getFramebufferWidth() / getHudPixelScale(); + float screenHeight = MinecraftAccess.mc.getWindow().getFramebufferHeight() / getHudPixelScale(); + this.panelX = screenWidth / 2.0F - 70.0F; + this.panelY = screenHeight / 2.0F - this.getPanelHeight() / 2.0F; } - if (!this.i) { - for (HudElement var11 : this.a) { - var11.m(new Object[]{69450933719321L}); + if (!this.defaultPositionsApplied) { + for (HudElement element : this.elements) { + element.resetPosition(); } - this.i = true; + this.defaultPositionsApplied = true; } - if (RenderContract2.b.getWindow() != null) { - long var13 = RenderContract2.b.getWindow().getHandle(); + if (MinecraftAccess.mc.getWindow() != null) { + long windowHandle = MinecraftAccess.mc.getWindow().getHandle(); - for (int var15 = 0; var15 < k.length; var15++) { - this.m[var15] = GLFW.glfwGetKey(var13, k[var15]) == 1; - this.l[var15] = Long.MAX_VALUE; + for (int i = 0; i < EDITOR_KEYS.length; i++) { + this.keyWasDown[i] = GLFW.glfwGetKey(windowHandle, EDITOR_KEYS[i]) == 1; + this.keyRepeatAt[i] = Long.MAX_VALUE; } } - this.j = null; - this.n = 0.0F; - this.o = System.currentTimeMillis(); + this.selectedElement = null; + this.fadeProgress = 0.0F; + this.lastFrameTime = System.currentTimeMillis(); } @Override public void render(DrawContext context, int mouseX, int mouseY, float deltaTicks) { } - public void a_void______(Object[] var1) { - RenderHelper8 var2 = (RenderHelper8)var1[0]; - MatrixCameraData var7 = (MatrixCameraData)var1[1]; - int var5 = (Integer)var1[2]; - int var8 = (Integer)var1[3]; - long var3 = (Long)var1[5]; - var3 = 31417140128405L ^ var3; - long var9 = var3 ^ 23947311064618L; - long var11 = var3 ^ 35207067994649L; - long var13 = var3 ^ 123126351294285L; - long var15 = var3 ^ 96751337190027L; - long var17 = var3 ^ 137940707372054L; - long var19 = var3 ^ 87009244325932L; - long var21 = var3 ^ 9256271514585L; - long var23 = var3 ^ 90680546219022L; - long var25 = var3 ^ 118761745651847L; - long var27 = var3 ^ 21657020793807L; - long var29 = var3 ^ 22429669519231L; - long var31 = var3 ^ 71715086263030L; - long var33 = var3 ^ 19745812531703L; - long var35 = var3 ^ 110128994658108L; - long var37 = var3 ^ 66208582980034L; - long var39 = var3 ^ 86525055912814L; - long var41 = var3 ^ 73003193376672L; - long var43 = var3 ^ 121627841972431L; - MatrixStack.g = var2; - MatrixStack.h = var7; - float var46 = RenderContract2.b.getWindow().getScaleFactor(); - float var47 = b(new Object[]{var9}) / var46; - Event.b(); - float var48 = RenderContract2.b.getWindow().getFramebufferWidth() / b(new Object[]{var9}); - float var49 = RenderContract2.b.getWindow().getFramebufferHeight() / b(new Object[]{var9}); - float var50 = var5 * var46 / b(new Object[]{var9}); - float var51 = var8 * var46 / b(new Object[]{var9}); - if (this.f == -1.0F && this.g == -1.0F) { - this.f = var48 / 2.0F - 70.0F; - this.g = var49 / 2.0F - this.c(new Object[0]) / 2.0F; + public void renderEditor(BufferSource batch, CameraMatrices matrices, int mouseX, int mouseY, float tickDelta) { + Render2D.currentBuffers = batch; + Render2D.currentContext = matrices; + float guiScale = MinecraftAccess.mc.getWindow().getScaleFactor(); + float renderScale = getHudPixelScale() / guiScale; + float screenWidth = MinecraftAccess.mc.getWindow().getFramebufferWidth() / getHudPixelScale(); + float screenHeight = MinecraftAccess.mc.getWindow().getFramebufferHeight() / getHudPixelScale(); + float hudMouseX = mouseX * guiScale / getHudPixelScale(); + float hudMouseY = mouseY * guiScale / getHudPixelScale(); + if (this.panelX == -1.0F && this.panelY == -1.0F) { + this.panelX = screenWidth / 2.0F - 70.0F; + this.panelY = screenHeight / 2.0F - this.getPanelHeight() / 2.0F; } - float var52 = (float)(System.currentTimeMillis() - this.o) * 0.005F; - this.o = System.currentTimeMillis(); - float var10001 = this.n; - Object[] var10006 = new Object[]{null, null, null, var37}; - var10006[2] = var52; - var10006[1] = 1.0F; - var10006[0] = var10001; - this.n = MathHelper4.b_float______(var10006); - if (this.c) { - var10001 = this.f; - float var10002 = var50 + this.d; - float var10003 = MatrixStack.a_float_______________(new Object[]{var19}) / 10.0F; - var10006 = new Object[]{null, null, null, var37}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - this.f = MathHelper4.b_float______(var10006); - var10001 = this.g; - var10002 = var51 + this.e; - var10003 = MatrixStack.a_float_______________(new Object[]{var19}) / 10.0F; - var10006 = new Object[]{null, null, null, var37}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - this.g = MathHelper4.b_float______(var10006); + float fadeStep = (float)(System.currentTimeMillis() - this.lastFrameTime) * 0.005F; + this.lastFrameTime = System.currentTimeMillis(); + this.fadeProgress = UiMath.approach(this.fadeProgress, 1.0F, fadeStep); + if (this.draggingPanel) { + this.panelX = UiMath.approach(this.panelX, hudMouseX + this.panelDragOffsetX, Render2D.getTickDelta() / 10.0F); + this.panelY = UiMath.approach(this.panelY, hudMouseY + this.panelDragOffsetY, Render2D.getTickDelta() / 10.0F); } - this.b.clear(); - this.b.add(new RenderHelper21(Axis.Y, 3)); - this.b.add(new RenderHelper21(Axis.X, 2)); - this.b.add(new RenderHelper21(Axis.Y, (int)(var49 - 3.0F))); - this.b.add(new RenderHelper21(Axis.X, (int)(var48 - 3.0F))); - this.b.add(new RenderHelper21(Axis.X, (int)(var48 / 2.0F))); - this.b.add(new RenderHelper21(Axis.Y, (int)(var49 / 2.0F))); + this.snapLines.clear(); + this.snapLines.add(new SnapGuide(GuideAxis.Y, 3)); + this.snapLines.add(new SnapGuide(GuideAxis.X, 2)); + this.snapLines.add(new SnapGuide(GuideAxis.Y, (int)(screenHeight - 3.0F))); + this.snapLines.add(new SnapGuide(GuideAxis.X, (int)(screenWidth - 3.0F))); + this.snapLines.add(new SnapGuide(GuideAxis.X, (int)(screenWidth / 2.0F))); + this.snapLines.add(new SnapGuide(GuideAxis.Y, (int)(screenHeight / 2.0F))); - for (HudElement var56 : this.a) { - if (var56.e_boolean(new Object[]{var41}) && !var56.a_boolean_____(new Object[0])) { - var56.e_void(new Object[]{var33}); + for (HudElement element : this.elements) { + if (element.isEnabled() && !element.isDragging()) { + element.resolvePosition(); } } - for (HudElement var91 : this.a) { - if (var91.e_boolean(new Object[]{var41}) && !var91.a_boolean_____(new Object[0]) && !(var91.g <= 0.0F)) { - this.b.add(new RenderHelper21(Axis.X, (int)var91.e)); - this.b.add(new RenderHelper21(Axis.X, (int)(var91.e + var91.g))); - this.b.add(new RenderHelper21(Axis.X, (int)(var91.e + var91.g / 2.0F))); - this.b.add(new RenderHelper21(Axis.Y, (int)var91.f)); - this.b.add(new RenderHelper21(Axis.Y, (int)(var91.f + var91.h))); - this.b.add(new RenderHelper21(Axis.Y, (int)(var91.f + var91.h / 2.0F))); + for (HudElement guideElement : this.elements) { + if (guideElement.isEnabled() && !guideElement.isDragging() && !(guideElement.width <= 0.0F)) { + this.snapLines.add(new SnapGuide(GuideAxis.X, (int)guideElement.x)); + this.snapLines.add(new SnapGuide(GuideAxis.X, (int)(guideElement.x + guideElement.width))); + this.snapLines.add(new SnapGuide(GuideAxis.X, (int)(guideElement.x + guideElement.width / 2.0F))); + this.snapLines.add(new SnapGuide(GuideAxis.Y, (int)guideElement.y)); + this.snapLines.add(new SnapGuide(GuideAxis.Y, (int)(guideElement.y + guideElement.height))); + this.snapLines.add(new SnapGuide(GuideAxis.Y, (int)(guideElement.y + guideElement.height / 2.0F))); } } - this.b_void(new Object[]{var25}); - Matrix4f var86 = new Matrix4f().scale(var47, var47, 1.0F); - float var88 = this.c(new Object[0]); - Color var90 = MathHelper4.d(new Object[]{var11}); - float var92 = Prestige.c.a(new Object[]{var39}).c_float___(new Object[]{var21}); - Object[] var10008 = new Object[]{null, null, null, null, null, new Color(0, 0, 0, (int)(70.0F * this.n)), var27}; - var10008[4] = var49; - var10008[3] = var48; - var10008[2] = 0.0F; - var10008[1] = 0.0F; - var10008[0] = var86; - MatrixStack.r(var10008); - Color var58 = new Color(255, 255, 255, (int)(6.0F * this.n)); + this.handleEditorKeys(); + Matrix4f matrix = new Matrix4f().scale(renderScale, renderScale, 1.0F); + float panelHeight = this.getPanelHeight(); + Color accentColor = UiMath.getAccentColor(); + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + Render2D.drawRect(matrix, 0.0F, 0.0F, screenWidth, screenHeight, new Color(0, 0, 0, (int)(70.0F * this.fadeProgress))); + Color gridColor = new Color(255, 255, 255, (int)(6.0F * this.fadeProgress)); - for (float var59 = 20.0F; var59 < var48; var59 += 20.0F) { - var10001 = var59 - 0.25F; - float var131 = var59 + 0.25F; - var10008 = new Object[]{null, null, null, null, null, var58, var27}; - var10008[4] = var49; - var10008[3] = var131; - var10008[2] = 0.0F; - var10008[1] = var10001; - var10008[0] = var86; - MatrixStack.r(var10008); + for (float gridX = 20.0F; gridX < screenWidth; gridX += 20.0F) { + Render2D.drawRect(matrix, gridX - 0.25F, 0.0F, gridX + 0.25F, screenHeight, gridColor); } - for (float var93 = 20.0F; var93 < var49; var93 += 20.0F) { - float var126 = var93 - 0.25F; - float var10004 = var93 + 0.25F; - var10008 = new Object[]{null, null, null, null, null, var58, var27}; - var10008[4] = var10004; - var10008[3] = var48; - var10008[2] = var126; - var10008[1] = 0.0F; - var10008[0] = var86; - MatrixStack.r(var10008); + for (float gridY = 20.0F; gridY < screenHeight; gridY += 20.0F) { + Render2D.drawRect(matrix, 0.0F, gridY - 0.25F, screenWidth, gridY + 0.25F, gridColor); } - Color var94 = new Color(var90.getRed(), var90.getGreen(), var90.getBlue(), (int)(30.0F * this.n)); - short var10000 = 27662; - float var127 = var48 / 2.0F - 0.25F; - float var139 = var48 / 2.0F + 0.25F; - Object[] var10009 = new Object[]{null, null, null, null, null, var94, var27}; - var10009[4] = var49; - var10009[3] = var139; - var10009[2] = 0.0F; - var10009[1] = var127; - var10009[0] = var86; - MatrixStack.r(var10009); - long var123 = 1003592114613291339L ^ var3; - var139 = var49 / 2.0F - 0.25F; - float var155 = var49 / 2.0F + 0.25F; - Object[] var10010 = new Object[]{null, null, null, null, null, var94, var27}; - var10010[4] = var155; - var10010[3] = var48; - var10010[2] = var139; - var10010[1] = 0.0F; - var10010[0] = var86; - MatrixStack.r(var10010); - float var10005 = var48 - 3.0F; - float var156 = var49 - 3.0F; - Color var10007 = new Color(255, 255, 255, (int)(14.0F * this.n)); - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, var15}; - var10011[6] = 0.0F; - var10011[5] = var10007; - var10011[4] = var156; - var10011[3] = var10005; - var10011[2] = 3.0F; - var10011[1] = 2.0F; - var10011[0] = var86; - MatrixStack.l(var10011); - var10005 = this.f; - float var157 = this.g; - Object[] var10013 = new Object[]{null, null, null, null, null, null, null, null, null, var13}; - var10013[8] = 4.0F; - var10013[7] = 5; - var10013[6] = var88; - var10013[5] = 140.0F; - var10013[4] = var157; - var10013[3] = var10005; - var10013[2] = var86; - var10013[1] = var7; - var10013[0] = var2; - RenderTarget.e(var10013); - var10005 = this.f; - float var158 = this.g; - Color var173 = new Color(NameTagsUtil.r.getRed(), NameTagsUtil.r.getGreen(), NameTagsUtil.r.getBlue(), (int)(NameTagsUtil.r.getAlpha() * this.n)); - var10013 = new Object[]{null, null, null, null, null, null, null, null, null, var31}; - var10013[8] = 4.0F; - var10013[7] = var173; - var10013[6] = var88; - var10013[5] = 140.0F; - var10013[4] = var158; - var10013[3] = var10005; - var10013[2] = var86; - var10013[1] = var7; - var10013[0] = var2; - RoundedPosColorShader.c(var10013); - float var132 = this.f; - var139 = this.g; - var10005 = this.f + 140.0F; - float var159 = this.g + 24.0F; - var10011 = new Object[]{null, null, null, null, null, new Color(24, 24, 30, (int)(235.0F * this.n)), new Vector4f(4.0F, 4.0F, 0.0F, 0.0F), var23}; - var10011[4] = var159; - var10011[3] = var10005; - var10011[2] = var139; - var10011[1] = var132; - var10011[0] = var86; - RenderState.u(var10011); - float var60 = (float)(Math.sin(System.currentTimeMillis() / 600.0) * 0.5 + 0.5); - float var61 = 1.0F; - var132 = this.f + 4.0F; - var139 = this.g + 24.0F - var61; - var10005 = this.f + 140.0F - 4.0F; - float var160 = this.g + 24.0F; - var10010 = new Object[]{ - null, null, null, null, null, new Color(var90.getRed(), var90.getGreen(), var90.getBlue(), (int)((150.0F + 90.0F * var60) * this.n)), var27 - }; - var10010[4] = var160; - var10010[3] = var10005; - var10010[2] = var139; - var10010[1] = var132; - var10010[0] = var86; - MatrixStack.r(var10010); - var132 = this.f; - var139 = this.g; - var10005 = this.f + 140.0F; - float var161 = this.g + var88; - var10007 = new Color(var90.getRed(), var90.getGreen(), var90.getBlue(), (int)(70.0F * this.n)); - var10011 = new Object[]{null, null, null, null, null, null, null, var15}; - var10011[6] = 4.0F; - var10011[5] = var10007; - var10011[4] = var161; - var10011[3] = var10005; - var10011[2] = var139; - var10011[1] = var132; - var10011[0] = var86; - MatrixStack.l(var10011); - String var62 = "HUD Editor"; - float var63 = Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var62, var35}); - Font var116 = Prestige.c.a(new Object[]{var39}); - var132 = this.f + 70.0F - var63 / 2.0F; - var139 = this.g + 12.0F - var92 / 2.0F; - var10008 = new Object[]{null, null, null, null, new Color(255, 255, 255, (int)(255.0F * this.n)), var43}; - var10008[3] = var139; - var10008[2] = var132; - var10008[1] = var62; - var10008[0] = var86; - var116.v(var10008); - int var64 = 0; + Color centerLineColor = new Color(accentColor.getRed(), accentColor.getGreen(), accentColor.getBlue(), (int)(30.0F * this.fadeProgress)); + Render2D.drawRect(matrix, screenWidth / 2.0F - 0.25F, 0.0F, screenWidth / 2.0F + 0.25F, screenHeight, centerLineColor); + Render2D.drawRect(matrix, 0.0F, screenHeight / 2.0F - 0.25F, screenWidth, screenHeight / 2.0F + 0.25F, centerLineColor); + Render2D.drawRoundedRectOutline(matrix, 2.0F, 3.0F, screenWidth - 3.0F, screenHeight - 3.0F, new Color(255, 255, 255, (int)(14.0F * this.fadeProgress)), 0.0F); + BlurredRoundedRectShader.drawBlurredRect(batch, matrices, matrix, this.panelX, this.panelY, 140.0F, panelHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, matrices, matrix, this.panelX, this.panelY, 140.0F, panelHeight, new Color(HudStyle.BACKGROUND_COLOR.getRed(), HudStyle.BACKGROUND_COLOR.getGreen(), HudStyle.BACKGROUND_COLOR.getBlue(), (int)(HudStyle.BACKGROUND_COLOR.getAlpha() * this.fadeProgress)), 4.0F); + ShapeRenderer.drawRoundedRect(matrix, this.panelX, this.panelY, this.panelX + 140.0F, this.panelY + 24.0F, new Color(24, 24, 30, (int)(235.0F * this.fadeProgress)), new Vector4f(4.0F, 4.0F, 0.0F, 0.0F)); + float pulse = (float)(Math.sin(System.currentTimeMillis() / 600.0) * 0.5 + 0.5); + Render2D.drawRect(matrix, this.panelX + 4.0F, this.panelY + 24.0F - 1.0F, this.panelX + 140.0F - 4.0F, this.panelY + 24.0F, new Color(accentColor.getRed(), accentColor.getGreen(), accentColor.getBlue(), (int)((150.0F + 90.0F * pulse) * this.fadeProgress))); + Render2D.drawRoundedRectOutline(matrix, this.panelX, this.panelY, this.panelX + 140.0F, this.panelY + panelHeight, new Color(accentColor.getRed(), accentColor.getGreen(), accentColor.getBlue(), (int)(70.0F * this.fadeProgress)), 4.0F); + String headerText = "HUD Editor"; + float headerWidth = Prestige.fontManager.getDefaultFont().getTextWidth(headerText); + Prestige.fontManager.getDefaultFont().drawText(matrix, headerText, this.panelX + 70.0F - headerWidth / 2.0F, this.panelY + 12.0F - fontHeight / 2.0F, new Color(255, 255, 255, (int)(255.0F * this.fadeProgress))); + int enabledCount = 0; - for (HudElement var68 : this.a) { - if (var68.e_boolean(new Object[]{var41})) { - var64++; + for (HudElement countedElement : this.elements) { + if (countedElement.isEnabled()) { + enabledCount++; } } - String var95 = var64 + "/" + this.a.length; - float var96 = Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var95, var35}); - Font var117 = Prestige.c.a(new Object[]{var39}); - var132 = this.f + 140.0F - 5.5F - var96; - var139 = this.g + 12.0F - var92 / 2.0F; - var10008 = new Object[]{ - null, - null, - null, - null, - new Color(NameTagsUtil.u.getRed(), NameTagsUtil.u.getGreen(), NameTagsUtil.u.getBlue(), (int)(NameTagsUtil.u.getAlpha() * this.n)), - var43 - }; - var10008[3] = var139; - var10008[2] = var132; - var10008[1] = var95; - var10008[0] = var86; - var117.v(var10008); - float var97 = this.f + 5.5F; - float var98 = this.g + 24.0F + 3.0F; + String countText = enabledCount + "/" + this.elements.length; + float countWidth = Prestige.fontManager.getDefaultFont().getTextWidth(countText); + Prestige.fontManager.getDefaultFont().drawText(matrix, countText, this.panelX + 140.0F - 5.5F - countWidth, this.panelY + 12.0F - fontHeight / 2.0F, new Color(HudStyle.MUTED_TEXT_COLOR.getRed(), HudStyle.MUTED_TEXT_COLOR.getGreen(), HudStyle.MUTED_TEXT_COLOR.getBlue(), (int)(HudStyle.MUTED_TEXT_COLOR.getAlpha() * this.fadeProgress))); + float rowX = this.panelX + 5.5F; + float rowY = this.panelY + 24.0F + 3.0F; - for (HudElement var72 : this.a) { - int var162 = (int)var50; - int var164 = (int)var51; - int var170 = this.h; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, this.b, var29}; - var10012[7] = var170; - var10012[6] = var164; - var10012[5] = var162; - var10012[4] = 17.0F; - var10012[3] = 129.0F; - var10012[2] = var98; - var10012[1] = var97; - var10012[0] = var86; - var72.n(var10012); - var98 += 20.0F; + for (HudElement listElement : this.elements) { + listElement.renderEditorRow(matrix, rowX, rowY, 129.0F, 17.0F, (int)hudMouseX, (int)hudMouseY, this.pendingClick, this.snapLines); + rowY += 20.0F; } - for (HudElement var105 : this.a) { - if (var105.e_boolean(new Object[]{var41})) { - var105.q(new Object[]{var86, var17}); + for (HudElement outlinedElement : this.elements) { + if (outlinedElement.isEnabled()) { + outlinedElement.renderEditorOutline(matrix); } } - if (this.j != null && this.j.e_boolean(new Object[]{var41})) { - var10001 = this.j.e - 1.5F; - var127 = this.j.f - 1.5F; - var132 = this.j.e + this.j.g + 1.5F; - var139 = this.j.f + this.j.h + 1.5F; - Color var152 = new Color(var90.getRed(), var90.getGreen(), var90.getBlue(), (int)(200.0F * this.n)); - var10009 = new Object[]{null, null, null, null, null, null, null, var15}; - var10009[6] = 0.0F; - var10009[5] = var152; - var10009[4] = var139; - var10009[3] = var132; - var10009[2] = var127; - var10009[1] = var10001; - var10009[0] = var86; - MatrixStack.l(var10009); + if (this.selectedElement != null && this.selectedElement.isEnabled()) { + Render2D.drawRoundedRectOutline(matrix, this.selectedElement.x - 1.5F, this.selectedElement.y - 1.5F, this.selectedElement.x + this.selectedElement.width + 1.5F, this.selectedElement.y + this.selectedElement.height + 1.5F, new Color(accentColor.getRed(), accentColor.getGreen(), accentColor.getBlue(), (int)(200.0F * this.fadeProgress)), 0.0F); } - String[][] var100 = new String[][]{ + String[][] hints = new String[][]{ {"Click", "toggle"}, {"Drag", "move"}, {"Shift", "free move / big nudge"}, {"Arrows", "nudge"}, {"R", "reset layout"} }; - String var102 = " "; - float var104 = Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var102, var35}); - float var106 = var104 * (var100.length - 1); + String hintSeparator = " "; + float separatorWidth = Prestige.fontManager.getDefaultFont().getTextWidth(hintSeparator); + float hintsWidth = separatorWidth * (hints.length - 1); - for (String[] var76 : var100) { - var106 += Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var76[0], var35}) - + Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{" = " + var76[1], var35}); + for (String[] hint : hints) { + hintsWidth += Prestige.fontManager.getDefaultFont().getTextWidth(hint[0]) + + Prestige.fontManager.getDefaultFont().getTextWidth(" = " + hint[1]); } - if (var106 + 16.0F > var48 - 8.0F) { - var100 = new String[][]{{"Drag", "move"}, {"Arrows", "nudge"}, {"R", "reset"}}; - var106 = var104 * (var100.length - 1); + if (hintsWidth + 16.0F > screenWidth - 8.0F) { + hints = new String[][]{{"Drag", "move"}, {"Arrows", "nudge"}, {"R", "reset"}}; + hintsWidth = separatorWidth * (hints.length - 1); - for (String[] var113 : var100) { - var106 += Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var113[0], var35}) - + Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{" = " + var113[1], var35}); + for (String[] compactHint : hints) { + hintsWidth += Prestige.fontManager.getDefaultFont().getTextWidth(compactHint[0]) + + Prestige.fontManager.getDefaultFont().getTextWidth(" = " + compactHint[1]); } } - float var108 = 8.0F; - Object[] var138 = new Object[]{null, 1.0F}; - var138[0] = var92; - float var110 = NameTagsUtil.a(var138); - float var112 = var106 + var108 * 2.0F; - float var114 = Math.max(4.0F, var48 / 2.0F - var112 / 2.0F); - float var77 = var49 - var110 - 8.0F; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var13}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var110; - var10011[5] = var112; - var10011[4] = var77; - var10011[3] = var114; - var10011[2] = var86; - var10011[1] = var7; - var10011[0] = var2; - RenderTarget.e(var10011); - var10007 = new Color(NameTagsUtil.r.getRed(), NameTagsUtil.r.getGreen(), NameTagsUtil.r.getBlue(), (int)(NameTagsUtil.r.getAlpha() * this.n)); - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var31}; - var10011[8] = 4.0F; - var10011[7] = var10007; - var10011[6] = var110; - var10011[5] = var112; - var10011[4] = var77; - var10011[3] = var114; - var10011[2] = var86; - var10011[1] = var7; - var10011[0] = var2; - RoundedPosColorShader.c(var10011); - Color var78 = new Color(var90.getRed(), var90.getGreen(), var90.getBlue(), (int)(255.0F * this.n)); - Color var79 = new Color(NameTagsUtil.t.getRed(), NameTagsUtil.t.getGreen(), NameTagsUtil.t.getBlue(), (int)(230.0F * this.n)); - float var80 = var114 + var108; - float var81 = var77 + (var110 - var92) / 2.0F; + float hintPadding = 8.0F; + float hintBarHeight = HudStyle.getRowHeight(fontHeight, 1.0F); + float hintBarWidth = hintsWidth + hintPadding * 2.0F; + float hintBarX = Math.max(4.0F, screenWidth / 2.0F - hintBarWidth / 2.0F); + float hintBarY = screenHeight - hintBarHeight - 8.0F; + BlurredRoundedRectShader.drawBlurredRect(batch, matrices, matrix, hintBarX, hintBarY, hintBarWidth, hintBarHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, matrices, matrix, hintBarX, hintBarY, hintBarWidth, hintBarHeight, new Color(HudStyle.BACKGROUND_COLOR.getRed(), HudStyle.BACKGROUND_COLOR.getGreen(), HudStyle.BACKGROUND_COLOR.getBlue(), (int)(HudStyle.BACKGROUND_COLOR.getAlpha() * this.fadeProgress)), 4.0F); + Color hintKeyColor = new Color(accentColor.getRed(), accentColor.getGreen(), accentColor.getBlue(), (int)(255.0F * this.fadeProgress)); + Color hintTextColor = new Color(HudStyle.SECONDARY_TEXT_COLOR.getRed(), HudStyle.SECONDARY_TEXT_COLOR.getGreen(), HudStyle.SECONDARY_TEXT_COLOR.getBlue(), (int)(230.0F * this.fadeProgress)); + float hintX = hintBarX + hintPadding; + float hintY = hintBarY + (hintBarHeight - fontHeight) / 2.0F; - for (int var82 = 0; var82 < var100.length; var82++) { - Font var118 = Prestige.c.a(new Object[]{var39}); - String var129 = var100[var82][0]; - var10008 = new Object[]{null, null, null, null, var78, var43}; - var10008[3] = var81; - var10008[2] = var80; - var10008[1] = var129; - var10008[0] = var86; - var118.v(var10008); - var80 += Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var100[var82][0], var35}); - String var83 = " = " + var100[var82][1]; - Font var119 = Prestige.c.a(new Object[]{var39}); - var10008 = new Object[]{null, null, null, null, var79, var43}; - var10008[3] = var81; - var10008[2] = var80; - var10008[1] = var83; - var10008[0] = var86; - var119.v(var10008); - var80 += Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var83, var35}); - if (var82 < var100.length - 1) { - var80 += var104; + for (int hintIndex = 0; hintIndex < hints.length; hintIndex++) { + Prestige.fontManager.getDefaultFont().drawText(matrix, hints[hintIndex][0], hintX, hintY, hintKeyColor); + hintX += Prestige.fontManager.getDefaultFont().getTextWidth(hints[hintIndex][0]); + String hintDescription = " = " + hints[hintIndex][1]; + Prestige.fontManager.getDefaultFont().drawText(matrix, hintDescription, hintX, hintY, hintTextColor); + hintX += Prestige.fontManager.getDefaultFont().getTextWidth(hintDescription); + if (hintIndex < hints.length - 1) { + hintX += separatorWidth; } } - this.h = 0; + this.pendingClick = 0; } - private float c(Object[] var1) { - return 24.0F + this.a.length * 20.0F + 6.0F; + private float getPanelHeight() { + return 24.0F + this.elements.length * 20.0F + 6.0F; } - private void b_void(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 31417140128405L ^ var2; - long var4 = var2 ^ 62807894497494L; - long var6 = var2 ^ 56027340549554L; - long var8 = var2 ^ 111554402923866L; - Event.b(); - long var11 = RenderContract2.b.getWindow().getHandle(); - long var13 = System.currentTimeMillis(); - boolean var15 = GLFW.glfwGetKey(var11, 340) == 1 || GLFW.glfwGetKey(var11, 344) == 1; + private void handleEditorKeys() { + long windowHandle = MinecraftAccess.mc.getWindow().getHandle(); + long now = System.currentTimeMillis(); + boolean shiftDown = GLFW.glfwGetKey(windowHandle, 340) == 1 || GLFW.glfwGetKey(windowHandle, 344) == 1; - for (int var16 = 0; var16 < k.length; var16++) { - int var17 = k[var16]; - boolean var18 = GLFW.glfwGetKey(var11, var17) == 1; - boolean var19 = var18 && !this.m[var16]; - boolean var20 = false; - if (var19) { - var20 = true; - this.l[var16] = var13 + 300L; - } else if (var18 && var13 >= this.l[var16]) { - var20 = true; - this.l[var16] = var13 + 45L; + for (int i = 0; i < EDITOR_KEYS.length; i++) { + int key = EDITOR_KEYS[i]; + boolean down = GLFW.glfwGetKey(windowHandle, key) == 1; + boolean justPressed = down && !this.keyWasDown[i]; + boolean triggered = false; + if (justPressed) { + triggered = true; + this.keyRepeatAt[i] = now + 300L; + } else if (down && now >= this.keyRepeatAt[i]) { + triggered = true; + this.keyRepeatAt[i] = now + 45L; } - this.m[var16] = var18; - if (var20) { - if (var17 == 82) { - if (var19) { - this.c_void(new Object[]{var4}); + this.keyWasDown[i] = down; + if (triggered) { + if (key == 82) { + if (justPressed) { + this.resetLayout(); } - } else if (this.j != null && this.j.e_boolean(new Object[]{var6})) { - float var21 = var15 ? 10.0F : 1.0F; - switch (var17) { + } else if (this.selectedElement != null && this.selectedElement.isEnabled()) { + float step = shiftDown ? 10.0F : 1.0F; + switch (key) { case 262: - HudElement var25 = this.j; - Object[] var28 = new Object[]{null, null, var8}; - var28[1] = 0.0F; - var28[0] = var21; - var25.h(var28); + this.selectedElement.nudge(step, 0.0F); break; case 263: - HudElement var24 = this.j; - float var10001 = -var21; - Object[] var27 = new Object[]{null, null, var8}; - var27[1] = 0.0F; - var27[0] = var10001; - var24.h(var27); + this.selectedElement.nudge(-step, 0.0F); break; case 264: - HudElement var23 = this.j; - Object[] var26 = new Object[]{null, null, var8}; - var26[1] = var21; - var26[0] = 0.0F; - var23.h(var26); + this.selectedElement.nudge(0.0F, step); break; case 265: - HudElement var10000 = this.j; - float var10002 = -var21; - Object[] var10005 = new Object[]{null, null, var8}; - var10005[1] = var10002; - var10005[0] = 0.0F; - var10000.h(var10005); + this.selectedElement.nudge(0.0F, -step); } } } } } - private void c_void(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 31417140128405L ^ var2; - long var4 = var2 ^ 41338085240679L; - Event.b(); - - for (HudElement var10 : this.a) { - var10.m(new Object[]{var4}); + private void resetLayout() { + for (HudElement element : this.elements) { + element.resetPosition(); } - this.j = null; + this.selectedElement = null; } @Override public boolean mouseClicked(Click click, boolean doubled) { - double var14 = click.x(); - Event.b(); - double var16 = click.y(); - int var18 = click.button(); - if (this.f == -1.0F && this.g == -1.0F) { + double rawX = click.x(); + double rawY = click.y(); + int button = click.button(); + if (this.panelX == -1.0F && this.panelY == -1.0F) { this.init(); } - double var19 = RenderContract2.b.getWindow().getScaleFactor(); - double var21 = var14 * var19 / b(new Object[]{99410855139333L}); - double var23 = var16 * var19 / b(new Object[]{99410855139333L}); - if (var18 == 0) { - int var10001 = (int)var21; - int var10002 = (int)var23; - Object[] var10005 = new Object[]{null, null, 57321394020433L}; - var10005[1] = var10002; - var10005[0] = var10001; - if (this.a_boolean____(var10005)) { - this.d = (float)(this.f - var21); - this.e = (float)(this.g - var23); - this.c = true; + double guiScale = MinecraftAccess.mc.getWindow().getScaleFactor(); + double hudX = rawX * guiScale / getHudPixelScale(); + double hudY = rawY * guiScale / getHudPixelScale(); + if (button == 0) { + if (this.isOverPanelHeader((int)hudX, (int)hudY)) { + this.panelDragOffsetX = (float)(this.panelX - hudX); + this.panelDragOffsetY = (float)(this.panelY - hudY); + this.draggingPanel = true; } - boolean var25 = var21 >= this.f && var21 <= this.f + 140.0F && var23 >= this.g && var23 <= this.g + this.c(new Object[0]); - if (!var25) { - for (HudElement var29 : this.a) { - if (var29.e_boolean(new Object[]{15166320517519L})) { - var10001 = (int)var21; - var10002 = (int)var23; - Object[] var10006 = new Object[]{null, null, null, 45913355491120L}; - var10006[2] = false; - var10006[1] = var10002; - var10006[0] = var10001; - var29.o(var10006); + if (!(hudX >= this.panelX && hudX <= this.panelX + 140.0F && hudY >= this.panelY && hudY <= this.panelY + this.getPanelHeight())) { + for (HudElement element : this.elements) { + if (element.isEnabled()) { + element.handleEditorMouse((int)hudX, (int)hudY, false); } } - for (HudElement var33 : this.a) { - if (var33.e_boolean(new Object[]{15166320517519L}) && var33.a_boolean_____(new Object[0])) { - this.j = var33; + for (HudElement candidate : this.elements) { + if (candidate.isEnabled() && candidate.isDragging()) { + this.selectedElement = candidate; } } } - this.h = 1; + this.pendingClick = 1; } return false; @@ -717,25 +394,18 @@ public class HudEditorScreen extends BaseScreen { @Override public boolean mouseReleased(Click click) { - Event.b(); - double var11 = click.x(); - double var13 = click.y(); - int var15 = click.button(); - double var16 = RenderContract2.b.getWindow().getScaleFactor(); - double var18 = var11 * var16 / b(new Object[]{99410855139333L}); - double var20 = var13 * var16 / b(new Object[]{99410855139333L}); - if (var15 == 0) { - this.c = false; + double rawX = click.x(); + double rawY = click.y(); + int button = click.button(); + double guiScale = MinecraftAccess.mc.getWindow().getScaleFactor(); + double hudX = rawX * guiScale / getHudPixelScale(); + double hudY = rawY * guiScale / getHudPixelScale(); + if (button == 0) { + this.draggingPanel = false; - for (HudElement var25 : this.a) { - if (var25.e_boolean(new Object[]{15166320517519L})) { - int var10001 = (int)var18; - int var10002 = (int)var20; - Object[] var10006 = new Object[]{null, null, null, 45913355491120L}; - var10006[2] = true; - var10006[1] = var10002; - var10006[0] = var10001; - var25.o(var10006); + for (HudElement element : this.elements) { + if (element.isEnabled()) { + element.handleEditorMouse((int)hudX, (int)hudY, true); } } } @@ -750,83 +420,64 @@ public class HudEditorScreen extends BaseScreen { @Override public boolean shouldCloseOnEsc() { - RenderContract2.b.setScreen(Prestige.k); - Prestige.k.a(new Object[0]); + MinecraftAccess.mc.setScreen(Prestige.clickGuiScreen); + Prestige.clickGuiScreen.resetClosedState(); return false; } - private boolean a_boolean____(Object[] var1) { - int var5 = (Integer)var1[0]; - int var4 = (Integer)var1[1]; - return var5 >= this.f && var5 <= this.f + 140.0F && var4 >= this.g && var4 <= this.g + 24.0F; + private boolean isOverPanelHeader(int mouseX, int mouseY) { + return mouseX >= this.panelX && mouseX <= this.panelX + 140.0F && mouseY >= this.panelY && mouseY <= this.panelY + 24.0F; } - public boolean b_boolean___(Object[] var1) { - RenderHelper8 var3 = (RenderHelper8)var1[0]; - MatrixCameraData var2 = (MatrixCameraData)var1[1]; - long var4 = (Long)var1[2]; - var4 = 31417140128405L ^ var4; - long var6 = var4 ^ 50935960504888L; - long var8 = var4 ^ 3143769832011L; - long var10 = var4 ^ 46599171040741L; - long var12 = var4 ^ 132294499628091L; - long var14 = var4 ^ 82535738229540L; - long var16 = var4 ^ 134079085654962L; - if (RenderContract2.b.currentScreen != null - && !(RenderContract2.b.currentScreen instanceof HudEditorScreen) - && !(RenderContract2.b.currentScreen instanceof ChatScreen)) { + public boolean renderHud(BufferSource batch, CameraMatrices matrices) { + if (MinecraftAccess.mc.currentScreen != null + && !(MinecraftAccess.mc.currentScreen instanceof HudEditorScreen) + && !(MinecraftAccess.mc.currentScreen instanceof ChatScreen)) { return false; - } else if (!this.d(new Object[]{var12})) { + } else if (!this.hasEnabledElement()) { return false; } else { - float var19 = RenderContract2.b.getWindow().getScaleFactor(); - float var20 = b(new Object[]{var6}) / var19; - Matrix4f var21 = new Matrix4f().scale(var20, var20, 1.0F); - if (!this.i) { - for (HudElement var25 : this.a) { - var25.m(new Object[]{var14}); + float guiScale = MinecraftAccess.mc.getWindow().getScaleFactor(); + float renderScale = getHudPixelScale() / guiScale; + Matrix4f matrix = new Matrix4f().scale(renderScale, renderScale, 1.0F); + if (!this.defaultPositionsApplied) { + for (HudElement element : this.elements) { + element.resetPosition(); } - this.i = true; + this.defaultPositionsApplied = true; } - boolean var28 = false; + boolean renderedAny = false; - for (HudElement var26 : this.a) { - if (var26.e_boolean(new Object[]{var16})) { - if (!var26.a_boolean_____(new Object[0])) { - var26.e_void(new Object[]{var10}); + for (HudElement hudElement : this.elements) { + if (hudElement.isEnabled()) { + if (!hudElement.isDragging()) { + hudElement.resolvePosition(); } - var26.l(new Object[]{var3, var2, var21, var8}); - var28 = true; + hudElement.render(batch, matrices, matrix); + renderedAny = true; } } - return var28; + return renderedAny; } } - public boolean c_boolean_(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 31417140128405L ^ var2; - long var4 = var2 ^ 99372171748780L; - if (RenderContract2.b.currentScreen == this) { + public boolean shouldRenderHud() { + if (MinecraftAccess.mc.currentScreen == this) { return true; } else { - return RenderContract2.b.currentScreen != null && !(RenderContract2.b.currentScreen instanceof ChatScreen) ? false : this.d(new Object[]{var4}); + return MinecraftAccess.mc.currentScreen != null && !(MinecraftAccess.mc.currentScreen instanceof ChatScreen) ? false : this.hasEnabledElement(); } } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 31417140128405L ^ var2; - long var4 = var2 ^ 32097659546908L; - HudElement[] var7 = this.a; - Event.b(); + private boolean hasEnabledElement() { + HudElement[] allElements = this.elements; - for (HudElement var10 : var7) { - if (var10.e_boolean(new Object[]{var4})) { + for (HudElement element : allElements) { + if (element.isEnabled()) { return true; } } @@ -834,75 +485,7 @@ public class HudEditorScreen extends BaseScreen { return false; } - public HudElement[] a_HudElementArr(Object[] var1) { - return this.a; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public HudElement[] getElements() { + return this.elements; } } diff --git a/src/main/java/dev/zprestige/prestige/gui/InventoryScreenOverride.java b/src/main/java/dev/zprestige/prestige/gui/LockedInventoryScreen.java similarity index 66% rename from src/main/java/dev/zprestige/prestige/gui/InventoryScreenOverride.java rename to src/main/java/dev/zprestige/prestige/gui/LockedInventoryScreen.java index a497945..cc0fa1b 100644 --- a/src/main/java/dev/zprestige/prestige/gui/InventoryScreenOverride.java +++ b/src/main/java/dev/zprestige/prestige/gui/LockedInventoryScreen.java @@ -5,13 +5,13 @@ import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.client.input.KeyInput; import net.minecraft.entity.player.PlayerEntity; -public class InventoryScreenOverride extends InventoryScreen { - public InventoryScreenOverride(PlayerEntity var1) { - super(var1); +public class LockedInventoryScreen extends InventoryScreen { + public LockedInventoryScreen(PlayerEntity player) { + super(player); } @Override - public boolean handleHotbarKeyPressed(KeyInput var1) { + public boolean handleHotbarKeyPressed(KeyInput input) { return false; } diff --git a/src/main/java/dev/zprestige/prestige/hooks/Definer.java b/src/main/java/dev/zprestige/prestige/hooks/Definer.java new file mode 100644 index 0000000..48c538f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/hooks/Definer.java @@ -0,0 +1,12 @@ +package dev.zprestige.prestige.hooks; + +import java.lang.invoke.MethodHandles; + +/** Defines the generated hook helper classes of this package in the ClassLoader that also holds the game classes. */ +public final class Definer { + private Definer() {} + + public static Class define(byte[] bytes) throws IllegalAccessException { + return MethodHandles.lookup().defineClass(bytes); + } +} diff --git a/src/main/java/dev/zprestige/prestige/hud/CartHelperElement.java b/src/main/java/dev/zprestige/prestige/hud/CartHelperElement.java index a32d59f..fb27132 100644 --- a/src/main/java/dev/zprestige/prestige/hud/CartHelperElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/CartHelperElement.java @@ -2,20 +2,16 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import net.minecraft.component.DataComponentTypes; import net.minecraft.item.CrossbowItem; @@ -25,512 +21,200 @@ import net.minecraft.util.Identifier; import org.joml.Matrix4f; public class CartHelperElement extends HudElement { - private static final int a = 8; - private static final float m = 0.6F; - private static final float c = 9.6F; - private static final float d = 4.0F; - private static final float g = 30.0F; - private static final float h = 3.0F; - private static final Color i = new Color(80, 220, 120); - private static final Color j = new Color(235, 64, 64); - private static final Color k = new Color(255, 255, 255, 30); - private static final Set l = Set.of(Items.RAIL, Items.POWERED_RAIL, Items.DETECTOR_RAIL, Items.ACTIVATOR_RAIL); - private static final int n = 0; - private static final int o = 1; - private static final int p = 2; - private static final int q = 3; - private String r; - private boolean s; - private int t; - private float u; - private int v; - private final ItemStack[] w; - private boolean x; + private static final Color READY_COLOR = new Color(80, 220, 120); + private static final Color ALERT_COLOR = new Color(235, 64, 64); + private static final Color BAR_TRACK_COLOR = new Color(255, 255, 255, 30); + private static final Set RAIL_ITEMS = Set.of(Items.RAIL, Items.POWERED_RAIL, Items.DETECTOR_RAIL, Items.ACTIVATOR_RAIL); + private String statusText; + private boolean ready; + private int crossbowState; + private float crossbowCharge; + private int cartCount; + private final ItemStack[] iconStacks; + private boolean iconsInitialized; - public CartHelperElement(long var1) { - super("Cart Helper", "Cart PvP at a glance — trigger readiness, crossbow charge, and TNT cart stock.", (62465196802841L)); - var1 = 0L; - var1 = 108227390598432L ^ var1; - long var3 = var1 ^ 99649297198649L; - this.r = "Ready"; - this.s = true; - this.t = 0; - this.u = 0.0F; - this.v = 0; - this.w = new ItemStack[2]; - this.x = false; + public CartHelperElement() { + super("Cart Helper", "Cart PvP at a glance — trigger readiness, crossbow charge, and TNT cart stock."); + this.statusText = "Ready"; + this.ready = true; + this.crossbowState = 0; + this.crossbowCharge = 0.0F; + this.cartCount = 0; + this.iconStacks = new ItemStack[2]; + this.iconsInitialized = false; } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 340.0F; - var10005[0] = 2.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(2.0F, 340.0F); } - private void r(Object[] var1) { - if (!this.x) { - this.w[0] = new ItemStack(Items.CROSSBOW); - this.w[0].set(DataComponentTypes.ITEM_MODEL, Identifier.of("minecraft", "crossbow_standby")); - this.w[1] = new ItemStack(Items.TNT_MINECART); - this.x = true; + private void initIconStacks() { + if (!this.iconsInitialized) { + this.iconStacks[0] = new ItemStack(Items.CROSSBOW); + this.iconStacks[0].set(DataComponentTypes.ITEM_MODEL, Identifier.of("minecraft", "crossbow_standby")); + this.iconStacks[1] = new ItemStack(Items.TNT_MINECART); + this.iconsInitialized = true; } } @Subscribe - public void a(TickEvent19 var1) { - if (b.player != null && b.world != null) { - boolean var7 = false; - boolean var8 = false; - boolean var9 = false; - boolean var10 = false; - int var11 = 0; + public void onClientTick(ClientTickEvent event) { + if (mc.player != null && mc.world != null) { + boolean hasRail = false; + boolean hasBow = false; + boolean crossbowCharged = false; + boolean hasCrossbow = false; + int cartTotal = 0; - for (int var12 = 0; var12 <= 35; var12++) { - ItemStack var13 = b.player.getInventory().getStack(var12); - if (var13.getItem() == Items.TNT_MINECART) { - var11 += var13.getCount(); + for (int slot = 0; slot <= 35; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack.getItem() == Items.TNT_MINECART) { + cartTotal += stack.getCount(); } - if (var12 <= 8) { - if (l.contains(var13.getItem())) { - var7 = true; + if (slot <= 8) { + if (RAIL_ITEMS.contains(stack.getItem())) { + hasRail = true; } - if (var13.getItem() == Items.BOW) { - var8 = true; + if (stack.getItem() == Items.BOW) { + hasBow = true; } - if (var13.getItem() == Items.CROSSBOW) { - var10 = true; - if (CrossbowItem.isCharged(var13)) { - var9 = true; + if (stack.getItem() == Items.CROSSBOW) { + hasCrossbow = true; + if (CrossbowItem.isCharged(stack)) { + crossbowCharged = true; } } } } - ItemStack var16 = b.player.getOffHandStack(); - if (var16.getItem() == Items.TNT_MINECART) { - var11 += var16.getCount(); + ItemStack offhandStack = mc.player.getOffHandStack(); + if (offhandStack.getItem() == Items.TNT_MINECART) { + cartTotal += offhandStack.getCount(); } - this.v = var11; - boolean var17 = var8 || var9; - this.s = var7 && var11 > 0 && var17; - this.r = !var7 ? "No Rail" : (var11 == 0 ? "No Carts" : (!var17 ? "No Weapon" : "Ready")); - if (b.player.isUsingItem() && b.player.getActiveItem().getItem() instanceof CrossbowItem) { - ItemStack var14 = b.player.getActiveItem(); - int var15 = Math.max(1, CrossbowItem.getPullTime(var14, b.player)); - this.t = 2; - this.u = Math.min(1.0F, (b.player.getItemUseTime() + MatrixStack.a_float_______________(new Object[]{601921721859L})) / var15); - } else if (var9) { - this.t = 3; - this.u = 1.0F; + this.cartCount = cartTotal; + boolean hasWeapon = hasBow || crossbowCharged; + this.ready = hasRail && cartTotal > 0 && hasWeapon; + this.statusText = !hasRail ? "No Rail" : (cartTotal == 0 ? "No Carts" : (!hasWeapon ? "No Weapon" : "Ready")); + if (mc.player.isUsingItem() && mc.player.getActiveItem().getItem() instanceof CrossbowItem) { + int pullTime = Math.max(1, CrossbowItem.getPullTime(mc.player.getActiveItem(), mc.player)); + this.crossbowState = 2; + this.crossbowCharge = Math.min(1.0F, (mc.player.getItemUseTime() + Render2D.getTickDelta()) / pullTime); + } else if (crossbowCharged) { + this.crossbowState = 3; + this.crossbowCharge = 1.0F; } else { - this.t = var10 ? 1 : 0; - this.u = 0.0F; + this.crossbowState = hasCrossbow ? 1 : 0; + this.crossbowCharge = 0.0F; } } } @Override - public void l(Object[] var1) { - RenderHelper8 var6 = (RenderHelper8)var1[0]; - MatrixCameraData var4 = (MatrixCameraData)var1[1]; - Matrix4f var5 = (Matrix4f)var1[2]; - long var2 = (Long)var1[3]; - long var7 = var2 ^ 95334181894420L; - long var9 = var2 ^ 27807340928064L; - long var11 = var2 ^ 45947767099148L; - long var13 = var2 ^ 54030867045760L; - long var15 = var2 ^ 45272506949373L; - long var17 = var2 ^ 132449650111663L; - long var19 = var2 ^ 89135395443612L; - long var21 = var2 ^ 102693909475685L; - long var23 = var2 ^ 131934975778103L; - long var25 = var2 ^ 81986305771303L; - long var27 = var2 ^ 64450247846539L; - long var29 = var2 ^ 96557814079126L; - long var31 = var2 ^ 101037798966850L; - Event.b(); - this.r(new Object[]{var25}); - String var34 = "Cart Helper"; - float var35 = Prestige.c.a(new Object[]{var23}).c_float___(new Object[]{var13}); - Object[] var10004 = new Object[]{null, 1.0F}; - var10004[0] = var35; - float var36 = NameTagsUtil.a(var10004); - var10004 = new Object[]{null, 0.9F}; - var10004[0] = var35; - float var37 = NameTagsUtil.a(var10004); - float var38 = Prestige.c.a(new Object[]{var23}).a_float______________(new Object[]{var34, var21}); - boolean var39 = b.player == null || b.world == null; - String var40 = var39 ? "Ready" : this.r; - boolean var41 = var39 || this.s; - int var42 = var39 ? 2 : this.t; - float var43 = var39 ? 0.65F : this.u; - int var44 = var39 ? 24 : this.v; - String var45 = var42 == 3 ? "Ready" : (var42 == 1 ? "Uncharged" : "None"); - String var46 = String.valueOf(var44); - float var47 = 5.5F + var38 + 5.5F; - float var48 = 12.5F + Prestige.c.a(new Object[]{var23}).a_float______________(new Object[]{var40, var21}) * 0.9F + 5.5F; - float var49 = 18.1F + (var42 == 2 ? 30.0F : Prestige.c.a(new Object[]{var23}).a_float______________(new Object[]{var45, var21}) * 0.9F) + 5.5F; - float var50 = 18.1F + Prestige.c.a(new Object[]{var23}).a_float______________(new Object[]{var46, var21}) * 0.9F + 5.5F; - var47 = Math.max(var47, Math.max(var48, Math.max(var49, var50))); - float var51 = var36 + 3.0F + var37 * 3.0F + 3.0F; - boolean var52 = this.c_boolean__(new Object[0]); - var10004 = new Object[]{null, var51}; - var10004[0] = var47; - this.i(var10004); - float var53 = this.e; - float var54 = this.f; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var7}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var51; - var10011[5] = var47; - var10011[4] = var54; - var10011[3] = var53; - var10011[2] = var5; - var10011[1] = var4; - var10011[0] = var6; - RenderTarget.e(var10011); - Color var10007 = NameTagsUtil.r; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var17}; - var10011[8] = 4.0F; - var10011[7] = var10007; - var10011[6] = var51; - var10011[5] = var47; - var10011[4] = var54; - var10011[3] = var53; - var10011[2] = var5; - var10011[1] = var4; - var10011[0] = var6; - RoundedPosColorShader.c(var10011); - float var55 = var54 + 3.0F; - float var56 = var52 ? var53 + var47 - 5.5F - var38 : var53 + 5.5F; - float var57 = var56; + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + this.initIconStacks(); + String title = "Cart Helper"; + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + float headerHeight = HudStyle.getRowHeight(fontHeight, 1.0F); + float rowHeight = HudStyle.getRowHeight(fontHeight, 0.9F); + float titleWidth = Prestige.fontManager.getDefaultFont().getTextWidth(title); + boolean previewMode = mc.player == null || mc.world == null; + String shownStatus = previewMode ? "Ready" : this.statusText; + boolean shownReady = previewMode || this.ready; + int shownCrossbowState = previewMode ? 2 : this.crossbowState; + float shownCharge = previewMode ? 0.65F : this.crossbowCharge; + int shownCartCount = previewMode ? 24 : this.cartCount; + String crossbowText = shownCrossbowState == 3 ? "Ready" : (shownCrossbowState == 1 ? "Uncharged" : "None"); + String cartCountText = String.valueOf(shownCartCount); + float panelWidth = 5.5F + titleWidth + 5.5F; + panelWidth = Math.max(panelWidth, Math.max(12.5F + Prestige.fontManager.getDefaultFont().getTextWidth(shownStatus) * 0.9F + 5.5F, Math.max(18.1F + (shownCrossbowState == 2 ? 30.0F : Prestige.fontManager.getDefaultFont().getTextWidth(crossbowText) * 0.9F) + 5.5F, 18.1F + Prestige.fontManager.getDefaultFont().getTextWidth(cartCountText) * 0.9F + 5.5F))); + float panelHeight = headerHeight + 3.0F + rowHeight * 3.0F + 3.0F; + boolean rightAligned = this.isAnchoredRight(); + this.setSize(panelWidth, panelHeight); + float panelX = this.x; + float panelY = this.y; + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, HudStyle.BACKGROUND_COLOR, 4.0F); + float titleY = panelY + 3.0F; + float charX = rightAligned ? panelX + panelWidth - 5.5F - titleWidth : panelX + 5.5F; - for (int var58 = 0; var58 < var34.length(); var58++) { - String var59 = String.valueOf(var34.charAt(var58)); - int var60 = var52 ? var34.length() - 1 - var58 : var58; - Font var10000 = Prestige.c.a(new Object[]{var23}); - Color var10005 = MathHelper4.d(new Object[]{var9}); - int var109 = 10 + var60; - Object[] var10010 = new Object[]{null, null, null, var11}; - var10010[2] = var109; - var10010[1] = 10; - var10010[0] = var10005; - Object[] var10008 = new Object[]{null, null, null, null, MatrixStack.b_Color_____(var10010), var29}; - var10008[3] = var55; - var10008[2] = var57; - var10008[1] = var59; - var10008[0] = var5; - var10000.v(var10008); - var57 += Prestige.c.a(new Object[]{var23}).a_float______________(new Object[]{var59, var21}); + for (int charIndex = 0; charIndex < title.length(); charIndex++) { + String charText = String.valueOf(title.charAt(charIndex)); + int waveIndex = rightAligned ? title.length() - 1 - charIndex : charIndex; + Prestige.fontManager.getDefaultFont().drawText(matrix, charText, charX, titleY, Render2D.getWaveColor(UiMath.getAccentColor(), 10, 10 + waveIndex)); + charX += Prestige.fontManager.getDefaultFont().getTextWidth(charText); } - float var75 = var54 + var36 - 0.5F; - float var10001 = var53 + 5.5F; - float var10003 = var53 + var47 - 5.5F; - float var106 = var75 + 0.5F; - Object[] var114 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var19}; - var114[4] = var106; - var114[3] = var10003; - var114[2] = var75; - var114[1] = var10001; - var114[0] = var5; - RenderState.l(var114); - long var76 = System.currentTimeMillis(); - int var61 = (int)Math.min(255.0, 170.0 + 85.0 * Math.sin(var76 * 0.012)); - float var62 = var54 + var36 + 3.0F; - float var63 = var62 + (var37 - var35 * 0.9F) / 2.0F; - float var64 = var62 + (var37 - 4.0F) / 2.0F; - Color var65 = var41 ? i : new Color(j.getRed(), j.getGreen(), j.getBlue(), var61); - float var66 = Prestige.c.a(new Object[]{var23}).a_float______________(new Object[]{var40, var21}) * 0.9F; - if (var52) { - float var67 = var53 + var47 - 5.5F - 4.0F; - float var68 = var67 - 3.0F - var66; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var17}; - var10011[8] = 1.5F; - var10011[7] = var65; - var10011[6] = 4.0F; - var10011[5] = 4.0F; - var10011[4] = var64; - var10011[3] = var67; - var10011[2] = var5; - var10011[1] = var4; - var10011[0] = var6; - RoundedPosColorShader.c(var10011); - Font var89 = Prestige.c.a(new Object[]{var23}); - Object[] var10009 = new Object[]{null, null, null, null, null, NameTagsUtil.s, var31}; - var10009[4] = 0.9F; - var10009[3] = var63; - var10009[2] = var68; - var10009[1] = var40; - var10009[0] = var5; - var89.w(var10009); + float dividerY = panelY + headerHeight - 0.5F; + ShapeRenderer.drawRect(matrix, panelX + 5.5F, dividerY, panelX + panelWidth - 5.5F, dividerY + 0.5F, HudStyle.DIVIDER_COLOR); + int pulseAlpha = (int)Math.min(255.0, 170.0 + 85.0 * Math.sin(System.currentTimeMillis() * 0.012)); + float rowY = panelY + headerHeight + 3.0F; + float rowTextY = rowY + (rowHeight - fontHeight * 0.9F) / 2.0F; + float dotY = rowY + (rowHeight - 4.0F) / 2.0F; + Color statusColor = shownReady ? READY_COLOR : new Color(ALERT_COLOR.getRed(), ALERT_COLOR.getGreen(), ALERT_COLOR.getBlue(), pulseAlpha); + float statusWidth = Prestige.fontManager.getDefaultFont().getTextWidth(shownStatus) * 0.9F; + if (rightAligned) { + float mirroredDotX = panelX + panelWidth - 5.5F - 4.0F; + float mirroredStatusX = mirroredDotX - 3.0F - statusWidth; + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, mirroredDotX, dotY, 4.0F, 4.0F, statusColor, 1.5F); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, shownStatus, mirroredStatusX, rowTextY, 0.9F, HudStyle.TEXT_COLOR); } else { - float var81 = var53 + 5.5F; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var17}; - var10011[8] = 1.5F; - var10011[7] = var65; - var10011[6] = 4.0F; - var10011[5] = 4.0F; - var10011[4] = var64; - var10011[3] = var81; - var10011[2] = var5; - var10011[1] = var4; - var10011[0] = var6; - RoundedPosColorShader.c(var10011); - Font var90 = Prestige.c.a(new Object[]{var23}); - var10003 = var81 + 4.0F + 3.0F; - Object[] var115 = new Object[]{null, null, null, null, null, NameTagsUtil.s, var31}; - var115[4] = 0.9F; - var115[3] = var63; - var115[2] = var10003; - var115[1] = var40; - var115[0] = var5; - var90.w(var115); + float dotX = panelX + 5.5F; + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, dotX, dotY, 4.0F, 4.0F, statusColor, 1.5F); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, shownStatus, dotX + 4.0F + 3.0F, rowTextY, 0.9F, HudStyle.TEXT_COLOR); } - var62 += var37; - var63 = var62 + (var37 - var35 * 0.9F) / 2.0F; - float var82 = var62 + (var37 - 9.6F) / 2.0F; - float var84 = var62 + (var37 - 3.0F) / 2.0F; - Color var69 = var42 == 3 ? i : (var42 == 1 ? NameTagsUtil.t : NameTagsUtil.u); - if (var52) { - float var70 = var53 + var47 - 5.5F - 9.6F; - ItemStack var91 = this.w[0]; - Object[] var110 = new Object[]{null, null, null, null, var5, var27}; - var110[3] = 0.6F; - var110[2] = var82; - var110[1] = var70; - var110[0] = var91; - MatrixStack.a_boolean_______________________________________(var110); - if (var42 == 2) { - float var107 = var70 - 3.0F - 30.0F; - Object[] var116 = new Object[]{null, null, null, null, null, null, var15}; - var116[5] = var43; - var116[4] = var84; - var116[3] = var107; - var116[2] = var5; - var116[1] = var4; - var116[0] = var6; - this.s(var116); + rowY += rowHeight; + rowTextY = rowY + (rowHeight - fontHeight * 0.9F) / 2.0F; + float iconY = rowY + (rowHeight - 9.6F) / 2.0F; + float barY = rowY + (rowHeight - 3.0F) / 2.0F; + Color crossbowColor = shownCrossbowState == 3 ? READY_COLOR : (shownCrossbowState == 1 ? HudStyle.SECONDARY_TEXT_COLOR : HudStyle.MUTED_TEXT_COLOR); + if (rightAligned) { + float mirroredCrossbowIconX = panelX + panelWidth - 5.5F - 9.6F; + Render2D.drawItem(this.iconStacks[0], mirroredCrossbowIconX, iconY, 0.6F, matrix); + if (shownCrossbowState == 2) { + this.drawChargeBar(batch, cameraData, matrix, mirroredCrossbowIconX - 3.0F - 30.0F, barY, shownCharge); } else { - float var71 = Prestige.c.a(new Object[]{var23}).a_float______________(new Object[]{var45, var21}) * 0.9F; - Font var92 = Prestige.c.a(new Object[]{var23}); - var10003 = var70 - 3.0F - var71; - Object[] var117 = new Object[]{null, null, null, null, null, var69, var31}; - var117[4] = 0.9F; - var117[3] = var63; - var117[2] = var10003; - var117[1] = var45; - var117[0] = var5; - var92.w(var117); + float crossbowTextWidth = Prestige.fontManager.getDefaultFont().getTextWidth(crossbowText) * 0.9F; + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, crossbowText, mirroredCrossbowIconX - 3.0F - crossbowTextWidth, rowTextY, 0.9F, crossbowColor); } } else { - float var85 = var53 + 5.5F; - ItemStack var93 = this.w[0]; - Object[] var111 = new Object[]{null, null, null, null, var5, var27}; - var111[3] = 0.6F; - var111[2] = var82; - var111[1] = var85; - var111[0] = var93; - MatrixStack.a_boolean_______________________________________(var111); - if (var42 == 2) { - float var108 = var85 + 9.6F + 3.0F; - Object[] var118 = new Object[]{null, null, null, null, null, null, var15}; - var118[5] = var43; - var118[4] = var84; - var118[3] = var108; - var118[2] = var5; - var118[1] = var4; - var118[0] = var6; - this.s(var118); + float crossbowIconX = panelX + 5.5F; + Render2D.drawItem(this.iconStacks[0], crossbowIconX, iconY, 0.6F, matrix); + if (shownCrossbowState == 2) { + this.drawChargeBar(batch, cameraData, matrix, crossbowIconX + 9.6F + 3.0F, barY, shownCharge); } else { - Font var94 = Prestige.c.a(new Object[]{var23}); - var10003 = var85 + 9.6F + 3.0F; - Object[] var119 = new Object[]{null, null, null, null, null, var69, var31}; - var119[4] = 0.9F; - var119[3] = var63; - var119[2] = var10003; - var119[1] = var45; - var119[0] = var5; - var94.w(var119); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, crossbowText, crossbowIconX + 9.6F + 3.0F, rowTextY, 0.9F, crossbowColor); } } - var62 += var37; - var63 = var62 + (var37 - var35 * 0.9F) / 2.0F; - var82 = var62 + (var37 - 9.6F) / 2.0F; - boolean var86 = !var39 && var44 < 8; - Color var87 = var86 ? new Color(j.getRed(), j.getGreen(), j.getBlue(), var61) : NameTagsUtil.s; - float var72 = Prestige.c.a(new Object[]{var23}).a_float______________(new Object[]{var46, var21}) * 0.9F; - if (var52) { - float var73 = var53 + var47 - 5.5F - 9.6F; - ItemStack var95 = this.w[1]; - Object[] var112 = new Object[]{null, null, null, null, var5, var27}; - var112[3] = 0.6F; - var112[2] = var82; - var112[1] = var73; - var112[0] = var95; - MatrixStack.a_boolean_______________________________________(var112); - Font var96 = Prestige.c.a(new Object[]{var23}); - var10003 = var73 - 3.0F - var72; - Object[] var120 = new Object[]{null, null, null, null, null, var87, var31}; - var120[4] = 0.9F; - var120[3] = var63; - var120[2] = var10003; - var120[1] = var46; - var120[0] = var5; - var96.w(var120); + rowY += rowHeight; + rowTextY = rowY + (rowHeight - fontHeight * 0.9F) / 2.0F; + iconY = rowY + (rowHeight - 9.6F) / 2.0F; + Color cartColor = (!previewMode && shownCartCount < 8) ? new Color(ALERT_COLOR.getRed(), ALERT_COLOR.getGreen(), ALERT_COLOR.getBlue(), pulseAlpha) : HudStyle.TEXT_COLOR; + float cartTextWidth = Prestige.fontManager.getDefaultFont().getTextWidth(cartCountText) * 0.9F; + if (rightAligned) { + float mirroredCartIconX = panelX + panelWidth - 5.5F - 9.6F; + Render2D.drawItem(this.iconStacks[1], mirroredCartIconX, iconY, 0.6F, matrix); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, cartCountText, mirroredCartIconX - 3.0F - cartTextWidth, rowTextY, 0.9F, cartColor); } else { - float var88 = var53 + 5.5F; - ItemStack var97 = this.w[1]; - Object[] var113 = new Object[]{null, null, null, null, var5, var27}; - var113[3] = 0.6F; - var113[2] = var82; - var113[1] = var88; - var113[0] = var97; - MatrixStack.a_boolean_______________________________________(var113); - Font var98 = Prestige.c.a(new Object[]{var23}); - var10003 = var88 + 9.6F + 3.0F; - Object[] var121 = new Object[]{null, null, null, null, null, var87, var31}; - var121[4] = 0.9F; - var121[3] = var63; - var121[2] = var10003; - var121[1] = var46; - var121[0] = var5; - var98.w(var121); + float cartIconX = panelX + 5.5F; + Render2D.drawItem(this.iconStacks[1], cartIconX, iconY, 0.6F, matrix); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, cartCountText, cartIconX + 9.6F + 3.0F, rowTextY, 0.9F, cartColor); } } - private void s(Object[] var1) { - RenderHelper8 var7 = (RenderHelper8)var1[0]; - MatrixCameraData var9 = (MatrixCameraData)var1[1]; - Matrix4f var5 = (Matrix4f)var1[2]; - float var6 = (Float)var1[3]; - float var8 = (Float)var1[4]; - float var2 = (Float)var1[5]; - long var3 = (Long)var1[6]; - var3 = 108227390598432L ^ var3; - long var10 = var3 ^ 56299014473586L; - long var12 = var3 ^ 90194618855325L; - float var15 = 1.5F; - Color var10007 = k; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var10}; - var10011[8] = var15; - var10011[7] = var10007; - var10011[6] = 3.0F; - var10011[5] = 30.0F; - var10011[4] = var8; - var10011[3] = var6; - var10011[2] = var5; - var10011[1] = var9; - var10011[0] = var7; - RoundedPosColorShader.c(var10011); - float var16 = Math.min(1.0F, Math.max(0.0F, var2)); - Event.b(); - float var17 = 30.0F * var16; - if (var17 > 3.0F) { - var10007 = MathHelper4.d(new Object[]{var12}); - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var10}; - var10011[8] = var15; - var10011[7] = var10007; - var10011[6] = 3.0F; - var10011[5] = var17; - var10011[4] = var8; - var10011[3] = var6; - var10011[2] = var5; - var10011[1] = var9; - var10011[0] = var7; - RoundedPosColorShader.c(var10011); - Color var18 = new Color(255, 255, 255, 200); - float var10003 = var6 + var17 - 1.5F; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var10}; - var10011[8] = var15; - var10011[7] = var18; - var10011[6] = 3.0F; - var10011[5] = 1.5F; - var10011[4] = var8; - var10011[3] = var10003; - var10011[2] = var5; - var10011[1] = var9; - var10011[0] = var7; - RoundedPosColorShader.c(var10011); - } - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + private void drawChargeBar(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix, float barX, float barY, float progress) { + float radius = 1.5F; + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, barX, barY, 30.0F, 3.0F, BAR_TRACK_COLOR, radius); + float fillWidth = 30.0F * Math.min(1.0F, Math.max(0.0F, progress)); + if (fillWidth > 3.0F) { + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, barX, barY, fillWidth, 3.0F, UiMath.getAccentColor(), radius); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, barX + fillWidth - 1.5F, barY, 1.5F, 3.0F, new Color(255, 255, 255, 200), radius); } } } diff --git a/src/main/java/dev/zprestige/prestige/hud/CooldownIndicatorElement.java b/src/main/java/dev/zprestige/prestige/hud/CooldownIndicatorElement.java index 6e1a943..98e8601 100644 --- a/src/main/java/dev/zprestige/prestige/hud/CooldownIndicatorElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/CooldownIndicatorElement.java @@ -1,19 +1,16 @@ package dev.zprestige.prestige.hud; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; import dev.zprestige.prestige.gui.HudEditorScreen; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper12; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.CooldownProgress; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.client.option.AttackIndicator; import net.minecraft.item.BowItem; import net.minecraft.item.CrossbowItem; @@ -22,461 +19,232 @@ import net.minecraft.item.TridentItem; import org.joml.Matrix4f; public class CooldownIndicatorElement extends HudElement { - private static final float m = 28.0F; - private static final float a = 3.0F; - private static final float c = 0.5F; - private static final float d = 220.0F; - private static final float g = 350.0F; - private static final float h = 16.0F; - private static final float i = 280.0F; - private AttackIndicator j; - private boolean n; - private long k; - private long l; - private boolean q; - private float o; - private float p; - private float t; - private float u; - private long r; + private AttackIndicator savedAttackIndicator; + private boolean vanillaIndicatorHidden; + private long lastFrameTime; + private long stateChangeTime; + private boolean cooldownActive; + private float visibilityAtChange; + private float visibility; + private float smoothedProgress; + private float lastProgress; + private long readyFlashTime; - public CooldownIndicatorElement(long var1) { - super("Cooldown Indicator", "Themed cooldown bar - covers attack, projectiles, and bow/crossbow/trident charge", (15796535010447L)); - var1 = 0L; - var1 = 9974884422292L ^ var1; - long var3 = var1 ^ 8038562592283L; - this.j = null; - this.n = false; - this.k = 0L; - this.l = 0L; - this.q = false; - this.o = 0.0F; - this.p = 0.0F; - this.t = 0.0F; - this.u = 0.0F; - this.r = -100000L; + public CooldownIndicatorElement() { + super("Cooldown Indicator", "Themed cooldown bar - covers attack, projectiles, and bow/crossbow/trident charge"); + this.savedAttackIndicator = null; + this.vanillaIndicatorHidden = false; + this.lastFrameTime = 0L; + this.stateChangeTime = 0L; + this.cooldownActive = false; + this.visibilityAtChange = 0.0F; + this.visibility = 0.0F; + this.smoothedProgress = 0.0F; + this.lastProgress = 0.0F; + this.readyFlashTime = -100000L; } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 111341298698524L; - long var6 = var2 ^ 115520954206759L; - if (b.getWindow() != null) { - float var9 = b.getWindow().getFramebufferWidth() / HudEditorScreen.b(new Object[]{var4}); - float var10 = b.getWindow().getFramebufferHeight() / HudEditorScreen.b(new Object[]{var4}); - float var10001 = var9 / 2.0F - 14.0F; - float var10002 = var10 / 2.0F + 14.0F; - Object[] var10005 = new Object[]{null, null, var6}; - var10005[1] = var10002; - var10005[0] = var10001; - this.a_void_______(var10005); + public void resetPosition() { + if (mc.getWindow() != null) { + float screenWidth = mc.getWindow().getFramebufferWidth() / HudEditorScreen.getHudPixelScale(); + float screenHeight = mc.getWindow().getFramebufferHeight() / HudEditorScreen.getHudPixelScale(); + this.setPosition(screenWidth / 2.0F - 14.0F, screenHeight / 2.0F + 14.0F); } else { - Object[] var11 = new Object[]{null, null, var6}; - var11[1] = 110.0F; - var11[0] = 150.0F; - this.a_void_______(var11); + this.setPosition(150.0F, 110.0F); } } @Override - public void j(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 7095566904711L; - long var6 = var2 ^ 5259218245497L; - long var8 = var2 ^ 0L; - long var10 = var2 ^ 55198602109446L; - Event.b(); - super.j(new Object[]{var8}); - if (this.e_boolean(new Object[]{var10})) { - this.r(new Object[]{var6}); + public void toggle() { + super.toggle(); + if (this.isEnabled()) { + this.hideVanillaIndicator(); } else { - this.s(new Object[]{var4}); + this.restoreVanillaIndicator(); } } - private void r(Object[] var1) { - if (b.options != null && !this.n) { + private void hideVanillaIndicator() { + if (mc.options != null && !this.vanillaIndicatorHidden) { try { - this.j = b.options.getAttackIndicator().getValue(); - b.options.getAttackIndicator().setValue(AttackIndicator.OFF); - this.n = true; - } catch (Throwable var2) { + this.savedAttackIndicator = mc.options.getAttackIndicator().getValue(); + mc.options.getAttackIndicator().setValue(AttackIndicator.OFF); + this.vanillaIndicatorHidden = true; + } catch (Throwable ignored) { } } } - private void s(Object[] var1) { - if (b.options != null && this.n && this.j != null) { + private void restoreVanillaIndicator() { + if (mc.options != null && this.vanillaIndicatorHidden && this.savedAttackIndicator != null) { try { - b.options.getAttackIndicator().setValue(this.j); - } catch (Throwable var2) { + mc.options.getAttackIndicator().setValue(this.savedAttackIndicator); + } catch (Throwable ignored) { } - this.n = false; - this.j = null; + this.vanillaIndicatorHidden = false; + this.savedAttackIndicator = null; } } @Override - public void l(Object[] var1) { - RenderHelper8 var5 = (RenderHelper8)var1[0]; - MatrixCameraData var6 = (MatrixCameraData)var1[1]; - Matrix4f var2 = (Matrix4f)var1[2]; - long var3 = (Long)var1[3]; - long var7 = var3 ^ 48964852101235L; - long var9 = var3 ^ 36129254667080L; - long var11 = var3 ^ 85560644009094L; - long var13 = var3 ^ 3632026424044L; - long var15 = var3 ^ 5982008433205L; - long var17 = var3 ^ 85350127870851L; - long var19 = var3 ^ 53304382926758L; - if (!this.n) { - this.r(new Object[]{var11}); + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + if (!this.vanillaIndicatorHidden) { + this.hideVanillaIndicator(); } - if (b.getWindow() != null) { - float var22 = b.getWindow().getFramebufferWidth() / HudEditorScreen.b(new Object[]{var7}); - float var23 = b.getWindow().getFramebufferHeight() / HudEditorScreen.b(new Object[]{var7}); - float var10001 = var22 / 2.0F - 14.0F; - float var10002 = var23 / 2.0F + 14.0F; - Object[] var10005 = new Object[]{null, null, var9}; - var10005[1] = var10002; - var10005[0] = var10001; - this.a_void_______(var10005); + if (mc.getWindow() != null) { + float screenWidth = mc.getWindow().getFramebufferWidth() / HudEditorScreen.getHudPixelScale(); + float screenHeight = mc.getWindow().getFramebufferHeight() / HudEditorScreen.getHudPixelScale(); + this.setPosition(screenWidth / 2.0F - 14.0F, screenHeight / 2.0F + 14.0F); } else { - Object[] var44 = new Object[]{null, null, var9}; - var44[1] = 110.0F; - var44[0] = 150.0F; - this.a_void_______(var44); + this.setPosition(150.0F, 110.0F); } - Object[] var10004 = new Object[]{null, 3.0F}; - var10004[0] = 28.0F; - this.i(var10004); - boolean var31 = b.currentScreen instanceof HudEditorScreen; - if (b.player != null && b.world != null) { - long var32 = System.currentTimeMillis(); - float var25 = this.k == 0L ? 0.0F : Math.min(0.1F, (float)(var32 - this.k) / 1000.0F); - this.k = var32; - RenderHelper12 var26 = this.a_RenderHelper12(new Object[]{var15}); - boolean var27 = var26 != null && var26.a < 0.999F; - if (var26 != null) { - float var28 = 1.0F - (float)Math.exp(-var25 * 16.0F); - this.t = this.t + (var26.a - this.t) * var28; + this.setSize(28.0F, 3.0F); + boolean inEditor = mc.currentScreen instanceof HudEditorScreen; + if (mc.player != null && mc.world != null) { + long now = System.currentTimeMillis(); + float frameSeconds = this.lastFrameTime == 0L ? 0.0F : Math.min(0.1F, (float)(now - this.lastFrameTime) / 1000.0F); + this.lastFrameTime = now; + CooldownProgress progress = this.getActiveProgress(); + boolean active = progress != null && progress.progress < 0.999F; + if (progress != null) { + float smoothing = 1.0F - (float)Math.exp(-frameSeconds * 16.0F); + this.smoothedProgress = this.smoothedProgress + (progress.progress - this.smoothedProgress) * smoothing; } - if (var27 != this.q) { - this.o = this.p; - this.l = var32; - if (!var27 && this.u > 0.8F) { - this.r = var32; + if (active != this.cooldownActive) { + this.visibilityAtChange = this.visibility; + this.stateChangeTime = now; + if (!active && this.lastProgress > 0.8F) { + this.readyFlashTime = now; } - this.q = var27; + this.cooldownActive = active; } - if (var26 != null) { - this.u = var26.a; + if (progress != null) { + this.lastProgress = progress.progress; } - long var33 = var32 - this.l; - if (var27) { - float var30 = Math.min(1.0F, (float)var33 / 220.0F); - float var36 = this.o; - float var40 = 1.0F - this.o; - Object[] var10006 = new Object[]{null, var19}; - var10006[0] = var30; - this.p = var36 + var40 * d(var10006); + long sinceChange = now - this.stateChangeTime; + if (active) { + float appearProgress = Math.min(1.0F, (float)sinceChange / 220.0F); + this.visibility = this.visibilityAtChange + (1.0F - this.visibilityAtChange) * smootherStep(appearProgress); } else { - float var34 = Math.min(1.0F, (float)var33 / 350.0F); - float var37 = this.o; - Object[] var47 = new Object[]{null, var19}; - var47[0] = var34; - this.p = var37 * (1.0F - d(var47)); + float fadeProgress = Math.min(1.0F, (float)sinceChange / 350.0F); + this.visibility = this.visibilityAtChange * (1.0F - smootherStep(fadeProgress)); } - float var38 = this.p; - var10004 = new Object[]{null, var13}; - var10004[0] = var38; - this.p = e(var10004); - if (var31) { - float var46 = Math.max(this.t, 0.5F); - Object[] var49 = new Object[]{null, null, null, null, null, null, var17}; - var49[5] = 0.0F; - var49[4] = var46; - var49[3] = 1.0F; - var49[2] = var2; - var49[1] = var6; - var49[0] = var5; - this.t(var49); + this.visibility = clamp01(this.visibility); + if (inEditor) { + this.drawBar(batch, cameraData, matrix, 1.0F, Math.max(this.smoothedProgress, 0.5F), 0.0F); } else { - var38 = (float)(var32 - this.r) / 280.0F; - var10004 = new Object[]{null, var13}; - var10004[0] = var38; - float var10000 = 1.0F - e(var10004); - Object[] var10003 = new Object[]{null, var19}; - var10003[0] = var10000; - float var35 = d(var10003); - if (this.p > 0.01F) { - float var43 = this.p; - float var45 = this.t; - Object[] var48 = new Object[]{null, null, null, null, null, null, var17}; - var48[5] = var35; - var48[4] = var45; - var48[3] = var43; - var48[2] = var2; - var48[1] = var6; - var48[0] = var5; - this.t(var48); + float flashStrength = smootherStep(1.0F - clamp01((float)(now - this.readyFlashTime) / 280.0F)); + if (this.visibility > 0.01F) { + this.drawBar(batch, cameraData, matrix, this.visibility, this.smoothedProgress, flashStrength); } } } else { - if (var31) { - Object[] var10009 = new Object[]{null, null, null, null, null, null, var17}; - var10009[5] = 0.0F; - var10009[4] = 0.5F; - var10009[3] = 1.0F; - var10009[2] = var2; - var10009[1] = var6; - var10009[0] = var5; - this.t(var10009); + if (inEditor) { + this.drawBar(batch, cameraData, matrix, 1.0F, 0.5F, 0.0F); } } } - private void t(Object[] var1) { - RenderHelper8 var7 = (RenderHelper8)var1[0]; - MatrixCameraData var2 = (MatrixCameraData)var1[1]; - Matrix4f var9 = (Matrix4f)var1[2]; - float var3 = (Float)var1[3]; - float var8 = (Float)var1[4]; - float var4 = (Float)var1[5]; - long var5 = (Long)var1[6]; - var5 = 9974884422292L ^ var5; - long var10 = var5 ^ 66812563981752L; - long var12 = var5 ^ 19820963104771L; - long var14 = var5 ^ 40270976538512L; - long var16 = var5 ^ 30523530588809L; - long var18 = var5 ^ 19431057585679L; - Event.b(); - float var21 = 1.5F; - float var22 = 28.0F * var3; - if (!(var22 < 0.5F)) { - float var23 = this.e + (28.0F - var22) * 0.5F; - Color var10000 = NameTagsUtil.r; - Object[] var10004 = new Object[]{null, null, var16}; - var10004[1] = var3; - var10004[0] = var10000; - Color var24 = c_Color(var10004); - if (var3 > 0.7F) { - float var38 = this.f; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var12}; - var10011[8] = var21; - var10011[7] = 5; - var10011[6] = 3.0F; - var10011[5] = var22; - var10011[4] = var38; - var10011[3] = var23; - var10011[2] = var9; - var10011[1] = var2; - var10011[0] = var7; - RenderTarget.e(var10011); + private void drawBar(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix, float alpha, float progress, float flash) { + float radius = 1.5F; + float barWidth = 28.0F * alpha; + if (!(barWidth < 0.5F)) { + float barX = this.x + (28.0F - barWidth) * 0.5F; + Color backgroundColor = scaleAlpha(HudStyle.BACKGROUND_COLOR, alpha); + if (alpha > 0.7F) { + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, barX, this.y, barWidth, 3.0F, 5, radius); } - float var39 = this.f; - Object[] var45 = new Object[]{null, null, null, null, null, null, null, null, null, var10}; - var45[8] = var21; - var45[7] = var24; - var45[6] = 3.0F; - var45[5] = var22; - var45[4] = var39; - var45[3] = var23; - var45[2] = var9; - var45[1] = var2; - var45[0] = var7; - RoundedPosColorShader.c(var45); - float var25 = var22 - 1.0F; - float var26 = 2.0F; - float var27 = var26 * 0.5F; - if (var8 > 0.001F && var25 > 1.0F) { - float var28 = Math.min(1.0F, var8); - Object[] var10003 = new Object[]{null, var14}; - var10003[0] = var28; - Color var29 = a(var10003); - float var30 = var25 * var28; - if (var30 > var26) { - float var36 = var23 + 0.5F; - float var40 = this.f + 0.5F; - var45 = new Object[]{null, null, var16}; - var45[1] = var3; - var45[0] = var29; - Color var10007 = c_Color(var45); - var45 = new Object[]{null, null, null, null, null, null, null, null, null, var10}; - var45[8] = var27; - var45[7] = var10007; - var45[6] = var26; - var45[5] = var30; - var45[4] = var40; - var45[3] = var36; - var45[2] = var9; - var45[1] = var2; - var45[0] = var7; - RoundedPosColorShader.c(var45); - if (var28 < 0.995F && var30 > 3.0F) { - Color var10001 = Color.WHITE; - Object[] var10005 = new Object[]{null, null, null, var18}; - var10005[2] = 0.75F; - var10005[1] = var10001; - var10005[0] = var29; - var10000 = b(var10005); - float var35 = var3 * 0.9F; - var10004 = new Object[]{null, null, var16}; - var10004[1] = var35; - var10004[0] = var10000; - Color var31 = c_Color(var10004); - float var37 = var23 + 0.5F + var30 - 1.5F; - float var42 = this.f + 0.5F; - var45 = new Object[]{null, null, null, null, null, null, null, null, null, var10}; - var45[8] = var27; - var45[7] = var31; - var45[6] = var26; - var45[5] = 1.5F; - var45[4] = var42; - var45[3] = var37; - var45[2] = var9; - var45[1] = var2; - var45[0] = var7; - RoundedPosColorShader.c(var45); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, barX, this.y, barWidth, 3.0F, backgroundColor, radius); + float trackWidth = barWidth - 1.0F; + float fillHeight = 2.0F; + float fillRadius = fillHeight * 0.5F; + if (progress > 0.001F && trackWidth > 1.0F) { + float clampedProgress = Math.min(1.0F, progress); + Color fillColor = getProgressColor(clampedProgress); + float fillWidth = trackWidth * clampedProgress; + if (fillWidth > fillHeight) { + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, barX + 0.5F, this.y + 0.5F, fillWidth, fillHeight, scaleAlpha(fillColor, alpha), fillRadius); + if (clampedProgress < 0.995F && fillWidth > 3.0F) { + Color tipColor = scaleAlpha(lerpColor(fillColor, Color.WHITE, 0.75F), alpha * 0.9F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, barX + 0.5F + fillWidth - 1.5F, this.y + 0.5F, 1.5F, fillHeight, tipColor, fillRadius); } } } - if (var4 > 0.01F) { - int var33 = Math.min(255, (int)(170.0F * var4 * var3)); - if (var33 > 2) { - float var43 = this.f; - Color var44 = new Color(255, 255, 255, var33); - var45 = new Object[]{null, null, null, null, null, null, null, null, null, var10}; - var45[8] = var21; - var45[7] = var44; - var45[6] = 3.0F; - var45[5] = var22; - var45[4] = var43; - var45[3] = var23; - var45[2] = var9; - var45[1] = var2; - var45[0] = var7; - RoundedPosColorShader.c(var45); + if (flash > 0.01F) { + int flashAlpha = Math.min(255, (int)(170.0F * flash * alpha)); + if (flashAlpha > 2) { + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, barX, this.y, barWidth, 3.0F, new Color(255, 255, 255, flashAlpha), radius); } } } } - private static Color a(Object[] var0) { - float var1 = (Float)var0[0]; - long var2 = (Long)var0[1]; - var2 = 9974884422292L ^ var2; - long var4 = var2 ^ 123463530473555L; - long var6 = var2 ^ 116882517059327L; - long var8 = var2 ^ 98383029263285L; - long var10 = var2 ^ 66099571454731L; - Color var12 = MathHelper4.d(new Object[]{var4}); - float var10002 = var1 / 0.75F; - Object[] var10005 = new Object[]{null, var6}; - var10005[0] = var10002; - var10002 = e(var10005); - var10005 = new Object[]{null, var8}; - var10005[0] = var10002; - float var13 = 0.55F + 0.45F * d(var10005); - Color var14 = new Color((int)(var12.getRed() * var13), (int)(var12.getGreen() * var13), (int)(var12.getBlue() * var13)); - float var10000 = (var1 - 0.88F) / 0.12F; - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var10000; - var10000 = e(var10003); - var10003 = new Object[]{null, var8}; - var10003[0] = var10000; - float var15 = d(var10003); - Color var10001 = Color.WHITE; - var10002 = var15 * 0.65F; - var10005 = new Object[]{null, null, null, var10}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var14; - return b(var10005); + private static Color getProgressColor(float progress) { + Color accent = UiMath.getAccentColor(); + float brightness = 0.55F + 0.45F * smootherStep(clamp01(progress / 0.75F)); + Color shadedColor = new Color((int)(accent.getRed() * brightness), (int)(accent.getGreen() * brightness), (int)(accent.getBlue() * brightness)); + float whiteBlend = smootherStep(clamp01((progress - 0.88F) / 0.12F)); + return lerpColor(shadedColor, Color.WHITE, whiteBlend * 0.65F); } - private static Color b(Object[] var0) { - Color var5 = (Color)var0[0]; - Color var2 = (Color)var0[1]; - float var1 = (Float)var0[2]; - long var3 = (Long)var0[3]; - var3 = 9974884422292L ^ var3; - long var6 = var3 ^ 104735476565856L; - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var1; - var1 = e(var10003); + private static Color lerpColor(Color startColor, Color endColor, float factor) { + factor = clamp01(factor); return new Color( - (int)(var5.getRed() + (var2.getRed() - var5.getRed()) * var1), - (int)(var5.getGreen() + (var2.getGreen() - var5.getGreen()) * var1), - (int)(var5.getBlue() + (var2.getBlue() - var5.getBlue()) * var1) + (int)(startColor.getRed() + (endColor.getRed() - startColor.getRed()) * factor), + (int)(startColor.getGreen() + (endColor.getGreen() - startColor.getGreen()) * factor), + (int)(startColor.getBlue() + (endColor.getBlue() - startColor.getBlue()) * factor) ); } - private RenderHelper12 a_RenderHelper12(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 9974884422292L ^ var2; - long var4 = var2 ^ 104144041804736L; - long var6 = var2 ^ 134209061631700L; - long var8 = var2 ^ 128150156218829L; - Event.b(); - float var11 = MatrixStack.a_float_______________(new Object[]{var6}); - if (b.player.isUsingItem()) { - ItemStack var12 = b.player.getActiveItem(); - if (var12 != null && !var12.isEmpty()) { - if (var12.getItem() instanceof BowItem) { - RenderHelper12 var21 = new RenderHelper12(); - var21.a = Math.min(1.0F, (b.player.getItemUseTime() + var11) / 20.0F); - return var21; + private CooldownProgress getActiveProgress() { + float tickDelta = Render2D.getTickDelta(); + if (mc.player.isUsingItem()) { + ItemStack activeStack = mc.player.getActiveItem(); + if (activeStack != null && !activeStack.isEmpty()) { + if (activeStack.getItem() instanceof BowItem) { + CooldownProgress bowProgress = new CooldownProgress(); + bowProgress.progress = Math.min(1.0F, (mc.player.getItemUseTime() + tickDelta) / 20.0F); + return bowProgress; } - if (var12.getItem() instanceof CrossbowItem) { - RenderHelper12 var20 = new RenderHelper12(); - int var22 = Math.max(1, CrossbowItem.getPullTime(var12, b.player)); - var20.a = Math.min(1.0F, (b.player.getItemUseTime() + var11) / var22); - return var20; + if (activeStack.getItem() instanceof CrossbowItem) { + CooldownProgress crossbowProgress = new CooldownProgress(); + int pullTime = Math.max(1, CrossbowItem.getPullTime(activeStack, mc.player)); + crossbowProgress.progress = Math.min(1.0F, (mc.player.getItemUseTime() + tickDelta) / pullTime); + return crossbowProgress; } - if (var12.getItem() instanceof TridentItem) { - RenderHelper12 var19 = new RenderHelper12(); - var19.a = Math.min(1.0F, (b.player.getItemUseTime() + var11) / 10.0F); - return var19; + if (activeStack.getItem() instanceof TridentItem) { + CooldownProgress tridentProgress = new CooldownProgress(); + tridentProgress.progress = Math.min(1.0F, (mc.player.getItemUseTime() + tickDelta) / 10.0F); + return tridentProgress; } } } - ItemStack var10001 = b.player.getMainHandStack(); - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = var11; - var10005[0] = var10001; - float var18 = this.c(var10005); - var10001 = b.player.getOffHandStack(); - var10005 = new Object[]{null, null, var4}; - var10005[1] = var11; - var10005[0] = var10001; - float var13 = this.c(var10005); - float var14 = Math.max(var18, var13); - if (var14 > 0.001F) { - RenderHelper12 var23 = new RenderHelper12(); - var23.a = 1.0F - var14; - return var23; + float itemCooldown = Math.max(this.getItemCooldown(mc.player.getMainHandStack(), tickDelta), this.getItemCooldown(mc.player.getOffHandStack(), tickDelta)); + if (itemCooldown > 0.001F) { + CooldownProgress cooldownProgress = new CooldownProgress(); + cooldownProgress.progress = 1.0F - itemCooldown; + return cooldownProgress; } else { - if (this.f(new Object[]{b.player.getMainHandStack(), var8})) { - float var15 = b.player.getAttackCooldownProgress(var11); - if (var15 < 1.0F) { - RenderHelper12 var16 = new RenderHelper12(); - var16.a = var15; - return var16; + if (this.isMeleeWeapon(mc.player.getMainHandStack())) { + float attackProgress = mc.player.getAttackCooldownProgress(tickDelta); + if (attackProgress < 1.0F) { + CooldownProgress attackCooldown = new CooldownProgress(); + attackCooldown.progress = attackProgress; + return attackCooldown; } } @@ -484,28 +252,20 @@ public class CooldownIndicatorElement extends HudElement { } } - private boolean f(Object[] var1) { - ItemStack var2 = (ItemStack)var1[0]; - long var3 = (Long)var1[1]; - var3 = 9974884422292L ^ var3; - long var5 = var3 ^ 126705442536369L; - long var7 = var3 ^ 106775891638243L; - long var9 = var3 ^ 138975080893106L; - return var2 != null && !var2.isEmpty() - ? InventoryUtil.a(new Object[]{var2, var5}) - || InventoryUtil.b(new Object[]{var2, var7}) - || InventoryUtil.o(new Object[]{var2, var9}) - || var2.getItem() instanceof TridentItem + private boolean isMeleeWeapon(ItemStack stack) { + return stack != null && !stack.isEmpty() + ? InventoryUtil.isSword(stack) + || InventoryUtil.isAxe(stack) + || InventoryUtil.isMace(stack) + || stack.getItem() instanceof TridentItem : false; } - private float c(Object[] var1) { - ItemStack var5 = (ItemStack)var1[0]; - float var2 = (Float)var1[1]; - if (var5 != null && !var5.isEmpty()) { + private float getItemCooldown(ItemStack stack, float tickDelta) { + if (stack != null && !stack.isEmpty()) { try { - return b.player.getItemCooldownManager().getCooldownProgress(var5, var2); - } catch (Throwable var6) { + return mc.player.getItemCooldownManager().getCooldownProgress(stack, tickDelta); + } catch (Throwable ignored) { return 0.0F; } } else { @@ -513,96 +273,20 @@ public class CooldownIndicatorElement extends HudElement { } } - private static float d(Object[] var0) { - float var3 = (Float)var0[0]; - if (var3 <= 0.0F) { + private static float smootherStep(float value) { + if (value <= 0.0F) { return 0.0F; } else { - return var3 >= 1.0F ? 1.0F : var3 * var3 * var3 * (var3 * (var3 * 6.0F - 15.0F) + 10.0F); + return value >= 1.0F ? 1.0F : value * value * value * (value * (value * 6.0F - 15.0F) + 10.0F); } } - private static float e(Object[] var0) { - float var3 = (Float)var0[0]; - return var3 < 0.0F ? 0.0F : (var3 > 1.0F ? 1.0F : var3); + private static float clamp01(float value) { + return value < 0.0F ? 0.0F : (value > 1.0F ? 1.0F : value); } - private static Color c_Color(Object[] var0) { - Color var4 = (Color)var0[0]; - float var3 = (Float)var0[1]; - int var5 = Math.max(0, Math.min(255, (int)(var4.getAlpha() * var3))); - return new Color(var4.getRed(), var4.getGreen(), var4.getBlue(), var5); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; + private static Color scaleAlpha(Color color, float alphaScale) { + int scaledAlpha = Math.max(0, Math.min(255, (int)(color.getAlpha() * alphaScale))); + return new Color(color.getRed(), color.getGreen(), color.getBlue(), scaledAlpha); } } diff --git a/src/main/java/dev/zprestige/prestige/hud/CrosshairElement.java b/src/main/java/dev/zprestige/prestige/hud/CrosshairElement.java index c3b8c0a..defb431 100644 --- a/src/main/java/dev/zprestige/prestige/hud/CrosshairElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/CrosshairElement.java @@ -1,191 +1,59 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent14; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.MatrixStack; +import dev.zprestige.prestige.event.RenderCrosshairEvent; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.Render2D; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.entity.LivingEntity; import net.minecraft.util.hit.EntityHitResult; import org.joml.Matrix4f; public class CrosshairElement extends HudElement { - private long a; - private float g; - private static final long H = 0L; + private long lastFrameTime; + private float hitAnimation; + private static final long UNSET_TIME = 0L; - public CrosshairElement(long var1) { - super("Crosshair", "Modifies the crosshair to a custom one", (21270500652092L)); - var1 = 0L; - var1 = 71572427898317L ^ var1; - long var3 = var1 ^ 90435594832369L; - this.a = H; - this.g = 0.0F; + public CrosshairElement() { + super("Crosshair", "Modifies the crosshair to a custom one"); + this.lastFrameTime = UNSET_TIME; + this.hitAnimation = 0.0F; } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - float var10001 = b.getWindow().getScaledWidth() / 2.0F; - float var10002 = b.getWindow().getScaledHeight() / 2.0F; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = var10002; - var10005[0] = var10001; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(mc.getWindow().getScaledWidth() / 2.0F, mc.getWindow().getScaledHeight() / 2.0F); } @Override - public void l(Object[] var1) { - Matrix4f var6 = (Matrix4f)var1[2]; - long var2 = (Long)var1[3]; - long var7 = var2 ^ 36129254667080L; - long var9 = var2 ^ 27807340928064L; - long var11 = var2 ^ 6014253680539L; - long var13 = var2 ^ 40687861210047L; - long var15 = var2 ^ 28434091708354L; - Object[] var10004 = new Object[]{null, 0.0F}; - var10004[0] = 0.0F; - this.i(var10004); - Event.b(); - float var18 = (float)Math.sqrt(var6.m00() * var6.m00() + var6.m01() * var6.m01() + var6.m02() * var6.m02()); - float var10002 = b.getWindow().getScaledWidth() / 2.0F / var18; - float var10003 = b.getWindow().getScaledHeight() / 2.0F / var18; - Object[] var10006 = new Object[]{null, null, var7}; - var10006[1] = var10003; - var10006[0] = var10002; - this.a_void_______(var10006); - float var19 = (float)(System.currentTimeMillis() - this.a) * 0.005F; - this.a = System.currentTimeMillis(); - boolean var20 = b.crosshairTarget instanceof EntityHitResult var22 && var22.getEntity() instanceof LivingEntity var21 && var21.hurtTime > 0; - float var10001 = this.g; - var10002 = var20 ? 1.0F : 0.0F; - var10003 = var20 ? var19 * 3.0F : var19; - var10006 = new Object[]{null, null, null, var11}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - this.g = MathHelper4.b_float______(var10006); - float var28 = ((float)Math.sin(System.currentTimeMillis() * 0.003) + 1.0F) * 0.5F; - Color var29 = MathHelper4.d(new Object[]{var9}); - Color var31 = new Color( - var29.getRed() + (int)((255 - var29.getRed()) * this.g), - var29.getGreen() + (int)((255 - var29.getGreen()) * this.g), - var29.getBlue() + (int)((255 - var29.getBlue()) * this.g) + public void render(dev.zprestige.prestige.render.BufferSource batch, dev.zprestige.prestige.data.CameraMatrices cameraData, Matrix4f matrix) { + this.setSize(0.0F, 0.0F); + float matrixScale = (float)Math.sqrt(matrix.m00() * matrix.m00() + matrix.m01() * matrix.m01() + matrix.m02() * matrix.m02()); + this.setPosition(mc.getWindow().getScaledWidth() / 2.0F / matrixScale, mc.getWindow().getScaledHeight() / 2.0F / matrixScale); + float frameDelta = (float)(System.currentTimeMillis() - this.lastFrameTime) * 0.005F; + this.lastFrameTime = System.currentTimeMillis(); + boolean targetHurt = mc.crosshairTarget instanceof EntityHitResult entityHit && entityHit.getEntity() instanceof LivingEntity livingTarget && livingTarget.hurtTime > 0; + this.hitAnimation = UiMath.approach(this.hitAnimation, targetHurt ? 1.0F : 0.0F, targetHurt ? frameDelta * 3.0F : frameDelta); + float pulse = ((float)Math.sin(System.currentTimeMillis() * 0.003) + 1.0F) * 0.5F; + Color accent = UiMath.getAccentColor(); + Color crosshairColor = new Color( + accent.getRed() + (int)((255 - accent.getRed()) * this.hitAnimation), + accent.getGreen() + (int)((255 - accent.getGreen()) * this.hitAnimation), + accent.getBlue() + (int)((255 - accent.getBlue()) * this.hitAnimation) ); - short var32 = 27785; - float var24 = this.e - 0.5F; - long var33 = 3325764817997220311L ^ var2; - float var25 = this.f - 0.5F; - float var26 = 1.5F + var28 * 0.3F + this.g * 1.25F; - int var27 = Math.min(255, 190 + (int)(65.0F * Math.max(var28 * 0.5F, this.g))); - Object[] var10007 = new Object[]{null, null, null, null, new Color(0, 0, 0, 90), var15}; - var10007[3] = 0.9F; - var10007[2] = var25; - var10007[1] = var24; - var10007[0] = var6; - MatrixStack.c_void_(var10007); - var10007 = new Object[]{null, null, null, null, var31, var15}; - var10007[3] = 0.5F; - var10007[2] = var25; - var10007[1] = var24; - var10007[0] = var6; - MatrixStack.c_void_(var10007); - var10003 = var26 - 0.5F; - var10007 = new Object[]{null, null, null, null, new Color(0, 0, 0, 60), var13}; - var10007[3] = var10003; - var10007[2] = var25; - var10007[1] = var24; - var10007[0] = var6; - MatrixStack.e(var10007); - var10003 = var26 + 0.5F; - var10007 = new Object[]{null, null, null, null, new Color(0, 0, 0, 60), var13}; - var10007[3] = var10003; - var10007[2] = var25; - var10007[1] = var24; - var10007[0] = var6; - MatrixStack.e(var10007); - var10007 = new Object[]{null, null, null, null, new Color(var31.getRed(), var31.getGreen(), var31.getBlue(), var27), var13}; - var10007[3] = var26; - var10007[2] = var25; - var10007[1] = var24; - var10007[0] = var6; - MatrixStack.e(var10007); + float centerX = this.x - 0.5F; + float centerY = this.y - 0.5F; + float ringRadius = 1.5F + pulse * 0.3F + this.hitAnimation * 1.25F; + int ringAlpha = Math.min(255, 190 + (int)(65.0F * Math.max(pulse * 0.5F, this.hitAnimation))); + Render2D.drawCircle(matrix, centerX, centerY, 0.9F, new Color(0, 0, 0, 90)); + Render2D.drawCircle(matrix, centerX, centerY, 0.5F, crosshairColor); + Render2D.drawCircleOutline(matrix, centerX, centerY, ringRadius - 0.5F, new Color(0, 0, 0, 60)); + Render2D.drawCircleOutline(matrix, centerX, centerY, ringRadius + 0.5F, new Color(0, 0, 0, 60)); + Render2D.drawCircleOutline(matrix, centerX, centerY, ringRadius, new Color(crosshairColor.getRed(), crosshairColor.getGreen(), crosshairColor.getBlue(), ringAlpha)); } @Subscribe - public void a(TickEvent14 var1) { - var1.a_void_____(new Object[0]); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onRenderCrosshair(RenderCrosshairEvent event) { + event.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/hud/FPSElement.java b/src/main/java/dev/zprestige/prestige/hud/FPSElement.java index 4efcb12..98de8cd 100644 --- a/src/main/java/dev/zprestige/prestige/hud/FPSElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/FPSElement.java @@ -1,353 +1,165 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; import dev.zprestige.prestige.gui.HudEditorScreen; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import org.joml.Matrix4f; public class FPSElement extends HudElement { - private static final int a = 24; - private FontRenderer d; - private final float[] g; - private int h; - private long i; - private long j; - private float k; - private float l; - private float o; - private float p; - private float t; + private GlTextureHandle iconTexture; + private final float[] fpsHistory; + private int historyIndex; + private long lastSampleTime; + private long lastFrameTime; + private float smoothedFps; + private float colorRed; + private float colorGreen; + private float colorBlue; + private float lastWidth; - public FPSElement(long var1) { - super("FPS", "Show the client's fps", (57362973462326L)); - var1 = 0L; - var1 = 127159346024597L ^ var1; - long var3 = var1 ^ 78672191971235L; - this.g = new float[24]; - this.h = 0; - this.i = 0L; - this.j = 0L; - this.k = -1.0F; - this.l = -1.0F; - this.t = 0.0F; + public FPSElement() { + super("FPS", "Show the client's fps"); + this.fpsHistory = new float[24]; + this.historyIndex = 0; + this.lastSampleTime = 0L; + this.lastFrameTime = 0L; + this.smoothedFps = -1.0F; + this.colorRed = -1.0F; + this.lastWidth = 0.0F; } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 23.0F; - var10005[0] = 2.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(2.0F, 23.0F); } @Override - public void l(Object[] var1) { - RenderHelper8 var4 = (RenderHelper8)var1[0]; - MatrixCameraData var5 = (MatrixCameraData)var1[1]; - Matrix4f var6 = (Matrix4f)var1[2]; - long var2 = (Long)var1[3]; - long var7 = var2 ^ 57131357196865L; - long var9 = var2 ^ 132449650111663L; - long var11 = var2 ^ 95334181894420L; - long var13 = var2 ^ 27807340928064L; - long var15 = var2 ^ 89135395443612L; - long var17 = var2 ^ 102693909475685L; - long var19 = var2 ^ 6014253680539L; - long var21 = var2 ^ 131934975778103L; - long var23 = var2 ^ 54030867045760L; - long var25 = var2 ^ 19313467402120L; - long var27 = var2 ^ 18460198684232L; - long var29 = var2 ^ 101037798966850L; - if (this.d == null) { - this.d = TextureUtil.a(new Object[]{"assets/prestige/icons/hud/fps.png", var7}); + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + if (this.iconTexture == null) { + this.iconTexture = TextureLoader.loadTexture("assets/prestige/icons/hud/fps.png"); } - int var32 = b.getCurrentFps(); - long var33 = System.currentTimeMillis(); - float var35 = (float)(var33 - this.j) * 0.005F; - this.j = var33; - if (var33 - this.i >= 100L) { - this.g[this.h] = var32; - this.h = (this.h + 1) % 24; - this.i = var33; + int currentFps = mc.getCurrentFps(); + long now = System.currentTimeMillis(); + float frameDelta = (float)(now - this.lastFrameTime) * 0.005F; + this.lastFrameTime = now; + if (now - this.lastSampleTime >= 100L) { + this.fpsHistory[this.historyIndex] = currentFps; + this.historyIndex = (this.historyIndex + 1) % 24; + this.lastSampleTime = now; } - float var10001; - if (this.k < 0.0F) { - var10001 = var32; + float lerpValue; + if (this.smoothedFps < 0.0F) { + lerpValue = currentFps; } else { - var10001 = this.k; - float var10002 = var32; - float var10003 = var35 * 0.5F; - Object[] var10006 = new Object[]{null, null, null, var19}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - var10001 = MathHelper4.b_float______(var10006); + lerpValue = this.smoothedFps; + float lerpTarget = currentFps; + lerpValue = UiMath.approach(lerpValue, lerpTarget, frameDelta * 0.5F); } - this.k = var10001; - float var10000 = this.k; - Object[] var88 = new Object[]{null, var27}; - var88[0] = var10000; - Color var36 = a(var88); - if (this.l < 0.0F) { - this.l = var36.getRed(); - this.o = var36.getGreen(); - this.p = var36.getBlue(); + this.smoothedFps = lerpValue; + Color targetColor = getFpsColor(this.smoothedFps); + if (this.colorRed < 0.0F) { + this.colorRed = targetColor.getRed(); + this.colorGreen = targetColor.getGreen(); + this.colorBlue = targetColor.getBlue(); } else { - var10001 = this.l; - float var83 = var36.getRed(); - Object[] var95 = new Object[]{null, null, null, var19}; - var95[2] = var35; - var95[1] = var83; - var95[0] = var10001; - this.l = MathHelper4.b_float______(var95); - var10001 = this.o; - var83 = var36.getGreen(); - var95 = new Object[]{null, null, null, var19}; - var95[2] = var35; - var95[1] = var83; - var95[0] = var10001; - this.o = MathHelper4.b_float______(var95); - var10001 = this.p; - var83 = var36.getBlue(); - var95 = new Object[]{null, null, null, var19}; - var95[2] = var35; - var95[1] = var83; - var95[0] = var10001; - this.p = MathHelper4.b_float______(var95); + lerpValue = this.colorRed; + float channelTarget = targetColor.getRed(); + this.colorRed = UiMath.approach(lerpValue, channelTarget, frameDelta); + lerpValue = this.colorGreen; + channelTarget = targetColor.getGreen(); + this.colorGreen = UiMath.approach(lerpValue, channelTarget, frameDelta); + lerpValue = this.colorBlue; + channelTarget = targetColor.getBlue(); + this.colorBlue = UiMath.approach(lerpValue, channelTarget, frameDelta); } - Color var37 = new Color((int)this.l, (int)this.o, (int)this.p); - String var38 = String.valueOf(var32); - float var39 = Prestige.c.a(new Object[]{var21}).c_float___(new Object[]{var23}); - float var40 = Prestige.c.a(new Object[]{var21}).a_float______________(new Object[]{var38, var17}) * 1.0F; - float var41 = Prestige.c.a(new Object[]{var21}).a_float______________(new Object[]{"fps", var17}) * 0.65F; - float var42 = var39 * 1.0F; - float var43 = var39 * 0.65F; - float var44 = 7.5F; - float var45 = 5.5F + var44 + 5.5F; - float var46 = var45 + 0.5F + 5.5F; - float var47 = Math.max(var40 + 3.0F + var41, 28.0F); - float var48 = var46 + var47 + 5.5F; - float var49 = NameTagsUtil.b(new Object[]{var39}); - boolean var50 = this.c_boolean__(new Object[0]); - boolean var51 = b.currentScreen instanceof HudEditorScreen; - if (var50 && this.t > 0.0F && !var51) { - this.e = this.e - (var48 - this.t); + Color fpsColor = new Color((int)this.colorRed, (int)this.colorGreen, (int)this.colorBlue); + String fpsText = String.valueOf(currentFps); + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + float valueWidth = Prestige.fontManager.getDefaultFont().getTextWidth(fpsText) * 1.0F; + float unitWidth = Prestige.fontManager.getDefaultFont().getTextWidth("fps") * 0.65F; + float valueHeight = fontHeight * 1.0F; + float unitHeight = fontHeight * 0.65F; + float iconSize = 7.5F; + float iconSectionWidth = 5.5F + iconSize + 5.5F; + float contentOffset = iconSectionWidth + 0.5F + 5.5F; + float panelWidth = contentOffset + Math.max(valueWidth + 3.0F + unitWidth, 28.0F) + 5.5F; + float panelHeight = HudStyle.getCardHeight(fontHeight); + boolean rightAligned = this.isAnchoredRight(); + boolean inEditor = mc.currentScreen instanceof HudEditorScreen; + if (rightAligned && this.lastWidth > 0.0F && !inEditor) { + this.x = this.x - (panelWidth - this.lastWidth); } - this.t = var48; - float var52 = this.e; - float var53 = this.f; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var11}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var49; - var10011[5] = var48; - var10011[4] = var53; - var10011[3] = var52; - var10011[2] = var6; - var10011[1] = var5; - var10011[0] = var4; - RenderTarget.e(var10011); - Color var10007 = NameTagsUtil.r; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var9}; - var10011[8] = 4.0F; - var10011[7] = var10007; - var10011[6] = var49; - var10011[5] = var48; - var10011[4] = var53; - var10011[3] = var52; - var10011[2] = var6; - var10011[1] = var5; - var10011[0] = var4; - RoundedPosColorShader.c(var10011); - Color var54 = MathHelper4.d(new Object[]{var13}); - float var55 = var50 ? var52 + var48 - 5.5F - var44 : var52 + 5.5F; - float var56 = var50 ? var52 + var48 - var45 - 0.5F : var52 + var45; - FontRenderer var89 = this.d; - float var10005 = var53 + var49 / 2.0F - var44 / 2.0F; - var10011 = new Object[]{null, null, null, null, null, null, null, null, var54, var25}; - var10011[7] = var44; - var10011[6] = var44; - var10011[5] = var10005; - var10011[4] = var55; - var10011[3] = var89; - var10011[2] = var6; - var10011[1] = var5; - var10011[0] = var4; - RoundedTextureShader.c(var10011); - float var86 = var53 + 3.0F; - float var90 = var56 + 0.5F; - float var10004 = var53 + var49 - 3.0F; - Object[] var10008 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var15}; - var10008[4] = var10004; - var10008[3] = var90; - var10008[2] = var86; - var10008[1] = var56; - var10008[0] = var6; - RenderState.l(var10008); - float var57 = var53 + 3.0F; - float var58; - float var59; - if (var50) { - float var60 = var52 + var48 - var46; - var59 = var60 - var41; - var58 = var59 - 3.0F - var40; + this.lastWidth = panelWidth; + float panelX = this.x; + float panelY = this.y; + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, HudStyle.BACKGROUND_COLOR, 4.0F); + Color accent = UiMath.getAccentColor(); + float iconX = rightAligned ? panelX + panelWidth - 5.5F - iconSize : panelX + 5.5F; + float dividerX = rightAligned ? panelX + panelWidth - iconSectionWidth - 0.5F : panelX + iconSectionWidth; + RoundedTextureShader.drawTexture(batch, cameraData, matrix, this.iconTexture, iconX, panelY + panelHeight / 2.0F - iconSize / 2.0F, iconSize, iconSize, accent); + ShapeRenderer.drawRect(matrix, dividerX, panelY + 3.0F, dividerX + 0.5F, panelY + panelHeight - 3.0F, HudStyle.DIVIDER_COLOR); + float textY = panelY + 3.0F; + float valueX; + float unitX; + if (rightAligned) { + unitX = (panelX + panelWidth - contentOffset) - unitWidth; + valueX = unitX - 3.0F - valueWidth; } else { - var58 = var52 + var46; - var59 = var58 + var40 + 3.0F; + valueX = panelX + contentOffset; + unitX = valueX + valueWidth + 3.0F; } - Font var76 = Prestige.c.a(new Object[]{var21}); - Object[] var10009 = new Object[]{null, null, null, null, null, var37, var29}; - var10009[4] = 1.0F; - var10009[3] = var57; - var10009[2] = var58; - var10009[1] = var38; - var10009[0] = var6; - var76.w(var10009); - Font var77 = Prestige.c.a(new Object[]{var21}); - var10004 = var57 + (var42 - var43) - 0.5F; - var10009 = new Object[]{null, null, null, null, null, NameTagsUtil.t, var29}; - var10009[4] = 0.65F; - var10009[3] = var10004; - var10009[2] = var59; - var10009[1] = "fps"; - var10009[0] = var6; - var77.w(var10009); - float var71 = var57 + var42 + 1.0F + 4.0F; - float var61 = var50 ? var52 + 5.5F : var52 + var46; - float var62 = var50 ? var52 + var48 - var46 : var52 + var48 - 5.5F; - float var63 = (var62 - var61) / 24.0F; - float var64 = 60.0F; + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, fpsText, valueX, textY, 1.0F, fpsColor); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, "fps", unitX, textY + (valueHeight - unitHeight) - 0.5F, 0.65F, HudStyle.SECONDARY_TEXT_COLOR); + float graphBaseY = textY + valueHeight + 1.0F + 4.0F; + float graphX = rightAligned ? panelX + 5.5F : panelX + contentOffset; + float barWidth = ((rightAligned ? panelX + panelWidth - contentOffset : panelX + panelWidth - 5.5F) - graphX) / 24.0F; + float graphMax = 60.0F; - for (float var68 : this.g) { - if (var68 > var64) { - var64 = var68; + for (float sample : this.fpsHistory) { + if (sample > graphMax) { + graphMax = sample; } } - for (int var72 = 0; var72 < 24; var72++) { - float var73 = this.g[(this.h + var72) % 24]; - if (!(var73 <= 0.0F)) { - float var74 = 0.5F + var73 / var64 * 3.5F; - float var75 = var61 + var72 * var63; - var88 = new Object[]{null, var27}; - var88[0] = var73; - Color var69 = a(var88); - int var70 = var72 == 23 ? 220 : 110; - var10001 = var75 + 0.2F; - var86 = var71 - var74; - float var92 = var75 + var63 - 0.2F; - var10008 = new Object[]{null, null, null, null, null, new Color(var69.getRed(), var69.getGreen(), var69.getBlue(), var70), var15}; - var10008[4] = var71; - var10008[3] = var92; - var10008[2] = var86; - var10008[1] = var10001; - var10008[0] = var6; - RenderState.l(var10008); + for (int barIndex = 0; barIndex < 24; barIndex++) { + float barSample = this.fpsHistory[(this.historyIndex + barIndex) % 24]; + if (!(barSample <= 0.0F)) { + float barHeight = 0.5F + barSample / graphMax * 3.5F; + float barX = graphX + barIndex * barWidth; + Color barColor = getFpsColor(barSample); + int barAlpha = barIndex == 23 ? 220 : 110; + lerpValue = barX + 0.2F; + ShapeRenderer.drawRect(matrix, lerpValue, graphBaseY - barHeight, barX + barWidth - 0.2F, graphBaseY, new Color(barColor.getRed(), barColor.getGreen(), barColor.getBlue(), barAlpha)); } } - Object[] var94 = new Object[]{null, var49}; - var94[0] = var48; - this.i(var94); + this.setSize(panelWidth, panelHeight); } - private static Color a(Object[] var0) { - float var3 = (Float)var0[0]; - if (var3 >= 120.0F) { + private static Color getFpsColor(float fps) { + if (fps >= 120.0F) { return new Color(96, 220, 130); - } else if (var3 >= 60.0F) { + } else if (fps >= 60.0F) { return new Color(240, 200, 80); } else { - return var3 >= 30.0F ? new Color(245, 145, 60) : new Color(235, 75, 70); - } - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + return fps >= 30.0F ? new Color(245, 145, 60) : new Color(235, 75, 70); } } } diff --git a/src/main/java/dev/zprestige/prestige/hud/HudElement.java b/src/main/java/dev/zprestige/prestige/hud/HudElement.java index b93a167..78857ac 100644 --- a/src/main/java/dev/zprestige/prestige/hud/HudElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/HudElement.java @@ -2,587 +2,360 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; import dev.zprestige.prestige.gui.HudEditorScreen; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderHelper19; -import dev.zprestige.prestige.render.RenderHelper21; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.type.SettingFlag; -import dev.zprestige.prestige.type.TrajectoryType; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.AxisSwitchMap; +import dev.zprestige.prestige.render.SnapGuide; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.type.HudAlignment; +import dev.zprestige.prestige.type.HudAnchor; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import org.joml.Matrix4f; import org.joml.Vector4f; import org.lwjgl.glfw.GLFW; -public class HudElement implements RenderContract2 { - private final String a; - private final String c; - private final BoolSetting d; - public float e; - public float f; - public float g; - public float h; - public SettingFlag i; - public SettingFlag j; - public float k; - public float l; - private static final float m = 8.0F; - private boolean n; - private float o; - private float p; - private boolean q; - private boolean r; - private boolean s; - private float t; - private float u; - private static final String A = "Enabled"; +public class HudElement implements MinecraftAccess { + private final String name; + private final String description; + private final BoolSetting enabledSetting; + public float x; + public float y; + public float width; + public float height; + public HudAlignment anchorX; + public HudAlignment anchorY; + public float offsetX; + public float offsetY; + private boolean positionPending; + private float pendingX; + private float pendingY; + private boolean xClamped; + private boolean yClamped; + private boolean dragging; + private float dragOffsetX; + private float dragOffsetY; + private static final String ENABLED_SETTING_NAME = "Enabled"; - public HudElement(String var1, String var2, long var3) { - this.d = new BoolSetting(A, false); - this.e = 0.0F; - this.f = 0.0F; - this.g = 0.0F; - this.h = 0.0F; - this.i = SettingFlag.Start; - this.j = SettingFlag.Start; - this.k = 0.0F; - this.l = 0.0F; - this.n = false; - this.o = 0.0F; - this.p = 0.0F; - this.q = false; - this.r = false; - this.s = false; - this.t = 0.0F; - this.u = 0.0F; - this.a = var1; - this.c = var2; + public HudElement(String elementName, String elementDescription) { + this.enabledSetting = new BoolSetting(ENABLED_SETTING_NAME, false); + this.x = 0.0F; + this.y = 0.0F; + this.width = 0.0F; + this.height = 0.0F; + this.anchorX = HudAlignment.Start; + this.anchorY = HudAlignment.Start; + this.offsetX = 0.0F; + this.offsetY = 0.0F; + this.positionPending = false; + this.pendingX = 0.0F; + this.pendingY = 0.0F; + this.xClamped = false; + this.yClamped = false; + this.dragging = false; + this.dragOffsetX = 0.0F; + this.dragOffsetY = 0.0F; + this.name = elementName; + this.description = elementDescription; } - public void a_void_______(Object[] var1) { - float var2 = (Float)var1[0]; - float var5 = (Float)var1[1]; - long var3 = (Long)var1[2]; - var3 = 108265149825913L ^ var3; - long var6 = var3 ^ 80516450163907L; - this.e = var2; - this.f = var5; - this.b_void_(new Object[]{var6}); + public void setPosition(float newX, float newY) { + this.x = newX; + this.y = newY; + this.recomputeAnchors(); } - public boolean a_boolean_____(Object[] var1) { - return this.s; + public boolean isDragging() { + return this.dragging; } - public void b_void_(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 108265149825913L ^ var2; - long var4 = var2 ^ 76320656023544L; - long var6 = var2 ^ 19124974948314L; - long var8 = var2 ^ 3254206067272L; - if (b.getWindow() != null) { - if (!(this.g <= 0.0F) && !(this.h <= 0.0F)) { - this.n = false; - float var10001 = b.getWindow().getFramebufferWidth() / HudEditorScreen.b(new Object[]{var4}); - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = var10001; - this.c(var10004); - var10001 = b.getWindow().getFramebufferHeight() / HudEditorScreen.b(new Object[]{var4}); - var10004 = new Object[]{null, var8}; - var10004[0] = var10001; - this.d(var10004); + public void recomputeAnchors() { + if (mc.getWindow() != null) { + if (!(this.width <= 0.0F) && !(this.height <= 0.0F)) { + this.positionPending = false; + this.computeAnchorX(mc.getWindow().getFramebufferWidth() / HudEditorScreen.getHudPixelScale()); + this.computeAnchorY(mc.getWindow().getFramebufferHeight() / HudEditorScreen.getHudPixelScale()); } else { - this.o = this.e; - this.p = this.f; - this.n = true; + this.pendingX = this.x; + this.pendingY = this.y; + this.positionPending = true; } } } - private void c(Object[] var1) { - float var4 = (Float)var1[0]; - Event.b(); - float var6 = this.e + this.g / 2.0F - var4 / 2.0F; - if (Math.abs(var6) <= 8.0F) { - this.i = SettingFlag.Center; - this.k = var6; - } else if (var6 < 0.0F) { - this.i = SettingFlag.Start; - this.k = this.e; + private void computeAnchorX(float screenWidth) { + float centerDelta = this.x + this.width / 2.0F - screenWidth / 2.0F; + if (Math.abs(centerDelta) <= 8.0F) { + this.anchorX = HudAlignment.Center; + this.offsetX = centerDelta; + } else if (centerDelta < 0.0F) { + this.anchorX = HudAlignment.Start; + this.offsetX = this.x; } else { - this.i = SettingFlag.End; - this.k = var4 - (this.e + this.g); + this.anchorX = HudAlignment.End; + this.offsetX = screenWidth - (this.x + this.width); } } - private void d(Object[] var1) { - float var2 = (Float)var1[0]; - Event.b(); - float var6 = this.f + this.h / 2.0F - var2 / 2.0F; - if (Math.abs(var6) <= 8.0F) { - this.j = SettingFlag.Center; - this.l = var6; - } else if (var6 < 0.0F) { - this.j = SettingFlag.Start; - this.l = this.f; + private void computeAnchorY(float screenHeight) { + float centerDelta = this.y + this.height / 2.0F - screenHeight / 2.0F; + if (Math.abs(centerDelta) <= 8.0F) { + this.anchorY = HudAlignment.Center; + this.offsetY = centerDelta; + } else if (centerDelta < 0.0F) { + this.anchorY = HudAlignment.Start; + this.offsetY = this.y; } else { - this.j = SettingFlag.End; - this.l = var2 - (this.f + this.h); + this.anchorY = HudAlignment.End; + this.offsetY = screenHeight - (this.y + this.height); } } - public boolean b_boolean____(Object[] var1) { - return this.n; + public boolean isPositionPending() { + return this.positionPending; } - public boolean c_boolean__(Object[] var1) { - return this.i == SettingFlag.End; + public boolean isAnchoredRight() { + return this.anchorX == HudAlignment.End; } - public boolean d_boolean(Object[] var1) { - return this.j == SettingFlag.End; + public boolean isAnchoredBottom() { + return this.anchorY == HudAlignment.End; } - public void e_void(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 108265149825913L ^ var2; - long var4 = var2 ^ 112449576529060L; - long var6 = var2 ^ 71859320860709L; - if (b.getWindow() != null) { - float var9 = b.getWindow().getFramebufferWidth() / HudEditorScreen.b(new Object[]{var4}); - float var10 = b.getWindow().getFramebufferHeight() / HudEditorScreen.b(new Object[]{var4}); - if (this.n) { - if (!(this.g > 0.0F) || !(this.h > 0.0F)) { - this.e = Math.clamp(this.o, 0.0F, Math.max(0.0F, var9 - this.g)); - this.f = Math.clamp(this.p, 0.0F, Math.max(0.0F, var10 - this.h)); + public void resolvePosition() { + if (mc.getWindow() != null) { + float screenWidth = mc.getWindow().getFramebufferWidth() / HudEditorScreen.getHudPixelScale(); + float screenHeight = mc.getWindow().getFramebufferHeight() / HudEditorScreen.getHudPixelScale(); + if (this.positionPending) { + if (!(this.width > 0.0F) || !(this.height > 0.0F)) { + this.x = Math.clamp(this.pendingX, 0.0F, Math.max(0.0F, screenWidth - this.width)); + this.y = Math.clamp(this.pendingY, 0.0F, Math.max(0.0F, screenHeight - this.height)); return; } - this.e = this.o; - this.f = this.p; - this.b_void_(new Object[]{var6}); + this.x = this.pendingX; + this.y = this.pendingY; + this.recomputeAnchors(); } - float var11 = switch (this.i) { - case Start -> this.k; - case Center -> var9 / 2.0F - this.g / 2.0F + this.k; - case End -> var9 - this.k - this.g; + float anchoredX = switch (this.anchorX) { + case Start -> this.offsetX; + case Center -> screenWidth / 2.0F - this.width / 2.0F + this.offsetX; + case End -> screenWidth - this.offsetX - this.width; }; - float var12 = switch (this.j) { - case Start -> this.l; - case Center -> var10 / 2.0F - this.h / 2.0F + this.l; - case End -> var10 - this.l - this.h; + float anchoredY = switch (this.anchorY) { + case Start -> this.offsetY; + case Center -> screenHeight / 2.0F - this.height / 2.0F + this.offsetY; + case End -> screenHeight - this.offsetY - this.height; }; - this.e = Math.clamp(var11, 0.0F, Math.max(0.0F, var9 - this.g)); - this.f = Math.clamp(var12, 0.0F, Math.max(0.0F, var10 - this.h)); - this.q = this.e != var11; - this.r = this.f != var12; + this.x = Math.clamp(anchoredX, 0.0F, Math.max(0.0F, screenWidth - this.width)); + this.y = Math.clamp(anchoredY, 0.0F, Math.max(0.0F, screenHeight - this.height)); + this.xClamped = this.x != anchoredX; + this.yClamped = this.y != anchoredY; } } - public void f_void(Object[] var1) { - SettingFlag var7 = (SettingFlag)var1[0]; - SettingFlag var6 = (SettingFlag)var1[1]; - float var2 = (Float)var1[2]; - float var3 = (Float)var1[3]; - long var4 = (Long)var1[4]; - var4 = 108265149825913L ^ var4; - long var8 = var4 ^ 102782441257463L; - this.i = var7; - this.j = var6; - this.k = var2; - this.l = var3; - this.n = false; - this.e_void(new Object[]{var8}); + public void setAnchors(HudAlignment newAnchorX, HudAlignment newAnchorY, float newOffsetX, float newOffsetY) { + this.anchorX = newAnchorX; + this.anchorY = newAnchorY; + this.offsetX = newOffsetX; + this.offsetY = newOffsetY; + this.positionPending = false; + this.resolvePosition(); } - public void g(Object[] var1) { - TrajectoryType var2 = (TrajectoryType)var1[0]; - float var4 = (Float)var1[1]; - float var3 = (Float)var1[2]; - long var5 = (Long)var1[3]; - var5 = 108265149825913L ^ var5; - long var7 = var5 ^ 111696313189519L; - boolean var10 = var2 == TrajectoryType.TopLeft || var2 == TrajectoryType.BottomLeft; - boolean var11 = var2 == TrajectoryType.TopLeft || var2 == TrajectoryType.TopRight; - SettingFlag var10001 = var10 ? SettingFlag.Start : SettingFlag.End; - SettingFlag var10002 = var11 ? SettingFlag.Start : SettingFlag.End; - Object[] var10007 = new Object[]{null, null, null, null, var7}; - var10007[3] = var3; - var10007[2] = var4; - var10007[1] = var10002; - var10007[0] = var10001; - this.f_void(var10007); + public void setCornerAnchor(HudAnchor corner, float cornerOffsetX, float cornerOffsetY) { + this.setAnchors((corner == HudAnchor.TopLeft || corner == HudAnchor.BottomLeft) ? HudAlignment.Start : HudAlignment.End, (corner == HudAnchor.TopLeft || corner == HudAnchor.TopRight) ? HudAlignment.Start : HudAlignment.End, cornerOffsetX, cornerOffsetY); } - public void h(Object[] var1) { - float var2 = (Float)var1[0]; - float var5 = (Float)var1[1]; - long var3 = (Long)var1[2]; - var3 = 108265149825913L ^ var3; - long var6 = var3 ^ 108113242399259L; - long var8 = var3 ^ 112591891647942L; - long var10 = var3 ^ 59756880949817L; - long var12 = var3 ^ 41542923587499L; - if (this.n) { - this.o += var2; - this.p += var5; - this.e += var2; - this.f += var5; + public void nudge(float deltaX, float deltaY) { + if (this.positionPending) { + this.pendingX += deltaX; + this.pendingY += deltaY; + this.x += deltaX; + this.y += deltaY; } else { - this.k = this.k + (this.i == SettingFlag.End ? -var2 : var2); - this.l = this.l + (this.j == SettingFlag.End ? -var5 : var5); - this.e_void(new Object[]{var8}); - if (b.getWindow() != null && !(this.g <= 0.0F) && !(this.h <= 0.0F)) { - if (!this.q) { - float var10001 = b.getWindow().getFramebufferWidth() / HudEditorScreen.b(new Object[]{var6}); - Object[] var10004 = new Object[]{null, var10}; - var10004[0] = var10001; - this.c(var10004); + this.offsetX = this.offsetX + (this.anchorX == HudAlignment.End ? -deltaX : deltaX); + this.offsetY = this.offsetY + (this.anchorY == HudAlignment.End ? -deltaY : deltaY); + this.resolvePosition(); + if (mc.getWindow() != null && !(this.width <= 0.0F) && !(this.height <= 0.0F)) { + if (!this.xClamped) { + this.computeAnchorX(mc.getWindow().getFramebufferWidth() / HudEditorScreen.getHudPixelScale()); } - if (!this.r) { - float var15 = b.getWindow().getFramebufferHeight() / HudEditorScreen.b(new Object[]{var6}); - Object[] var16 = new Object[]{null, var12}; - var16[0] = var15; - this.d(var16); + if (!this.yClamped) { + this.computeAnchorY(mc.getWindow().getFramebufferHeight() / HudEditorScreen.getHudPixelScale()); } } } } - public void i(Object[] var1) { - float var3 = (Float)var1[0]; - float var2 = (Float)var1[1]; - this.g = var3; - this.h = var2; + public void setSize(float newWidth, float newHeight) { + this.width = newWidth; + this.height = newHeight; } - public void j(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 111822382315182L; - long var6 = var2 ^ 98101078674063L; - long var8 = var2 ^ 55198602109446L; - this.d.setValue(!(Boolean)this.d.getValue()); - if (this.e_boolean(new Object[]{var8})) { - Prestige.eventBus.register(new Object[]{this, var6}); + public void toggle() { + this.enabledSetting.setValue(!this.enabledSetting.getValue()); + if (this.isEnabled()) { + Prestige.eventBus.register(this); } else { - Prestige.eventBus.unregister(new Object[]{this, var4}); + Prestige.eventBus.unregister(this); } } - public boolean e_boolean(Object[] var1) { - return (Boolean)this.d.getValue(); + public boolean isEnabled() { + return this.enabledSetting.getValue(); } - public void k(Object[] var1) { + public void onUpdate() { } - public void l(Object[] var1) { + public void render(dev.zprestige.prestige.render.BufferSource batch, dev.zprestige.prestige.data.CameraMatrices cameraData, Matrix4f matrix) { } - public void m(Object[] var1) { + public void resetPosition() { } - public void n(Object[] var1) { - Matrix4f var5 = (Matrix4f)var1[0]; - float var2 = (Float)var1[1]; - float var4 = (Float)var1[2]; - float var8 = (Float)var1[3]; - float var9 = (Float)var1[4]; - int var6 = (Integer)var1[5]; - int var7 = (Integer)var1[6]; - int var3 = (Integer)var1[7]; - ArrayList var10 = (ArrayList)var1[8]; - long var11 = (Long)var1[9]; - var11 = 108265149825913L ^ var11; - long var13 = var11 ^ 109773111413292L; - long var15 = var11 ^ 94645669324319L; - long var17 = var11 ^ 37312740351629L; - long var19 = var11 ^ 62262237669224L; - long var21 = var11 ^ 6904928358816L; - long var23 = var11 ^ 57673909236646L; - long var25 = var11 ^ 40029431347208L; - long var27 = var11 ^ 139062542428127L; - long var29 = var11 ^ 27004907234505L; - long var31 = var11 ^ 111752008167369L; - boolean var34 = var6 > var2 && var6 < var2 + var8 && var7 > var4 && var7 < var4 + var9; - if (this.s) { - float var35 = var6 + this.t; - float var36 = var7 + this.u; - this.e = var35; - this.f = var36; - if (GLFW.glfwGetKey(b.getWindow().getHandle(), 340) != 1) { - float var37 = 5.0F; - float var38 = 5.0F; - RenderHelper21 var39 = null; - RenderHelper21 var40 = null; - byte var41 = 0; - byte var42 = 0; + public void renderEditorRow(Matrix4f matrix, float rowX, float rowY, float rowWidth, float rowHeight, int mouseX, int mouseY, int clickState, ArrayList snapLines) { + boolean hovered = mouseX > rowX && mouseX < rowX + rowWidth && mouseY > rowY && mouseY < rowY + rowHeight; + if (this.dragging) { + float draggedX = mouseX + this.dragOffsetX; + float draggedY = mouseY + this.dragOffsetY; + this.x = draggedX; + this.y = draggedY; + if (GLFW.glfwGetKey(mc.getWindow().getHandle(), 340) != 1) { + float bestSnapDistanceX = 5.0F; + float bestSnapDistanceY = 5.0F; + SnapGuide snapLineX = null; + SnapGuide snapLineY = null; + byte snapEdgeX = 0; + byte snapEdgeY = 0; - for (RenderHelper21 var44 : (Iterable)(var10)) { - switch (RenderHelper19.a[var44.a(new Object[0]).ordinal()]) { + for (SnapGuide snapLine : (Iterable)(snapLines)) { + switch (AxisSwitchMap.SWITCH_MAP[snapLine.getAxis().ordinal()]) { case 1: - float var45 = Math.abs(var44.a_int_______________________(new Object[0]) - this.e); - float var46 = Math.abs(var44.a_int_______________________(new Object[0]) - (this.e + this.g)); - float var47 = Math.abs(var44.a_int_______________________(new Object[0]) - (this.e + this.g / 2.0F)); - if (var45 < var37) { - var37 = var45; - var39 = var44; - var41 = 0; + float leftDistance = Math.abs(snapLine.getPosition() - this.x); + float rightDistance = Math.abs(snapLine.getPosition() - (this.x + this.width)); + float centerXDistance = Math.abs(snapLine.getPosition() - (this.x + this.width / 2.0F)); + if (leftDistance < bestSnapDistanceX) { + bestSnapDistanceX = leftDistance; + snapLineX = snapLine; + snapEdgeX = 0; } - if (var46 < var37) { - var37 = var46; - var39 = var44; - var41 = 1; + if (rightDistance < bestSnapDistanceX) { + bestSnapDistanceX = rightDistance; + snapLineX = snapLine; + snapEdgeX = 1; } - if (var47 < var37) { - var37 = var47; - var39 = var44; - var41 = 2; + if (centerXDistance < bestSnapDistanceX) { + bestSnapDistanceX = centerXDistance; + snapLineX = snapLine; + snapEdgeX = 2; } break; case 2: - float var48 = Math.abs(var44.a_int_______________________(new Object[0]) - this.f); - float var49 = Math.abs(var44.a_int_______________________(new Object[0]) - (this.f + this.h)); - float var50 = Math.abs(var44.a_int_______________________(new Object[0]) - (this.f + this.h / 2.0F)); - if (var48 < var38) { - var38 = var48; - var40 = var44; - var42 = 0; + float topDistance = Math.abs(snapLine.getPosition() - this.y); + float bottomDistance = Math.abs(snapLine.getPosition() - (this.y + this.height)); + float centerYDistance = Math.abs(snapLine.getPosition() - (this.y + this.height / 2.0F)); + if (topDistance < bestSnapDistanceY) { + bestSnapDistanceY = topDistance; + snapLineY = snapLine; + snapEdgeY = 0; } - if (var49 < var38) { - var38 = var49; - var40 = var44; - var42 = 1; + if (bottomDistance < bestSnapDistanceY) { + bestSnapDistanceY = bottomDistance; + snapLineY = snapLine; + snapEdgeY = 1; } - if (var50 < var38) { - var38 = var50; - var40 = var44; - var42 = 2; + if (centerYDistance < bestSnapDistanceY) { + bestSnapDistanceY = centerYDistance; + snapLineY = snapLine; + snapEdgeY = 2; } } } - float var56 = b.getWindow().getFramebufferWidth() / HudEditorScreen.b(new Object[]{var13}); - float var57 = b.getWindow().getFramebufferHeight() / HudEditorScreen.b(new Object[]{var13}); - if (var39 != null) { - this.e = var41 == 0 - ? var39.a_int_______________________(new Object[0]) + float screenWidth = mc.getWindow().getFramebufferWidth() / HudEditorScreen.getHudPixelScale(); + float screenHeight = mc.getWindow().getFramebufferHeight() / HudEditorScreen.getHudPixelScale(); + if (snapLineX != null) { + this.x = snapEdgeX == 0 + ? snapLineX.getPosition() : ( - var41 == 1 - ? var39.a_int_______________________(new Object[0]) - this.g - : var39.a_int_______________________(new Object[0]) - this.g / 2.0F + snapEdgeX == 1 + ? snapLineX.getPosition() - this.width + : snapLineX.getPosition() - this.width / 2.0F ); - float var10001 = var39.a_int_______________________(new Object[0]) - 0.5F; - float var10003 = var39.a_int_______________________(new Object[0]) + 0.5F; - Object[] var10008 = new Object[]{null, null, null, null, null, MathHelper4.d(new Object[]{var15}), var31}; - var10008[4] = var57; - var10008[3] = var10003; - var10008[2] = -1.0F; - var10008[1] = var10001; - var10008[0] = var5; - MatrixStack.r(var10008); + Render2D.drawRect(matrix, snapLineX.getPosition() - 0.5F, -1.0F, snapLineX.getPosition() + 0.5F, screenHeight, UiMath.getAccentColor()); } - if (var40 != null) { - this.f = var42 == 0 - ? var40.a_int_______________________(new Object[0]) + if (snapLineY != null) { + this.y = snapEdgeY == 0 + ? snapLineY.getPosition() : ( - var42 == 1 - ? var40.a_int_______________________(new Object[0]) - this.h - : var40.a_int_______________________(new Object[0]) - this.h / 2.0F + snapEdgeY == 1 + ? snapLineY.getPosition() - this.height + : snapLineY.getPosition() - this.height / 2.0F ); - float var10002 = var40.a_int_______________________(new Object[0]) - 0.5F; - float var10004 = var40.a_int_______________________(new Object[0]) + 0.5F; - Object[] var66 = new Object[]{null, null, null, null, null, MathHelper4.d(new Object[]{var15}), var31}; - var66[4] = var10004; - var66[3] = var56; - var66[2] = var10002; - var66[1] = 0.0F; - var66[0] = var5; - MatrixStack.r(var66); + Render2D.drawRect(matrix, 0.0F, snapLineY.getPosition() - 0.5F, screenWidth, snapLineY.getPosition() + 0.5F, UiMath.getAccentColor()); } } } - Color var52 = this.e_boolean(new Object[]{var23}) + ShapeRenderer.drawRoundedRect(matrix, rowX, rowY, rowX + rowWidth, rowY + rowHeight, this.isEnabled() ? new Color( - MathHelper4.d(new Object[]{var15}).getRed(), MathHelper4.d(new Object[]{var15}).getGreen(), MathHelper4.d(new Object[]{var15}).getBlue(), 40 + UiMath.getAccentColor().getRed(), UiMath.getAccentColor().getGreen(), UiMath.getAccentColor().getBlue(), 40 ) - : new Color(255, 255, 255, var34 ? 12 : 5); - float var60 = var2 + var8; - float var63 = var4 + var9; - Object[] var10009 = new Object[]{null, null, null, null, null, var52, new Vector4f(3.0F), var25}; - var10009[4] = var63; - var10009[3] = var60; - var10009[2] = var4; - var10009[1] = var2; - var10009[0] = var5; - RenderState.u(var10009); - if (this.e_boolean(new Object[]{var23})) { - float var58 = var4 + 1.5F; - var60 = var2 + 2.0F; - var63 = var4 + var9 - 1.5F; - var10009 = new Object[]{null, null, null, null, null, MathHelper4.d(new Object[]{var15}), new Vector4f(1.0F), var25}; - var10009[4] = var63; - var10009[3] = var60; - var10009[2] = var58; - var10009[1] = var2; - var10009[0] = var5; - RenderState.u(var10009); + : new Color(255, 255, 255, hovered ? 12 : 5), new Vector4f(3.0F)); + if (this.isEnabled()) { + ShapeRenderer.drawRoundedRect(matrix, rowX, rowY + 1.5F, rowX + 2.0F, rowY + rowHeight - 1.5F, UiMath.getAccentColor(), new Vector4f(1.0F)); } - var60 = var2 + var8; - var63 = var4 + var9; - Color var10005 = new Color(255, 255, 255, var34 ? 18 : 8); - var10009 = new Object[]{null, null, null, null, null, null, null, var17}; - var10009[6] = 3.0F; - var10009[5] = var10005; - var10009[4] = var63; - var10009[3] = var60; - var10009[2] = var4; - var10009[1] = var2; - var10009[0] = var5; - MatrixStack.l(var10009); - float var53 = var2 + (this.e_boolean(new Object[]{var23}) ? 6.0F : 3.0F); - float var54 = var4 + var9 / 2.0F - Prestige.c.a(new Object[]{var19}).c_float___(new Object[]{var27}) / 2.0F; - Color var55 = this.e_boolean(new Object[]{var23}) ? Color.WHITE : new Color(180, 180, 180); - Font var10000 = Prestige.c.a(new Object[]{var19}); - String var59 = this.a; - Object[] var67 = new Object[]{null, null, null, null, var55, var29}; - var67[3] = var54; - var67[2] = var53; - var67[1] = var59; - var67[0] = var5; - var10000.v(var67); - if (var3 == 1 && var34) { - this.j(new Object[]{var21}); + Render2D.drawRoundedRectOutline(matrix, rowX, rowY, rowX + rowWidth, rowY + rowHeight, new Color(255, 255, 255, hovered ? 18 : 8), 3.0F); + float labelX = rowX + (this.isEnabled() ? 6.0F : 3.0F); + float labelY = rowY + rowHeight / 2.0F - Prestige.fontManager.getDefaultFont().getLineHeight() / 2.0F; + Color labelColor = this.isEnabled() ? Color.WHITE : new Color(180, 180, 180); + Prestige.fontManager.getDefaultFont().drawText(matrix, this.name, labelX, labelY, labelColor); + if (clickState == 1 && hovered) { + this.toggle(); } } - public void o(Object[] var1) { - int var4 = (Integer)var1[0]; - int var6 = (Integer)var1[1]; - boolean var5 = (Boolean)var1[2]; - long var2 = (Long)var1[3]; - var2 = 108265149825913L ^ var2; - long var7 = var2 ^ 60207457423565L; - if (var5) { - if (this.s) { - this.s = false; - this.b_void_(new Object[]{var7}); + public void handleEditorMouse(int mouseX, int mouseY, boolean released) { + if (released) { + if (this.dragging) { + this.dragging = false; + this.recomputeAnchors(); } } else { - boolean var10 = var4 > this.e && var4 < this.e + this.g && var6 > this.f && var6 < this.f + this.h; - if (var10) { - this.t = this.e - var4; - this.u = this.f - var6; - this.s = true; + if (mouseX > this.x && mouseX < this.x + this.width && mouseY > this.y && mouseY < this.y + this.height) { + this.dragOffsetX = this.x - mouseX; + this.dragOffsetY = this.y - mouseY; + this.dragging = true; } } } - public void q(Object[] var1) { - Matrix4f var2 = (Matrix4f)var1[0]; - float var10003 = this.e + this.g; - float var10004 = this.f + this.h; - long var5 = (Long)var1[1] ^ 46774337756829L; - MatrixStack.l(new Object[]{var2, this.e, this.f, var10003, var10004, Color.WHITE, 0.0F, var5}); + public void renderEditorOutline(Matrix4f matrix) { + Render2D.drawRoundedRectOutline(matrix, this.x, this.y, this.x + this.width, this.y + this.height, Color.WHITE, 0.0F); } - public String a_String____(Object[] var1) { - return this.a; + public String getName() { + return this.name; } - public float a_float_______(Object[] var1) { - return this.e; + public float getX() { + return this.x; } - public float b_float___(Object[] var1) { - return this.f; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static MatchException b(MatchException var0) { - return var0; + public float getY() { + return this.y; } } diff --git a/src/main/java/dev/zprestige/prestige/hud/KeybindsElement.java b/src/main/java/dev/zprestige/prestige/hud/KeybindsElement.java index 361915a..7bdd2df 100644 --- a/src/main/java/dev/zprestige/prestige/hud/KeybindsElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/KeybindsElement.java @@ -2,474 +2,187 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.data.ModuleStringFloatData; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.data.KeybindListEntry; import dev.zprestige.prestige.gui.HudEditorScreen; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import java.awt.Color; import java.awt.event.KeyEvent; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import org.joml.Matrix4f; public class KeybindsElement extends HudElement { - private static final float m = 1.5F; - private static final float a = 8.0F; - private static final float c = 7.5F; - private static final float d = 70.0F; - private final Map g; - private FontRenderer h; - private float k; - private float l; - private long i; - private float o; - private float p; - private static final long H = 0L; + private final Map moduleAnimations; + private GlTextureHandle iconTexture; + private float animatedWidth; + private float animatedKeyWidth; + private long lastFrameTime; + private float lastHeight; + private float lastWidth; + private static final long UNSET_TIME = 0L; - public KeybindsElement(long var1) { - super("Keybinds", "Show the client's keybinds", (63292773085619L)); - var1 = 0L; - var1 = 80895934793056L ^ var1; - long var3 = var1 ^ 123160103269587L; - this.g = new HashMap(); - this.k = 70.0F; - this.l = 0.0F; - this.i = H; - this.o = 0.0F; - this.p = 0.0F; + public KeybindsElement() { + super("Keybinds", "Show the client's keybinds"); + this.moduleAnimations = new HashMap(); + this.animatedWidth = 70.0F; + this.animatedKeyWidth = 0.0F; + this.lastFrameTime = UNSET_TIME; + this.lastHeight = 0.0F; + this.lastWidth = 0.0F; } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 63.0F; - var10005[0] = 2.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(2.0F, 63.0F); } @Override - public void l(Object[] var1) { - RenderHelper8 var6 = (RenderHelper8)var1[0]; - MatrixCameraData var5 = (MatrixCameraData)var1[1]; - Matrix4f var4 = (Matrix4f)var1[2]; - long var2 = (Long)var1[3]; - long var7 = var2 ^ 73612951285412L; - long var9 = var2 ^ 27807340928064L; - long var11 = var2 ^ 95334181894420L; - long var13 = var2 ^ 45947767099148L; - long var15 = var2 ^ 54030867045760L; - long var17 = var2 ^ 57131357196865L; - long var19 = var2 ^ 132449650111663L; - long var21 = var2 ^ 89135395443612L; - long var23 = var2 ^ 102693909475685L; - long var25 = var2 ^ 137665767872520L; - long var27 = var2 ^ 131934975778103L; - long var29 = var2 ^ 6014253680539L; - long var31 = var2 ^ 19313467402120L; - long var33 = var2 ^ 96557814079126L; - long var35 = var2 ^ 101037798966850L; - long var37 = var2 ^ 102686069302981L; - if (this.h == null) { - this.h = TextureUtil.a(new Object[]{"assets/prestige/icons/other/keyboard.png", var17}); + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + if (this.iconTexture == null) { + this.iconTexture = TextureLoader.loadTexture("assets/prestige/icons/other/keyboard.png"); } - float var40 = (float)(System.currentTimeMillis() - this.i) * 0.005F; - this.i = System.currentTimeMillis(); - float var41 = Prestige.c.a(new Object[]{var27}).c_float___(new Object[]{var15}); - Object[] var10003 = new Object[]{null, 1.0F}; - var10003[0] = var41; - float var42 = NameTagsUtil.a(var10003); - var10003 = new Object[]{null, 0.75F}; - var10003[0] = var41; - float var43 = NameTagsUtil.a(var10003); - ArrayList var44 = new ArrayList(); + float frameDelta = (float)(System.currentTimeMillis() - this.lastFrameTime) * 0.005F; + this.lastFrameTime = System.currentTimeMillis(); + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + float headerHeight = HudStyle.getRowHeight(fontHeight, 1.0F); + float rowHeight = HudStyle.getRowHeight(fontHeight, 0.75F); + ArrayList entries = new ArrayList(); - for (Module var46 : (Iterable)(Prestige.moduleManager.getModules())) { - float var47 = var46.isEnabled() && var46.getKey(new Object[]{var25}) != -1 ? 1.0F : 0.0F; - float var10000 = (float)this.g.getOrDefault(var46, 0.0F); - Object[] var10005 = new Object[]{null, null, null, var29}; - var10005[2] = var40; - var10005[1] = var47; - var10005[0] = var10000; - float var48 = MathHelper4.b_float______(var10005); - this.g.put(var46, var48); - if (!(var48 < 0.05F)) { - String var96; - if (KeyEvent.getKeyText(var46.getKey(new Object[]{var25})).contains("Unknown")) { - int var95 = var46.getKey(new Object[]{var25}); - var10003 = new Object[]{null, var7}; - var10003[0] = var95; - var96 = MathHelper4.a_String_____(var10003); + for (Module module : (Iterable)(Prestige.moduleManager.getModules())) { + float targetVisibility = module.isEnabled() && module.getKey() != -1 ? 1.0F : 0.0F; + float visibility = UiMath.approach((float)this.moduleAnimations.getOrDefault(module, 0.0F), targetVisibility, frameDelta); + this.moduleAnimations.put(module, visibility); + if (!(visibility < 0.05F)) { + String resolvedKeyName; + if (KeyEvent.getKeyText(module.getKey()).contains("Unknown")) { + resolvedKeyName = UiMath.getSpecialKeyName(module.getKey()); } else { - var96 = KeyEvent.getKeyText(var46.getKey(new Object[]{var25})); + resolvedKeyName = KeyEvent.getKeyText(module.getKey()); } - String var49 = var96; - if (var49 != null && !var49.isEmpty()) { - var44.add(new ModuleStringFloatData(var46, var49, var48)); + String keyName = resolvedKeyName; + if (keyName != null && !keyName.isEmpty()) { + entries.add(new KeybindListEntry(module, keyName, visibility)); } } } - float var74 = 0.0F; - float var75 = 70.0F; + float targetKeyWidth = 0.0F; + float targetWidth = 70.0F; - for (ModuleStringFloatData var78 : (Iterable)(var44)) { - float var81 = Prestige.c.a(new Object[]{var27}).a_float______________(new Object[]{var78.ba(), var23}) * 0.75F + 5.5F; - float var50 = Prestige.c.a(new Object[]{var27}).a_float______________(new Object[]{var78.a_().getName(), var23}) * 0.75F; - var74 = Math.max(var74, var81 * var78.bb()); - var75 = Math.max(var75, (5.5F + var81 + 3.0F + var50 + 5.5F) * var78.bb()); + for (KeybindListEntry measuredEntry : (Iterable)(entries)) { + float entryKeyWidth = Prestige.fontManager.getDefaultFont().getTextWidth(measuredEntry.keyName()) * 0.75F + 5.5F; + float entryNameWidth = Prestige.fontManager.getDefaultFont().getTextWidth(measuredEntry.module().getName()) * 0.75F; + targetKeyWidth = Math.max(targetKeyWidth, entryKeyWidth * measuredEntry.alpha()); + targetWidth = Math.max(targetWidth, (5.5F + entryKeyWidth + 3.0F + entryNameWidth + 5.5F) * measuredEntry.alpha()); } - float var10001 = this.k; - float var111 = var40 * 2.0F; - Object[] var10006 = new Object[]{null, null, null, var29}; - var10006[2] = var111; - var10006[1] = var75; - var10006[0] = var10001; - this.k = MathHelper4.b_float______(var10006); - var10001 = this.l; - float var112 = var40 * 2.0F; - var10006 = new Object[]{null, null, null, var29}; - var10006[2] = var112; - var10006[1] = var74; - var10006[0] = var10001; - this.l = MathHelper4.b_float______(var10006); - float var77 = var42; + this.animatedWidth = UiMath.approach(this.animatedWidth, targetWidth, frameDelta * 2.0F); + this.animatedKeyWidth = UiMath.approach(this.animatedKeyWidth, targetKeyWidth, frameDelta * 2.0F); + float totalHeight = headerHeight; - for (ModuleStringFloatData var82 : (Iterable)(var44)) { - var77 += (var43 + 1.5F) * var82.bb(); + for (KeybindListEntry heightEntry : (Iterable)(entries)) { + totalHeight += (rowHeight + 1.5F) * heightEntry.alpha(); } - boolean var80 = this.c_boolean__(new Object[0]); - boolean var83 = this.d_boolean(new Object[0]); - boolean var84 = b.currentScreen instanceof HudEditorScreen; - if (!var84) { - if (var83 && this.o > 0.0F) { - this.f = this.f - (var77 - this.o); + boolean rightAligned = this.isAnchoredRight(); + boolean bottomAligned = this.isAnchoredBottom(); + if (!(mc.currentScreen instanceof HudEditorScreen)) { + if (bottomAligned && this.lastHeight > 0.0F) { + this.y = this.y - (totalHeight - this.lastHeight); } - if (var80 && this.p > 0.0F) { - this.e = this.e - (this.k - this.p); + if (rightAligned && this.lastWidth > 0.0F) { + this.x = this.x - (this.animatedWidth - this.lastWidth); } } - this.o = var77; - this.p = this.k; - float var51 = this.e; - float var52 = this.f; - var10001 = this.k; - Object[] var10004 = new Object[]{null, var77}; - var10004[0] = var10001; - this.i(var10004); - Color var53 = MathHelper4.d(new Object[]{var9}); - float var54 = var83 ? var52 + var77 - var42 : var52; - int var97 = 1773; - float var127 = this.k; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, null, var11}; - var10012[8] = 4.0F; - var10012[7] = 5; - var10012[6] = var42; - var10012[5] = var127; - var10012[4] = var54; - var10012[3] = var51; - var10012[2] = var4; - var10012[1] = var5; - var10012[0] = var6; - RenderTarget.e(var10012); - long var105 = 6767746664560558356L ^ var2; - float var10007 = this.k; - Color var10009 = NameTagsUtil.r; - Object[] var10013 = new Object[]{null, null, null, null, null, null, null, null, null, var19}; - var10013[8] = 4.0F; - var10013[7] = var10009; - var10013[6] = var42; - var10013[5] = var10007; - var10013[4] = var54; - var10013[3] = var51; - var10013[2] = var4; - var10013[1] = var5; - var10013[0] = var6; - RoundedPosColorShader.c(var10013); - String var55 = "Keybinds"; - float var56 = (var42 - 7.5F) / 2.0F; - float var57 = var54 + (var42 - var41) / 2.0F; - if (var80) { - float var58 = var51 + this.k - 5.5F - 7.5F; - FontRenderer var113 = this.h; - float var120 = var54 + var56; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var53, var31}; - var10011[7] = 7.5F; - var10011[6] = 7.5F; - var10011[5] = var120; - var10011[4] = var58; - var10011[3] = var113; - var10011[2] = var4; - var10011[1] = var5; - var10011[0] = var6; - RoundedTextureShader.c(var10011); - float var59 = var58 - 3.0F - 0.5F; - float var10002 = var54 + var56; - float var114 = var59 + 0.5F; - float var118 = var54 + var42 - var56; - Object[] var10008 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var21}; - var10008[4] = var118; - var10008[3] = var114; - var10008[2] = var10002; - var10008[1] = var59; - var10008[0] = var4; - RenderState.l(var10008); - float var60 = var59 - 3.0F - Prestige.c.a(new Object[]{var27}).a_float______________(new Object[]{var55, var23}); + this.lastHeight = totalHeight; + this.lastWidth = this.animatedWidth; + float panelX = this.x; + float panelY = this.y; + this.setSize(this.animatedWidth, totalHeight); + Color accent = UiMath.getAccentColor(); + float headerY = bottomAligned ? panelY + totalHeight - headerHeight : panelY; + int rawAlpha = 1773; + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, headerY, this.animatedWidth, headerHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, headerY, this.animatedWidth, headerHeight, HudStyle.BACKGROUND_COLOR, 4.0F); + String title = "Keybinds"; + float iconInset = (headerHeight - 7.5F) / 2.0F; + float titleY = headerY + (headerHeight - fontHeight) / 2.0F; + if (rightAligned) { + float mirroredIconX = panelX + this.animatedWidth - 5.5F - 7.5F; + RoundedTextureShader.drawTexture(batch, cameraData, matrix, this.iconTexture, mirroredIconX, headerY + iconInset, 7.5F, 7.5F, accent); + float mirroredDividerX = mirroredIconX - 3.0F - 0.5F; + ShapeRenderer.drawRect(matrix, mirroredDividerX, headerY + iconInset, mirroredDividerX + 0.5F, headerY + headerHeight - iconInset, HudStyle.DIVIDER_COLOR); + float mirroredCharX = mirroredDividerX - 3.0F - Prestige.fontManager.getDefaultFont().getTextWidth(title); - for (int var61 = 0; var61 < var55.length(); var61++) { - String var62 = String.valueOf(var55.charAt(var61)); - Font var98 = Prestige.c.a(new Object[]{var27}); - int var128 = 10 + (var55.length() - 1 - var61); - Object[] var10010 = new Object[]{null, null, null, var13}; - var10010[2] = var128; - var10010[1] = 10; - var10010[0] = var53; - var10008 = new Object[]{null, null, null, null, MatrixStack.b_Color_____(var10010), var33}; - var10008[3] = var57; - var10008[2] = var60; - var10008[1] = var62; - var10008[0] = var4; - var98.v(var10008); - var60 += Prestige.c.a(new Object[]{var27}).a_float______________(new Object[]{var62, var23}); + for (int mirroredCharIndex = 0; mirroredCharIndex < title.length(); mirroredCharIndex++) { + String mirroredCharText = String.valueOf(title.charAt(mirroredCharIndex)); + Prestige.fontManager.getDefaultFont().drawText(matrix, mirroredCharText, mirroredCharX, titleY, Render2D.getWaveColor(accent, 10, 10 + (title.length() - 1 - mirroredCharIndex))); + mirroredCharX += Prestige.fontManager.getDefaultFont().getTextWidth(mirroredCharText); } } else { - float var85 = var51 + 5.5F; - FontRenderer var115 = this.h; - float var121 = var54 + var56; - Object[] var140 = new Object[]{null, null, null, null, null, null, null, null, var53, var31}; - var140[7] = 7.5F; - var140[6] = 7.5F; - var140[5] = var121; - var140[4] = var85; - var140[3] = var115; - var140[2] = var4; - var140[1] = var5; - var140[0] = var6; - RoundedTextureShader.c(var140); - float var87 = var85 + 7.5F + 3.0F; - float var106 = var54 + var56; - float var116 = var87 + 0.5F; - float var119 = var54 + var42 - var56; - Object[] var133 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var21}; - var133[4] = var119; - var133[3] = var116; - var133[2] = var106; - var133[1] = var87; - var133[0] = var4; - RenderState.l(var133); - float var89 = var87 + 0.5F + 3.0F; + float iconX = panelX + 5.5F; + RoundedTextureShader.drawTexture(batch, cameraData, matrix, this.iconTexture, iconX, headerY + iconInset, 7.5F, 7.5F, accent); + float dividerX = iconX + 7.5F + 3.0F; + ShapeRenderer.drawRect(matrix, dividerX, headerY + iconInset, dividerX + 0.5F, headerY + headerHeight - iconInset, HudStyle.DIVIDER_COLOR); + float charX = dividerX + 0.5F + 3.0F; - for (int var91 = 0; var91 < var55.length(); var91++) { - String var93 = String.valueOf(var55.charAt(var91)); - Font var99 = Prestige.c.a(new Object[]{var27}); - int var129 = 10 + var91; - Object[] var138 = new Object[]{null, null, null, var13}; - var138[2] = var129; - var138[1] = 10; - var138[0] = var53; - var133 = new Object[]{null, null, null, null, MatrixStack.b_Color_____(var138), var33}; - var133[3] = var57; - var133[2] = var89; - var133[1] = var93; - var133[0] = var4; - var99.v(var133); - var89 += Prestige.c.a(new Object[]{var27}).a_float______________(new Object[]{var93, var23}); + for (int charIndex = 0; charIndex < title.length(); charIndex++) { + String charText = String.valueOf(title.charAt(charIndex)); + Prestige.fontManager.getDefaultFont().drawText(matrix, charText, charX, titleY, Render2D.getWaveColor(accent, 10, 10 + charIndex)); + charX += Prestige.fontManager.getDefaultFont().getTextWidth(charText); } } - float var86 = var83 ? var54 - 1.5F - var43 : var52 + var42 + 1.5F; + float rowY = bottomAligned ? headerY - 1.5F - rowHeight : panelY + headerHeight + 1.5F; - for (int var88 = 0; var88 < var44.size(); var88++) { - ModuleStringFloatData var90 = (ModuleStringFloatData)var44.get(var88); - float var92 = var90.bb(); - var97 = (int)(255.0F * var92); - var10003 = new Object[]{null, var37}; - var10003[0] = var97; - int var94 = a(var10003); - if (var92 > 0.7F) { - float var122 = this.k; - Object[] var141 = new Object[]{null, null, null, null, null, null, null, null, null, var11}; - var141[8] = 4.0F; - var141[7] = 5; - var141[6] = var43; - var141[5] = var122; - var141[4] = var86; - var141[3] = var51; - var141[2] = var4; - var141[1] = var5; - var141[0] = var6; - RenderTarget.e(var141); + for (int rowIndex = 0; rowIndex < entries.size(); rowIndex++) { + KeybindListEntry rowEntry = (KeybindListEntry)entries.get(rowIndex); + float rowVisibility = rowEntry.alpha(); + rawAlpha = (int)(255.0F * rowVisibility); + int rowAlpha = clampAlpha(rawAlpha); + if (rowVisibility > 0.7F) { + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, rowY, this.animatedWidth, rowHeight, 5, 4.0F); } - float var123 = this.k; - int var135 = NameTagsUtil.r.getRed(); - int var139 = NameTagsUtil.r.getGreen(); - int var142 = NameTagsUtil.r.getBlue(); - int var146 = (int)(NameTagsUtil.r.getAlpha() * var92); - Object[] var10015 = new Object[]{null, var37}; - var10015[0] = var146; - Color var130 = new Color(var135, var139, var142, a(var10015)); - Object[] var143 = new Object[]{null, null, null, null, null, null, null, null, null, var19}; - var143[8] = 4.0F; - var143[7] = var130; - var143[6] = var43; - var143[5] = var123; - var143[4] = var86; - var143[3] = var51; - var143[2] = var4; - var143[1] = var5; - var143[0] = var6; - RoundedPosColorShader.c(var143); - float var63 = var80 ? var51 + this.k - 5.5F - this.l : var51 + 5.5F; - float var64 = var86 + (var43 - 8.0F) / 2.0F; - var123 = this.l; - int var147 = (int)(25.0F * var92); - var10015 = new Object[]{null, var37}; - var10015[0] = var147; - Color var131 = new Color(255, 255, 255, a(var10015)); - Object[] var144 = new Object[]{null, null, null, null, null, null, null, null, null, var19}; - var144[8] = 3.0F; - var144[7] = var131; - var144[6] = 8.0F; - var144[5] = var123; - var144[4] = var64; - var144[3] = var63; - var144[2] = var4; - var144[1] = var5; - var144[0] = var6; - RoundedPosColorShader.c(var144); - int var107 = 10 + var88; - Object[] var125 = new Object[]{null, null, null, var13}; - var125[2] = var107; - var125[1] = 10; - var125[0] = var53; - Color var65 = MatrixStack.b_Color_____(var125); - Color var66 = new Color(var65.getRed(), var65.getGreen(), var65.getBlue(), var94); - float var67 = Prestige.c.a(new Object[]{var27}).a_float______________(new Object[]{var90.ba(), var23}) * 0.75F; - float var68 = var63 + (this.l - var67) / 2.0F; - float var69 = var64 + (8.0F - var41 * 0.75F) / 2.0F; - Font var101 = Prestige.c.a(new Object[]{var27}); - String var108 = var90.ba(); - Object[] var136 = new Object[]{null, null, null, null, null, var66, var35}; - var136[4] = 0.75F; - var136[3] = var69; - var136[2] = var68; - var136[1] = var108; - var136[0] = var4; - var101.w(var136); - String var70 = var90.a_().getName(); - float var71 = Prestige.c.a(new Object[]{var27}).a_float______________(new Object[]{var70, var23}) * 0.75F; - float var72 = var80 ? var63 - 3.0F - var71 : var63 + this.l + 3.0F; - float var73 = var86 + (var43 - var41 * 0.75F) / 2.0F; - Font var102 = Prestige.c.a(new Object[]{var27}); - var142 = (int)(220.0F * var92); - Object[] var10014 = new Object[]{null, var37}; - var10014[0] = var142; - Object[] var137 = new Object[]{null, null, null, null, null, new Color(255, 255, 255, a(var10014)), var35}; - var137[4] = 0.75F; - var137[3] = var73; - var137[2] = var72; - var137[1] = var70; - var137[0] = var4; - var102.w(var137); - if (var83) { - var86 -= (var43 + 1.5F) * var92; + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, rowY, this.animatedWidth, rowHeight, new Color(HudStyle.BACKGROUND_COLOR.getRed(), HudStyle.BACKGROUND_COLOR.getGreen(), HudStyle.BACKGROUND_COLOR.getBlue(), clampAlpha((int)(HudStyle.BACKGROUND_COLOR.getAlpha() * rowVisibility))), 4.0F); + float keyBoxX = rightAligned ? panelX + this.animatedWidth - 5.5F - this.animatedKeyWidth : panelX + 5.5F; + float keyBoxY = rowY + (rowHeight - 8.0F) / 2.0F; + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, keyBoxX, keyBoxY, this.animatedKeyWidth, 8.0F, new Color(255, 255, 255, clampAlpha((int)(25.0F * rowVisibility))), 3.0F); + Color waveColor = Render2D.getWaveColor(accent, 10, 10 + rowIndex); + Color keyTextColor = new Color(waveColor.getRed(), waveColor.getGreen(), waveColor.getBlue(), rowAlpha); + float keyTextWidth = Prestige.fontManager.getDefaultFont().getTextWidth(rowEntry.keyName()) * 0.75F; + float keyTextX = keyBoxX + (this.animatedKeyWidth - keyTextWidth) / 2.0F; + float keyTextY = keyBoxY + (8.0F - fontHeight * 0.75F) / 2.0F; + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, rowEntry.keyName(), keyTextX, keyTextY, 0.75F, keyTextColor); + String moduleName = rowEntry.module().getName(); + float moduleNameWidth = Prestige.fontManager.getDefaultFont().getTextWidth(moduleName) * 0.75F; + float moduleNameX = rightAligned ? keyBoxX - 3.0F - moduleNameWidth : keyBoxX + this.animatedKeyWidth + 3.0F; + float moduleNameY = rowY + (rowHeight - fontHeight * 0.75F) / 2.0F; + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, moduleName, moduleNameX, moduleNameY, 0.75F, new Color(255, 255, 255, clampAlpha((int)(220.0F * rowVisibility)))); + if (bottomAligned) { + rowY -= (rowHeight + 1.5F) * rowVisibility; } else { - var86 += (var43 + 1.5F) * var92; + rowY += (rowHeight + 1.5F) * rowVisibility; } } } - private static int a(Object[] var0) { - int var3 = (Integer)var0[0]; - return var3 < 0 ? 0 : Math.min(var3, 255); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static int clampAlpha(int value) { + return value < 0 ? 0 : Math.min(value, 255); } } diff --git a/src/main/java/dev/zprestige/prestige/hud/LatencyElement.java b/src/main/java/dev/zprestige/prestige/hud/LatencyElement.java index 40daaaa..cb43d42 100644 --- a/src/main/java/dev/zprestige/prestige/hud/LatencyElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/LatencyElement.java @@ -1,373 +1,176 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; import dev.zprestige.prestige.gui.HudEditorScreen; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.client.network.PlayerListEntry; import org.joml.Matrix4f; public class LatencyElement extends HudElement { - private static final int a = 24; - private static final float m = 100.0F; - private FontRenderer d; - private final float[] g; - private int h; - private long i; - private long j; - private float k; - private float l; - private float o; - private float p; - private float t; + private GlTextureHandle iconTexture; + private final float[] pingHistory; + private int historyIndex; + private long lastSampleTime; + private long lastFrameTime; + private float smoothedPing; + private float colorRed; + private float colorGreen; + private float colorBlue; + private float lastWidth; - public LatencyElement(long var1) { - super("Latency", "Show the client's latency", (19222381473573L)); - var1 = 0L; - var1 = 44097720316040L ^ var1; - long var3 = var1 ^ 63087764594605L; - this.g = new float[24]; - this.h = 0; - this.i = 0L; - this.j = 0L; - this.k = -1.0F; - this.l = 96.0F; - this.o = 220.0F; - this.p = 130.0F; - this.t = 0.0F; + public LatencyElement() { + super("Latency", "Show the client's latency"); + this.pingHistory = new float[24]; + this.historyIndex = 0; + this.lastSampleTime = 0L; + this.lastFrameTime = 0L; + this.smoothedPing = -1.0F; + this.colorRed = 96.0F; + this.colorGreen = 220.0F; + this.colorBlue = 130.0F; + this.lastWidth = 0.0F; } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 23.0F; - var10005[0] = 65.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(65.0F, 23.0F); } @Override - public void l(Object[] var1) { - RenderHelper8 var2 = (RenderHelper8)var1[0]; - MatrixCameraData var4 = (MatrixCameraData)var1[1]; - Matrix4f var3 = (Matrix4f)var1[2]; - long var5 = (Long)var1[3]; - long var7 = var5 ^ 95334181894420L; - long var9 = var5 ^ 27807340928064L; - long var11 = var5 ^ 54030867045760L; - long var13 = var5 ^ 57131357196865L; - long var15 = var5 ^ 132449650111663L; - long var17 = var5 ^ 109546980108248L; - long var19 = var5 ^ 89135395443612L; - long var21 = var5 ^ 102693909475685L; - long var23 = var5 ^ 6014253680539L; - long var25 = var5 ^ 131934975778103L; - long var27 = var5 ^ 19313467402120L; - long var29 = var5 ^ 108665228979358L; - long var31 = var5 ^ 101037798966850L; - if (this.d == null) { - this.d = TextureUtil.a(new Object[]{"assets/prestige/icons/hud/latency.png", var13}); + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + if (this.iconTexture == null) { + this.iconTexture = TextureLoader.loadTexture("assets/prestige/icons/hud/latency.png"); } - long var34 = System.currentTimeMillis(); - float var36 = this.j == 0L ? 1.0F : (float)(var34 - this.j) * 0.005F; - this.j = var34; - int var37 = 0; - if (b.getNetworkHandler() != null && b.player != null) { - PlayerListEntry var38 = b.getNetworkHandler().getPlayerListEntry(b.player.getUuid()); - if (var38 != null) { - var37 = var38.getLatency(); + long now = System.currentTimeMillis(); + float frameDelta = this.lastFrameTime == 0L ? 1.0F : (float)(now - this.lastFrameTime) * 0.005F; + this.lastFrameTime = now; + int currentPing = 0; + if (mc.getNetworkHandler() != null && mc.player != null) { + PlayerListEntry playerEntry = mc.getNetworkHandler().getPlayerListEntry(mc.player.getUuid()); + if (playerEntry != null) { + currentPing = playerEntry.getLatency(); } } - if (var34 - this.i >= 100L) { - this.g[this.h] = var37; - this.h = (this.h + 1) % 24; - this.i = var34; + if (now - this.lastSampleTime >= 100L) { + this.pingHistory[this.historyIndex] = currentPing; + this.historyIndex = (this.historyIndex + 1) % 24; + this.lastSampleTime = now; } - float var10001; - if (this.k < 0.0F) { - var10001 = var37; + float lerpValue; + if (this.smoothedPing < 0.0F) { + lerpValue = currentPing; } else { - var10001 = this.k; - float var10002 = var37; - Object[] var10006 = new Object[]{null, null, null, var23}; - var10006[2] = var36; - var10006[1] = var10002; - var10006[0] = var10001; - var10001 = MathHelper4.b_float______(var10006); + lerpValue = this.smoothedPing; + float lerpTarget = currentPing; + lerpValue = UiMath.approach(lerpValue, lerpTarget, frameDelta); } - this.k = var10001; - int var73 = Math.max(0, Math.round(this.k)); - float var10000 = var73; - Object[] var10003 = new Object[]{null, var17}; - var10003[0] = var10000; - Color var39 = a(var10003); - var10001 = this.l; - float var86 = var39.getRed(); - Object[] var103 = new Object[]{null, null, null, var23}; - var103[2] = var36; - var103[1] = var86; - var103[0] = var10001; - this.l = MathHelper4.b_float______(var103); - var10001 = this.o; - var86 = var39.getGreen(); - var103 = new Object[]{null, null, null, var23}; - var103[2] = var36; - var103[1] = var86; - var103[0] = var10001; - this.o = MathHelper4.b_float______(var103); - var10001 = this.p; - var86 = var39.getBlue(); - var103 = new Object[]{null, null, null, var23}; - var103[2] = var36; - var103[1] = var86; - var103[0] = var10001; - this.p = MathHelper4.b_float______(var103); - var86 = this.l; - Object[] var10005 = new Object[]{null, var29}; - var10005[0] = var86; - int var90 = a_int___(var10005); - float var93 = this.o; - var103 = new Object[]{null, var29}; - var103[0] = var93; - int var94 = a_int___(var103); - float var10004 = this.p; - Object[] var10007 = new Object[]{null, var29}; - var10007[0] = var10004; - Color var40 = new Color(var90, var94, a_int___(var10007)); - String var41 = String.valueOf(var73); - float var42 = Prestige.c.a(new Object[]{var25}).c_float___(new Object[]{var11}); - float var43 = Prestige.c.a(new Object[]{var25}).a_float______________(new Object[]{var41, var21}) * 1.0F; - float var44 = Prestige.c.a(new Object[]{var25}).a_float______________(new Object[]{"ms", var21}) * 0.65F; - float var45 = var42 * 1.0F; - float var46 = var42 * 0.65F; - float var47 = 7.5F; - float var48 = 5.5F + var47 + 5.5F; - float var49 = var48 + 0.5F + 5.5F; - float var50 = Math.max(var43 + 3.0F + var44, 28.0F); - float var51 = var49 + var50 + 5.5F; - float var52 = NameTagsUtil.b(new Object[]{var42}); - boolean var53 = this.c_boolean__(new Object[0]); - boolean var54 = b.currentScreen instanceof HudEditorScreen; - if (var53 && this.t > 0.0F && !var54) { - this.e = this.e - (var51 - this.t); + this.smoothedPing = lerpValue; + int displayedPing = Math.max(0, Math.round(this.smoothedPing)); + float pingValue = displayedPing; + Color targetColor = getPingColor(pingValue); + lerpValue = this.colorRed; + float scratch = targetColor.getRed(); + this.colorRed = UiMath.approach(lerpValue, scratch, frameDelta); + lerpValue = this.colorGreen; + scratch = targetColor.getGreen(); + this.colorGreen = UiMath.approach(lerpValue, scratch, frameDelta); + lerpValue = this.colorBlue; + scratch = targetColor.getBlue(); + this.colorBlue = UiMath.approach(lerpValue, scratch, frameDelta); + scratch = this.colorRed; + Color pingColor = new Color(toColorChannel(scratch), toColorChannel(this.colorGreen), toColorChannel(this.colorBlue)); + String pingText = String.valueOf(displayedPing); + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + float valueWidth = Prestige.fontManager.getDefaultFont().getTextWidth(pingText) * 1.0F; + float unitWidth = Prestige.fontManager.getDefaultFont().getTextWidth("ms") * 0.65F; + float valueHeight = fontHeight * 1.0F; + float unitHeight = fontHeight * 0.65F; + float iconSize = 7.5F; + float iconSectionWidth = 5.5F + iconSize + 5.5F; + float contentOffset = iconSectionWidth + 0.5F + 5.5F; + float panelWidth = contentOffset + Math.max(valueWidth + 3.0F + unitWidth, 28.0F) + 5.5F; + float panelHeight = HudStyle.getCardHeight(fontHeight); + boolean rightAligned = this.isAnchoredRight(); + boolean inEditor = mc.currentScreen instanceof HudEditorScreen; + if (rightAligned && this.lastWidth > 0.0F && !inEditor) { + this.x = this.x - (panelWidth - this.lastWidth); } - this.t = var51; - float var55 = this.e; - float var56 = this.f; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var7}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var52; - var10011[5] = var51; - var10011[4] = var56; - var10011[3] = var55; - var10011[2] = var3; - var10011[1] = var4; - var10011[0] = var2; - RenderTarget.e(var10011); - Color var107 = NameTagsUtil.r; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var15}; - var10011[8] = 4.0F; - var10011[7] = var107; - var10011[6] = var52; - var10011[5] = var51; - var10011[4] = var56; - var10011[3] = var55; - var10011[2] = var3; - var10011[1] = var4; - var10011[0] = var2; - RoundedPosColorShader.c(var10011); - float var57 = var53 ? var55 + var51 - 5.5F - var47 : var55 + 5.5F; - float var58 = var53 ? var55 + var51 - var48 - 0.5F : var55 + var48; - FontRenderer var95 = this.d; - float var102 = var56 + var52 / 2.0F - var47 / 2.0F; - var10011 = new Object[]{null, null, null, null, null, null, null, null, MathHelper4.d(new Object[]{var9}), var27}; - var10011[7] = var47; - var10011[6] = var47; - var10011[5] = var102; - var10011[4] = var57; - var10011[3] = var95; - var10011[2] = var3; - var10011[1] = var4; - var10011[0] = var2; - RoundedTextureShader.c(var10011); - var86 = var56 + 3.0F; - float var96 = var58 + 0.5F; - var10004 = var56 + var52 - 3.0F; - Object[] var10008 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var19}; - var10008[4] = var10004; - var10008[3] = var96; - var10008[2] = var86; - var10008[1] = var58; - var10008[0] = var3; - RenderState.l(var10008); - float var59 = var56 + 3.0F; - float var60; - float var61; - if (var53) { - float var62 = var55 + var51 - var49; - var61 = var62 - var44; - var60 = var61 - 3.0F - var43; + this.lastWidth = panelWidth; + float panelX = this.x; + float panelY = this.y; + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, HudStyle.BACKGROUND_COLOR, 4.0F); + float iconX = rightAligned ? panelX + panelWidth - 5.5F - iconSize : panelX + 5.5F; + float dividerX = rightAligned ? panelX + panelWidth - iconSectionWidth - 0.5F : panelX + iconSectionWidth; + RoundedTextureShader.drawTexture(batch, cameraData, matrix, this.iconTexture, iconX, panelY + panelHeight / 2.0F - iconSize / 2.0F, iconSize, iconSize, UiMath.getAccentColor()); + scratch = panelY + 3.0F; + ShapeRenderer.drawRect(matrix, dividerX, scratch, dividerX + 0.5F, panelY + panelHeight - 3.0F, HudStyle.DIVIDER_COLOR); + float textY = panelY + 3.0F; + float valueX; + float unitX; + if (rightAligned) { + unitX = (panelX + panelWidth - contentOffset) - unitWidth; + valueX = unitX - 3.0F - valueWidth; } else { - var60 = var55 + var49; - var61 = var60 + var43 + 3.0F; + valueX = panelX + contentOffset; + unitX = valueX + valueWidth + 3.0F; } - Font var79 = Prestige.c.a(new Object[]{var25}); - Object[] var10009 = new Object[]{null, null, null, null, null, var40, var31}; - var10009[4] = 1.0F; - var10009[3] = var59; - var10009[2] = var60; - var10009[1] = var41; - var10009[0] = var3; - var79.w(var10009); - Font var80 = Prestige.c.a(new Object[]{var25}); - var10004 = var59 + (var45 - var46) - 0.5F; - var10009 = new Object[]{null, null, null, null, null, NameTagsUtil.u, var31}; - var10009[4] = 0.65F; - var10009[3] = var10004; - var10009[2] = var61; - var10009[1] = "ms"; - var10009[0] = var3; - var80.w(var10009); - float var74 = var59 + var45 + 1.0F + 4.0F; - float var63 = var53 ? var55 + 5.5F : var55 + var49; - float var64 = var53 ? var55 + var51 - var49 : var55 + var51 - 5.5F; - float var65 = (var64 - var63) / 24.0F; - float var66 = 100.0F; + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, pingText, valueX, textY, 1.0F, pingColor); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, "ms", unitX, textY + (valueHeight - unitHeight) - 0.5F, 0.65F, HudStyle.MUTED_TEXT_COLOR); + float graphBaseY = textY + valueHeight + 1.0F + 4.0F; + float graphX = rightAligned ? panelX + 5.5F : panelX + contentOffset; + float barWidth = ((rightAligned ? panelX + panelWidth - contentOffset : panelX + panelWidth - 5.5F) - graphX) / 24.0F; + float graphMax = 100.0F; - for (float var70 : this.g) { - if (var70 > var66) { - var66 = var70; + for (float sample : this.pingHistory) { + if (sample > graphMax) { + graphMax = sample; } } - for (int var75 = 0; var75 < 24; var75++) { - float var76 = this.g[(this.h + var75) % 24]; - if (!(var76 <= 0.0F)) { - float var77 = 0.5F + var76 / var66 * 3.5F; - float var78 = var63 + var75 * var65; - var10003 = new Object[]{null, var17}; - var10003[0] = var76; - Color var71 = a(var10003); - int var72 = var75 == 23 ? 220 : 110; - var10001 = var78 + 0.2F; - var86 = var74 - var77; - float var98 = var78 + var65 - 0.2F; - var10008 = new Object[]{null, null, null, null, null, new Color(var71.getRed(), var71.getGreen(), var71.getBlue(), var72), var19}; - var10008[4] = var74; - var10008[3] = var98; - var10008[2] = var86; - var10008[1] = var10001; - var10008[0] = var3; - RenderState.l(var10008); + for (int barIndex = 0; barIndex < 24; barIndex++) { + float barSample = this.pingHistory[(this.historyIndex + barIndex) % 24]; + if (!(barSample <= 0.0F)) { + float barHeight = 0.5F + barSample / graphMax * 3.5F; + float barX = graphX + barIndex * barWidth; + Color barColor = getPingColor(barSample); + int barAlpha = barIndex == 23 ? 220 : 110; + lerpValue = barX + 0.2F; + scratch = graphBaseY - barHeight; + ShapeRenderer.drawRect(matrix, lerpValue, scratch, barX + barWidth - 0.2F, graphBaseY, new Color(barColor.getRed(), barColor.getGreen(), barColor.getBlue(), barAlpha)); } } - Object[] var101 = new Object[]{null, var52}; - var101[0] = var51; - this.i(var101); + this.setSize(panelWidth, panelHeight); } - private static Color a(Object[] var0) { - float var3 = (Float)var0[0]; - if (var3 < 60.0F) { + private static Color getPingColor(float ping) { + if (ping < 60.0F) { return new Color(96, 220, 130); - } else if (var3 < 120.0F) { + } else if (ping < 120.0F) { return new Color(245, 205, 90); } else { - return var3 <= 200.0F ? new Color(245, 150, 70) : new Color(240, 85, 85); + return ping <= 200.0F ? new Color(245, 150, 70) : new Color(240, 85, 85); } } - private static int a_int___(Object[] var0) { - float var1 = (Float)var0[0]; - return var1 < 0.0F ? 0 : Math.min((int)var1, 255); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static int toColorChannel(float value) { + return value < 0.0F ? 0 : Math.min((int)value, 255); } } diff --git a/src/main/java/dev/zprestige/prestige/hud/ModuleListElement.java b/src/main/java/dev/zprestige/prestige/hud/ModuleListElement.java index 91869c6..e9b55dc 100644 --- a/src/main/java/dev/zprestige/prestige/hud/ModuleListElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/ModuleListElement.java @@ -2,19 +2,15 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; import dev.zprestige.prestige.gui.HudEditorScreen; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -22,331 +18,149 @@ import java.util.Map.Entry; import org.joml.Matrix4f; public class ModuleListElement extends HudElement { - private final Map a; - private final Map c; - private final Map d; - private static float m = 0.0F; - private static final float j = 500.0F; - private static final float k = 1.0F; - private float l; - private float o; + private final Map moduleAnimations; + private final Map lastEnabledStates; + private final Map enableTimes; + private static float animationDelta = 0.0F; + private float lastHeight; + private float lastWidth; - public ModuleListElement(long var1) { - super("Module List", "List of currently enabled modules", (119052916597361L)); - var1 = 0L; - var1 = 46696203253556L ^ var1; - long var3 = var1 ^ 77238080296261L; - this.a = new HashMap(); - this.c = new HashMap(); - this.d = new HashMap(); - this.l = 0.0F; - this.o = 0.0F; + public ModuleListElement() { + super("Module List", "List of currently enabled modules"); + this.moduleAnimations = new HashMap(); + this.lastEnabledStates = new HashMap(); + this.enableTimes = new HashMap(); + this.lastHeight = 0.0F; + this.lastWidth = 0.0F; } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 135.0F; - var10005[0] = 2.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(2.0F, 135.0F); } @Override - public void q(Object[] var1) { - Matrix4f var2 = (Matrix4f)var1[0]; - long var3 = (Long)var1[1]; - if (this.g <= 0.0F || this.h <= 0.0F) { + public void renderEditorOutline(Matrix4f matrix) { + if (this.width <= 0.0F || this.height <= 0.0F) { return; } - super.q(new Object[]{var2, var3}); + super.renderEditorOutline(matrix); } @Override - public void l(Object[] var1) { - RenderHelper8 var3 = (RenderHelper8)var1[0]; - MatrixCameraData var2 = (MatrixCameraData)var1[1]; - Matrix4f var4 = (Matrix4f)var1[2]; - long var5 = (Long)var1[3]; - long var7 = var5 ^ 132449650111663L; - long var9 = var5 ^ 27807340928064L; - long var11 = var5 ^ 95334181894420L; - long var13 = var5 ^ 102693909475685L; - long var15 = var5 ^ 52207587184489L; - long var17 = var5 ^ 18373113372313L; - long var19 = var5 ^ 6014253680539L; - long var21 = var5 ^ 131934975778103L; - long var23 = var5 ^ 45947767099148L; - long var25 = var5 ^ 54030867045760L; - long var27 = var5 ^ 96557814079126L; - long var30 = System.currentTimeMillis(); - m = (float)(var30 - 0L) * 0.005F; - Event.b(); + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + long now = System.currentTimeMillis(); + animationDelta = (float)(now - 0L) * 0.005F; - for (Module var33 : (Iterable)(Prestige.moduleManager.getModules())) { - boolean var34 = var33.isEnabled(); - Boolean var35 = (Boolean)this.c.put(var33, var34); - if (var34 && Boolean.FALSE.equals(var35)) { - this.d.put(var33, var30); + for (Module module : (Iterable)(Prestige.moduleManager.getModules())) { + boolean enabled = module.isEnabled(); + Boolean wasEnabled = (Boolean)this.lastEnabledStates.put(module, enabled); + if (enabled && Boolean.FALSE.equals(wasEnabled)) { + this.enableTimes.put(module, now); } - float var36 = var34 ? 1.0F : 0.0F; - float var37 = (float)this.a.getOrDefault(var33, 0.0F); - float var10002 = m; - Object[] var10005 = new Object[]{null, null, null, var19}; - var10005[2] = var10002; - var10005[1] = var36; - var10005[0] = var37; - var37 = MathHelper4.b_float______(var10005); - this.a.put(var33, var37); + float targetVisibility = enabled ? 1.0F : 0.0F; + float visibility = (float)this.moduleAnimations.getOrDefault(module, 0.0F); + visibility = UiMath.approach(visibility, targetVisibility, animationDelta); + this.moduleAnimations.put(module, visibility); } - ArrayList var62 = new ArrayList(); + ArrayList visibleEntries = new ArrayList(); - for (Entry var65 : (Iterable)(this.a.entrySet())) { - if ((Float)var65.getValue() > 0.005F) { - var62.add(var65); + for (Entry animationEntry : (Iterable)(this.moduleAnimations.entrySet())) { + if ((Float)animationEntry.getValue() > 0.005F) { + visibleEntries.add(animationEntry); } } - if (var62.isEmpty()) { - Object[] var88 = new Object[]{null, 0.0F}; - var88[0] = 0.0F; - this.i(var88); - this.l = 0.0F; - this.o = 0.0F; + if (visibleEntries.isEmpty()) { + this.setSize(0.0F, 0.0F); + this.lastHeight = 0.0F; + this.lastWidth = 0.0F; } else { - var62.sort( - (lpL41_0, lpL41_1) -> Float.compare( - Prestige.c.a(new Object[]{1236438218049L}).a_float______________(new Object[]{((Module)((java.util.Map.Entry)lpL41_1).getKey()).getName(), 47859522476307L}), - Prestige.c.a(new Object[]{1236438218049L}).a_float______________(new Object[]{((Module)((java.util.Map.Entry)lpL41_0).getKey()).getName(), 47859522476307L}) + visibleEntries.sort( + (first, second) -> Float.compare( + Prestige.fontManager.getDefaultFont().getTextWidth(((Module)((java.util.Map.Entry)second).getKey()).getName()), + Prestige.fontManager.getDefaultFont().getTextWidth(((Module)((java.util.Map.Entry)first).getKey()).getName()) ) ); - float var64 = Prestige.c.a(new Object[]{var21}).c_float___(new Object[]{var25}); - Object[] var10003 = new Object[]{null, 1.0F}; - var10003[0] = var64; - float var66 = NameTagsUtil.a(var10003); - float var67 = 0.0F; - float var68 = 0.0F; + float rowHeight = HudStyle.getRowHeight(Prestige.fontManager.getDefaultFont().getLineHeight(), 1.0F); + float listWidth = 0.0F; + float listHeight = 0.0F; - for (Entry var38 : (Iterable)(var62)) { - float var39 = Prestige.c.a(new Object[]{var21}).a_float______________(new Object[]{((Module)var38.getKey()).getName(), var13}) + 11.0F; - if (var39 > var67) { - var67 = var39; + for (Entry measuredEntry : (Iterable)(visibleEntries)) { + float entryWidth = Prestige.fontManager.getDefaultFont().getTextWidth(((Module)measuredEntry.getKey()).getName()) + 11.0F; + if (entryWidth > listWidth) { + listWidth = entryWidth; } - var68 += (var66 + 1.0F) * (Float)var38.getValue(); + listHeight += (rowHeight + 1.0F) * (Float)measuredEntry.getValue(); } - b.getWindow().getScaledWidth(); - b.getWindow().getScaledHeight(); - boolean var71 = this.d_boolean(new Object[0]); - boolean var40 = this.c_boolean__(new Object[0]); - boolean var41 = b.currentScreen instanceof HudEditorScreen; - if (!var41) { - if (var71 && this.l > 0.0F) { - this.f = this.f - (var68 - this.l); + mc.getWindow().getScaledWidth(); + mc.getWindow().getScaledHeight(); + boolean bottomAligned = this.isAnchoredBottom(); + boolean rightAligned = this.isAnchoredRight(); + if (!(mc.currentScreen instanceof HudEditorScreen)) { + if (bottomAligned && this.lastHeight > 0.0F) { + this.y = this.y - (listHeight - this.lastHeight); } - if (var40 && this.o > 0.0F) { - this.e = this.e - (var67 - this.o); + if (rightAligned && this.lastWidth > 0.0F) { + this.x = this.x - (listWidth - this.lastWidth); } } - this.l = var68; - this.o = var67; - Object[] var10004 = new Object[]{null, var68}; - var10004[0] = var67; - this.i(var10004); - Color var42 = MathHelper4.d(new Object[]{var9}); - int var43 = var62.size(); - float var44 = var71 ? this.f + var68 - var66 : this.f; + this.lastHeight = listHeight; + this.lastWidth = listWidth; + this.setSize(listWidth, listHeight); + Color accent = UiMath.getAccentColor(); + int entryCount = visibleEntries.size(); + float rowY = bottomAligned ? this.y + listHeight - rowHeight : this.y; - for (int var45 = 0; var45 < var62.size(); var45++) { - Entry var46 = (Entry)var62.get(var45); - Module var47 = (Module)var46.getKey(); - float var48 = (Float)var46.getValue(); - String var49 = var47.getName(); - float var50 = Prestige.c.a(new Object[]{var21}).a_float______________(new Object[]{var49, var13}) + 11.0F; - float var51 = (1.0F - var48) * 6.0F; - int var52 = var40 ? var43 - 1 - var45 : var45; - int var74 = 10 + var52; - Object[] var89 = new Object[]{null, null, null, var23}; - var89[2] = var74; - var89[1] = 10; - var89[0] = var42; - Color var53 = MatrixStack.b_Color_____(var89); - float var54; - if (var40) { - var54 = this.e + var67 - var50 - var51; + for (int rowIndex = 0; rowIndex < visibleEntries.size(); rowIndex++) { + Entry rowEntry = (Entry)visibleEntries.get(rowIndex); + Module rowModule = (Module)rowEntry.getKey(); + float rowVisibility = (Float)rowEntry.getValue(); + String moduleName = rowModule.getName(); + float rowWidth = Prestige.fontManager.getDefaultFont().getTextWidth(moduleName) + 11.0F; + float slideOffset = (1.0F - rowVisibility) * 6.0F; + Color waveColor = Render2D.getWaveColor(accent, 10, 10 + (rightAligned ? entryCount - 1 - rowIndex : rowIndex)); + float rowX; + if (rightAligned) { + rowX = this.x + listWidth - rowWidth - slideOffset; } else { - var54 = this.e + var51; + rowX = this.x + slideOffset; } - long var55 = (long)this.d.getOrDefault(var47, 0L); - float var57 = var55 == 0L ? 0.0F : Math.max(0.0F, 1.0F - (float)(var30 - var55) / 500.0F); - var57 *= var57; - int var10000 = (int)(NameTagsUtil.r.getAlpha() * var48); - var10003 = new Object[]{null, var15}; - var10003[0] = var10000; - int var58 = a(var10003); - float var59 = var57 * 0.35F; - var74 = NameTagsUtil.r.getRed(); - int var79 = var53.getRed(); - Object[] var10007 = new Object[]{null, null, null, var17}; - var10007[2] = var59; - var10007[1] = var79; - var10007[0] = var74; - var74 = b(var10007); - int var80 = NameTagsUtil.r.getGreen(); - int var84 = var53.getGreen(); - Object[] var10008 = new Object[]{null, null, null, var17}; - var10008[2] = var59; - var10008[1] = var84; - var10008[0] = var80; - int var81 = b(var10008); - int var85 = NameTagsUtil.r.getBlue(); - int var90 = var53.getBlue(); - Object[] var10009 = new Object[]{null, null, null, var17}; - var10009[2] = var59; - var10009[1] = var90; - var10009[0] = var85; - Color var60 = new Color(var74, var81, b(var10009), var58); - var74 = var53.getRed(); - int var82 = var53.getGreen(); - int var86 = var53.getBlue(); - int var91 = (int)(255.0F * var48); - var10008 = new Object[]{null, var15}; - var10008[0] = var91; - Color var61 = new Color(var74, var82, var86, a(var10008)); - if (var48 > 0.7F) { - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var11}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var66; - var10011[5] = var50; - var10011[4] = var44; - var10011[3] = var54; - var10011[2] = var4; - var10011[1] = var2; - var10011[0] = var3; - RenderTarget.e(var10011); + long enabledAt = (long)this.enableTimes.getOrDefault(rowModule, 0L); + float enableFlash = enabledAt == 0L ? 0.0F : Math.max(0.0F, 1.0F - (float)(now - enabledAt) / 500.0F); + enableFlash *= enableFlash; + int backgroundAlpha = clampAlpha((int)(HudStyle.BACKGROUND_COLOR.getAlpha() * rowVisibility)); + float tintAmount = enableFlash * 0.35F; + Color backgroundColor = new Color(lerpChannel(HudStyle.BACKGROUND_COLOR.getRed(), waveColor.getRed(), tintAmount), lerpChannel(HudStyle.BACKGROUND_COLOR.getGreen(), waveColor.getGreen(), tintAmount), lerpChannel(HudStyle.BACKGROUND_COLOR.getBlue(), waveColor.getBlue(), tintAmount), backgroundAlpha); + Color textColor = new Color(waveColor.getRed(), waveColor.getGreen(), waveColor.getBlue(), clampAlpha((int)(255.0F * rowVisibility))); + if (rowVisibility > 0.7F) { + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, rowX, rowY, rowWidth, rowHeight, 5, 4.0F); } - Object[] var94 = new Object[]{null, null, null, null, null, null, null, null, null, var7}; - var94[8] = 4.0F; - var94[7] = var60; - var94[6] = var66; - var94[5] = var50; - var94[4] = var44; - var94[3] = var54; - var94[2] = var4; - var94[1] = var2; - var94[0] = var3; - RoundedPosColorShader.c(var94); - Font var73 = Prestige.c.a(new Object[]{var21}); - float var83 = var54 + 5.5F; - float var87 = var44 + 3.0F; - var10008 = new Object[]{null, null, null, null, var61, var27}; - var10008[3] = var87; - var10008[2] = var83; - var10008[1] = var49; - var10008[0] = var4; - var73.v(var10008); - if (var71) { - var44 -= (var66 + 1.0F) * var48; + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, rowX, rowY, rowWidth, rowHeight, backgroundColor, 4.0F); + Prestige.fontManager.getDefaultFont().drawText(matrix, moduleName, rowX + 5.5F, rowY + 3.0F, textColor); + if (bottomAligned) { + rowY -= (rowHeight + 1.0F) * rowVisibility; } else { - var44 += (var66 + 1.0F) * var48; + rowY += (rowHeight + 1.0F) * rowVisibility; } } } } - private static int a(Object[] var0) { - int var3 = (Integer)var0[0]; - return var3 < 0 ? 0 : Math.min(var3, 255); + private static int clampAlpha(int value) { + return value < 0 ? 0 : Math.min(value, 255); } - private static int b(Object[] var0) { - int var3 = (Integer)var0[0]; - int var2 = (Integer)var0[1]; - float var1 = (Float)var0[2]; - long var4 = (Long)var0[3]; - var4 = 46696203253556L ^ var4; - long var6 = var4 ^ 23871877965508L; - int var10000 = (int)(var3 + (var2 - var3) * var1); - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var10000; - return a(var10003); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static int lerpChannel(int start, int end, float factor) { + return clampAlpha((int)(start + (end - start) * factor)); } } diff --git a/src/main/java/dev/zprestige/prestige/hud/ModuleNotificationsElement.java b/src/main/java/dev/zprestige/prestige/hud/ModuleNotificationsElement.java index b5122ca..79126bc 100644 --- a/src/main/java/dev/zprestige/prestige/hud/ModuleNotificationsElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/ModuleNotificationsElement.java @@ -2,25 +2,21 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; import dev.zprestige.prestige.gui.HudEditorScreen; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.RenderHelper18; -import dev.zprestige.prestige.render.RenderHelper20; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.NotificationTypeSwitchMap; +import dev.zprestige.prestige.render.ModuleToast; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import dev.zprestige.prestige.type.NotificationType; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -28,403 +24,218 @@ import java.util.Map; import org.joml.Matrix4f; public class ModuleNotificationsElement extends HudElement { - public static ModuleNotificationsElement a = new ModuleNotificationsElement(0L); - private static final int d = 5; - private static final float m = 10.0F; - private static final float i = 90.0F; - private static final float j = 12.0F; - private final ArrayList k; - private final Map l; - private long n; - private float o; - private float p; + public static ModuleNotificationsElement instance = new ModuleNotificationsElement(); + private final ArrayList notifications; + private final Map iconTextures; + private long lastFrameTime; + private float lastHeight; + private float lastWidth; - public ModuleNotificationsElement(long var1) { - super("Module Notifications", "Draws module notifications when toggled.", (90461679030534L)); - var1 = 0L; - var1 = 53258369047921L ^ var1; - long var3 = var1 ^ 107985914662007L; - this.k = new ArrayList(); - this.l = new HashMap(); - this.n = 0L; - this.o = 0.0F; - this.p = 0.0F; - a = this; + public ModuleNotificationsElement() { + super("Module Notifications", "Draws module notifications when toggled."); + this.notifications = new ArrayList(); + this.iconTextures = new HashMap(); + this.lastFrameTime = 0L; + this.lastHeight = 0.0F; + this.lastWidth = 0.0F; + instance = this; } - public static void r(Object[] var0) { - Module var3 = (Module)var0[0]; - long var1 = (Long)var0[1]; - var1 = 53258369047921L ^ var1; - long var4 = var1 ^ 128612267696415L; - long var6 = var1 ^ 110479586714630L; - if (a.e_boolean(new Object[]{var4})) { - if (var3.isEnabled()) { - a.t(new Object[]{var3.getName(), "Has been enabled.", NotificationType.SUCCESS, var6}); + public static void notifyToggle(Module module) { + if (instance.isEnabled()) { + if (module.isEnabled()) { + instance.addNotification(module.getName(), "Has been enabled.", NotificationType.SUCCESS); } else { - a.t(new Object[]{var3.getName(), "Has been disabled.", NotificationType.ERROR, var6}); + instance.addNotification(module.getName(), "Has been disabled.", NotificationType.ERROR); } } } - public static void s(Object[] var0) { - Module var1 = (Module)var0[0]; - String var5 = (String)var0[1]; - NotificationType var4 = (NotificationType)var0[2]; - long var2 = (Long)var0[3]; - var2 = 53258369047921L ^ var2; - long var6 = var2 ^ 97481105155834L; - long var8 = var2 ^ 79351645725667L; - if (a.e_boolean(new Object[]{var6})) { - a.t(new Object[]{var1.getName(), var5, var4, var8}); + public static void postNotification(Module module, String message, NotificationType type) { + if (instance.isEnabled()) { + instance.addNotification(module.getName(), message, type); } } - private void t(Object[] var1) { - String var4 = (String)var1[0]; - String var3 = (String)var1[1]; - NotificationType var2 = (NotificationType)var1[2]; - long var5 = (Long)var1[3]; - var5 = 53258369047921L ^ var5; - long var7 = var5 ^ 5962095113102L; - Event.b(); - - for (RenderHelper20 var11 : (Iterable)(this.k)) { - if (var11.a.equals(var4) && !var11.f) { - var11.f = true; + private void addNotification(String title, String message, NotificationType type) { + for (ModuleToast existing : (Iterable)(this.notifications)) { + if (existing.title.equals(title) && !existing.dismissed) { + existing.dismissed = true; } } - this.k.add(new RenderHelper20(var4, var3, var2, var7)); + this.notifications.add(new ModuleToast(title, message, type)); } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 111341298698524L; - long var6 = var2 ^ 115520954206759L; - if (b.getWindow() != null) { - float var9 = b.getWindow().getFramebufferWidth() / HudEditorScreen.b(new Object[]{var4}); - float var10 = b.getWindow().getFramebufferHeight() / HudEditorScreen.b(new Object[]{var4}); - float var10001 = var9 - 90.0F - 4.0F; - float var10002 = var10 - 70.0F; - Object[] var10005 = new Object[]{null, null, var6}; - var10005[1] = var10002; - var10005[0] = var10001; - this.a_void_______(var10005); + public void resetPosition() { + if (mc.getWindow() != null) { + this.setPosition((mc.getWindow().getFramebufferWidth() / HudEditorScreen.getHudPixelScale()) - 90.0F - 4.0F, (mc.getWindow().getFramebufferHeight() / HudEditorScreen.getHudPixelScale()) - 70.0F); } else { - Object[] var11 = new Object[]{null, null, var6}; - var11[1] = 150.0F; - var11[0] = 200.0F; - this.a_void_______(var11); + this.setPosition(200.0F, 150.0F); } } @Override - public void q(Object[] var1) { - Matrix4f var2 = (Matrix4f)var1[0]; - long var3 = (Long)var1[1]; - if (this.g <= 0.0F || this.h <= 0.0F) { + public void renderEditorOutline(Matrix4f matrix) { + if (this.width <= 0.0F || this.height <= 0.0F) { return; } - super.q(new Object[]{var2, var3}); + super.renderEditorOutline(matrix); } @Override - public void l(Object[] var1) { - RenderHelper8 var5 = (RenderHelper8)var1[0]; - MatrixCameraData var2 = (MatrixCameraData)var1[1]; - Matrix4f var6 = (Matrix4f)var1[2]; - long var3 = (Long)var1[3]; - long var7 = var3 ^ 48964852101235L; - long var9 = var3 ^ 95334181894420L; - long var11 = var3 ^ 54030867045760L; - long var13 = var3 ^ 104134194455071L; - long var15 = var3 ^ 33668147527298L; - long var17 = var3 ^ 93148276620004L; - long var19 = var3 ^ 132449650111663L; - long var21 = var3 ^ 78957407708937L; - long var23 = var3 ^ 115271282653595L; - long var25 = var3 ^ 8572711703332L; - long var27 = var3 ^ 89135395443612L; - long var29 = var3 ^ 102693909475685L; - long var31 = var3 ^ 6014253680539L; - long var33 = var3 ^ 131934975778103L; - long var35 = var3 ^ 19313467402120L; - long var37 = var3 ^ 101037798966850L; - long var39 = var3 ^ 26124314106062L; - Event.b(); - long var42 = System.currentTimeMillis(); - float var44 = this.n == 0L ? 0.0F : (float)(var42 - this.n) * 0.005F; - this.n = var42; - boolean var45 = b.currentScreen instanceof HudEditorScreen; - Iterator var46 = this.k.iterator(); + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + long now = System.currentTimeMillis(); + float frameDelta = this.lastFrameTime == 0L ? 0.0F : (float)(now - this.lastFrameTime) * 0.005F; + this.lastFrameTime = now; + boolean inEditor = mc.currentScreen instanceof HudEditorScreen; + Iterator iterator = this.notifications.iterator(); - while (var46.hasNext()) { - RenderHelper20 var47 = (RenderHelper20)var46.next(); - if (!var47.f && var42 - var47.d >= 2000L) { - var47.f = true; + while (iterator.hasNext()) { + ModuleToast updatedToast = (ModuleToast)iterator.next(); + if (!updatedToast.dismissed && now - updatedToast.createdAt >= 2000L) { + updatedToast.dismissed = true; } - float var10001 = var47.e; - float var10002 = var47.f ? 0.0F : 1.0F; - float var10003 = var47.f ? var44 * 2.0F : var44; - Object[] var10006 = new Object[]{null, null, null, var31}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - var47.e = MathHelper4.b_float______(var10006); - if (var47.f && var47.e <= 0.01F) { - var46.remove(); + updatedToast.animation = UiMath.approach(updatedToast.animation, updatedToast.dismissed ? 0.0F : 1.0F, updatedToast.dismissed ? frameDelta * 2.0F : frameDelta); + if (updatedToast.dismissed && updatedToast.animation <= 0.01F) { + iterator.remove(); } } - int var79 = 0; + int activeCount = 0; - for (RenderHelper20 var49 : (Iterable)(this.k)) { - if (!var49.f) { - var79++; + for (ModuleToast countedToast : (Iterable)(this.notifications)) { + if (!countedToast.dismissed) { + activeCount++; } } - for (RenderHelper20 var82 : (Iterable)(this.k)) { - if (var79 <= 5) { + for (ModuleToast overflowToast : (Iterable)(this.notifications)) { + if (activeCount <= 5) { break; } - if (!var82.f) { - var82.f = true; - var79--; + if (!overflowToast.dismissed) { + overflowToast.dismissed = true; + activeCount--; } } - ArrayList var81 = new ArrayList(this.k); - if (var45 && var81.isEmpty()) { - RenderHelper20 var83 = new RenderHelper20("Module Notifications", "Toasts appear here.", NotificationType.SUCCESS, var13); - var83.e = 1.0F; - var81.add(var83); + ArrayList visibleToasts = new ArrayList(this.notifications); + if (inEditor && visibleToasts.isEmpty()) { + ModuleToast previewToast = new ModuleToast("Module Notifications", "Toasts appear here.", NotificationType.SUCCESS); + previewToast.animation = 1.0F; + visibleToasts.add(previewToast); } - if (var81.isEmpty()) { - Object[] var114 = new Object[]{null, 0.0F}; - var114[0] = 0.0F; - this.i(var114); - this.o = 0.0F; - this.p = 0.0F; + if (visibleToasts.isEmpty()) { + this.setSize(0.0F, 0.0F); + this.lastHeight = 0.0F; + this.lastWidth = 0.0F; } else { - float var10000 = b.getWindow().getFramebufferWidth(); - HudEditorScreen.b(new Object[]{var7}); - var10000 = b.getWindow().getFramebufferHeight(); - HudEditorScreen.b(new Object[]{var7}); - boolean var51 = this.c_boolean__(new Object[0]); - boolean var52 = this.d_boolean(new Object[0]); - float var53 = Prestige.c.a(new Object[]{var33}).c_float___(new Object[]{var11}); - float var54 = var53 * 1.65F + 6.0F; - float var55 = 0.0F; - float var56 = 0.0F; + float remainingLife = mc.getWindow().getFramebufferWidth(); + HudEditorScreen.getHudPixelScale(); + remainingLife = mc.getWindow().getFramebufferHeight(); + HudEditorScreen.getHudPixelScale(); + boolean rightAligned = this.isAnchoredRight(); + boolean bottomAligned = this.isAnchoredBottom(); + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + float toastHeight = fontHeight * 1.65F + 6.0F; + float maxToastWidth = 0.0F; + float totalHeight = 0.0F; - for (RenderHelper20 var58 : (Iterable)(var81)) { - var55 = Math.max(var55, this.c(new Object[]{var58, var23})); - var56 += (var54 + 3.0F) * var58.e; + for (ModuleToast measuredToast : (Iterable)(visibleToasts)) { + maxToastWidth = Math.max(maxToastWidth, this.getToastWidth(measuredToast)); + totalHeight += (toastHeight + 3.0F) * measuredToast.animation; } - if (!var45) { - if (var52 && this.o > 0.0F) { - this.f = this.f - (var56 - this.o); + if (!inEditor) { + if (bottomAligned && this.lastHeight > 0.0F) { + this.y = this.y - (totalHeight - this.lastHeight); } - if (var51 && this.p > 0.0F) { - this.e = this.e - (var55 - this.p); + if (rightAligned && this.lastWidth > 0.0F) { + this.x = this.x - (maxToastWidth - this.lastWidth); } } - this.o = var56; - this.p = var55; - Object[] var10004 = new Object[]{null, var56}; - var10004[0] = var55; - this.i(var10004); - float var84 = var52 ? this.f + var56 - var54 : this.f; + this.lastHeight = totalHeight; + this.lastWidth = maxToastWidth; + this.setSize(maxToastWidth, totalHeight); + float toastY = bottomAligned ? this.y + totalHeight - toastHeight : this.y; - for (int var85 = var81.size() - 1; var85 >= 0; var85--) { - RenderHelper20 var59 = (RenderHelper20)var81.get(var85); - float var60 = var59.e; - float var61 = this.c(new Object[]{var59, var23}); - Color var62 = a_Color(new Object[]{var59.c, var39}); - float var63 = (1.0F - var60) * 12.0F; - float var64 = var51 ? this.e + var55 - var61 + var63 : this.e - var63; - float var65 = var64 + var61; - int var96 = NameTagsUtil.r.getRed(); - int var102 = NameTagsUtil.r.getGreen(); - int var106 = NameTagsUtil.r.getBlue(); - int var10005 = (int)(NameTagsUtil.r.getAlpha() * var60); - Object[] var10008 = new Object[]{null, var15}; - var10008[0] = var10005; - Color var66 = new Color(var96, var102, var106, a_int____(var10008)); - int var92 = (int)(230.0F * var60); - var10004 = new Object[]{null, null, var25}; - var10004[1] = var92; - var10004[0] = var62; - Color var67 = b(var10004); - var10005 = (int)(255.0F * var60); - var10008 = new Object[]{null, var15}; - var10008[0] = var10005; - Color var68 = new Color(255, 255, 255, a_int____(var10008)); - var96 = NameTagsUtil.u.getRed(); - var102 = NameTagsUtil.u.getGreen(); - int var108 = NameTagsUtil.u.getBlue(); - var10005 = (int)(255.0F * var60); - var10008 = new Object[]{null, var15}; - var10008[0] = var10005; - Color var69 = new Color(var96, var102, var108, a_int____(var10008)); - if (var60 > 0.7F) { - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var9}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var54; - var10011[5] = var61; - var10011[4] = var84; - var10011[3] = var64; - var10011[2] = var6; - var10011[1] = var2; - var10011[0] = var5; - RenderTarget.e(var10011); + for (int toastIndex = visibleToasts.size() - 1; toastIndex >= 0; toastIndex--) { + ModuleToast toast = (ModuleToast)visibleToasts.get(toastIndex); + float appearProgress = toast.animation; + float toastWidth = this.getToastWidth(toast); + Color typeColor = getTypeColor(toast.type); + float slideOffset = (1.0F - appearProgress) * 12.0F; + float toastX = rightAligned ? this.x + maxToastWidth - toastWidth + slideOffset : this.x - slideOffset; + float toastRight = toastX + toastWidth; + Color backgroundColor = new Color(HudStyle.BACKGROUND_COLOR.getRed(), HudStyle.BACKGROUND_COLOR.getGreen(), HudStyle.BACKGROUND_COLOR.getBlue(), clampAlpha((int)(HudStyle.BACKGROUND_COLOR.getAlpha() * appearProgress))); + Color iconColor = withAlpha(typeColor, (int)(230.0F * appearProgress)); + Color titleColor = new Color(255, 255, 255, clampAlpha((int)(255.0F * appearProgress))); + Color messageColor = new Color(HudStyle.MUTED_TEXT_COLOR.getRed(), HudStyle.MUTED_TEXT_COLOR.getGreen(), HudStyle.MUTED_TEXT_COLOR.getBlue(), clampAlpha((int)(255.0F * appearProgress))); + if (appearProgress > 0.7F) { + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, toastX, toastY, toastWidth, toastHeight, 5, 4.0F); } - Object[] var124 = new Object[]{null, null, null, null, null, null, null, null, null, var19}; - var124[8] = 4.0F; - var124[7] = var66; - var124[6] = var54; - var124[5] = var61; - var124[4] = var84; - var124[3] = var64; - var124[2] = var6; - var124[1] = var2; - var124[0] = var5; - RoundedPosColorShader.c(var124); - FontRenderer var70 = this.a(new Object[]{var59.c, var21}); - float var71 = var51 ? var65 - 5.5F - 10.0F : var64 + 5.5F; - float var117 = var84 + (var54 - 10.0F) / 2.0F; - var124 = new Object[]{null, null, null, null, null, null, null, null, var67, var35}; - var124[7] = 10.0F; - var124[6] = 10.0F; - var124[5] = var117; - var124[4] = var71; - var124[3] = var70; - var124[2] = var6; - var124[1] = var2; - var124[0] = var5; - RoundedTextureShader.c(var124); - float var72 = Prestige.c.a(new Object[]{var33}).a_float______________(new Object[]{var59.a, var29}) * 0.9F; - float var73 = Prestige.c.a(new Object[]{var33}).a_float______________(new Object[]{var59.b, var29}) * 0.75F; - float var74 = var51 ? var71 - 3.0F - var72 : var71 + 10.0F + 3.0F; - float var75 = var51 ? var71 - 3.0F - var73 : var71 + 10.0F + 3.0F; - Font var88 = Prestige.c.a(new Object[]{var33}); - String var98 = var59.a; - float var109 = var84 + 3.0F; - Object[] var10009 = new Object[]{null, null, null, null, null, var68, var37}; - var10009[4] = 0.9F; - var10009[3] = var109; - var10009[2] = var74; - var10009[1] = var98; - var10009[0] = var6; - var88.w(var10009); - Font var89 = Prestige.c.a(new Object[]{var33}); - String var99 = var59.b; - float var110 = var84 + 3.0F + var53 * 0.9F; - var10009 = new Object[]{null, null, null, null, null, var69, var37}; - var10009[4] = 0.75F; - var10009[3] = var110; - var10009[2] = var75; - var10009[1] = var99; - var10009[0] = var6; - var89.w(var10009); - if (var59.f) { - var10000 = 0.0F; + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, toastX, toastY, toastWidth, toastHeight, backgroundColor, 4.0F); + GlTextureHandle typeIcon = this.getTypeIcon(toast.type); + float iconX = rightAligned ? toastRight - 5.5F - 10.0F : toastX + 5.5F; + RoundedTextureShader.drawTexture(batch, cameraData, matrix, typeIcon, iconX, toastY + (toastHeight - 10.0F) / 2.0F, 10.0F, 10.0F, iconColor); + float titleWidth = Prestige.fontManager.getDefaultFont().getTextWidth(toast.title) * 0.9F; + float messageWidth = Prestige.fontManager.getDefaultFont().getTextWidth(toast.message) * 0.75F; + float titleX = rightAligned ? iconX - 3.0F - titleWidth : iconX + 10.0F + 3.0F; + float messageX = rightAligned ? iconX - 3.0F - messageWidth : iconX + 10.0F + 3.0F; + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, toast.title, titleX, toastY + 3.0F, 0.9F, titleColor); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, toast.message, messageX, toastY + 3.0F + fontHeight * 0.9F, 0.75F, messageColor); + if (toast.dismissed) { + remainingLife = 0.0F; } else { - var10000 = 1.0F - (float)(var42 - var59.d) / 2000.0F; - Object[] var118 = new Object[]{null, null, null, var17}; - var118[2] = 1.0F; - var118[1] = 0.0F; - var118[0] = var10000; - var10000 = MathHelper4.a(var118); + remainingLife = 1.0F - (float)(now - toast.createdAt) / 2000.0F; + remainingLife = UiMath.clamp(remainingLife, 0.0F, 1.0F); } - float var76 = var10000; - float var77 = (var61 - 11.0F) * var76; - if (var77 > 0.5F) { - var92 = (int)(150.0F * var60); - var10004 = new Object[]{null, null, var25}; - var10004[1] = var92; - var10004[0] = var62; - Color var78 = b(var10004); - if (var51) { - float var94 = var65 - 5.5F - var77; - float var100 = var84 + var54 - 3.0F; - float var104 = var65 - 5.5F; - float var112 = var84 + var54 - 2.0F; - var10008 = new Object[]{null, null, null, null, null, var78, var27}; - var10008[4] = var112; - var10008[3] = var104; - var10008[2] = var100; - var10008[1] = var94; - var10008[0] = var6; - RenderState.l(var10008); + float lifeBarWidth = (toastWidth - 11.0F) * remainingLife; + if (lifeBarWidth > 0.5F) { + Color lifeBarColor = withAlpha(typeColor, (int)(150.0F * appearProgress)); + if (rightAligned) { + ShapeRenderer.drawRect(matrix, toastRight - 5.5F - lifeBarWidth, toastY + toastHeight - 3.0F, toastRight - 5.5F, toastY + toastHeight - 2.0F, lifeBarColor); } else { - float var95 = var64 + 5.5F; - float var101 = var84 + var54 - 3.0F; - float var105 = var64 + 5.5F + var77; - float var113 = var84 + var54 - 2.0F; - var10008 = new Object[]{null, null, null, null, null, var78, var27}; - var10008[4] = var113; - var10008[3] = var105; - var10008[2] = var101; - var10008[1] = var95; - var10008[0] = var6; - RenderState.l(var10008); + ShapeRenderer.drawRect(matrix, toastX + 5.5F, toastY + toastHeight - 3.0F, toastX + 5.5F + lifeBarWidth, toastY + toastHeight - 2.0F, lifeBarColor); } } - float var86 = (var54 + 3.0F) * var60; - if (var52) { - var84 -= var86; + float rowAdvance = (toastHeight + 3.0F) * appearProgress; + if (bottomAligned) { + toastY -= rowAdvance; } else { - var84 += var86; + toastY += rowAdvance; } } } } - private float c(Object[] var1) { - RenderHelper20 var4 = (RenderHelper20)var1[0]; - long var2 = (Long)var1[1]; - var2 = 53258369047921L ^ var2; - long var5 = var2 ^ 6325548307855L; - long var7 = var2 ^ 52055014947293L; - float var9 = Prestige.c.a(new Object[]{var7}).a_float______________(new Object[]{var4.a, var5}) * 0.9F; - float var10 = Prestige.c.a(new Object[]{var7}).a_float______________(new Object[]{var4.b, var5}) * 0.75F; - float var11 = Math.max(var9, var10); - return Math.max(90.0F, 18.5F + var11 + 5.5F); + private float getToastWidth(ModuleToast toast) { + return Math.max(90.0F, 18.5F + Math.max(Prestige.fontManager.getDefaultFont().getTextWidth(toast.title) * 0.9F, Prestige.fontManager.getDefaultFont().getTextWidth(toast.message) * 0.75F) + 5.5F); } - private FontRenderer a(Object[] var1) { - NotificationType var4 = (NotificationType)var1[0]; - long var2 = (Long)var1[1]; - var2 = 53258369047921L ^ var2; - long var5 = var2 ^ 75086570088505L; - Event.b(); - FontRenderer var8 = (FontRenderer)this.l.get(var4); - if (var8 == null) { - var8 = TextureUtil.a(new Object[]{"assets/prestige/icons/notifications/" + var4.name().toLowerCase() + ".png", var5}); - this.l.put(var4, var8); + private GlTextureHandle getTypeIcon(NotificationType type) { + GlTextureHandle icon = (GlTextureHandle)this.iconTextures.get(type); + if (icon == null) { + icon = TextureLoader.loadTexture("assets/prestige/icons/notifications/" + type.name().toLowerCase() + ".png"); + this.iconTextures.put(type, icon); } - return var8; + return icon; } - private static Color a_Color(Object[] var0) { - NotificationType var1 = (NotificationType)var0[0]; - switch (RenderHelper18.a[var1.ordinal()]) { + private static Color getTypeColor(NotificationType type) { + switch (NotificationTypeSwitchMap.SWITCH_MAP[type.ordinal()]) { case 1: return new Color(76, 175, 80); case 2: @@ -438,90 +249,11 @@ public class ModuleNotificationsElement extends HudElement { } } - private static Color b(Object[] var0) { - Color var1 = (Color)var0[0]; - int var2 = (Integer)var0[1]; - long var3 = (Long)var0[2]; - var3 = 53258369047921L ^ var3; - long var5 = var3 ^ 45239607603415L; - int var10002 = var1.getRed(); - int var10003 = var1.getGreen(); - int var10004 = var1.getBlue(); - Object[] var10008 = new Object[]{null, var5}; - var10008[0] = var2; - return new Color(var10002, var10003, var10004, a_int____(var10008)); + private static Color withAlpha(Color color, int alpha) { + return new Color(color.getRed(), color.getGreen(), color.getBlue(), clampAlpha(alpha)); } - private static int a_int____(Object[] var0) { - int var3 = (Integer)var0[0]; - return var3 < 0 ? 0 : Math.min(var3, 255); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static int clampAlpha(int value) { + return value < 0 ? 0 : Math.min(value, 255); } } diff --git a/src/main/java/dev/zprestige/prestige/hud/OffscreenArrowElement.java b/src/main/java/dev/zprestige/prestige/hud/OffscreenArrowElement.java index 48c190e..af70445 100644 --- a/src/main/java/dev/zprestige/prestige/hud/OffscreenArrowElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/OffscreenArrowElement.java @@ -1,297 +1,108 @@ package dev.zprestige.prestige.hud; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.RenderState; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.ShapeRenderer; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import org.joml.Matrix4f; public class OffscreenArrowElement extends HudElement { - private static final float m = 16.0F; - private static final float a = 9.0F; - private static final float c = 5.0F; - private static final float d = 4.5F; - private static final float e = 45.0F; - private static final float f = 45.0F; - private static final float g = 5.0F; - private static final float h = 10.0F; - private static final float i = 28.0F; - private static final float j = 0.18F; - private float k; - private float l; - private boolean n; - private long o; + private float arrowAngle; + private float arrowVisibility; + private boolean angleInitialized; + private long lastFrameTime; - public OffscreenArrowElement(long var1) { - super("Offscreen Arrow", "Points to the closest player when they're off-screen", (20581395994039L)); - var1 = 0L; - var1 = 84397816325920L ^ var1; - long var3 = var1 ^ 103859272856215L; - this.k = 0.0F; - this.l = 0.0F; - this.n = false; - this.o = 0L; + public OffscreenArrowElement() { + super("Offscreen Arrow", "Points to the closest player when they're off-screen"); + this.arrowAngle = 0.0F; + this.arrowVisibility = 0.0F; + this.angleInitialized = false; + this.lastFrameTime = 0L; } @Override - public void l(Object[] var1) { - Matrix4f var5 = (Matrix4f)var1[2]; - long var3 = (Long)var1[3]; - long var7 = var3 ^ 27807340928064L; - long var9 = var3 ^ 23705772420734L; - long var11 = var3 ^ 36001204938826L; - long var13 = var3 ^ 133628840384110L; - Event.b(); - Object[] var10005 = new Object[]{null, 0.0F}; - var10005[0] = 0.0F; - this.i(var10005); - if (b.player != null && b.world != null) { - long var16 = System.currentTimeMillis(); - float var18 = this.o == 0L ? 0.016F : (float)(var16 - this.o) / 1000.0F; - this.o = var16; - var18 = Math.min(var18, 0.05F); - PlayerEntity var19 = CombatUtil.a_class_1657(new Object[]{var13}); - boolean var20 = false; - float var21 = 0.0F; - if (var19 != null) { - Vec3d var22 = var19.getEyePos(); - Vec3d var23 = b.player.getEyePos(); - double var24 = var22.x - var23.x; - double var26 = var22.y - var23.y; - double var28 = var22.z - var23.z; - double var30 = Math.sqrt(var24 * var24 + var28 * var28); - double var32 = Math.toDegrees(Math.atan2(-var24, var28)); - double var34 = Math.toDegrees(-Math.atan2(var26, var30)); - double var36 = MathHelper.wrapDegrees(var32 - b.player.getYaw()); - double var38 = var34 - b.player.getPitch(); - boolean var40 = Math.abs(var36) < 45.0 && Math.abs(var38) < 45.0; - var20 = !var40; - var21 = (float)var36; + public void render(dev.zprestige.prestige.render.BufferSource batch, dev.zprestige.prestige.data.CameraMatrices cameraData, Matrix4f matrix) { + this.setSize(0.0F, 0.0F); + if (mc.player != null && mc.world != null) { + long now = System.currentTimeMillis(); + float deltaSeconds = this.lastFrameTime == 0L ? 0.016F : (float)(now - this.lastFrameTime) / 1000.0F; + this.lastFrameTime = now; + deltaSeconds = Math.min(deltaSeconds, 0.05F); + PlayerEntity targetPlayer = TargetSelector.getClosestEnemy(); + boolean offscreen = false; + float targetAngle = 0.0F; + if (targetPlayer != null) { + Vec3d targetEyePos = targetPlayer.getEyePos(); + Vec3d selfEyePos = mc.player.getEyePos(); + double deltaX = targetEyePos.x - selfEyePos.x; + double deltaY = targetEyePos.y - selfEyePos.y; + double deltaZ = targetEyePos.z - selfEyePos.z; + double horizontalDistance = Math.sqrt(deltaX * deltaX + deltaZ * deltaZ); + double yawToTarget = Math.toDegrees(Math.atan2(-deltaX, deltaZ)); + double pitchToTarget = Math.toDegrees(-Math.atan2(deltaY, horizontalDistance)); + double relativeYaw = MathHelper.wrapDegrees(yawToTarget - mc.player.getYaw()); + double relativePitch = pitchToTarget - mc.player.getPitch(); + offscreen = !(Math.abs(relativeYaw) < 45.0 && Math.abs(relativePitch) < 45.0); + targetAngle = (float)relativeYaw; } - if (!this.n && var20) { - this.k = var21; - this.n = true; + if (!this.angleInitialized && offscreen) { + this.arrowAngle = targetAngle; + this.angleInitialized = true; } - float var42 = 1.0F - (float)Math.exp(-5.0F * var18); - float var43 = var20 ? 10.0F : 28.0F; - float var44 = 1.0F - (float)Math.exp(-var43 * var18); - float var25 = MathHelper.wrapDegrees(var21 - this.k); - this.k = MathHelper.wrapDegrees(this.k + var25 * var42); - float var45 = var20 ? 1.0F : 0.0F; - this.l = this.l + (var45 - this.l) * var44; - if (this.l < 0.01F) { - this.n = false; + float angleSmoothing = 1.0F - (float)Math.exp(-5.0F * deltaSeconds); + float fadeSmoothing = 1.0F - (float)Math.exp(-(offscreen ? 10.0F : 28.0F) * deltaSeconds); + float angleDelta = MathHelper.wrapDegrees(targetAngle - this.arrowAngle); + this.arrowAngle = MathHelper.wrapDegrees(this.arrowAngle + angleDelta * angleSmoothing); + this.arrowVisibility = this.arrowVisibility + ((offscreen ? 1.0F : 0.0F) - this.arrowVisibility) * fadeSmoothing; + if (this.arrowVisibility < 0.01F) { + this.angleInitialized = false; } else { - float var27 = (float)Math.sqrt(var5.m00() * var5.m00() + var5.m01() * var5.m01() + var5.m02() * var5.m02()); - float var46 = b.getWindow().getScaledWidth() / 2.0F / var27; - float var29 = b.getWindow().getScaledHeight() / 2.0F / var27; - double var47 = Math.toRadians(this.k); - float var48 = (float)Math.sin(var47); - float var33 = -((float)Math.cos(var47)); - float var49 = -var33; - Color var50 = MathHelper4.d(new Object[]{var7}); - float var37 = 1.0F + 0.18F * (float)Math.sin(var16 * 0.012); - float var10001 = 0.1F * this.l * var37; - Object[] var10004 = new Object[]{null, null, var9}; - var10004[1] = var10001; - var10004[0] = var50; - int var51 = a(var10004); - var10001 = 0.22F * this.l * var37; - var10004 = new Object[]{null, null, var9}; - var10004[1] = var10001; - var10004[0] = var50; - int var39 = a(var10004); - Object[] var10014 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, var11}; - var10014[11] = var51; - var10014[10] = 6.9F; - var10014[9] = 7.4F; - var10014[8] = 13.8F; - var10014[7] = 18.4F; - var10014[6] = var48; - var10014[5] = var49; - var10014[4] = var33; - var10014[3] = var48; - var10014[2] = var29; - var10014[1] = var46; - var10014[0] = var5; - r(var10014); - var10014 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, var11}; - var10014[11] = var39; - var10014[10] = 5.7F; - var10014[9] = 6.2F; - var10014[8] = 11.4F; - var10014[7] = 17.2F; - var10014[6] = var48; - var10014[5] = var49; - var10014[4] = var33; - var10014[3] = var48; - var10014[2] = var29; - var10014[1] = var46; - var10014[0] = var5; - r(var10014); - var10001 = this.l; - var10004 = new Object[]{null, null, var9}; - var10004[1] = var10001; - var10004[0] = var50; - int var52 = a(var10004); - var10014 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, var11}; - var10014[11] = var52; - var10014[10] = 4.5F; - var10014[9] = 5.0F; - var10014[8] = 9.0F; - var10014[7] = 16.0F; - var10014[6] = var48; - var10014[5] = var49; - var10014[4] = var33; - var10014[3] = var48; - var10014[2] = var29; - var10014[1] = var46; - var10014[0] = var5; - r(var10014); + float matrixScale = (float)Math.sqrt(matrix.m00() * matrix.m00() + matrix.m01() * matrix.m01() + matrix.m02() * matrix.m02()); + float centerX = mc.getWindow().getScaledWidth() / 2.0F / matrixScale; + float centerY = mc.getWindow().getScaledHeight() / 2.0F / matrixScale; + double angleRadians = Math.toRadians(this.arrowAngle); + float directionX = (float)Math.sin(angleRadians); + float directionY = -((float)Math.cos(angleRadians)); + float perpendicularX = -directionY; + Color accent = UiMath.getAccentColor(); + float pulse = 1.0F + 0.18F * (float)Math.sin(now * 0.012); + int outerGlowColor = toArgbWithAlpha(accent, 0.1F * this.arrowVisibility * pulse); + int innerGlowColor = toArgbWithAlpha(accent, 0.22F * this.arrowVisibility * pulse); + drawArrowHead(matrix, centerX, centerY, directionX, directionY, perpendicularX, directionX, 18.4F, 13.8F, 7.4F, 6.9F, outerGlowColor); + drawArrowHead(matrix, centerX, centerY, directionX, directionY, perpendicularX, directionX, 17.2F, 11.4F, 6.2F, 5.7F, innerGlowColor); + drawArrowHead(matrix, centerX, centerY, directionX, directionY, perpendicularX, directionX, 16.0F, 9.0F, 5.0F, 4.5F, toArgbWithAlpha(accent, this.arrowVisibility)); } } } - private static void r(Object[] var0) { - Matrix4f var4 = (Matrix4f)var0[0]; - float var6 = (Float)var0[1]; - float var5 = (Float)var0[2]; - float var10 = (Float)var0[3]; - float var12 = (Float)var0[4]; - float var3 = (Float)var0[5]; - float var11 = (Float)var0[6]; - float var13 = (Float)var0[7]; - float var2 = (Float)var0[8]; - float var1 = (Float)var0[9]; - float var14 = (Float)var0[10]; - int var7 = (Integer)var0[11]; - long var8 = (Long)var0[12]; - var8 = 84397816325920L ^ var8; - long var15 = var8 ^ 130579662978177L; - float var17 = var6 + var10 * var13; - float var18 = var5 + var12 * var13; - float var19 = -var10 * var2; - float var20 = -var12 * var2; - float var21 = var3 * var1; - float var22 = var11 * var1; - float var23 = var17 + var19 + var21; - float var24 = var18 + var20 + var22; - float var25 = var17 + var19 - var21; - float var26 = var18 + var20 - var22; - float var27 = var17 - var10 * var14; - float var28 = var18 - var12 * var14; - Object[] var10010 = new Object[]{null, null, null, null, null, null, null, null, var15}; - var10010[7] = var7; - var10010[6] = var24; - var10010[5] = var23; - var10010[4] = var28; - var10010[3] = var27; - var10010[2] = var18; - var10010[1] = var17; - var10010[0] = var4; - RenderState.k(var10010); - var10010 = new Object[]{null, null, null, null, null, null, null, null, var15}; - var10010[7] = var7; - var10010[6] = var28; - var10010[5] = var27; - var10010[4] = var26; - var10010[3] = var25; - var10010[2] = var18; - var10010[1] = var17; - var10010[0] = var4; - RenderState.k(var10010); + private static void drawArrowHead(Matrix4f matrix, float centerX, float centerY, float directionX, float directionY, float perpendicularX, float perpendicularY, float tipDistance, float arrowLength, float halfWidth, float notchDepth, int color) { + float tipX = centerX + directionX * tipDistance; + float tipY = centerY + directionY * tipDistance; + float backX = -directionX * arrowLength; + float backY = -directionY * arrowLength; + float wingX = perpendicularX * halfWidth; + float wingY = perpendicularY * halfWidth; + float leftWingX = tipX + backX + wingX; + float leftWingY = tipY + backY + wingY; + float rightWingX = tipX + backX - wingX; + float rightWingY = tipY + backY - wingY; + float notchX = tipX - directionX * notchDepth; + float notchY = tipY - directionY * notchDepth; + ShapeRenderer.drawTriangle(matrix, tipX, tipY, notchX, notchY, leftWingX, leftWingY, color); + ShapeRenderer.drawTriangle(matrix, tipX, tipY, rightWingX, rightWingY, notchX, notchY, color); } - private static int a(Object[] var0) { - Color var2 = (Color)var0[0]; - float var1 = (Float)var0[1]; - long var3 = (Long)var0[2]; - var3 = 84397816325920L ^ var3; - long var5 = var3 ^ 111892939938721L; - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var1; - int var7 = Math.round(255.0F * c(var10004)); - return new Color(var2.getRed(), var2.getGreen(), var2.getBlue(), var7).getRGB(); + private static int toArgbWithAlpha(Color color, float alpha) { + int alphaByte = Math.round(255.0F * clamp01(alpha)); + return new Color(color.getRed(), color.getGreen(), color.getBlue(), alphaByte).getRGB(); } - private static float c(Object[] var0) { - float var3 = (Float)var0[0]; - return var3 < 0.0F ? 0.0F : Math.min(var3, 1.0F); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static float clamp01(float value) { + return value < 0.0F ? 0.0F : Math.min(value, 1.0F); } } diff --git a/src/main/java/dev/zprestige/prestige/hud/PotionDisplayElement.java b/src/main/java/dev/zprestige/prestige/hud/PotionDisplayElement.java index e599c54..d0c0022 100644 --- a/src/main/java/dev/zprestige/prestige/hud/PotionDisplayElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/PotionDisplayElement.java @@ -1,24 +1,20 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatHelper; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; +import dev.zprestige.prestige.combat.PotionDisplayEntry; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; import dev.zprestige.prestige.gui.HudEditorScreen; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; @@ -31,38 +27,27 @@ import org.joml.Matrix4f; import org.joml.Vector4f; public class PotionDisplayElement extends HudElement { - private static final float m = 0.65F; - private final Map a; - private FontRenderer c; - private float g; - private float h; - private float k; + private final Map effectEntries; + private GlTextureHandle iconTexture; + private float animatedWidth; + private float lastHeight; + private float lastWidth; - public PotionDisplayElement(long var1) { - super("Potion Display", "Show active potion effects with duration and level", (131056569934820L)); - var1 = 0L; - var1 = 104440006182506L ^ var1; - long var3 = var1 ^ 45961136301454L; - this.a = new LinkedHashMap(); - this.g = 70.0F; - this.h = 0.0F; - this.k = 0.0F; + public PotionDisplayElement() { + super("Potion Display", "Show active potion effects with duration and level"); + this.effectEntries = new LinkedHashMap(); + this.animatedWidth = 70.0F; + this.lastHeight = 0.0F; + this.lastWidth = 0.0F; } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 100.0F; - var10005[0] = 2.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(2.0F, 100.0F); } - public String b(Object[] var1) { - int var4 = (Integer)var1[0]; - - return switch (var4) { + public String toRomanNumeral(int level) { + return switch (level) { case 1 -> "I"; case 2 -> "II"; case 3 -> "III"; @@ -73,580 +58,245 @@ public class PotionDisplayElement extends HudElement { case 8 -> "VIII"; case 9 -> "IX"; case 10 -> "X"; - default -> var4 > 0 ? String.valueOf(var4) : "I"; + default -> level > 0 ? String.valueOf(level) : "I"; }; } - public String c(Object[] var1) { - int var2 = (Integer)var1[0]; - int var5 = var2 / 20; - int var6 = var5 / 60; - int var7 = var5 % 60; - return var6 > 0 ? String.format("%d:%02d", var6, var7) : String.format("0:%02d", var7); + public String formatDuration(int ticks) { + int totalSeconds = ticks / 20; + int minutes = totalSeconds / 60; + int seconds = totalSeconds % 60; + return minutes > 0 ? String.format("%d:%02d", minutes, seconds) : String.format("0:%02d", seconds); } @Override - public void l(Object[] var1) { - RenderHelper8 var2 = (RenderHelper8)var1[0]; - MatrixCameraData var6 = (MatrixCameraData)var1[1]; - Matrix4f var3 = (Matrix4f)var1[2]; - long var4 = (Long)var1[3]; - long var7 = var4 ^ 95334181894420L; - long var9 = var4 ^ 27807340928064L; - long var11 = var4 ^ 96488322041274L; - long var13 = var4 ^ 45947767099148L; - long var15 = var4 ^ 54030867045760L; - long var17 = var4 ^ 92326280031513L; - long var19 = var4 ^ 117880139760215L; - long var21 = var4 ^ 93148276620004L; - long var23 = var4 ^ 57131357196865L; - long var25 = var4 ^ 132449650111663L; - long var27 = var4 ^ 33779468439083L; - long var29 = var4 ^ 89135395443612L; - long var31 = var4 ^ 102693909475685L; - long var33 = var4 ^ 63614044077481L; - long var35 = var4 ^ 53426174796383L; - long var37 = var4 ^ 6014253680539L; - long var39 = var4 ^ 131934975778103L; - long var41 = var4 ^ 19313467402120L; - long var43 = var4 ^ 96557814079126L; - long var45 = var4 ^ 101037798966850L; - if (this.c == null) { - this.c = TextureUtil.a(new Object[]{"assets/prestige/icons/hud/potion.png", var23}); + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + if (this.iconTexture == null) { + this.iconTexture = TextureLoader.loadTexture("assets/prestige/icons/hud/potion.png"); } - float var48 = (float)(System.currentTimeMillis() - 0L) * 0.005F; + float frameDelta = (float)(System.currentTimeMillis() - 0L) * 0.005F; System.currentTimeMillis(); - HashSet var49 = new HashSet(); - if (b.player != null) { - for (Entry var51 : b.player.getActiveStatusEffects().entrySet()) { - StatusEffect var52 = (StatusEffect)((RegistryEntry)var51.getKey()).value(); - StatusEffectInstance var53 = (StatusEffectInstance)var51.getValue(); - if (var52 != null && var53 != null && (var53.isInfinite() || var53.getDuration() > 0)) { - var49.add(var52); - CombatHelper var54 = (CombatHelper)this.a.computeIfAbsent(var52, lpL42_0 -> new CombatHelper(87719101051954L)); - var54.a = var52.getName().getString(); - String var10001; - if (var53.getAmplifier() > 0) { - int var10002 = var53.getAmplifier() + 1; - Object[] var10005 = new Object[]{null, var27}; - var10005[0] = var10002; - var10001 = this.b(var10005); + HashSet activeEffects = new HashSet(); + if (mc.player != null) { + for (Entry effectEntry : mc.player.getActiveStatusEffects().entrySet()) { + StatusEffect effect = (StatusEffect)((RegistryEntry)effectEntry.getKey()).value(); + StatusEffectInstance effectInstance = (StatusEffectInstance)effectEntry.getValue(); + if (effect != null && effectInstance != null && (effectInstance.isInfinite() || effectInstance.getDuration() > 0)) { + activeEffects.add(effect); + PotionDisplayEntry display = (PotionDisplayEntry)this.effectEntries.computeIfAbsent(effect, newEffect -> new PotionDisplayEntry()); + display.name = effect.getName().getString(); + String levelText; + if (effectInstance.getAmplifier() > 0) { + levelText = this.toRomanNumeral(effectInstance.getAmplifier() + 1); } else { - var10001 = null; + levelText = null; } - var54.b = var10001; - var54.c = b_Color_(new Object[]{new Color(var52.getColor()), var35}); - var54.f = var53.isInfinite(); - var54.d = var53.getDuration(); - if (var54.d > var54.e) { - var54.e = var54.d; + display.levelText = levelText; + display.color = brightenIfDark(new Color(effect.getColor())); + display.infinite = effectInstance.isInfinite(); + display.duration = effectInstance.getDuration(); + if (display.duration > display.maxDuration) { + display.maxDuration = display.duration; } } } } - Iterator var86 = this.a.entrySet().iterator(); + Iterator entryIterator = this.effectEntries.entrySet().iterator(); - while (var86.hasNext()) { - Entry var87 = (Entry)var86.next(); - CombatHelper var89 = (CombatHelper)var87.getValue(); - float var91 = var49.contains(var87.getKey()) ? 1.0F : 0.0F; - float var120 = var89.g; - Object[] var10006 = new Object[]{null, null, null, var37}; - var10006[2] = var48; - var10006[1] = var91; - var10006[0] = var120; - var89.g = MathHelper4.b_float______(var10006); - if (var91 == 0.0F && var89.g < 0.02F) { - var86.remove(); + while (entryIterator.hasNext()) { + Entry mapEntry = (Entry)entryIterator.next(); + PotionDisplayEntry fadingDisplay = (PotionDisplayEntry)mapEntry.getValue(); + float targetVisibility = activeEffects.contains(mapEntry.getKey()) ? 1.0F : 0.0F; + fadingDisplay.visibility = UiMath.approach(fadingDisplay.visibility, targetVisibility, frameDelta); + if (targetVisibility == 0.0F && fadingDisplay.visibility < 0.02F) { + entryIterator.remove(); } } - float var88 = Prestige.c.a(new Object[]{var39}).c_float___(new Object[]{var15}); - Object[] var10003 = new Object[]{null, 1.0F}; - var10003[0] = var88; - float var90 = NameTagsUtil.a(var10003); - var10003 = new Object[]{null, 0.9F}; - var10003[0] = var88; - float var92 = NameTagsUtil.a(var10003); - float var93 = 23.0F; - float var55 = var93 + Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{"Potions", var31}) + 5.5F; - float var56 = Math.max(70.0F, var55); - float var57 = var90; + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + float headerHeight = HudStyle.getRowHeight(fontHeight, 1.0F); + float rowHeight = HudStyle.getRowHeight(fontHeight, 0.9F); + float titleOffset = 23.0F; + float targetWidth = Math.max(70.0F, titleOffset + Prestige.fontManager.getDefaultFont().getTextWidth("Potions") + 5.5F); + float totalHeight = headerHeight; - for (CombatHelper var59 : (Iterable)(this.a.values())) { - if (!(var59.g < 0.02F)) { - float var60 = 5.5F - + Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var59.a, var31}) * 0.9F - + (var59.b != null ? 3.0F + this.c_float(new Object[]{var59.b, var11}) : 0.0F) + for (PotionDisplayEntry measuredDisplay : (Iterable)(this.effectEntries.values())) { + if (!(measuredDisplay.visibility < 0.02F)) { + float rowWidth = 5.5F + + Prestige.fontManager.getDefaultFont().getTextWidth(measuredDisplay.name) * 0.9F + + (measuredDisplay.levelText != null ? 3.0F + this.getLevelBadgeWidth(measuredDisplay.levelText) : 0.0F) + 8.0F - + Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{this.d(new Object[]{var59, var17}), var31}) * 0.9F + + Prestige.fontManager.getDefaultFont().getTextWidth(this.getDurationText(measuredDisplay)) * 0.9F + 5.5F; - if (var60 > var56) { - var56 = var60; + if (rowWidth > targetWidth) { + targetWidth = rowWidth; } - var57 += (var92 + 3.0F) * var59.g; + totalHeight += (rowHeight + 3.0F) * measuredDisplay.visibility; } } - float var121 = this.g; - float var135 = var48 * 2.0F; - Object[] var158 = new Object[]{null, null, null, var37}; - var158[2] = var135; - var158[1] = var56; - var158[0] = var121; - this.g = MathHelper4.b_float______(var158); - boolean var94 = this.d_boolean(new Object[0]); - boolean var95 = this.c_boolean__(new Object[0]); - boolean var96 = b.currentScreen instanceof HudEditorScreen; - if (!var96) { - if (var94 && this.h > 0.0F) { - this.f = this.f - (var57 - this.h); + this.animatedWidth = UiMath.approach(this.animatedWidth, targetWidth, frameDelta * 2.0F); + boolean bottomAligned = this.isAnchoredBottom(); + boolean rightAligned = this.isAnchoredRight(); + if (!(mc.currentScreen instanceof HudEditorScreen)) { + if (bottomAligned && this.lastHeight > 0.0F) { + this.y = this.y - (totalHeight - this.lastHeight); } - if (var95 && this.k > 0.0F) { - this.e = this.e - (this.g - this.k); + if (rightAligned && this.lastWidth > 0.0F) { + this.x = this.x - (this.animatedWidth - this.lastWidth); } } - this.h = var57; - this.k = this.g; - var121 = this.g; - Object[] var10004 = new Object[]{null, var57}; - var10004[0] = var121; - this.i(var10004); - float var61 = this.e; - float var62 = var94 ? this.f + var57 - var90 : this.f; - short var10000 = 24821; - float var159 = this.g; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, null, var7}; - var10012[8] = 4.0F; - var10012[7] = 5; - var10012[6] = var90; - var10012[5] = var159; - var10012[4] = var62; - var10012[3] = var61; - var10012[2] = var3; - var10012[1] = var6; - var10012[0] = var2; - RenderTarget.e(var10012); - long var123 = 3027978994649654946L ^ var4; - float var10007 = this.g; - Color var10009 = NameTagsUtil.r; - Object[] var10013 = new Object[]{null, null, null, null, null, null, null, null, null, var25}; - var10013[8] = 4.0F; - var10013[7] = var10009; - var10013[6] = var90; - var10013[5] = var10007; - var10013[4] = var62; - var10013[3] = var61; - var10013[2] = var3; - var10013[1] = var6; - var10013[0] = var2; - RoundedPosColorShader.c(var10013); - String var63 = "Potions"; - float var64 = var62 + (var90 - 7.5F) / 2.0F; - float var65 = var62 + 3.0F; - if (var95) { - FontRenderer var136 = this.c; - float var144 = var61 + this.g - 5.5F - 7.5F; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, MathHelper4.d(new Object[]{var9}), var41}; - var10011[7] = 7.5F; - var10011[6] = 7.5F; - var10011[5] = var64; - var10011[4] = var144; - var10011[3] = var136; - var10011[2] = var3; - var10011[1] = var6; - var10011[0] = var2; - RoundedTextureShader.c(var10011); - float var66 = var61 + this.g - 18.0F; - var121 = var66 - 0.5F; - float var130 = var62 + 3.0F; - float var145 = var62 + var90 - 3.0F; - Object[] var10008 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var29}; - var10008[4] = var145; - var10008[3] = var66; - var10008[2] = var130; - var10008[1] = var121; - var10008[0] = var3; - RenderState.l(var10008); - float var67 = var61 + this.g - var93 - Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var63, var31}); + this.lastHeight = totalHeight; + this.lastWidth = this.animatedWidth; + this.setSize(this.animatedWidth, totalHeight); + float panelX = this.x; + float headerY = bottomAligned ? this.y + totalHeight - headerHeight : this.y; + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, headerY, this.animatedWidth, headerHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, headerY, this.animatedWidth, headerHeight, HudStyle.BACKGROUND_COLOR, 4.0F); + String title = "Potions"; + float iconY = headerY + (headerHeight - 7.5F) / 2.0F; + float titleY = headerY + 3.0F; + if (rightAligned) { + RoundedTextureShader.drawTexture(batch, cameraData, matrix, this.iconTexture, panelX + this.animatedWidth - 5.5F - 7.5F, iconY, 7.5F, 7.5F, UiMath.getAccentColor()); + float mirroredDividerX = panelX + this.animatedWidth - 18.0F; + ShapeRenderer.drawRect(matrix, mirroredDividerX - 0.5F, headerY + 3.0F, mirroredDividerX, headerY + headerHeight - 3.0F, HudStyle.DIVIDER_COLOR); + float mirroredCharX = panelX + this.animatedWidth - titleOffset - Prestige.fontManager.getDefaultFont().getTextWidth(title); - for (int var68 = 0; var68 < var63.length(); var68++) { - String var69 = String.valueOf(var63.charAt(var68)); - Font var110 = Prestige.c.a(new Object[]{var39}); - Color var152 = MathHelper4.d(new Object[]{var9}); - int var163 = 10 + (var63.length() - 1 - var68); - Object[] var10010 = new Object[]{null, null, null, var13}; - var10010[2] = var163; - var10010[1] = 10; - var10010[0] = var152; - var10008 = new Object[]{null, null, null, null, MatrixStack.b_Color_____(var10010), var43}; - var10008[3] = var65; - var10008[2] = var67; - var10008[1] = var69; - var10008[0] = var3; - var110.v(var10008); - var67 += Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var69, var31}); + for (int mirroredCharIndex = 0; mirroredCharIndex < title.length(); mirroredCharIndex++) { + String mirroredCharText = String.valueOf(title.charAt(mirroredCharIndex)); + Prestige.fontManager.getDefaultFont().drawText(matrix, mirroredCharText, mirroredCharX, titleY, Render2D.getWaveColor(UiMath.getAccentColor(), 10, 10 + (title.length() - 1 - mirroredCharIndex))); + mirroredCharX += Prestige.fontManager.getDefaultFont().getTextWidth(mirroredCharText); } } else { - FontRenderer var137 = this.c; - float var146 = var61 + 5.5F; - Object[] var182 = new Object[]{null, null, null, null, null, null, null, null, MathHelper4.d(new Object[]{var9}), var41}; - var182[7] = 7.5F; - var182[6] = 7.5F; - var182[5] = var64; - var182[4] = var146; - var182[3] = var137; - var182[2] = var3; - var182[1] = var6; - var182[0] = var2; - RoundedTextureShader.c(var182); - float var97 = var61 + 5.5F + 7.5F + 5.0F; - float var131 = var62 + 3.0F; - float var138 = var97 + 0.5F; - float var147 = var62 + var90 - 3.0F; - Object[] var168 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var29}; - var168[4] = var147; - var168[3] = var138; - var168[2] = var131; - var168[1] = var97; - var168[0] = var3; - RenderState.l(var168); - float var99 = var61 + var93; + RoundedTextureShader.drawTexture(batch, cameraData, matrix, this.iconTexture, panelX + 5.5F, iconY, 7.5F, 7.5F, UiMath.getAccentColor()); + float dividerX = panelX + 5.5F + 7.5F + 5.0F; + ShapeRenderer.drawRect(matrix, dividerX, headerY + 3.0F, dividerX + 0.5F, headerY + headerHeight - 3.0F, HudStyle.DIVIDER_COLOR); + float charX = panelX + titleOffset; - for (int var101 = 0; var101 < var63.length(); var101++) { - String var103 = String.valueOf(var63.charAt(var101)); - Font var111 = Prestige.c.a(new Object[]{var39}); - Color var153 = MathHelper4.d(new Object[]{var9}); - int var164 = 10 + var101; - Object[] var179 = new Object[]{null, null, null, var13}; - var179[2] = var164; - var179[1] = 10; - var179[0] = var153; - var168 = new Object[]{null, null, null, null, MatrixStack.b_Color_____(var179), var43}; - var168[3] = var65; - var168[2] = var99; - var168[1] = var103; - var168[0] = var3; - var111.v(var168); - var99 += Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var103, var31}); + for (int charIndex = 0; charIndex < title.length(); charIndex++) { + String charText = String.valueOf(title.charAt(charIndex)); + Prestige.fontManager.getDefaultFont().drawText(matrix, charText, charX, titleY, Render2D.getWaveColor(UiMath.getAccentColor(), 10, 10 + charIndex)); + charX += Prestige.fontManager.getDefaultFont().getTextWidth(charText); } } - float var98 = var94 ? var62 - 3.0F - var92 : var62 + var90 + 3.0F; + float rowY = bottomAligned ? headerY - 3.0F - rowHeight : headerY + headerHeight + 3.0F; - for (CombatHelper var102 : (Iterable)(this.a.values())) { - if (!(var102.g < 0.02F)) { - float var104 = var102.g; - int var70 = (int)(255.0F * var104); - float var72 = (1.0F - var104) * 6.0F; - if (var104 > 0.7F) { - float var154 = this.g; - Object[] var183 = new Object[]{null, null, null, null, null, null, null, null, null, var7}; - var183[8] = 4.0F; - var183[7] = 5; - var183[6] = var92; - var183[5] = var154; - var183[4] = var98; - var183[3] = var61; - var183[2] = var3; - var183[1] = var6; - var183[0] = var2; - RenderTarget.e(var183); + for (PotionDisplayEntry rowDisplay : (Iterable)(this.effectEntries.values())) { + if (!(rowDisplay.visibility < 0.02F)) { + float rowVisibility = rowDisplay.visibility; + int rowAlpha = (int)(255.0F * rowVisibility); + float slideOffset = (1.0F - rowVisibility) * 6.0F; + if (rowVisibility > 0.7F) { + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, rowY, this.animatedWidth, rowHeight, 5, 4.0F); } - float var155 = this.g; - Color var165 = NameTagsUtil.r; - int var170 = (int)(NameTagsUtil.r.getAlpha() * var104); - Object[] var184 = new Object[]{null, null, var33}; - var184[1] = var170; - var184[0] = var165; - Color var166 = a(var184); - var184 = new Object[]{null, null, null, null, null, null, null, null, null, var25}; - var184[8] = 4.0F; - var184[7] = var166; - var184[6] = var92; - var184[5] = var155; - var184[4] = var98; - var184[3] = var61; - var184[2] = var3; - var184[1] = var6; - var184[0] = var2; - RoundedPosColorShader.c(var184); - String var73 = this.d(new Object[]{var102, var17}); - float var74 = Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var102.a, var31}) * 0.9F; - float var75 = Prestige.c.a(new Object[]{var39}).a_float______________(new Object[]{var73, var31}) * 0.9F; - float var76 = var98 + (var92 - 2.0F - var88 * 0.9F) / 2.0F; - float var77; - float var78; - if (var95) { - var77 = var61 + this.g - 5.5F - var74 - var72; - var78 = var61 + 5.5F; + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, rowY, this.animatedWidth, rowHeight, withAlpha(HudStyle.BACKGROUND_COLOR, (int)(HudStyle.BACKGROUND_COLOR.getAlpha() * rowVisibility)), 4.0F); + String durationText = this.getDurationText(rowDisplay); + float nameWidth = Prestige.fontManager.getDefaultFont().getTextWidth(rowDisplay.name) * 0.9F; + float durationWidth = Prestige.fontManager.getDefaultFont().getTextWidth(durationText) * 0.9F; + float textY = rowY + (rowHeight - 2.0F - fontHeight * 0.9F) / 2.0F; + float nameX; + float durationX; + if (rightAligned) { + nameX = panelX + this.animatedWidth - 5.5F - nameWidth - slideOffset; + durationX = panelX + 5.5F; } else { - var77 = var61 + 5.5F + var72; - var78 = var61 + this.g - 5.5F - var75; + nameX = panelX + 5.5F + slideOffset; + durationX = panelX + this.animatedWidth - 5.5F - durationWidth; } - Font var112 = Prestige.c.a(new Object[]{var39}); - String var132 = var102.a; - Color var160 = NameTagsUtil.s; - Object[] var180 = new Object[]{null, null, var33}; - var180[1] = var70; - var180[0] = var160; - Object[] var174 = new Object[]{null, null, null, null, null, a(var180), var45}; - var174[4] = 0.9F; - var174[3] = var76; - var174[2] = var77; - var174[1] = var132; - var174[0] = var3; - var112.w(var174); - if (var102.b != null) { - float var79 = this.c_float(new Object[]{var102.b, var11}); - float var80 = var88 * 0.65F + 1.5F; - float var81 = var95 ? var77 - 3.0F - var79 : var77 + var74 + 3.0F; - float var82 = var98 + (var92 - 2.0F - var80) / 2.0F; - float var139 = var81 + var79; - float var148 = var82 + var80; - Color var156 = var102.c; - int var161 = (int)(70.0F * var104); - Object[] var175 = new Object[]{null, null, var33}; - var175[1] = var161; - var175[0] = var156; - Object[] var176 = new Object[]{null, null, null, null, null, a(var175), new Vector4f(3.0F), var19}; - var176[4] = var148; - var176[3] = var139; - var176[2] = var82; - var176[1] = var81; - var176[0] = var3; - RenderState.u(var176); - Font var113 = Prestige.c.a(new Object[]{var39}); - var132 = var102.b; - float var140 = var81 + 2.0F; - float var149 = var82 + 0.75F; - Color var162 = var102.c; - var180 = new Object[]{null, null, var33}; - var180[1] = var70; - var180[0] = var162; - Object[] var177 = new Object[]{null, null, null, null, null, a(var180), var45}; - var177[4] = 0.65F; - var177[3] = var149; - var177[2] = var140; - var177[1] = var132; - var177[0] = var3; - var113.w(var177); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, rowDisplay.name, nameX, textY, 0.9F, withAlpha(HudStyle.TEXT_COLOR, rowAlpha)); + if (rowDisplay.levelText != null) { + float badgeWidth = this.getLevelBadgeWidth(rowDisplay.levelText); + float badgeHeight = fontHeight * 0.65F + 1.5F; + float badgeX = rightAligned ? nameX - 3.0F - badgeWidth : nameX + nameWidth + 3.0F; + float badgeY = rowY + (rowHeight - 2.0F - badgeHeight) / 2.0F; + ShapeRenderer.drawRoundedRect(matrix, badgeX, badgeY, badgeX + badgeWidth, badgeY + badgeHeight, withAlpha(rowDisplay.color, (int)(70.0F * rowVisibility)), new Vector4f(3.0F)); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, rowDisplay.levelText, badgeX + 2.0F, badgeY + 0.75F, 0.65F, withAlpha(rowDisplay.color, rowAlpha)); } - int var105 = var102.f ? Integer.MAX_VALUE : var102.d / 20; - Color var106; - if (var105 <= 5) { - int var107 = (int)(170.0 + 85.0 * Math.sin(System.currentTimeMillis() * 0.012)); - var106 = new Color(235, 64, 64, (int)(Math.min(var107, 255) * var104)); - } else if (var105 <= 10) { - var106 = new Color(255, 190, 80, var70); + int secondsLeft = rowDisplay.infinite ? Integer.MAX_VALUE : rowDisplay.duration / 20; + Color durationColor; + if (secondsLeft <= 5) { + durationColor = new Color(235, 64, 64, (int)(Math.min((int)(170.0 + 85.0 * Math.sin(System.currentTimeMillis() * 0.012)), 255) * rowVisibility)); + } else if (secondsLeft <= 10) { + durationColor = new Color(255, 190, 80, rowAlpha); } else { - var106 = new Color(235, 235, 235, var70); + durationColor = new Color(235, 235, 235, rowAlpha); } - Font var114 = Prestige.c.a(new Object[]{var39}); - Object[] var178 = new Object[]{null, null, null, null, null, var106, var45}; - var178[4] = 0.9F; - var178[3] = var76; - var178[2] = var78; - var178[1] = var73; - var178[0] = var3; - var114.w(var178); - float var115; - if (var102.f) { - var115 = 1.0F; - } else if (var102.e > 0) { - float var116 = (float)var102.d / var102.e; - Object[] var157 = new Object[]{null, null, null, var21}; - var157[2] = 1.0F; - var157[1] = 0.0F; - var157[0] = var116; - var115 = MathHelper4.a(var157); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, durationText, durationX, textY, 0.9F, durationColor); + float computedProgress; + if (rowDisplay.infinite) { + computedProgress = 1.0F; + } else if (rowDisplay.maxDuration > 0) { + computedProgress = UiMath.clamp((float)rowDisplay.duration / rowDisplay.maxDuration, 0.0F, 1.0F); } else { - var115 = 0.0F; + computedProgress = 0.0F; } - float var108 = var115; - float var109 = var98 + var92 - 1.9F; - float var83 = var98 + var92 - 1.15F; - float var84 = (this.g - 4.0F) * var108; - Color var118; - if (var105 <= 5) { - Color var117 = new Color(235, 64, 64); - int var125 = (int)(200.0F * var104); - var10004 = new Object[]{null, null, var33}; - var10004[1] = var125; - var10004[0] = var117; - var118 = a(var10004); + float durationProgress = computedProgress; + float barTop = rowY + rowHeight - 1.9F; + float barBottom = rowY + rowHeight - 1.15F; + float barFillWidth = (this.animatedWidth - 4.0F) * durationProgress; + Color chosenBarColor; + if (secondsLeft <= 5) { + chosenBarColor = withAlpha(new Color(235, 64, 64), (int)(200.0F * rowVisibility)); } else { - Color var119 = var102.c; - int var126 = (int)(160.0F * var104); - var10004 = new Object[]{null, null, var33}; - var10004[1] = var126; - var10004[0] = var119; - var118 = a(var10004); + chosenBarColor = withAlpha(rowDisplay.color, (int)(160.0F * rowVisibility)); } - Color var85 = var118; - var121 = var61 + 2.0F; - float var141 = var61 + this.g - 2.0F; - Object[] var171 = new Object[]{null, null, null, null, null, new Color(255, 255, 255, (int)(18.0F * var104)), var29}; - var171[4] = var83; - var171[3] = var141; - var171[2] = var109; - var171[1] = var121; - var171[0] = var3; - RenderState.l(var171); - if (var95) { - var121 = var61 + this.g - 2.0F - var84; - float var142 = var61 + this.g - 2.0F; - Object[] var172 = new Object[]{null, null, null, null, null, var85, var29}; - var172[4] = var83; - var172[3] = var142; - var172[2] = var109; - var172[1] = var121; - var172[0] = var3; - RenderState.l(var172); + Color barColor = chosenBarColor; + ShapeRenderer.drawRect(matrix, panelX + 2.0F, barTop, panelX + this.animatedWidth - 2.0F, barBottom, new Color(255, 255, 255, (int)(18.0F * rowVisibility))); + if (rightAligned) { + ShapeRenderer.drawRect(matrix, panelX + this.animatedWidth - 2.0F - barFillWidth, barTop, panelX + this.animatedWidth - 2.0F, barBottom, barColor); } else { - var121 = var61 + 2.0F; - float var143 = var61 + 2.0F + var84; - Object[] var173 = new Object[]{null, null, null, null, null, var85, var29}; - var173[4] = var83; - var173[3] = var143; - var173[2] = var109; - var173[1] = var121; - var173[0] = var3; - RenderState.l(var173); + ShapeRenderer.drawRect(matrix, panelX + 2.0F, barTop, panelX + 2.0F + barFillWidth, barBottom, barColor); } - var98 += (var94 ? -1.0F : 1.0F) * (var92 + 3.0F) * var104; + rowY += (bottomAligned ? -1.0F : 1.0F) * (rowHeight + 3.0F) * rowVisibility; } } } - private float c_float(Object[] var1) { - String var2 = (String)var1[0]; - long var3 = (Long)var1[1]; - var3 = 104440006182506L ^ var3; - long var5 = var3 ^ 92753789694645L; - long var7 = var3 ^ 139376588512999L; - return Prestige.c.a(new Object[]{var7}).a_float______________(new Object[]{var2, var5}) * 0.65F + 4.0F; + private float getLevelBadgeWidth(String levelText) { + return Prestige.fontManager.getDefaultFont().getTextWidth(levelText) * 0.65F + 4.0F; } - private String d(Object[] var1) { - CombatHelper var4 = (CombatHelper)var1[0]; - long var2 = (Long)var1[1]; - var2 = 104440006182506L ^ var2; - long var5 = var2 ^ 135932649284719L; - String var10000; - if (var4.f) { - var10000 = "INF"; + private String getDurationText(PotionDisplayEntry display) { + String text; + if (display.infinite) { + text = "INF"; } else { - int var10001 = var4.d; - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var10001; - var10000 = this.c(var10004); + text = this.formatDuration(display.duration); } - return var10000; + return text; } - private static Color a(Object[] var0) { - Color var1 = (Color)var0[0]; - int var2 = (Integer)var0[1]; - return new Color(var1.getRed(), var1.getGreen(), var1.getBlue(), Math.max(0, Math.min(var2, 255))); + private static Color withAlpha(Color color, int alpha) { + return new Color(color.getRed(), color.getGreen(), color.getBlue(), Math.max(0, Math.min(alpha, 255))); } - private static Color b_Color_(Object[] var0) { - Color var1 = (Color)var0[0]; - Event.b(); - int var5 = var1.getRed(); - int var6 = var1.getGreen(); - int var7 = var1.getBlue(); - int var8 = var5 * 3 + var6 * 4 + var7 >> 3; - if (var8 < 90) { - float var9 = (90 - var8) / 90.0F * 0.6F; - var5 += (int)((255 - var5) * var9); - var6 += (int)((255 - var6) * var9); - var7 += (int)((255 - var7) * var9); + private static Color brightenIfDark(Color color) { + int red = color.getRed(); + int green = color.getGreen(); + int blue = color.getBlue(); + int luminance = red * 3 + green * 4 + blue >> 3; + if (luminance < 90) { + float lightenAmount = (90 - luminance) / 90.0F * 0.6F; + red += (int)((255 - red) * lightenAmount); + green += (int)((255 - green) * lightenAmount); + blue += (int)((255 - blue) * lightenAmount); } - return new Color(var5, var6, var7); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + return new Color(red, green, blue); } } diff --git a/src/main/java/dev/zprestige/prestige/hud/ResourcesElement.java b/src/main/java/dev/zprestige/prestige/hud/ResourcesElement.java index a788bc1..5151c40 100644 --- a/src/main/java/dev/zprestige/prestige/hud/ResourcesElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/ResourcesElement.java @@ -2,340 +2,165 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import dev.zprestige.prestige.type.NotificationType; -import dev.zprestige.prestige.util.TpsTimer; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import org.joml.Matrix4f; public class ResourcesElement extends HudElement { - private static final Item[] a = new Item[]{Items.GOLDEN_APPLE, Items.TOTEM_OF_UNDYING, Items.END_CRYSTAL, Items.EXPERIENCE_BOTTLE}; - private static final String[] c = new String[]{"Gapples", "Totems", "Crystals", "Exp"}; - private static final int[] d = new int[]{5, 2, 16, 8}; - private static final int i = 40; - private final int[] j; - private final int[] k; - private final long[] l; - private final ItemStack[] m; - private boolean n; - private boolean q; - private static final float o = 0.6F; - private static final float p = 9.6F; + private static final Item[] TRACKED_ITEMS = new Item[]{Items.GOLDEN_APPLE, Items.TOTEM_OF_UNDYING, Items.END_CRYSTAL, Items.EXPERIENCE_BOTTLE}; + private static final String[] RESOURCE_NAMES = new String[]{"Gapples", "Totems", "Crystals", "Exp"}; + private static final int[] LOW_THRESHOLDS = new int[]{5, 2, 16, 8}; + private final int[] counts; + private final int[] previousCounts; + private final long[] nextWarningTimes; + private final ItemStack[] iconStacks; + private boolean warningsArmed; + private boolean iconsInitialized; - public ResourcesElement(long var1) { - super("Resources", "Tracks gapples, totems, crystals, and exp — warns when any drops below threshold.", (22793589414440L)); - var1 = 0L; - var1 = 98820726575509L ^ var1; - long var3 = var1 ^ 85055208754109L; - this.j = new int[a.length]; - this.k = new int[a.length]; - this.l = new long[a.length]; - this.m = new ItemStack[a.length]; - this.n = false; - this.q = false; + public ResourcesElement() { + super("Resources", "Tracks gapples, totems, crystals, and exp — warns when any drops below threshold."); + this.counts = new int[TRACKED_ITEMS.length]; + this.previousCounts = new int[TRACKED_ITEMS.length]; + this.nextWarningTimes = new long[TRACKED_ITEMS.length]; + this.iconStacks = new ItemStack[TRACKED_ITEMS.length]; + this.warningsArmed = false; + this.iconsInitialized = false; } - private void r(Object[] var1) { - if (!this.q) { - for (int var5 = 0; var5 < a.length; var5++) { - this.m[var5] = new ItemStack(a[var5]); + private void initIconStacks() { + if (!this.iconsInitialized) { + for (int index = 0; index < TRACKED_ITEMS.length; index++) { + this.iconStacks[index] = new ItemStack(TRACKED_ITEMS[index]); } - this.q = true; + this.iconsInitialized = true; } } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 220.0F; - var10005[0] = 2.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(2.0F, 220.0F); } - private static int a(Object[] var0) { - Item var1 = (Item)var0[0]; - Event.b(); - int var5 = 0; + private static int countItem(Item item) { + int total = 0; - for (int var6 = 0; var6 <= 35; var6++) { - ItemStack var7 = b.player.getInventory().getStack(var6); - if (var7.getItem() == var1) { - var5 += var7.getCount(); + for (int slot = 0; slot <= 35; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack.getItem() == item) { + total += stack.getCount(); } } - ItemStack var8 = b.player.getOffHandStack(); - if (var8.getItem() == var1) { - var5 += var8.getCount(); + ItemStack offhandStack = mc.player.getOffHandStack(); + if (offhandStack.getItem() == item) { + total += offhandStack.getCount(); } - return var5; + return total; } @Subscribe - public void a(TickEvent19 var1) { - if (b.player != null && b.world != null) { - for (int var9 = 0; var9 < a.length; var9++) { - this.j[var9] = a(new Object[]{a[var9], 126516893439353L}); + public void onClientTick(ClientTickEvent event) { + if (mc.player != null && mc.world != null) { + for (int index = 0; index < TRACKED_ITEMS.length; index++) { + this.counts[index] = countItem(TRACKED_ITEMS[index]); } - if (b.player.age < 40) { - System.arraycopy(this.j, 0, this.k, 0, this.j.length); - this.n = false; - } else if (!this.n) { - System.arraycopy(this.j, 0, this.k, 0, this.j.length); - this.n = true; + if (mc.player.age < 40) { + System.arraycopy(this.counts, 0, this.previousCounts, 0, this.counts.length); + this.warningsArmed = false; + } else if (!this.warningsArmed) { + System.arraycopy(this.counts, 0, this.previousCounts, 0, this.counts.length); + this.warningsArmed = true; } else { - long var16 = System.currentTimeMillis(); + long now = System.currentTimeMillis(); - for (int var11 = 0; var11 < a.length; var11++) { - int var12 = d[var11]; - boolean var13 = this.k[var11] >= var12 && this.j[var11] < var12; - if (var13 && var16 >= this.l[var11]) { - TpsTimer var10000 = Prestige.v; - String var10002 = c[var11] + " low: " + this.j[var11] + "/" + var12; - Object[] var10007 = new Object[]{null, null, null, NotificationType.WARNING, 104881728073391L}; - var10007[2] = 4000L; - var10007[1] = var10002; - var10007[0] = "Resources"; - var10000.a(var10007); - long var14 = 5000L + (long)(Math.random() * 5000.0); - this.l[var11] = var16 + var14; + for (int resourceIndex = 0; resourceIndex < TRACKED_ITEMS.length; resourceIndex++) { + int threshold = LOW_THRESHOLDS[resourceIndex]; + if ((this.previousCounts[resourceIndex] >= threshold && this.counts[resourceIndex] < threshold) && now >= this.nextWarningTimes[resourceIndex]) { + Prestige.notificationManager.addNotification("Resources", RESOURCE_NAMES[resourceIndex] + " low: " + this.counts[resourceIndex] + "/" + threshold, 4000L, NotificationType.WARNING); + long warningCooldown = 5000L + (long)(Math.random() * 5000.0); + this.nextWarningTimes[resourceIndex] = now + warningCooldown; } - this.k[var11] = this.j[var11]; + this.previousCounts[resourceIndex] = this.counts[resourceIndex]; } } } } @Override - public void l(Object[] var1) { - RenderHelper8 var2 = (RenderHelper8)var1[0]; - MatrixCameraData var3 = (MatrixCameraData)var1[1]; - Matrix4f var6 = (Matrix4f)var1[2]; - long var4 = (Long)var1[3]; - long var7 = var4 ^ 132449650111663L; - long var9 = var4 ^ 95334181894420L; - long var11 = var4 ^ 27807340928064L; - long var13 = var4 ^ 89135395443612L; - long var15 = var4 ^ 102693909475685L; - long var17 = var4 ^ 131934975778103L; - long var19 = var4 ^ 45947767099148L; - long var21 = var4 ^ 64450247846539L; - long var23 = var4 ^ 25893121108317L; - long var25 = var4 ^ 54030867045760L; - long var27 = var4 ^ 96557814079126L; - long var29 = var4 ^ 101037798966850L; - this.r(new Object[]{var23}); - String var32 = "Resources"; - float var33 = Prestige.c.a(new Object[]{var17}).c_float___(new Object[]{var25}); - Object[] var10003 = new Object[]{null, 1.0F}; - var10003[0] = var33; - float var34 = NameTagsUtil.a(var10003); - Event.b(); - Object[] var10004 = new Object[]{null, 0.9F}; - var10004[0] = var33; - float var35 = NameTagsUtil.a(var10004); - float var36 = Prestige.c.a(new Object[]{var17}).a_float______________(new Object[]{var32, var15}); - float var37 = 5.5F + var36 + 5.5F; + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + this.initIconStacks(); + String title = "Resources"; + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + float headerHeight = HudStyle.getRowHeight(fontHeight, 1.0F); + float rowHeight = HudStyle.getRowHeight(fontHeight, 0.9F); + float titleWidth = Prestige.fontManager.getDefaultFont().getTextWidth(title); + float panelWidth = 5.5F + titleWidth + 5.5F; - for (int var38 = 0; var38 < a.length; var38++) { - float var39 = Prestige.c.a(new Object[]{var17}).a_float______________(new Object[]{String.valueOf(this.j[var38]), var15}) * 0.9F; - float var40 = 18.1F + var39 + 5.5F; - if (var40 > var37) { - var37 = var40; + for (int measureIndex = 0; measureIndex < TRACKED_ITEMS.length; measureIndex++) { + float rowWidth = 18.1F + (Prestige.fontManager.getDefaultFont().getTextWidth(String.valueOf(this.counts[measureIndex])) * 0.9F) + 5.5F; + if (rowWidth > panelWidth) { + panelWidth = rowWidth; } } - float var60 = var34 + 3.0F + var35 * a.length + 3.0F; - this.d_boolean(new Object[0]); - boolean var61 = this.c_boolean__(new Object[0]); - var10004 = new Object[]{null, var60}; - var10004[0] = var37; - this.i(var10004); - float var41 = this.e; - float var42 = this.f; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var9}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var60; - var10011[5] = var37; - var10011[4] = var42; - var10011[3] = var41; - var10011[2] = var6; - var10011[1] = var3; - var10011[0] = var2; - RenderTarget.e(var10011); - Color var10007 = NameTagsUtil.r; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var7}; - var10011[8] = 4.0F; - var10011[7] = var10007; - var10011[6] = var60; - var10011[5] = var37; - var10011[4] = var42; - var10011[3] = var41; - var10011[2] = var6; - var10011[1] = var3; - var10011[0] = var2; - RoundedPosColorShader.c(var10011); - float var43 = var42 + 3.0F; - float var44 = var61 ? var41 + var37 - 5.5F - var36 : var41 + 5.5F; - float var45 = var44; + float panelHeight = headerHeight + 3.0F + rowHeight * TRACKED_ITEMS.length + 3.0F; + this.isAnchoredBottom(); + boolean rightAligned = this.isAnchoredRight(); + this.setSize(panelWidth, panelHeight); + float panelX = this.x; + float panelY = this.y; + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, HudStyle.BACKGROUND_COLOR, 4.0F); + float titleY = panelY + 3.0F; + float charX = rightAligned ? panelX + panelWidth - 5.5F - titleWidth : panelX + 5.5F; - for (int var46 = 0; var46 < var32.length(); var46++) { - String var47 = String.valueOf(var32.charAt(var46)); - int var48 = var61 ? var32.length() - 1 - var46 : var46; - Font var10000 = Prestige.c.a(new Object[]{var17}); - Color var10005 = MathHelper4.d(new Object[]{var11}); - int var69 = 10 + var48; - Object[] var10010 = new Object[]{null, null, null, var19}; - var10010[2] = var69; - var10010[1] = 10; - var10010[0] = var10005; - Object[] var10008 = new Object[]{null, null, null, null, MatrixStack.b_Color_____(var10010), var27}; - var10008[3] = var43; - var10008[2] = var45; - var10008[1] = var47; - var10008[0] = var6; - var10000.v(var10008); - var45 += Prestige.c.a(new Object[]{var17}).a_float______________(new Object[]{var47, var15}); + for (int charIndex = 0; charIndex < title.length(); charIndex++) { + String charText = String.valueOf(title.charAt(charIndex)); + int waveIndex = rightAligned ? title.length() - 1 - charIndex : charIndex; + Prestige.fontManager.getDefaultFont().drawText(matrix, charText, charX, titleY, Render2D.getWaveColor(UiMath.getAccentColor(), 10, 10 + waveIndex)); + charX += Prestige.fontManager.getDefaultFont().getTextWidth(charText); } - float var62 = var42 + var34 - 0.5F; - float var10001 = var41 + 5.5F; - float var66 = var41 + var37 - 5.5F; - float var68 = var62 + 0.5F; - Object[] var71 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var13}; - var71[4] = var68; - var71[3] = var66; - var71[2] = var62; - var71[1] = var10001; - var71[0] = var6; - RenderState.l(var71); - long var63 = System.currentTimeMillis(); - int var49 = (int)Math.min(255.0, 170.0 + 85.0 * Math.sin(var63 * 0.012)); - float var50 = var42 + var34 + 3.0F; + float dividerY = panelY + headerHeight - 0.5F; + ShapeRenderer.drawRect(matrix, panelX + 5.5F, dividerY, panelX + panelWidth - 5.5F, dividerY + 0.5F, HudStyle.DIVIDER_COLOR); + int pulseAlpha = (int)Math.min(255.0, 170.0 + 85.0 * Math.sin(System.currentTimeMillis() * 0.012)); + float rowY = panelY + headerHeight + 3.0F; - for (int var51 = 0; var51 < a.length; var51++) { - boolean var52 = this.n && this.j[var51] < d[var51]; - Color var53 = var52 ? new Color(235, 64, 64, var49) : NameTagsUtil.s; - String var54 = String.valueOf(this.j[var51]); - float var55 = Prestige.c.a(new Object[]{var17}).a_float______________(new Object[]{var54, var15}) * 0.9F; - float var56 = var50 + (var35 - var33 * 0.9F) / 2.0F; - float var57 = var50 + (var35 - 9.6F) / 2.0F; - float var58; - float var59; - if (var61) { - var58 = var41 + var37 - 5.5F - 9.6F; - var59 = var58 - 3.0F - var55; + for (int rowIndex = 0; rowIndex < TRACKED_ITEMS.length; rowIndex++) { + Color countColor = (this.warningsArmed && this.counts[rowIndex] < LOW_THRESHOLDS[rowIndex]) ? new Color(235, 64, 64, pulseAlpha) : HudStyle.TEXT_COLOR; + String countText = String.valueOf(this.counts[rowIndex]); + float countWidth = Prestige.fontManager.getDefaultFont().getTextWidth(countText) * 0.9F; + float textY = rowY + (rowHeight - fontHeight * 0.9F) / 2.0F; + float iconY = rowY + (rowHeight - 9.6F) / 2.0F; + float iconX; + float countX; + if (rightAligned) { + iconX = panelX + panelWidth - 5.5F - 9.6F; + countX = iconX - 3.0F - countWidth; } else { - var58 = var41 + 5.5F; - var59 = var58 + 9.6F + 3.0F; + iconX = panelX + 5.5F; + countX = iconX + 9.6F + 3.0F; } - ItemStack var64 = this.m[var51]; - Object[] var70 = new Object[]{null, null, null, null, var6, var21}; - var70[3] = 0.6F; - var70[2] = var57; - var70[1] = var58; - var70[0] = var64; - MatrixStack.a_boolean_______________________________________(var70); - Font var65 = Prestige.c.a(new Object[]{var17}); - Object[] var10009 = new Object[]{null, null, null, null, null, var53, var29}; - var10009[4] = 0.9F; - var10009[3] = var56; - var10009[2] = var59; - var10009[1] = var54; - var10009[0] = var6; - var65.w(var10009); - var50 += var35; - } - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + Render2D.drawItem(this.iconStacks[rowIndex], iconX, iconY, 0.6F, matrix); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, countText, countX, textY, 0.9F, countColor); + rowY += rowHeight; } } } diff --git a/src/main/java/dev/zprestige/prestige/hud/TPSElement.java b/src/main/java/dev/zprestige/prestige/hud/TPSElement.java index 503e1d2..8083d9b 100644 --- a/src/main/java/dev/zprestige/prestige/hud/TPSElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/TPSElement.java @@ -2,388 +2,195 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.gui.HudEditorScreen; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Locale; import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket; import org.joml.Matrix4f; public class TPSElement extends HudElement { - private static final int a = 24; - private static final float m = 20.0F; - private FontRenderer d; - private final float[] g; - private int h; - private long i; - private float k; - private long j; - private float l; - private float o; - private float p; - private float t; - private float u; + private GlTextureHandle iconTexture; + private final float[] tpsHistory; + private int historyIndex; + private long lastTimeUpdate; + private float measuredTps; + private long lastFrameTime; + private float smoothedTps; + private float colorRed; + private float colorGreen; + private float colorBlue; + private float lastWidth; - public TPSElement(long var1) { - super("TPS", "Show the server's tick rate. Measured off the interval between WorldTimeUpdate packets.", (112967561235834L)); - var1 = 0L; - var1 = 16729889130533L ^ var1; - long var3 = var1 ^ 116039081952607L; - this.g = new float[24]; - this.h = 0; - this.i = 0L; - this.k = -1.0F; - this.j = 0L; - this.l = -1.0F; - this.o = -1.0F; - this.u = 0.0F; + public TPSElement() { + super("TPS", "Show the server's tick rate. Measured off the interval between WorldTimeUpdate packets."); + this.tpsHistory = new float[24]; + this.historyIndex = 0; + this.lastTimeUpdate = 0L; + this.measuredTps = -1.0F; + this.lastFrameTime = 0L; + this.smoothedTps = -1.0F; + this.colorRed = -1.0F; + this.lastWidth = 0.0F; } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 45.0F; - var10005[0] = 2.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(2.0F, 45.0F); } @Subscribe - public void a(PacketEvent var1) { - if (var1.a(new Object[0]) instanceof WorldTimeUpdateS2CPacket) { - long var5 = System.currentTimeMillis(); - if (this.i > 0L) { - long var7 = var5 - this.i; - if (var7 >= 200L) { - float var9 = Math.min(20000.0F / (float)var7, 20.0F); - this.k = var9; - this.g[this.h] = var9; - this.h = (this.h + 1) % 24; + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof WorldTimeUpdateS2CPacket) { + long now = System.currentTimeMillis(); + if (this.lastTimeUpdate > 0L) { + long interval = now - this.lastTimeUpdate; + if (interval >= 200L) { + float tps = Math.min(20000.0F / (float)interval, 20.0F); + this.measuredTps = tps; + this.tpsHistory[this.historyIndex] = tps; + this.historyIndex = (this.historyIndex + 1) % 24; } } - this.i = var5; + this.lastTimeUpdate = now; } } @Subscribe - public void a(TickEvent3 var1) { - Event.b(); - - for (int var5 = 0; var5 < 24; var5++) { - this.g[var5] = 0.0F; + public void onGameJoin(GameJoinEvent event) { + for (int index = 0; index < 24; index++) { + this.tpsHistory[index] = 0.0F; } - this.h = 0; - this.i = 0L; - this.k = -1.0F; - this.l = -1.0F; + this.historyIndex = 0; + this.lastTimeUpdate = 0L; + this.measuredTps = -1.0F; + this.smoothedTps = -1.0F; } @Override - public void l(Object[] var1) { - RenderHelper8 var6 = (RenderHelper8)var1[0]; - MatrixCameraData var5 = (MatrixCameraData)var1[1]; - Matrix4f var4 = (Matrix4f)var1[2]; - long var2 = (Long)var1[3]; - long var7 = var2 ^ 57131357196865L; - long var9 = var2 ^ 132449650111663L; - long var11 = var2 ^ 77544806110454L; - long var13 = var2 ^ 95334181894420L; - long var15 = var2 ^ 27807340928064L; - long var17 = var2 ^ 89135395443612L; - long var19 = var2 ^ 102693909475685L; - long var21 = var2 ^ 6014253680539L; - long var23 = var2 ^ 131934975778103L; - long var25 = var2 ^ 54030867045760L; - long var27 = var2 ^ 19313467402120L; - long var29 = var2 ^ 101037798966850L; - if (this.d == null) { - this.d = TextureUtil.a(new Object[]{"assets/prestige/icons/hud/clock.png", var7}); + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + if (this.iconTexture == null) { + this.iconTexture = TextureLoader.loadTexture("assets/prestige/icons/hud/clock.png"); } - long var32 = System.currentTimeMillis(); - float var34 = (float)(var32 - this.j) * 0.005F; - this.j = var32; - float var35; - String var36; - if (this.k < 0.0F) { - var35 = 0.0F; - var36 = "-.-"; + long now = System.currentTimeMillis(); + float frameDelta = (float)(now - this.lastFrameTime) * 0.005F; + this.lastFrameTime = now; + float currentTps; + String tpsText; + if (this.measuredTps < 0.0F) { + currentTps = 0.0F; + tpsText = "-.-"; } else { - boolean var37 = this.i > 0L && var32 - this.i > 3000L; - var35 = var37 ? 0.0F : this.k; - var36 = String.format(Locale.ROOT, "%.1f", var35); + currentTps = (this.lastTimeUpdate > 0L && now - this.lastTimeUpdate > 3000L) ? 0.0F : this.measuredTps; + tpsText = String.format(Locale.ROOT, "%.1f", currentTps); } - float var10001; - if (this.l < 0.0F) { - var10001 = var35; + float lerpValue; + if (this.smoothedTps < 0.0F) { + lerpValue = currentTps; } else { - var10001 = this.l; - float var10003 = var34 * 0.5F; - Object[] var10006 = new Object[]{null, null, null, var21}; - var10006[2] = var10003; - var10006[1] = var35; - var10006[0] = var10001; - var10001 = MathHelper4.b_float______(var10006); + lerpValue = this.smoothedTps; + lerpValue = UiMath.approach(lerpValue, currentTps, frameDelta * 0.5F); } - this.l = var10001; - float var10000 = this.l; - Object[] var83 = new Object[]{null, var11}; - var83[0] = var10000; - Color var70 = a(var83); - if (this.o < 0.0F) { - this.o = var70.getRed(); - this.p = var70.getGreen(); - this.t = var70.getBlue(); + this.smoothedTps = lerpValue; + Color targetColor = getTpsColor(this.smoothedTps); + if (this.colorRed < 0.0F) { + this.colorRed = targetColor.getRed(); + this.colorGreen = targetColor.getGreen(); + this.colorBlue = targetColor.getBlue(); } else { - var10001 = this.o; - float var10002 = var70.getRed(); - Object[] var90 = new Object[]{null, null, null, var21}; - var90[2] = var34; - var90[1] = var10002; - var90[0] = var10001; - this.o = MathHelper4.b_float______(var90); - var10001 = this.p; - var10002 = var70.getGreen(); - var90 = new Object[]{null, null, null, var21}; - var90[2] = var34; - var90[1] = var10002; - var90[0] = var10001; - this.p = MathHelper4.b_float______(var90); - var10001 = this.t; - var10002 = var70.getBlue(); - var90 = new Object[]{null, null, null, var21}; - var90[2] = var34; - var90[1] = var10002; - var90[0] = var10001; - this.t = MathHelper4.b_float______(var90); + lerpValue = this.colorRed; + float lerpTarget = targetColor.getRed(); + this.colorRed = UiMath.approach(lerpValue, lerpTarget, frameDelta); + lerpValue = this.colorGreen; + lerpTarget = targetColor.getGreen(); + this.colorGreen = UiMath.approach(lerpValue, lerpTarget, frameDelta); + lerpValue = this.colorBlue; + lerpTarget = targetColor.getBlue(); + this.colorBlue = UiMath.approach(lerpValue, lerpTarget, frameDelta); } - Color var38 = new Color((int)this.o, (int)this.p, (int)this.t); - float var39 = Prestige.c.a(new Object[]{var23}).c_float___(new Object[]{var25}); - float var40 = Prestige.c.a(new Object[]{var23}).a_float______________(new Object[]{var36, var19}) * 1.0F; - float var41 = Prestige.c.a(new Object[]{var23}).a_float______________(new Object[]{"tps", var19}) * 0.65F; - float var42 = var39 * 1.0F; - float var43 = var39 * 0.65F; - float var44 = 7.5F; - float var45 = 5.5F + var44 + 5.5F; - float var46 = var45 + 0.5F + 5.5F; - float var47 = Math.max(var40 + 3.0F + var41, 28.0F); - float var48 = var46 + var47 + 5.5F; - float var49 = NameTagsUtil.b(new Object[]{var39}); - boolean var50 = this.c_boolean__(new Object[0]); - boolean var51 = b.currentScreen instanceof HudEditorScreen; - if (var50 && this.u > 0.0F && !var51) { - this.e = this.e - (var48 - this.u); + Color tpsColor = new Color((int)this.colorRed, (int)this.colorGreen, (int)this.colorBlue); + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + float valueWidth = Prestige.fontManager.getDefaultFont().getTextWidth(tpsText) * 1.0F; + float unitWidth = Prestige.fontManager.getDefaultFont().getTextWidth("tps") * 0.65F; + float valueHeight = fontHeight * 1.0F; + float unitHeight = fontHeight * 0.65F; + float iconSize = 7.5F; + float iconSectionWidth = 5.5F + iconSize + 5.5F; + float contentOffset = iconSectionWidth + 0.5F + 5.5F; + float panelWidth = contentOffset + Math.max(valueWidth + 3.0F + unitWidth, 28.0F) + 5.5F; + float panelHeight = HudStyle.getCardHeight(fontHeight); + boolean rightAligned = this.isAnchoredRight(); + boolean inEditor = mc.currentScreen instanceof HudEditorScreen; + if (rightAligned && this.lastWidth > 0.0F && !inEditor) { + this.x = this.x - (panelWidth - this.lastWidth); } - this.u = var48; - float var52 = this.e; - float var53 = this.f; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var13}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var49; - var10011[5] = var48; - var10011[4] = var53; - var10011[3] = var52; - var10011[2] = var4; - var10011[1] = var5; - var10011[0] = var6; - RenderTarget.e(var10011); - Color var10007 = NameTagsUtil.r; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var9}; - var10011[8] = 4.0F; - var10011[7] = var10007; - var10011[6] = var49; - var10011[5] = var48; - var10011[4] = var53; - var10011[3] = var52; - var10011[2] = var4; - var10011[1] = var5; - var10011[0] = var6; - RoundedPosColorShader.c(var10011); - Color var54 = MathHelper4.d(new Object[]{var15}); - float var55 = var50 ? var52 + var48 - 5.5F - var44 : var52 + 5.5F; - float var56 = var50 ? var52 + var48 - var45 - 0.5F : var52 + var45; - FontRenderer var84 = this.d; - float var10005 = var53 + var49 / 2.0F - var44 / 2.0F; - var10011 = new Object[]{null, null, null, null, null, null, null, null, var54, var27}; - var10011[7] = var44; - var10011[6] = var44; - var10011[5] = var10005; - var10011[4] = var55; - var10011[3] = var84; - var10011[2] = var4; - var10011[1] = var5; - var10011[0] = var6; - RoundedTextureShader.c(var10011); - float var81 = var53 + 3.0F; - float var85 = var56 + 0.5F; - float var10004 = var53 + var49 - 3.0F; - Object[] var10008 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var17}; - var10008[4] = var10004; - var10008[3] = var85; - var10008[2] = var81; - var10008[1] = var56; - var10008[0] = var4; - RenderState.l(var10008); - float var57 = var53 + 3.0F; - float var58; - float var59; - if (var50) { - float var60 = var52 + var48 - var46; - var59 = var60 - var41; - var58 = var59 - 3.0F - var40; + this.lastWidth = panelWidth; + float panelX = this.x; + float panelY = this.y; + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, HudStyle.BACKGROUND_COLOR, 4.0F); + Color accent = UiMath.getAccentColor(); + float iconX = rightAligned ? panelX + panelWidth - 5.5F - iconSize : panelX + 5.5F; + float dividerX = rightAligned ? panelX + panelWidth - iconSectionWidth - 0.5F : panelX + iconSectionWidth; + RoundedTextureShader.drawTexture(batch, cameraData, matrix, this.iconTexture, iconX, panelY + panelHeight / 2.0F - iconSize / 2.0F, iconSize, iconSize, accent); + ShapeRenderer.drawRect(matrix, dividerX, panelY + 3.0F, dividerX + 0.5F, panelY + panelHeight - 3.0F, HudStyle.DIVIDER_COLOR); + float textY = panelY + 3.0F; + float valueX; + float unitX; + if (rightAligned) { + unitX = (panelX + panelWidth - contentOffset) - unitWidth; + valueX = unitX - 3.0F - valueWidth; } else { - var58 = var52 + var46; - var59 = var58 + var40 + 3.0F; + valueX = panelX + contentOffset; + unitX = valueX + valueWidth + 3.0F; } - Font var72 = Prestige.c.a(new Object[]{var23}); - Object[] var10009 = new Object[]{null, null, null, null, null, var38, var29}; - var10009[4] = 1.0F; - var10009[3] = var57; - var10009[2] = var58; - var10009[1] = var36; - var10009[0] = var4; - var72.w(var10009); - Font var73 = Prestige.c.a(new Object[]{var23}); - var10004 = var57 + (var42 - var43) - 0.5F; - var10009 = new Object[]{null, null, null, null, null, NameTagsUtil.t, var29}; - var10009[4] = 0.65F; - var10009[3] = var10004; - var10009[2] = var59; - var10009[1] = "tps"; - var10009[0] = var4; - var73.w(var10009); - float var71 = var57 + var42 + 1.0F + 4.0F; - float var61 = var50 ? var52 + 5.5F : var52 + var46; - float var62 = var50 ? var52 + var48 - var46 : var52 + var48 - 5.5F; - float var63 = (var62 - var61) / 24.0F; + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, tpsText, valueX, textY, 1.0F, tpsColor); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, "tps", unitX, textY + (valueHeight - unitHeight) - 0.5F, 0.65F, HudStyle.SECONDARY_TEXT_COLOR); + float graphBaseY = textY + valueHeight + 1.0F + 4.0F; + float graphX = rightAligned ? panelX + 5.5F : panelX + contentOffset; + float barWidth = ((rightAligned ? panelX + panelWidth - contentOffset : panelX + panelWidth - 5.5F) - graphX) / 24.0F; - for (int var64 = 0; var64 < 24; var64++) { - float var65 = this.g[(this.h + var64) % 24]; - if (!(var65 <= 0.0F)) { - float var66 = 0.5F + var65 / 20.0F * 3.5F; - float var67 = var61 + var64 * var63; - var83 = new Object[]{null, var11}; - var83[0] = var65; - Color var68 = a(var83); - int var69 = var64 == 23 ? 220 : 110; - var10001 = var67 + 0.2F; - var81 = var71 - var66; - float var87 = var67 + var63 - 0.2F; - var10008 = new Object[]{null, null, null, null, null, new Color(var68.getRed(), var68.getGreen(), var68.getBlue(), var69), var17}; - var10008[4] = var71; - var10008[3] = var87; - var10008[2] = var81; - var10008[1] = var10001; - var10008[0] = var4; - RenderState.l(var10008); + for (int barIndex = 0; barIndex < 24; barIndex++) { + float barSample = this.tpsHistory[(this.historyIndex + barIndex) % 24]; + if (!(barSample <= 0.0F)) { + float barHeight = 0.5F + barSample / 20.0F * 3.5F; + float barX = graphX + barIndex * barWidth; + Color barColor = getTpsColor(barSample); + int barAlpha = barIndex == 23 ? 220 : 110; + lerpValue = barX + 0.2F; + ShapeRenderer.drawRect(matrix, lerpValue, graphBaseY - barHeight, barX + barWidth - 0.2F, graphBaseY, new Color(barColor.getRed(), barColor.getGreen(), barColor.getBlue(), barAlpha)); } } - Object[] var89 = new Object[]{null, var49}; - var89[0] = var48; - this.i(var89); + this.setSize(panelWidth, panelHeight); } - private static Color a(Object[] var0) { - float var1 = (Float)var0[0]; - if (var1 >= 19.0F) { + private static Color getTpsColor(float tps) { + if (tps >= 19.0F) { return new Color(96, 220, 130); - } else if (var1 >= 15.0F) { + } else if (tps >= 15.0F) { return new Color(240, 200, 80); } else { - return var1 >= 10.0F ? new Color(245, 145, 60) : new Color(235, 75, 70); - } - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + return tps >= 10.0F ? new Color(245, 145, 60) : new Color(235, 75, 70); } } } diff --git a/src/main/java/dev/zprestige/prestige/hud/TargetElement.java b/src/main/java/dev/zprestige/prestige/hud/TargetElement.java index 2e1e2f4..35a5bf4 100644 --- a/src/main/java/dev/zprestige/prestige/hud/TargetElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/TargetElement.java @@ -1,22 +1,18 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; import dev.zprestige.prestige.gui.HudEditorScreen; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper5; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.ToggleAnimation; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; import dev.zprestige.prestige.type.Easing; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.UUID; @@ -29,487 +25,180 @@ import org.joml.Matrix4f; import org.joml.Vector4f; public class TargetElement extends HudElement { - private final RenderHelper5 d; - private FontRenderer g; - private Identifier h; - private String i; - private float k; - private float l; - private float o; - private float p; - private float t; - private float u; - private float j; - private UUID m; - private long n; - private Iterable q; - private ItemStack r; - private ItemStack s; - private long v; - private long w; + private final ToggleAnimation showAnimation; + private GlTextureHandle skinTexture; + private Identifier skinTextureId; + private String targetName; + private float health; + private float displayedHealth; + private float healthFraction; + private float displayedHealthFraction; + private float damageTrailFraction; + private float lastRawHealth; + private float distance; + private UUID targetUuid; + private long lastDamageTime; + private Iterable armorStacks; + private ItemStack mainHandStack; + private ItemStack offHandStack; + private long lastFrameTime; + private long frameTimeMs; - public TargetElement(long var1) { - super("Target", "Displays information about your current target", (88190775886332L)); - var1 = 0L; - var1 = 33354452652801L ^ var1; - long var3 = var1 ^ 14856808117960L; - long var5 = var1 ^ 86176162894589L; - this.d = new RenderHelper5(500.0F, false, Easing.BACK_IN_OUT, var3); - this.i = ""; - this.k = 0.0F; - this.l = 0.0F; - this.o = 0.0F; - this.p = 0.0F; - this.t = 0.0F; - this.u = 0.0F; - this.j = 0.0F; - this.n = 0L; - this.r = ItemStack.EMPTY; - this.s = ItemStack.EMPTY; - this.v = 0L; - this.w = 0L; + public TargetElement() { + super("Target", "Displays information about your current target"); + this.showAnimation = new ToggleAnimation(500.0F, false, Easing.BACK_IN_OUT); + this.targetName = ""; + this.health = 0.0F; + this.displayedHealth = 0.0F; + this.healthFraction = 0.0F; + this.displayedHealthFraction = 0.0F; + this.damageTrailFraction = 0.0F; + this.lastRawHealth = 0.0F; + this.distance = 0.0F; + this.lastDamageTime = 0L; + this.mainHandStack = ItemStack.EMPTY; + this.offHandStack = ItemStack.EMPTY; + this.lastFrameTime = 0L; + this.frameTimeMs = 0L; } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 111341298698524L; - long var6 = var2 ^ 115520954206759L; - float var8 = b.getWindow().getFramebufferWidth() / HudEditorScreen.b(new Object[]{var4}); - float var9 = b.getWindow().getFramebufferHeight() / HudEditorScreen.b(new Object[]{var4}); - float var10001 = var8 / 2.0F - 65.0F; - float var10002 = var9 / 2.0F + 80.0F; - Object[] var10005 = new Object[]{null, null, var6}; - var10005[1] = var10002; - var10005[0] = var10001; - this.a_void_______(var10005); + public void resetPosition() { + float screenWidth = mc.getWindow().getFramebufferWidth() / HudEditorScreen.getHudPixelScale(); + float screenHeight = mc.getWindow().getFramebufferHeight() / HudEditorScreen.getHudPixelScale(); + this.setPosition(screenWidth / 2.0F - 65.0F, screenHeight / 2.0F + 80.0F); } @Override - public void l(Object[] var1) { - RenderHelper8 var2 = (RenderHelper8)var1[0]; - MatrixCameraData var4 = (MatrixCameraData)var1[1]; - Matrix4f var3 = (Matrix4f)var1[2]; - long var5 = (Long)var1[3]; - long var7 = var5 ^ 13977059902564L; - long var9 = var5 ^ 62047849716439L; - long var11 = var5 ^ 121708693431506L; - long var13 = var5 ^ 117880139760215L; - long var15 = var5 ^ 54030867045760L; - long var17 = var5 ^ 91799118475102L; - long var19 = var5 ^ 93148276620004L; - long var21 = var5 ^ 27786335669325L; - long var23 = var5 ^ 102693909475685L; - long var25 = var5 ^ 67219672616543L; - long var27 = var5 ^ 96836794377851L; - long var29 = var5 ^ 131934975778103L; - long var31 = var5 ^ 6014253680539L; - long var33 = var5 ^ 51003133856837L; - long var35 = var5 ^ 64450247846539L; - long var37 = var5 ^ 64771341888446L; - long var39 = var5 ^ 96557814079126L; - long var41 = var5 ^ 101037798966850L; - long var43 = var5 ^ 132551805609406L; - long var45 = var5 ^ 26251524285181L; - Event.b(); - this.w = System.currentTimeMillis() - this.v; - this.v = System.currentTimeMillis(); - PlayerEntity var48 = b.currentScreen instanceof HudEditorScreen ? b.player : Prestige.n.a(new Object[0]); - if (var48 != null && (var48.getUuid() == null || b.getNetworkHandler().getPlayerListEntry(var48.getUuid()) == null)) { - var48 = null; + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + this.frameTimeMs = System.currentTimeMillis() - this.lastFrameTime; + this.lastFrameTime = System.currentTimeMillis(); + PlayerEntity targetPlayer = mc.currentScreen instanceof HudEditorScreen ? mc.player : Prestige.targetTracker.getTarget(); + if (targetPlayer != null && (targetPlayer.getUuid() == null || mc.getNetworkHandler().getPlayerListEntry(targetPlayer.getUuid()) == null)) { + targetPlayer = null; } - RenderHelper5 var10000 = this.d; - boolean var10001 = !(b.currentScreen instanceof HudEditorScreen) && var48 != null; - Object[] var10004 = new Object[]{null, var7}; - var10004[0] = var10001; - var10000.a_void_______________________(var10004); - float var49 = 130.0F; - float var50 = 40.0F; - float var51 = b.currentScreen instanceof HudEditorScreen ? 1.0F : this.d.a_float___________________(new Object[]{var9}); - if (var51 > 0.01F) { - Matrix4f var52 = new Matrix4f(); - var52.translate(this.e + var49 / 2.0F, this.f + var50 / 2.0F, 0.0F); - var52.scale(var51, var51, var51); - var52.translate(-this.e - var49 / 2.0F, -this.f - var50 / 2.0F, 0.0F); - var52 = var3.mul(var52, new Matrix4f()); - float var10003 = this.e; - float var118 = this.f; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, new Vector4f(4.0F), var25}; - var10011[7] = 5; - var10011[6] = var50; - var10011[5] = var49; - var10011[4] = var118; - var10011[3] = var10003; - var10011[2] = var52; - var10011[1] = var4; - var10011[0] = var2; - RenderTarget.d(var10011); - float var83 = this.e; - float var10002 = this.f; - var10003 = this.e + var49; - float var119 = this.f + var50; - Object[] var10009 = new Object[]{null, null, null, null, null, NameTagsUtil.r, new Vector4f(4.0F), var13}; - var10009[4] = var119; - var10009[3] = var10003; - var10009[2] = var10002; - var10009[1] = var83; - var10009[0] = var52; - RenderState.u(var10009); - if (var48 != null) { - Identifier var53 = b.getNetworkHandler().getPlayerListEntry(var48.getUuid()).getSkinTextures().body().texturePath(); - if (!var53.equals(this.h)) { - this.h = var53; - this.g = FontRenderer.d_FontRenderer(new Object[]{var53, var43}); + this.showAnimation.setState(!(mc.currentScreen instanceof HudEditorScreen) && targetPlayer != null); + float panelWidth = 130.0F; + float panelHeight = 40.0F; + float scale = mc.currentScreen instanceof HudEditorScreen ? 1.0F : this.showAnimation.getProgress(); + if (scale > 0.01F) { + Matrix4f scaledMatrix = new Matrix4f(); + scaledMatrix.translate(this.x + panelWidth / 2.0F, this.y + panelHeight / 2.0F, 0.0F); + scaledMatrix.scale(scale, scale, scale); + scaledMatrix.translate(-this.x - panelWidth / 2.0F, -this.y - panelHeight / 2.0F, 0.0F); + scaledMatrix = matrix.mul(scaledMatrix, new Matrix4f()); + BlurredRoundedRectShader.drawBlurredRectCorners(batch, cameraData, scaledMatrix, this.x, this.y, panelWidth, panelHeight, 5, new Vector4f(4.0F)); + ShapeRenderer.drawRoundedRect(scaledMatrix, this.x, this.y, this.x + panelWidth, this.y + panelHeight, HudStyle.BACKGROUND_COLOR, new Vector4f(4.0F)); + if (targetPlayer != null) { + Identifier newSkinId = mc.getNetworkHandler().getPlayerListEntry(targetPlayer.getUuid()).getSkinTextures().body().texturePath(); + if (!newSkinId.equals(this.skinTextureId)) { + this.skinTextureId = newSkinId; + this.skinTexture = GlTextureHandle.wrapMinecraftTexture(newSkinId); } - this.i = var48.getName().getString(); - float var54 = var48.getHealth() + var48.getAbsorptionAmount(); - this.k = (float)Math.ceil(var54); - this.o = this.c(new Object[]{var48, var45}); - this.j = b.player != null ? var48.distanceTo(b.player) : 0.0F; - if (this.m == null || !this.m.equals(var48.getUuid())) { - this.m = var48.getUuid(); - this.l = this.k; - this.p = this.o; - this.t = this.o; - this.n = 0L; - } else if (var54 < this.u - 0.05F) { - this.n = System.currentTimeMillis(); + this.targetName = targetPlayer.getName().getString(); + float rawHealth = targetPlayer.getHealth() + targetPlayer.getAbsorptionAmount(); + this.health = (float)Math.ceil(rawHealth); + this.healthFraction = this.getHealthFraction(targetPlayer); + this.distance = mc.player != null ? targetPlayer.distanceTo(mc.player) : 0.0F; + if (this.targetUuid == null || !this.targetUuid.equals(targetPlayer.getUuid())) { + this.targetUuid = targetPlayer.getUuid(); + this.displayedHealth = this.health; + this.displayedHealthFraction = this.healthFraction; + this.damageTrailFraction = this.healthFraction; + this.lastDamageTime = 0L; + } else if (rawHealth < this.lastRawHealth - 0.05F) { + this.lastDamageTime = System.currentTimeMillis(); } - this.u = var54; - ArrayList var55 = new ArrayList(); + this.lastRawHealth = rawHealth; + ArrayList armorList = new ArrayList(); - for (EquipmentSlot var57 : AttributeModifierSlot.ARMOR) { - if (!var57.getName().equals("body")) { - var55.add(var48.getEquippedStack(var57)); + for (EquipmentSlot slot : AttributeModifierSlot.ARMOR) { + if (!slot.getName().equals("body")) { + armorList.add(targetPlayer.getEquippedStack(slot)); } } - Collections.reverse(var55); - this.q = var55; - this.r = var48.getMainHandStack(); - this.s = var48.getOffHandStack(); + Collections.reverse(armorList); + this.armorStacks = armorList; + this.mainHandStack = targetPlayer.getMainHandStack(); + this.offHandStack = targetPlayer.getOffHandStack(); } - long var68 = System.currentTimeMillis() - this.n; - if (this.n != 0L && var68 < 350L) { - float var69 = 1.0F - (float)var68 / 350.0F; - float var74 = 55.0F * var69; - Object[] var10006 = new Object[]{null, null, null, var19}; - var10006[2] = 1.0F; - var10006[1] = 0.0F; - var10006[0] = var51; - int var71 = (int)(var74 * MathHelper4.a(var10006)); - float var84 = this.e; - var10002 = this.f; - var10003 = this.e + var49; - float var120 = this.f + var50; - var10009 = new Object[]{null, null, null, null, null, new Color(235, 70, 70, var71), new Vector4f(4.0F), var13}; - var10009[4] = var120; - var10009[3] = var10003; - var10009[2] = var10002; - var10009[1] = var84; - var10009[0] = var52; - RenderState.u(var10009); + long sinceDamage = System.currentTimeMillis() - this.lastDamageTime; + if (this.lastDamageTime != 0L && sinceDamage < 350L) { + int damageFlashAlpha = (int)((55.0F * (1.0F - (float)sinceDamage / 350.0F)) * UiMath.clamp(scale, 0.0F, 1.0F)); + ShapeRenderer.drawRoundedRect(scaledMatrix, this.x, this.y, this.x + panelWidth, this.y + panelHeight, new Color(235, 70, 70, damageFlashAlpha), new Vector4f(4.0F)); } - if (this.g != null) { - float var75 = this.e + 5.0F; - float var85 = this.f + 5.0F; - FontRenderer var10010 = this.g; - Color var143 = Color.WHITE; - Object[] var10017 = new Object[]{null, null, null, var19}; - var10017[2] = 1.0F; - var10017[1] = 0.0F; - var10017[0] = var51; - float var10012 = MathHelper4.a(var10017); - Object[] var10015 = new Object[]{null, null, var37}; - var10015[1] = var10012; - var10015[0] = var143; - Object[] var10014 = new Object[]{ - null, null, null, null, null, null, null, null, null, var52, var10010, RenderState.a_Color________(var10015), var21 - }; - var10014[8] = 0.0F; - var10014[7] = 3.75F; - var10014[6] = 3.75F; - var10014[5] = 22.5F; - var10014[4] = 3.75F; - var10014[3] = 30.0F; - var10014[2] = 30.0F; - var10014[1] = var85; - var10014[0] = var75; - MatrixStack.x(var10014); - float var86 = this.e + 5.0F; - var10002 = this.f + 5.0F; - var10003 = this.e + 35.0F; - float var121 = this.f + 35.0F; - Color var10005 = new Color(14, 14, 14, 140); - var10009 = new Object[]{null, null, null, null, null, null, null, var11}; - var10009[6] = 0.0F; - var10009[5] = var10005; - var10009[4] = var121; - var10009[3] = var10003; - var10009[2] = var10002; - var10009[1] = var86; - var10009[0] = var52; - MatrixStack.l(var10009); + if (this.skinTexture != null) { + Render2D.drawTextureRegion(this.x + 5.0F, this.y + 5.0F, 30.0F, 30.0F, 3.75F, 22.5F, 3.75F, 3.75F, 0.0F, scaledMatrix, this.skinTexture, ShapeRenderer.withAlpha(Color.WHITE, UiMath.clamp(scale, 0.0F, 1.0F))); + Render2D.drawRoundedRectOutline(scaledMatrix, this.x + 5.0F, this.y + 5.0F, this.x + 35.0F, this.y + 35.0F, new Color(14, 14, 14, 140), 0.0F); } - Font var76 = Prestige.c.a(new Object[]{var29}); - String var96 = this.i; - var10003 = this.e + 40.0F; - float var122 = this.f + 3.0F; - Object[] var10008 = new Object[]{null, null, null, null, NameTagsUtil.s, var39}; - var10008[3] = var122; - var10008[2] = var10003; - var10008[1] = var96; - var10008[0] = var52; - var76.v(var10008); - float var77 = this.j; - var10004 = new Object[]{null, null, var27}; - var10004[1] = 1; - var10004[0] = var77; - String var70 = String.valueOf(MathHelper4.c(var10004)).replace(".0", "") + "m"; - float var72 = Prestige.c.a(new Object[]{var29}).a_float______________(new Object[]{var70, var23}) * 0.75F; - float var73 = Prestige.c.a(new Object[]{var29}).c_float___(new Object[]{var15}); - Font var78 = Prestige.c.a(new Object[]{var29}); - var10003 = this.e + var49 - 5.5F - var72; - float var124 = this.f + 3.0F + (var73 - var73 * 0.75F) * 0.5F; - var10009 = new Object[]{null, null, null, null, null, NameTagsUtil.u, var41}; - var10009[4] = 0.75F; - var10009[3] = var124; - var10009[2] = var10003; - var10009[1] = var70; - var10009[0] = var52; - var78.w(var10009); - float var87 = this.p; - var10002 = this.o; - var10003 = (float)this.w * 0.008F; - Object[] var132 = new Object[]{null, null, null, var31}; - var132[2] = var10003; - var132[1] = var10002; - var132[0] = var87; - this.p = MathHelper4.b_float______(var132); - float var88 = this.l; - var10002 = this.k; - var10003 = (float)this.w * 0.01F; - var132 = new Object[]{null, null, null, var31}; - var132[2] = var10003; - var132[1] = var10002; - var132[0] = var88; - this.l = MathHelper4.b_float______(var132); - if (this.o >= this.t) { - this.t = this.o; - } else if (System.currentTimeMillis() - this.n > 400L) { - float var89 = this.t; - var10002 = this.o; - var10003 = (float)this.w * 0.003F; - var132 = new Object[]{null, null, null, var31}; - var132[2] = var10003; - var132[1] = var10002; - var132[0] = var89; - this.t = MathHelper4.b_float______(var132); + Prestige.fontManager.getDefaultFont().drawText(scaledMatrix, this.targetName, this.x + 40.0F, this.y + 3.0F, HudStyle.TEXT_COLOR); + String distanceText = String.valueOf(UiMath.floorToDecimals(this.distance, 1)).replace(".0", "") + "m"; + float distanceTextWidth = Prestige.fontManager.getDefaultFont().getTextWidth(distanceText) * 0.75F; + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + Prestige.fontManager.getDefaultFont().drawTextScaled(scaledMatrix, distanceText, this.x + panelWidth - 5.5F - distanceTextWidth, this.y + 3.0F + (fontHeight - fontHeight * 0.75F) * 0.5F, 0.75F, HudStyle.MUTED_TEXT_COLOR); + this.displayedHealthFraction = UiMath.approach(this.displayedHealthFraction, this.healthFraction, (float)this.frameTimeMs * 0.008F); + this.displayedHealth = UiMath.approach(this.displayedHealth, this.health, (float)this.frameTimeMs * 0.01F); + if (this.healthFraction >= this.damageTrailFraction) { + this.damageTrailFraction = this.healthFraction; + } else if (System.currentTimeMillis() - this.lastDamageTime > 400L) { + this.damageTrailFraction = UiMath.approach(this.damageTrailFraction, this.healthFraction, (float)this.frameTimeMs * 0.003F); } - float var58 = this.e + 40.0F; - float var59 = 65.0F; - var10002 = this.f + 28.0F; - var10003 = var58 + var59; - float var125 = this.f + 35.0F; - var10009 = new Object[]{null, null, null, null, null, new Color(255, 255, 255, 22), new Vector4f(1.5F), var13}; - var10009[4] = var125; - var10009[3] = var10003; - var10009[2] = var10002; - var10009[1] = var58; - var10009[0] = var52; - RenderState.u(var10009); - if (this.t > this.p + 0.005F) { - var10002 = this.f + 28.0F; - var10003 = var58 + var59 * this.t; - float var126 = this.f + 35.0F; - var10009 = new Object[]{null, null, null, null, null, new Color(235, 85, 85, 130), new Vector4f(1.5F), var13}; - var10009[4] = var126; - var10009[3] = var10003; - var10009[2] = var10002; - var10009[1] = var58; - var10009[0] = var52; - RenderState.u(var10009); + float barX = this.x + 40.0F; + float barWidth = 65.0F; + ShapeRenderer.drawRoundedRect(scaledMatrix, barX, this.y + 28.0F, barX + barWidth, this.y + 35.0F, new Color(255, 255, 255, 22), new Vector4f(1.5F)); + if (this.damageTrailFraction > this.displayedHealthFraction + 0.005F) { + ShapeRenderer.drawRoundedRect(scaledMatrix, barX, this.y + 28.0F, barX + barWidth * this.damageTrailFraction, this.y + 35.0F, new Color(235, 85, 85, 130), new Vector4f(1.5F)); } - float var90 = this.p; - var10004 = new Object[]{null, var33}; - var10004[0] = var90; - Color var60 = this.a(var10004); - float var61 = Math.max(var59 * this.p, 2.5F); - var10002 = this.f + 28.0F; - var10003 = var58 + var61; - float var128 = this.f + 35.0F; - Object[] var144 = new Object[]{null, null, null, null, null, null, var60.darker(), var60.brighter(), var60.darker(), var60.brighter(), var17}; - var144[5] = 1.5F; - var144[4] = var128; - var144[3] = var10003; - var144[2] = var10002; - var144[1] = var58; - var144[0] = var52; - MatrixStack.p(var144); - float var79 = this.l; - var10004 = new Object[]{null, null, var27}; - var10004[1] = 1; - var10004[0] = var79; - String var62 = String.valueOf(MathHelper4.c(var10004)).replace(".0", ""); - Color var63 = this.p > 0.6F ? NameTagsUtil.s : var60; - Font var80 = Prestige.c.a(new Object[]{var29}); - var10003 = this.e + var49 - Prestige.c.a(new Object[]{var29}).a_float______________(new Object[]{var62, var23}) - 5.5F; - float var130 = this.f + 26.0F; - var10008 = new Object[]{null, null, null, null, var63, var39}; - var10008[3] = var130; - var10008[2] = var10003; - var10008[1] = var62; - var10008[0] = var52; - var80.v(var10008); - if (this.q != null) { - float var64 = -2.5F; + Color healthColor = this.getHealthColor(this.displayedHealthFraction); + float fillWidth = Math.max(barWidth * this.displayedHealthFraction, 2.5F); + Render2D.drawRoundedGradientRect(scaledMatrix, barX, this.y + 28.0F, barX + fillWidth, this.y + 35.0F, 1.5F, healthColor.darker(), healthColor.brighter(), healthColor.darker(), healthColor.brighter()); + String healthText = String.valueOf(UiMath.floorToDecimals(this.displayedHealth, 1)).replace(".0", ""); + Color healthTextColor = this.displayedHealthFraction > 0.6F ? HudStyle.TEXT_COLOR : healthColor; + Prestige.fontManager.getDefaultFont().drawText(scaledMatrix, healthText, this.x + panelWidth - Prestige.fontManager.getDefaultFont().getTextWidth(healthText) - 5.5F, this.y + 26.0F, healthTextColor); + if (this.armorStacks != null) { + float itemOffsetX = -2.5F; - for (ItemStack var66 : (Iterable)(this.q)) { - if (!var66.isEmpty()) { - float var91 = this.e + 40.5F + var64; - var10002 = this.f + 13.0F; - Object[] var10007 = new Object[]{null, null, null, null, var52, var35}; - var10007[3] = 0.8F; - var10007[2] = var10002; - var10007[1] = var91; - var10007[0] = var66; - MatrixStack.a_boolean_______________________________________(var10007); + for (ItemStack armorStack : (Iterable)(this.armorStacks)) { + if (!armorStack.isEmpty()) { + Render2D.drawItem(armorStack, this.x + 40.5F + itemOffsetX, this.y + 13.0F, 0.8F, scaledMatrix); } - var64 += 15.0F; + itemOffsetX += 15.0F; } - if (!this.r.isEmpty()) { - ItemStack var81 = this.r; - float var92 = this.e + 40.5F + var64; - var10002 = this.f + 13.0F; - Object[] var135 = new Object[]{null, null, null, null, var52, var35}; - var135[3] = 0.8F; - var135[2] = var10002; - var135[1] = var92; - var135[0] = var81; - if (MatrixStack.a_boolean_______________________________________(var135)) { - var64 += 15.0F; + if (!this.mainHandStack.isEmpty()) { + if (Render2D.drawItem(this.mainHandStack, this.x + 40.5F + itemOffsetX, this.y + 13.0F, 0.8F, scaledMatrix)) { + itemOffsetX += 15.0F; } } - if (!this.s.isEmpty()) { - ItemStack var82 = this.s; - float var93 = this.e + 40.5F + var64; - var10002 = this.f + 13.0F; - Object[] var136 = new Object[]{null, null, null, null, var52, var35}; - var136[3] = 0.8F; - var136[2] = var10002; - var136[1] = var93; - var136[0] = var82; - MatrixStack.a_boolean_______________________________________(var136); + if (!this.offHandStack.isEmpty()) { + Render2D.drawItem(this.offHandStack, this.x + 40.5F + itemOffsetX, this.y + 13.0F, 0.8F, scaledMatrix); } } } - var10004 = new Object[]{null, var50}; - var10004[0] = var49; - this.i(var10004); + this.setSize(panelWidth, panelHeight); } - private float c(Object[] var1) { - PlayerEntity var4 = (PlayerEntity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 33354452652801L ^ var2; - long var5 = var2 ^ 102263665888024L; - float var10000 = (var4.getHealth() + var4.getAbsorptionAmount()) / 20.0F; - Object[] var10005 = new Object[]{null, null, null, var5}; - var10005[2] = 1.0F; - var10005[1] = 0.0F; - var10005[0] = var10000; - return MathHelper4.a(var10005); + private float getHealthFraction(PlayerEntity player) { + return UiMath.clamp((player.getHealth() + player.getAbsorptionAmount()) / 20.0F, 0.0F, 1.0F); } - private Color a(Object[] var1) { - float var4 = (Float)var1[0]; - long var2 = (Long)var1[1]; - var2 = 33354452652801L ^ var2; - long var5 = var2 ^ 45614722040580L; - if (var4 > 0.6F) { - return MathHelper4.d(new Object[]{var5}); + private Color getHealthColor(float fraction) { + if (fraction > 0.6F) { + return UiMath.getAccentColor(); } else { - return var4 > 0.3F ? new Color(240, 170, 60) : new Color(235, 75, 75); - } - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + return fraction > 0.3F ? new Color(240, 170, 60) : new Color(235, 75, 75); } } } diff --git a/src/main/java/dev/zprestige/prestige/hud/TimeElement.java b/src/main/java/dev/zprestige/prestige/hud/TimeElement.java index 9f6dc9b..1e61831 100644 --- a/src/main/java/dev/zprestige/prestige/hud/TimeElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/TimeElement.java @@ -1,21 +1,18 @@ package dev.zprestige.prestige.hud; -import dev.zprestige.prestige.Setting; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.MsdfFont; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.time.LocalDate; import java.time.LocalTime; import java.time.format.TextStyle; @@ -23,303 +20,87 @@ import java.util.Locale; import org.joml.Matrix4f; public class TimeElement extends HudElement { - private FontRenderer a; - private static final long H = 1000L; + private GlTextureHandle iconTexture; + private static final long BLINK_PERIOD_MS = 1000L; - public TimeElement(long var1) { - super("Time", "Show the client's time", (63123529882951L)); - var1 = 0L; - var1 = 112739940464942L ^ var1; - long var3 = var1 ^ 105416877483113L; + public TimeElement() { + super("Time", "Show the client's time"); } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 3.0F; - var10005[0] = 85.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(85.0F, 3.0F); } @Override - public void l(Object[] var1) { - RenderHelper8 var4 = (RenderHelper8)var1[0]; - MatrixCameraData var5 = (MatrixCameraData)var1[1]; - Matrix4f var6 = (Matrix4f)var1[2]; - long var2 = (Long)var1[3]; - long var7 = var2 ^ 57131357196865L; - long var9 = var2 ^ 132449650111663L; - long var11 = var2 ^ 45076250098524L; - long var13 = var2 ^ 95334181894420L; - long var15 = var2 ^ 27807340928064L; - long var17 = var2 ^ 89135395443612L; - long var19 = var2 ^ 102693909475685L; - long var21 = var2 ^ 131934975778103L; - long var23 = var2 ^ 54030867045760L; - long var25 = var2 ^ 19313467402120L; - long var27 = var2 ^ 101037798966850L; - if (this.a == null) { - this.a = TextureUtil.a(new Object[]{"assets/prestige/icons/hud/clock.png", var7}); + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + if (this.iconTexture == null) { + this.iconTexture = TextureLoader.loadTexture("assets/prestige/icons/hud/clock.png"); } - Font var30 = Prestige.c.a(new Object[]{var21}); - short var10000 = 6373; - short var10001 = 14418; - LocalTime var31 = LocalTime.now(); - String var32 = String.format("%02d", var31.getHour()); - long var79 = 6139618554127606610L ^ var2; - String var33 = String.format("%02d", var31.getMinute()); - String var34 = String.format("%02d", var31.getSecond()); - String var35 = LocalDate.now().getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.ENGLISH); - String var36 = var35.substring(0, 1).toUpperCase(Locale.ENGLISH) + var35.substring(1).toLowerCase(Locale.ENGLISH); - float var37 = 0.0F; + MsdfFont font = Prestige.fontManager.getDefaultFont(); + LocalTime time = LocalTime.now(); + String hours = String.format("%02d", time.getHour()); + String minutes = String.format("%02d", time.getMinute()); + String seconds = String.format("%02d", time.getSecond()); + String dayName = LocalDate.now().getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.ENGLISH); + String dayLabel = dayName.substring(0, 1).toUpperCase(Locale.ENGLISH) + dayName.substring(1).toLowerCase(Locale.ENGLISH); + float maxDigitWidth = 0.0F; - for (char var38 = '0'; var38 <= '9'; var38++) { - var37 = Math.max(var37, var30.a_float______________(new Object[]{String.valueOf(var38), var19})); + for (char digit = '0'; digit <= '9'; digit++) { + maxDigitWidth = Math.max(maxDigitWidth, font.getTextWidth(String.valueOf(digit))); } - float var76 = var37 * 1.0F; - float var39 = var37 * 0.65F; - float var40 = var30.a_float______________(new Object[]{":", var19}) * 1.0F + 1.6F; - float var41 = var30.c_float___(new Object[]{var23}); - float var42 = var41 * 0.65F; - float var43 = var41 * 1.0F; - float var44 = var41 * 0.65F; - float var45 = var76 * 2.0F + var40 + var76 * 2.0F + 3.0F + var39 * 2.0F; - float var46 = var30.a_float______________(new Object[]{var36, var19}) * 0.65F; - float var47 = Math.max(var45, var46); - float var48 = 7.5F; - float var49 = 5.5F + var48 + 5.5F; - float var50 = var49 + 0.5F + 5.5F; - float var51 = var50 + var47 + 5.5F; - float var52 = 3.0F + var42 + 1.0F + var43 + 1.0F + 4.0F + 3.0F; - float var53 = this.e; - float var54 = this.f; - boolean var55 = this.c_boolean__(new Object[0]); - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var13}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var52; - var10011[5] = var51; - var10011[4] = var54; - var10011[3] = var53; - var10011[2] = var6; - var10011[1] = var5; - var10011[0] = var4; - RenderTarget.e(var10011); - Color var10007 = NameTagsUtil.r; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var9}; - var10011[8] = 4.0F; - var10011[7] = var10007; - var10011[6] = var52; - var10011[5] = var51; - var10011[4] = var54; - var10011[3] = var53; - var10011[2] = var6; - var10011[1] = var5; - var10011[0] = var4; - RoundedPosColorShader.c(var10011); - Color var56 = MathHelper4.d(new Object[]{var15}); - float var57 = var55 ? var53 + var51 - 5.5F - var48 : var53 + 5.5F; - float var58 = var55 ? var53 + var51 - var49 - 0.5F : var53 + var49; - FontRenderer var10003 = this.a; - float var10005 = var54 + var52 / 2.0F - var48 / 2.0F; - var10011 = new Object[]{null, null, null, null, null, null, null, null, var56, var25}; - var10011[7] = var48; - var10011[6] = var48; - var10011[5] = var10005; - var10011[4] = var57; - var10011[3] = var10003; - var10011[2] = var6; - var10011[1] = var5; - var10011[0] = var4; - RoundedTextureShader.c(var10011); - float var10002 = var54 + 3.0F; - float var80 = var58 + 0.5F; - float var10004 = var54 + var52 - 3.0F; - Object[] var10008 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var17}; - var10008[4] = var10004; - var10008[3] = var80; - var10008[2] = var10002; - var10008[1] = var58; - var10008[0] = var6; - RenderState.l(var10008); - float var59 = var54 + 3.0F; - float var60 = var55 ? var53 + var51 - var50 - var46 : var53 + var50; - Object[] var10009 = new Object[]{null, null, null, null, null, var56, var27}; - var10009[4] = 0.65F; - var10009[3] = var59; - var10009[2] = var60; - var10009[1] = var36; - var10009[0] = var6; - var30.w(var10009); - float var61 = var59 + var42 + 1.0F; - float var62 = var61 + (var43 - var44) - 0.5F; - float var63 = var55 ? var53 + var51 - var50 - var45 : var53 + var50; - float var64 = (float)(System.currentTimeMillis() % H) / 1000.0F; - float var65 = 0.5F + 0.5F * (float)Math.sin(var64 * (float) (Math.PI * 2)); - Color var66 = new Color(255, 255, 255, 70 + (int)(170.0F * var65)); - var10004 = var76 * 2.0F; - Object[] var10010 = new Object[]{null, null, null, null, null, null, null, NameTagsUtil.s, var11}; - var10010[6] = 1.0F; - var10010[5] = var61; - var10010[4] = var10004; - var10010[3] = var63; - var10010[2] = var32; - var10010[1] = var6; - var10010[0] = var30; - r(var10010); - float var67 = var63 + var76 * 2.0F; - var10010 = new Object[]{null, null, null, null, null, null, null, var66, var11}; - var10010[6] = 1.0F; - var10010[5] = var61; - var10010[4] = var40; - var10010[3] = var67; - var10010[2] = ":"; - var10010[1] = var6; - var10010[0] = var30; - r(var10010); - var67 += var40; - var10004 = var76 * 2.0F; - var10010 = new Object[]{null, null, null, null, null, null, null, NameTagsUtil.s, var11}; - var10010[6] = 1.0F; - var10010[5] = var61; - var10010[4] = var10004; - var10010[3] = var67; - var10010[2] = var33; - var10010[1] = var6; - var10010[0] = var30; - r(var10010); - var67 += var76 * 2.0F + 3.0F; - var10004 = var39 * 2.0F; - var10010 = new Object[]{null, null, null, null, null, null, null, NameTagsUtil.u, var11}; - var10010[6] = 0.65F; - var10010[5] = var62; - var10010[4] = var10004; - var10010[3] = var67; - var10010[2] = var34; - var10010[1] = var6; - var10010[0] = var30; - r(var10010); - float var68 = var61 + var43 + 1.0F; - float var70 = var68 + 1.5F; - float var71 = var55 ? var53 + 5.5F : var53 + var50; - float var72 = var55 ? var53 + var51 - var50 : var53 + var51 - 5.5F; - var10008 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var17}; - var10008[4] = var70; - var10008[3] = var72; - var10008[2] = var68; - var10008[1] = var71; - var10008[0] = var6; - RenderState.l(var10008); - float var73 = (var31.getSecond() + var31.getNano() / 1.0E9F) / 60.0F; - float var74 = (float)(Math.sin(System.currentTimeMillis() * 0.0031415926535897933) * 0.5 + 0.5); - Color var75 = new Color(var56.getRed(), var56.getGreen(), var56.getBlue(), 150 + (int)(70.0F * var74)); - float var81 = var71 + (var72 - var71) * var73; - var10008 = new Object[]{null, null, null, null, null, var75, var17}; - var10008[4] = var70; - var10008[3] = var81; - var10008[2] = var68; - var10008[1] = var71; - var10008[0] = var6; - RenderState.l(var10008); - Object[] var85 = new Object[]{null, var52}; - var85[0] = var51; - this.i(var85); - Setting.b(); + float digitWidth = maxDigitWidth * 1.0F; + float smallDigitWidth = maxDigitWidth * 0.65F; + float colonWidth = font.getTextWidth(":") * 1.0F + 1.6F; + float fontHeight = font.getLineHeight(); + float dayTextHeight = fontHeight * 0.65F; + float clockTextHeight = fontHeight * 1.0F; + float secondsTextHeight = fontHeight * 0.65F; + float clockWidth = digitWidth * 2.0F + colonWidth + digitWidth * 2.0F + 3.0F + smallDigitWidth * 2.0F; + float dayWidth = font.getTextWidth(dayLabel) * 0.65F; + float contentWidth = Math.max(clockWidth, dayWidth); + float iconSize = 7.5F; + float iconSectionWidth = 5.5F + iconSize + 5.5F; + float contentOffset = iconSectionWidth + 0.5F + 5.5F; + float panelWidth = contentOffset + contentWidth + 5.5F; + float panelHeight = 3.0F + dayTextHeight + 1.0F + clockTextHeight + 1.0F + 4.0F + 3.0F; + float panelX = this.x; + float panelY = this.y; + boolean rightAligned = this.isAnchoredRight(); + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, HudStyle.BACKGROUND_COLOR, 4.0F); + Color accent = UiMath.getAccentColor(); + float iconX = rightAligned ? panelX + panelWidth - 5.5F - iconSize : panelX + 5.5F; + float dividerX = rightAligned ? panelX + panelWidth - iconSectionWidth - 0.5F : panelX + iconSectionWidth; + RoundedTextureShader.drawTexture(batch, cameraData, matrix, this.iconTexture, iconX, panelY + panelHeight / 2.0F - iconSize / 2.0F, iconSize, iconSize, accent); + ShapeRenderer.drawRect(matrix, dividerX, panelY + 3.0F, dividerX + 0.5F, panelY + panelHeight - 3.0F, HudStyle.DIVIDER_COLOR); + float dayY = panelY + 3.0F; + font.drawTextScaled(matrix, dayLabel, rightAligned ? panelX + panelWidth - contentOffset - dayWidth : panelX + contentOffset, dayY, 0.65F, accent); + float clockY = dayY + dayTextHeight + 1.0F; + float secondsY = clockY + (clockTextHeight - secondsTextHeight) - 0.5F; + float clockX = rightAligned ? panelX + panelWidth - contentOffset - clockWidth : panelX + contentOffset; + Color colonColor = new Color(255, 255, 255, 70 + (int)(170.0F * (0.5F + 0.5F * (float)Math.sin(((float)(System.currentTimeMillis() % BLINK_PERIOD_MS) / 1000.0F) * (float) (Math.PI * 2))))); + drawCentered(font, matrix, hours, clockX, digitWidth * 2.0F, clockY, 1.0F, HudStyle.TEXT_COLOR); + float cursorX = clockX + digitWidth * 2.0F; + drawCentered(font, matrix, ":", cursorX, colonWidth, clockY, 1.0F, colonColor); + cursorX += colonWidth; + drawCentered(font, matrix, minutes, cursorX, digitWidth * 2.0F, clockY, 1.0F, HudStyle.TEXT_COLOR); + cursorX += digitWidth * 2.0F + 3.0F; + drawCentered(font, matrix, seconds, cursorX, smallDigitWidth * 2.0F, secondsY, 0.65F, HudStyle.MUTED_TEXT_COLOR); + float progressTop = clockY + clockTextHeight + 1.0F; + float progressBottom = progressTop + 1.5F; + float progressLeft = rightAligned ? panelX + 5.5F : panelX + contentOffset; + float progressRight = rightAligned ? panelX + panelWidth - contentOffset : panelX + panelWidth - 5.5F; + ShapeRenderer.drawRect(matrix, progressLeft, progressTop, progressRight, progressBottom, HudStyle.DIVIDER_COLOR); + float minuteProgress = (time.getSecond() + time.getNano() / 1.0E9F) / 60.0F; + float pulse = (float)(Math.sin(System.currentTimeMillis() * 0.0031415926535897933) * 0.5 + 0.5); + ShapeRenderer.drawRect(matrix, progressLeft, progressTop, progressLeft + (progressRight - progressLeft) * minuteProgress, progressBottom, new Color(accent.getRed(), accent.getGreen(), accent.getBlue(), 150 + (int)(70.0F * pulse))); + this.setSize(panelWidth, panelHeight); } - private static void r(Object[] var0) { - Font var4 = (Font)var0[0]; - Matrix4f var5 = (Matrix4f)var0[1]; - String var8 = (String)var0[2]; - float var2 = (Float)var0[3]; - float var7 = (Float)var0[4]; - float var3 = (Float)var0[5]; - float var6 = (Float)var0[6]; - Color var1 = (Color)var0[7]; - long var9 = (Long)var0[8]; - var9 = 112739940464942L ^ var9; - long var11 = var9 ^ 20960383808279L; - long var13 = var9 ^ 23720095138864L; - float var15 = var4.a_float______________(new Object[]{var8, var11}) * var6; - float var10003 = var2 + (var7 - var15) / 2.0F; - Object[] var10009 = new Object[]{null, null, null, null, null, var1, var13}; - var10009[4] = var6; - var10009[3] = var3; - var10009[2] = var10003; - var10009[1] = var8; - var10009[0] = var5; - var4.w(var10009); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static void drawCentered(MsdfFont font, Matrix4f matrix, String text, float slotX, float slotWidth, float textY, float scale, Color color) { + font.drawTextScaled(matrix, text, slotX + (slotWidth - (font.getTextWidth(text) * scale)) / 2.0F, textY, scale, color); } } diff --git a/src/main/java/dev/zprestige/prestige/hud/WatermarkElement.java b/src/main/java/dev/zprestige/prestige/hud/WatermarkElement.java index 5f15b1e..4dd1f02 100644 --- a/src/main/java/dev/zprestige/prestige/hud/WatermarkElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/WatermarkElement.java @@ -1,215 +1,59 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import org.joml.Matrix4f; public class WatermarkElement extends HudElement { - private static final String a = "Prestige"; - private static final String b = "Client"; - private static final float m = 12.0F; - private FontRenderer c; + private GlTextureHandle logoTexture; - public WatermarkElement(long var1) { - super("Watermark", "Show the client's watermark", (37128214601486L)); - var1 = 0L; - var1 = 75060585149526L ^ var1; - long var3 = var1 ^ 111604482534232L; + public WatermarkElement() { + super("Watermark", "Show the client's watermark"); } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 3.0F; - var10005[0] = 2.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(2.0F, 3.0F); } @Override - public void l(Object[] var1) { - RenderHelper8 var6 = (RenderHelper8)var1[0]; - MatrixCameraData var5 = (MatrixCameraData)var1[1]; - Matrix4f var2 = (Matrix4f)var1[2]; - long var3 = (Long)var1[3]; - long var7 = var3 ^ 57131357196865L; - long var9 = var3 ^ 132449650111663L; - long var11 = var3 ^ 95334181894420L; - long var13 = var3 ^ 27807340928064L; - long var15 = var3 ^ 89135395443612L; - long var17 = var3 ^ 102693909475685L; - long var19 = var3 ^ 131934975778103L; - long var21 = var3 ^ 54030867045760L; - long var23 = var3 ^ 19313467402120L; - long var25 = var3 ^ 101037798966850L; - if (this.c == null) { - this.c = TextureUtil.a(new Object[]{"assets/prestige/icons/logo.png", var7}); + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + if (this.logoTexture == null) { + this.logoTexture = TextureLoader.loadTexture("assets/prestige/icons/logo.png"); } - float var28 = Prestige.c.a(new Object[]{var19}).c_float___(new Object[]{var21}); - float var29 = Prestige.c.a(new Object[]{var19}).a_float______________(new Object[]{"Prestige Client", var17}) * 1.0F; - Object[] var10003 = new Object[]{null, 1.0F}; - var10003[0] = var28; - float var30 = Math.max(NameTagsUtil.a(var10003), 18.0F); - float var33 = 29.0F + var29 + 5.5F; - float var34 = this.e; - float var35 = this.f; - boolean var36 = this.c_boolean__(new Object[0]); - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var11}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var30; - var10011[5] = var33; - var10011[4] = var35; - var10011[3] = var34; - var10011[2] = var2; - var10011[1] = var5; - var10011[0] = var6; - RenderTarget.e(var10011); - Color var10007 = NameTagsUtil.r; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var9}; - var10011[8] = 4.0F; - var10011[7] = var10007; - var10011[6] = var30; - var10011[5] = var33; - var10011[4] = var35; - var10011[3] = var34; - var10011[2] = var2; - var10011[1] = var5; - var10011[0] = var6; - RoundedPosColorShader.c(var10011); - Color var37 = MathHelper4.d(new Object[]{var13}); - float var38 = (float)(Math.sin(System.currentTimeMillis() * 0.0031415926535897933) * 0.5 + 0.5); - int var39 = 170 + (int)(50.0F * var38); - Color var40 = new Color(var37.getRed(), var37.getGreen(), var37.getBlue(), var39); - float var41 = var36 ? var34 + var33 - 5.5F - 12.0F : var34 + 5.5F; - float var42 = var36 ? var34 + var33 - 23.0F - 0.5F : var34 + 23.0F; - float var43 = var35 + (var30 - 12.0F) / 2.0F; - FontRenderer var48 = this.c; - var10011 = new Object[]{null, null, null, null, null, null, null, null, var37, var23}; - var10011[7] = 12.0F; - var10011[6] = 12.0F; - var10011[5] = var43; - var10011[4] = var41; - var10011[3] = var48; - var10011[2] = var2; - var10011[1] = var5; - var10011[0] = var6; - RoundedTextureShader.c(var10011); - float var10002 = var35 + 3.0F; - float var49 = var42 + 0.5F; - float var10004 = var35 + var30 - 3.0F; - Object[] var10008 = new Object[]{null, null, null, null, null, NameTagsUtil.v, var15}; - var10008[4] = var10004; - var10008[3] = var49; - var10008[2] = var10002; - var10008[1] = var42; - var10008[0] = var2; - RenderState.l(var10008); - float var44 = var36 ? var34 + var33 - 29.0F - var29 : var34 + 29.0F; - float var45 = var35 + (var30 - var28 * 1.0F) / 2.0F; - float var46 = Prestige.c.a(new Object[]{var19}).a_float______________(new Object[]{"Prestige ", var17}) * 1.0F; - Font var10000 = Prestige.c.a(new Object[]{var19}); - Object[] var10009 = new Object[]{null, null, null, null, null, var40, var25}; - var10009[4] = 1.0F; - var10009[3] = var45; - var10009[2] = var44; - var10009[1] = "Prestige"; - var10009[0] = var2; - var10000.w(var10009); - var10000 = Prestige.c.a(new Object[]{var19}); - float var50 = var44 + var46; - var10009 = new Object[]{null, null, null, null, null, var40, var25}; - var10009[4] = 1.0F; - var10009[3] = var45; - var10009[2] = var50; - var10009[1] = "Client"; - var10009[0] = var2; - var10000.w(var10009); - Object[] var51 = new Object[]{null, var30}; - var51[0] = var33; - this.i(var51); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + float titleWidth = Prestige.fontManager.getDefaultFont().getTextWidth("Prestige Client") * 1.0F; + float panelHeight = Math.max(HudStyle.getRowHeight(fontHeight, 1.0F), 18.0F); + float panelWidth = 29.0F + titleWidth + 5.5F; + float panelX = this.x; + float panelY = this.y; + boolean rightAligned = this.isAnchoredRight(); + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, HudStyle.BACKGROUND_COLOR, 4.0F); + Color accent = UiMath.getAccentColor(); + int titleAlpha = 170 + (int)(50.0F * ((float)(Math.sin(System.currentTimeMillis() * 0.0031415926535897933) * 0.5 + 0.5))); + Color titleColor = new Color(accent.getRed(), accent.getGreen(), accent.getBlue(), titleAlpha); + float logoX = rightAligned ? panelX + panelWidth - 5.5F - 12.0F : panelX + 5.5F; + float dividerX = rightAligned ? panelX + panelWidth - 23.0F - 0.5F : panelX + 23.0F; + float logoY = panelY + (panelHeight - 12.0F) / 2.0F; + RoundedTextureShader.drawTexture(batch, cameraData, matrix, this.logoTexture, logoX, logoY, 12.0F, 12.0F, accent); + ShapeRenderer.drawRect(matrix, dividerX, panelY + 3.0F, dividerX + 0.5F, panelY + panelHeight - 3.0F, HudStyle.DIVIDER_COLOR); + float textX = rightAligned ? panelX + panelWidth - 29.0F - titleWidth : panelX + 29.0F; + float textY = panelY + (panelHeight - fontHeight * 1.0F) / 2.0F; + float firstWordWidth = Prestige.fontManager.getDefaultFont().getTextWidth("Prestige ") * 1.0F; + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, "Prestige", textX, textY, 1.0F, titleColor); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, "Client", textX + firstWordWidth, textY, 1.0F, titleColor); + this.setSize(panelWidth, panelHeight); } } diff --git a/src/main/java/dev/zprestige/prestige/hud/WebsiteElement.java b/src/main/java/dev/zprestige/prestige/hud/WebsiteElement.java index eda7e1c..43d7fde 100644 --- a/src/main/java/dev/zprestige/prestige/hud/WebsiteElement.java +++ b/src/main/java/dev/zprestige/prestige/hud/WebsiteElement.java @@ -1,165 +1,40 @@ package dev.zprestige.prestige.hud; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import org.joml.Matrix4f; public class WebsiteElement extends HudElement { - private static final String a = "prestigeclient.vip"; - - public WebsiteElement(long var1) { - super("Website", "Display client website", (107750022622560L)); - var1 = 0L; - var1 = 108641807380605L ^ var1; - long var3 = var1 ^ 3507470245149L; + public WebsiteElement() { + super("Website", "Display client website"); } @Override - public void m(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 115520954206759L; - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 3.0F; - var10005[0] = 150.0F; - this.a_void_______(var10005); + public void resetPosition() { + this.setPosition(150.0F, 3.0F); } @Override - public void l(Object[] var1) { - RenderHelper8 var3 = (RenderHelper8)var1[0]; - MatrixCameraData var6 = (MatrixCameraData)var1[1]; - Matrix4f var2 = (Matrix4f)var1[2]; - long var4 = (Long)var1[3]; - long var7 = var4 ^ 132449650111663L; - long var9 = var4 ^ 95334181894420L; - long var11 = var4 ^ 27807340928064L; - long var13 = var4 ^ 102693909475685L; - long var15 = var4 ^ 131934975778103L; - long var17 = var4 ^ 54030867045760L; - long var19 = var4 ^ 101037798966850L; - float var21 = Prestige.c.a(new Object[]{var15}).c_float___(new Object[]{var17}); - float var22 = Prestige.c.a(new Object[]{var15}).a_float______________(new Object[]{"prestigeclient.vip", var13}) * 1.0F; - float var23 = 5.5F + var22 + 5.5F; - Object[] var10003 = new Object[]{null, 1.0F}; - var10003[0] = var21; - float var24 = NameTagsUtil.a(var10003); - float var25 = this.e; - float var26 = this.f; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var9}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var24; - var10011[5] = var23; - var10011[4] = var26; - var10011[3] = var25; - var10011[2] = var2; - var10011[1] = var6; - var10011[0] = var3; - RenderTarget.e(var10011); - Color var10007 = NameTagsUtil.r; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var7}; - var10011[8] = 4.0F; - var10011[7] = var10007; - var10011[6] = var24; - var10011[5] = var23; - var10011[4] = var26; - var10011[3] = var25; - var10011[2] = var2; - var10011[1] = var6; - var10011[0] = var3; - RoundedPosColorShader.c(var10011); - Color var27 = MathHelper4.d(new Object[]{var11}); - float var28 = (float)(Math.sin(System.currentTimeMillis() * 0.0031415926535897933) * 0.5 + 0.5); - Color var29 = new Color(var27.getRed(), var27.getGreen(), var27.getBlue(), 150 + (int)(105.0F * var28)); - float var30 = var25 + 5.5F; - float var31 = var26 + (var24 - var21 * 1.0F) / 2.0F; - Font var10000 = Prestige.c.a(new Object[]{var15}); - Object[] var10009 = new Object[]{null, null, null, null, null, var29, var19}; - var10009[4] = 1.0F; - var10009[3] = var31; - var10009[2] = var30; - var10009[1] = "prestigeclient.vip"; - var10009[0] = var2; - var10000.w(var10009); - Object[] var10004 = new Object[]{null, var24}; - var10004[0] = var23; - this.i(var10004); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void render(BufferSource batch, CameraMatrices cameraData, Matrix4f matrix) { + float fontHeight = Prestige.fontManager.getDefaultFont().getLineHeight(); + float panelWidth = 5.5F + (Prestige.fontManager.getDefaultFont().getTextWidth("prestigeclient.vip") * 1.0F) + 5.5F; + float panelHeight = HudStyle.getRowHeight(fontHeight, 1.0F); + float panelX = this.x; + float panelY = this.y; + BlurredRoundedRectShader.drawBlurredRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(batch, cameraData, matrix, panelX, panelY, panelWidth, panelHeight, HudStyle.BACKGROUND_COLOR, 4.0F); + Color accent = UiMath.getAccentColor(); + float pulse = (float)(Math.sin(System.currentTimeMillis() * 0.0031415926535897933) * 0.5 + 0.5); + Color textColor = new Color(accent.getRed(), accent.getGreen(), accent.getBlue(), 150 + (int)(105.0F * pulse)); + float textX = panelX + 5.5F; + float textY = panelY + (panelHeight - fontHeight * 1.0F) / 2.0F; + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, "prestigeclient.vip", textX, textY, 1.0F, textColor); + this.setSize(panelWidth, panelHeight); } } diff --git a/src/main/java/dev/zprestige/prestige/inject/Access.java b/src/main/java/dev/zprestige/prestige/inject/Access.java new file mode 100644 index 0000000..1da97f0 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inject/Access.java @@ -0,0 +1,60 @@ +package dev.zprestige.prestige.inject; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; +import org.objectweb.asm.Type; + +/** + * Resolves the MethodHandles behind generated accessors. A hook handler that was moved out of its target class into a helper class + * can no longer touch the target's private members directly; the transformer routes those accesses through handles made here. + * All handles take the receiver as Object so the generated call sites can use one erased signature. + */ +public final class Access { + public static final int GET_FIELD = 0, PUT_FIELD = 1, GET_STATIC = 2, PUT_STATIC = 3, VIRTUAL = 4, STATIC = 5; + + private Access() {} + + public static MethodHandle resolve(String owner, String name, String desc, int kind) throws ReflectiveOperationException { + Class ref = Class.forName(owner, false, Access.class.getClassLoader()); + Class decl = declaring(ref, name, desc, kind); + MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(decl, MethodHandles.lookup()); + switch (kind) { + case GET_FIELD: { + Class t = fieldType(decl, name); + return lookup.findGetter(decl, name, t).asType(MethodType.methodType(t, Object.class)); + } + case PUT_FIELD: { + Class t = fieldType(decl, name); + return lookup.findSetter(decl, name, t).asType(MethodType.methodType(void.class, Object.class, t)); + } + case GET_STATIC: + return lookup.findStaticGetter(decl, name, fieldType(decl, name)); + case PUT_STATIC: + return lookup.findStaticSetter(decl, name, fieldType(decl, name)); + case VIRTUAL: { + MethodType type = MethodType.fromMethodDescriptorString(desc, Access.class.getClassLoader()); + return lookup.findVirtual(decl, name, type).asType(type.insertParameterTypes(0, Object.class)); + } + default: + return lookup.findStatic(decl, name, MethodType.fromMethodDescriptorString(desc, Access.class.getClassLoader())); + } + } + + private static Class fieldType(Class decl, String name) throws NoSuchFieldException { + return decl.getDeclaredField(name).getType(); + } + + /** The class in the hierarchy of ref that actually declares the member (JVM resolution walks the superclasses). */ + private static Class declaring(Class ref, String name, String desc, int kind) throws ReflectiveOperationException { + boolean field = kind <= PUT_STATIC; + for (Class c = ref; c != null; c = c.getSuperclass()) { + if (field) { + for (var f : c.getDeclaredFields()) if (f.getName().equals(name)) return c; + } else { + for (var m : c.getDeclaredMethods()) if (m.getName().equals(name) && Type.getMethodDescriptor(m).equals(desc)) return c; + } + } + throw field ? new NoSuchFieldException(ref.getName() + "." + name) : new NoSuchMethodException(ref.getName() + "." + name + desc); + } +} diff --git a/src/main/java/dev/zprestige/prestige/inject/Bootstrap.java b/src/main/java/dev/zprestige/prestige/inject/Bootstrap.java new file mode 100644 index 0000000..28cf532 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inject/Bootstrap.java @@ -0,0 +1,118 @@ +package dev.zprestige.prestige.inject; + +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.engine.EnginePlugin; +import dev.zprestige.prestige.engine.EngineState; +import dev.zprestige.prestige.hooks.Definer; +import dev.zprestige.prestige.ui.mc.Entry; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.function.ToIntBiFunction; +import net.fabricmc.loader.api.FabricLoader; +import net.lenni0451.classtransform.TransformerManager; +import net.minecraft.client.MinecraftClient; + +/** + * Entry point of the injected payload. prestige_native.dll appends this jar to the Fabric (Knot) class path, registers the + * {@link NativeBridge} natives and calls {@link #start()}. Everything Fabric would normally do at launch for the Prestige mod + * (Mixin anchors, entrypoints) is done here instead: the ClassTransform hooks are applied to the loaded classes with + * {@link InPlaceTransformer} + JVMTI redefinition, then the mod entrypoints run on the client thread. + */ +public final class Bootstrap { + private static boolean started; + + private Bootstrap() {} + + /** Called by the native loader on its worker thread once Minecraft is up. */ + public static synchronized void start() { + if (started) return; + started = true; + try { + log("waiting for the Minecraft client"); + waitForClient(); + Report report = install(NativeBridge::classBytes, NativeBridge::redefine); + log("hooks installed: " + report.redefined + " classes, " + report.moved + " handlers moved" + (report.failed.isEmpty() ? "" : ", FAILED " + report.failed)); + if (!report.failed.isEmpty()) throw new IllegalStateException("could not hook " + report.failed); + log("initialising Prestige on the client thread"); + MinecraftClient.getInstance().execute(Bootstrap::initClient); + } catch (Throwable t) { + log("start failed: " + t); + t.printStackTrace(System.out); + } + } + + /** The loader may inject while the game is still starting: wait until the client and its window exist. */ + private static void waitForClient() throws InterruptedException { + for (int i = 0; i < 6000; i++) { + MinecraftClient client = MinecraftClient.getInstance(); + if (client != null && client.getWindow() != null) return; + Thread.sleep(50); + } + throw new IllegalStateException("Minecraft client did not start"); + } + + public static final class Report { + public int redefined, moved; + public final List failed = new ArrayList<>(); + } + + /** + * Applies all injection-mode hooks. The byte source and the redefiner are parameters so the transformation can be exercised + * without the native library. + */ + public static Report install(Function, byte[]> classBytes, ToIntBiFunction, byte[]> redefine) throws Exception { + String namespace = FabricLoader.getInstance().getMappingResolver().getCurrentRuntimeNamespace(); + List transformers = new ArrayList<>(EnginePlugin.lines("prestige-engine/transformers.list")); + transformers.addAll(EnginePlugin.lines("prestige-engine/inject-transformers.list")); + TransformerManager manager = EnginePlugin.createManager(namespace, transformers); + ClassLoader loader = Bootstrap.class.getClassLoader(); + InPlaceTransformer transformer = new InPlaceTransformer(manager, loader); + EngineState.installed = true; + + Report report = new Report(); + int total = manager.getTransformedClasses().size(), done = 0; + log("transforming " + total + " hook targets"); + for (String target : manager.getTransformedClasses()) { + if (done > 0 && done % 10 == 0) log("transformed " + done + "/" + total); + done++; + try { + Class type = Class.forName(target, false, loader); + byte[] current = classBytes.apply(type); + if (current == null) throw new IllegalStateException("no class bytes"); + InPlaceTransformer.Result result = transformer.transform(target, current); + for (byte[] helper : result.helpers().values()) Definer.define(helper); + int code = redefine.applyAsInt(type, result.target()); + if (code != 0) throw new IllegalStateException("redefine returned JVMTI error " + code); + report.redefined++; + report.moved += result.movedMethods(); + } catch (Throwable t) { + report.failed.add(target); + log("hook failed for " + target + ": " + t); + t.printStackTrace(System.out); + } + } + return report; + } + + private static void initClient() { + try { + new Prestige().onInitialize(); + new Entry().onInitializeClient(); + log("client initialised"); + } catch (Throwable t) { + log("client init failed: " + t); + t.printStackTrace(System.out); + } + } + + private static void log(String message) { + System.out.println("[Prestige-Inject] " + message); + try { + NativeBridge.log(message); + } catch (UnsatisfiedLinkError ignored) { + // not injected (dev run): the console line above is enough + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/inject/InPlaceTransformer.java b/src/main/java/dev/zprestige/prestige/inject/InPlaceTransformer.java new file mode 100644 index 0000000..cd3f519 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inject/InPlaceTransformer.java @@ -0,0 +1,241 @@ +package dev.zprestige.prestige.inject; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import net.lenni0451.classtransform.TransformerManager; +import org.objectweb.asm.ClassReader; +import org.objectweb.asm.ClassWriter; +import org.objectweb.asm.Opcodes; +import org.objectweb.asm.Type; +import org.objectweb.asm.tree.AbstractInsnNode; +import org.objectweb.asm.tree.ClassNode; +import org.objectweb.asm.tree.FieldInsnNode; +import org.objectweb.asm.tree.MethodInsnNode; +import org.objectweb.asm.tree.MethodNode; + +/** + * Runs the ClassTransform hooks on already loaded classes without changing their shape. + * + * ClassTransform copies every hook handler into the target class. A running JVM refuses to redefine a class with added methods, + * so the handlers are moved into a generated helper class and the call sites in the target become invokestatic calls to it + * (an instance handler receives the target instance as its first argument, which keeps the local variable layout identical). + * Accesses from a moved handler to members it can no longer reach directly (private fields and methods of the target) go through + * generated accessors backed by {@link Access}. + */ +public final class InPlaceTransformer { + public static final String HOOK_PACKAGE = "dev/zprestige/prestige/hooks/"; + private static final String MH = "java/lang/invoke/MethodHandle"; + + /** The class to redefine plus the helper classes that must be defined (by name, in order) before it runs. */ + public record Result(byte[] target, Map helpers, int movedMethods) {} + + private final TransformerManager manager; + private final ClassLoader loader; + private int sequence; + + public InPlaceTransformer(TransformerManager manager, ClassLoader loader) { + this.manager = manager; + this.loader = loader; + } + + /** @param dottedName runtime name of the target class, @param current the bytes of the class as currently loaded */ + public Result transform(String dottedName, byte[] current) throws Exception { + byte[] out = manager.transform(dottedName, current, true); + if (out == null) throw new IllegalStateException("ClassTransform failed for " + dottedName); + ClassNode before = read(current); + ClassNode after = read(out); + + Set beforeFields = new HashSet<>(); + before.fields.forEach(f -> beforeFields.add(f.name + ":" + f.desc)); + for (var f : after.fields) + if (!beforeFields.contains(f.name + ":" + f.desc)) + throw new IllegalStateException(dottedName + ": transformer added field " + f.name + " (cannot be redefined in place)"); + + Map existing = new HashMap<>(); + before.methods.forEach(m -> existing.put(m.name + m.desc, m)); + Map moved = new LinkedHashMap<>(); + for (MethodNode m : after.methods) if (!existing.containsKey(m.name + m.desc)) moved.put(m.name + m.desc, m); + if (moved.isEmpty()) return new Result(out, Map.of(), 0); + if (after.interfaces.size() != before.interfaces.size()) + throw new IllegalStateException(dottedName + ": transformer changed the interface list"); + + String helperName = HOOK_PACKAGE + "H" + (sequence++) + "_" + after.name.substring(after.name.lastIndexOf('/') + 1).replace('$', '_'); + ClassNode helper = new ClassNode(); + helper.version = after.version; + helper.access = Opcodes.ACC_PUBLIC | Opcodes.ACC_FINAL | Opcodes.ACC_SUPER; + helper.name = helperName; + helper.superName = "java/lang/Object"; + + Map movedInstance = new HashMap<>(); + for (MethodNode m : moved.values()) movedInstance.put(m.name + m.desc, (m.access & Opcodes.ACC_STATIC) == 0); + + for (MethodNode m : moved.values()) { + boolean instance = movedInstance.get(m.name + m.desc); + String desc = instance ? "(L" + after.name + ";" + m.desc.substring(1) : m.desc; + MethodNode copy = new MethodNode(Opcodes.ASM9, Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, m.name, desc, null, m.exceptions.toArray(new String[0])); + m.accept(copy); + copy.access = Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC; + copy.desc = desc; + copy.visibleAnnotations = null; + copy.invisibleAnnotations = null; + copy.visibleParameterAnnotations = null; + copy.invisibleParameterAnnotations = null; + copy.visibleTypeAnnotations = null; + copy.invisibleTypeAnnotations = null; + helper.methods.add(copy); + } + + Accessors accessors = new Accessors(helper); + for (MethodNode m : helper.methods) rewrite(m, after.name, helperName, movedInstance, accessors, true, dottedName); + for (MethodNode m : after.methods) + if (!moved.containsKey(m.name + m.desc)) rewrite(m, after.name, helperName, movedInstance, accessors, false, dottedName); + accessors.finish(); + after.methods.removeIf(m -> moved.containsKey(m.name + m.desc)); + + ClassWriter targetWriter = new ClassWriter(0); + after.accept(targetWriter); + ClassWriter helperWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS); + helper.accept(helperWriter); + Map helpers = new LinkedHashMap<>(); + helpers.put(helperName.replace('/', '.'), helperWriter.toByteArray()); + return new Result(targetWriter.toByteArray(), helpers, moved.size()); + } + + private static ClassNode read(byte[] bytes) { + ClassNode node = new ClassNode(); + new ClassReader(bytes).accept(node, 0); + return node; + } + + private void rewrite(MethodNode method, String targetName, String helperName, Map moved, Accessors accessors, + boolean inHelper, String context) throws ReflectiveOperationException { + for (AbstractInsnNode insn = method.instructions.getFirst(); insn != null; ) { + AbstractInsnNode next = insn.getNext(); + if (insn instanceof MethodInsnNode call) { + Boolean instance = call.owner.equals(targetName) ? moved.get(call.name + call.desc) : null; + if (instance != null) { + call.setOpcode(Opcodes.INVOKESTATIC); + call.owner = helperName; + call.itf = false; + if (instance) call.desc = "(L" + targetName + ";" + call.desc.substring(1); + } else if (inHelper && !call.name.equals("")) { + if (call.getOpcode() == Opcodes.INVOKESPECIAL && !call.owner.equals(targetName)) + throw new IllegalStateException(context + ": handler " + method.name + " calls super method " + call.owner + "." + call.name); + if (!accessible(call.owner, call.name, call.desc, true)) + accessors.route(method, call, call.getOpcode() == Opcodes.INVOKESTATIC ? Access.STATIC : Access.VIRTUAL, helperName); + } + } else if (inHelper && insn instanceof FieldInsnNode field) { + if (!accessible(field.owner, field.name, field.desc, false)) { + int kind = switch (field.getOpcode()) { + case Opcodes.GETFIELD -> Access.GET_FIELD; + case Opcodes.PUTFIELD -> Access.PUT_FIELD; + case Opcodes.GETSTATIC -> Access.GET_STATIC; + default -> Access.PUT_STATIC; + }; + accessors.route(method, field, kind, helperName); + } + } + insn = next; + } + } + + /** True when code in another package can name the member directly: public member, public declaring class and public named owner. */ + private boolean accessible(String ownerInternal, String name, String desc, boolean method) throws ReflectiveOperationException { + if (ownerInternal.startsWith("[")) return true; + Class owner; + try { + owner = Class.forName(ownerInternal.replace('/', '.'), false, loader); + } catch (ClassNotFoundException e) { + return true; // not a game class we can inspect; leave it for the verifier + } + if (!Modifier.isPublic(owner.getModifiers())) return false; + for (Class c = owner; c != null; c = c.getSuperclass()) { + if (method) { + for (Method m : c.getDeclaredMethods()) + if (m.getName().equals(name) && Type.getMethodDescriptor(m).equals(desc)) + return Modifier.isPublic(m.getModifiers()) && Modifier.isPublic(c.getModifiers()); + } else { + for (Field f : c.getDeclaredFields()) + if (f.getName().equals(name)) + return Modifier.isPublic(f.getModifiers()) && Modifier.isPublic(c.getModifiers()); + } + } + if (method) { + for (Class i : owner.getInterfaces()) if (accessible(i.getName().replace('.', '/'), name, desc, true)) return true; + } + return true; + } + + /** Collects the accessor methods and the MethodHandle fields they use, and builds the helper's static initialiser. */ + private static final class Accessors { + private final ClassNode helper; + private final Map byKey = new HashMap<>(); + private final List entries = new ArrayList<>(); + + Accessors(ClassNode helper) { this.helper = helper; } + + /** Replaces the member instruction by an invokestatic of a (new or reused) accessor. */ + void route(MethodNode in, AbstractInsnNode insn, int kind, String helperName) { + String owner, name, desc; + if (insn instanceof FieldInsnNode f) { owner = f.owner; name = f.name; desc = f.desc; } + else { MethodInsnNode m = (MethodInsnNode) insn; owner = m.owner; name = m.name; desc = m.desc; } + String key = kind + ":" + owner + "." + name + desc; + String accessor = byKey.get(key); + if (accessor == null) { + accessor = "acc$" + byKey.size(); + byKey.put(key, accessor); + String accessorDesc = accessorDescriptor(kind, desc); + MethodNode node = new MethodNode(Opcodes.ASM9, Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, accessor, accessorDesc, null, null); + node.visitFieldInsn(Opcodes.GETSTATIC, helperName, "mh$" + (byKey.size() - 1), "L" + MH + ";"); + int slot = 0; + for (Type arg : Type.getArgumentTypes(accessorDesc)) { + node.visitVarInsn(arg.getOpcode(Opcodes.ILOAD), slot); + slot += arg.getSize(); + } + node.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeExact", accessorDesc, false); + node.visitInsn(Type.getReturnType(accessorDesc).getOpcode(Opcodes.IRETURN)); + helper.methods.add(node); + entries.add(new Object[]{byKey.size() - 1, owner.replace('/', '.'), name, desc, kind}); + } + in.instructions.set(insn, new MethodInsnNode(Opcodes.INVOKESTATIC, helperName, accessor, accessorDescriptor(kind, desc), false)); + } + + /** Descriptor of the accessor method as seen by callers (receiver stays typed Object). */ + private static String accessorDescriptor(int kind, String desc) { + return switch (kind) { + case Access.GET_FIELD -> "(Ljava/lang/Object;)" + desc; + case Access.PUT_FIELD -> "(Ljava/lang/Object;" + desc + ")V"; + case Access.GET_STATIC -> "()" + desc; + case Access.PUT_STATIC -> "(" + desc + ")V"; + case Access.VIRTUAL -> "(Ljava/lang/Object;" + desc.substring(1); + default -> desc; + }; + } + + void finish() { + if (entries.isEmpty()) return; + MethodNode clinit = new MethodNode(Opcodes.ASM9, Opcodes.ACC_STATIC, "", "()V", null, null); + for (Object[] e : entries) { + String field = "mh$" + e[0]; + helper.fields.add(new org.objectweb.asm.tree.FieldNode(Opcodes.ASM9, Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC | Opcodes.ACC_FINAL, field, "L" + MH + ";", null, null)); + clinit.visitLdcInsn(e[1]); + clinit.visitLdcInsn(e[2]); + clinit.visitLdcInsn(e[3]); + clinit.visitIntInsn(Opcodes.BIPUSH, (Integer) e[4]); + clinit.visitMethodInsn(Opcodes.INVOKESTATIC, "dev/zprestige/prestige/inject/Access", "resolve", + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)L" + MH + ";", false); + clinit.visitFieldInsn(Opcodes.PUTSTATIC, helper.name, field, "L" + MH + ";"); + } + clinit.visitInsn(Opcodes.RETURN); + helper.methods.add(clinit); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/inject/NativeBridge.java b/src/main/java/dev/zprestige/prestige/inject/NativeBridge.java new file mode 100644 index 0000000..fb77435 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inject/NativeBridge.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.inject; + +/** Natives registered by the injected prestige_native.dll (JVMTI): current class bytes and class redefinition. */ +public final class NativeBridge { + private NativeBridge() {} + + /** Bytes of the loaded class as the JVM currently has it (including changes made by earlier transformers). */ + public static native byte[] classBytes(Class type); + + /** Appends a line to prestige-native.log, which the injector tails to show progress. */ + public static native void log(String message); + + /** JVMTI RedefineClasses for one class; returns the JVMTI error code, 0 on success. */ + public static native int redefine(Class type, byte[] bytes); +} diff --git a/src/main/java/dev/zprestige/prestige/inject/SelfTest.java b/src/main/java/dev/zprestige/prestige/inject/SelfTest.java new file mode 100644 index 0000000..65e83dd --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inject/SelfTest.java @@ -0,0 +1,76 @@ +package dev.zprestige.prestige.inject; + +import dev.zprestige.prestige.engine.EnginePlugin; +import dev.zprestige.prestige.hooks.Definer; +import java.io.InputStream; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import net.fabricmc.loader.api.FabricLoader; +import net.lenni0451.classtransform.TransformerManager; + +/** + * Dev check of the in-place transformer without the native library: transforms the pristine class files of every hook target, + * defines the generated helper classes (verifies them and resolves their accessors) and links the transformed target in an + * isolated class loader (verifies it). Run through the engine dev command "injectselftest". + */ +public final class SelfTest { + private SelfTest() {} + + public static String run() throws Exception { + String namespace = FabricLoader.getInstance().getMappingResolver().getCurrentRuntimeNamespace(); + List transformers = new ArrayList<>(EnginePlugin.lines("prestige-engine/transformers.list")); + transformers.addAll(EnginePlugin.lines("prestige-engine/inject-transformers.list")); + TransformerManager manager = EnginePlugin.createManager(namespace, transformers); + ClassLoader loader = SelfTest.class.getClassLoader(); + InPlaceTransformer transformer = new InPlaceTransformer(manager, loader); + + StringBuilder out = new StringBuilder("injectselftest namespace=" + namespace + " targets=" + manager.getTransformedClasses().size()); + int ok = 0, moved = 0; + for (String target : manager.getTransformedClasses()) { + try { + byte[] original; + try (InputStream in = loader.getResourceAsStream(target.replace('.', '/') + ".class")) { + if (in == null) throw new IllegalStateException("no class resource"); + original = in.readAllBytes(); + } + InPlaceTransformer.Result result = transformer.transform(target, original); + byte[] raw = manager.transform(target, original, true); + out.append("\n ").append(target).append(" original=").append(original.length).append(" ct=").append(raw == null ? -1 : raw.length) + .append(" result=").append(result.target().length).append(" moved=").append(result.movedMethods()); + for (var helper : result.helpers().entrySet()) { + Definer.define(helper.getValue()); + Class.forName(helper.getKey(), true, loader); + } + Class linked = new Isolated(loader, target, result.target()).loadClass(target); + for (Method ignored : linked.getDeclaredMethods()) { /* forces linking, i.e. bytecode verification */ } + ok++; + moved += result.movedMethods(); + } catch (Throwable t) { + out.append("\n FAIL ").append(target).append(": ").append(t); + t.printStackTrace(System.out); + } + } + return out.append("\n ok=").append(ok).append(" movedHandlers=").append(moved).toString(); + } + + /** Defines the transformed target itself; everything else comes from the parent. */ + private static final class Isolated extends ClassLoader { + private final String target; + private final byte[] bytes; + + Isolated(ClassLoader parent, String target, byte[] bytes) { + super(parent); + this.target = target; + this.bytes = bytes; + } + + @Override protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException { + if (!name.equals(target)) return super.loadClass(name, resolve); + synchronized (getClassLoadingLock(name)) { + Class c = findLoadedClass(name); + return c != null ? c : defineClass(name, bytes, 0, bytes.length); + } + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/inject/hooks/KeyboardHooks.java b/src/main/java/dev/zprestige/prestige/inject/hooks/KeyboardHooks.java new file mode 100644 index 0000000..caa2df9 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inject/hooks/KeyboardHooks.java @@ -0,0 +1,24 @@ +package dev.zprestige.prestige.inject.hooks; + +import dev.zprestige.prestige.ui.mc.Overlay; +import net.lenni0451.classtransform.InjectionCallback; +import net.lenni0451.classtransform.annotations.CTarget; +import net.lenni0451.classtransform.annotations.CTransformer; +import net.lenni0451.classtransform.annotations.injection.CInject; +import net.minecraft.client.Keyboard; +import net.minecraft.client.input.CharInput; +import net.minecraft.client.input.KeyInput; + +/** Injection-mode twin of ui.mixin.KeyboardHandlerMixin: swallows keyboard input while the overlay is visible. */ +@CTransformer({Keyboard.class}) +public class KeyboardHooks { + @CInject(method = {"onKey"}, target = {@CTarget("HEAD")}, cancellable = true) + private void key(long window, int action, KeyInput ev, InjectionCallback ci) { + if (Overlay.onKey(ev.key(), action)) ci.cancel(); + } + + @CInject(method = {"onChar"}, target = {@CTarget("HEAD")}, cancellable = true) + private void character(long window, CharInput ev, InjectionCallback ci) { + if (Overlay.onChar(ev.codepoint())) ci.cancel(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/inject/hooks/MouseHooks.java b/src/main/java/dev/zprestige/prestige/inject/hooks/MouseHooks.java new file mode 100644 index 0000000..0284a85 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inject/hooks/MouseHooks.java @@ -0,0 +1,28 @@ +package dev.zprestige.prestige.inject.hooks; + +import dev.zprestige.prestige.ui.mc.Overlay; +import net.lenni0451.classtransform.InjectionCallback; +import net.lenni0451.classtransform.annotations.CTarget; +import net.lenni0451.classtransform.annotations.CTransformer; +import net.lenni0451.classtransform.annotations.injection.CInject; +import net.minecraft.client.Mouse; +import net.minecraft.client.input.MouseInput; + +/** Injection-mode twin of ui.mixin.MouseHandlerMixin: swallows mouse input while the overlay is visible. */ +@CTransformer({Mouse.class}) +public class MouseHooks { + @CInject(method = {"onMouseButton"}, target = {@CTarget("HEAD")}, cancellable = true) + private void button(long window, MouseInput info, int action, InjectionCallback ci) { + if (Overlay.onMouseButton(info.button(), action)) ci.cancel(); + } + + @CInject(method = {"onMouseScroll"}, target = {@CTarget("HEAD")}, cancellable = true) + private void scroll(long window, double x, double y, InjectionCallback ci) { + if (Overlay.onScroll(y)) ci.cancel(); + } + + @CInject(method = {"onCursorPos"}, target = {@CTarget("HEAD")}, cancellable = true) + private void move(long window, double x, double y, InjectionCallback ci) { + if (Overlay.onMouseMove()) ci.cancel(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/inject/hooks/RenderSystemHooks.java b/src/main/java/dev/zprestige/prestige/inject/hooks/RenderSystemHooks.java new file mode 100644 index 0000000..fa2106a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inject/hooks/RenderSystemHooks.java @@ -0,0 +1,16 @@ +package dev.zprestige.prestige.inject.hooks; + +import dev.zprestige.prestige.ui.mc.Overlay; +import net.lenni0451.classtransform.InjectionCallback; +import net.lenni0451.classtransform.annotations.CTarget; +import net.lenni0451.classtransform.annotations.CTransformer; +import net.lenni0451.classtransform.annotations.injection.CInject; + +/** Injection-mode twin of ui.mixin.RenderSystemMixin: draws the overlay at the head of RenderSystem.flipFrame (Mojang-named, never remapped). */ +@CTransformer(name = "com.mojang.blaze3d.systems.RenderSystem") +public class RenderSystemHooks { + @CInject(method = {"flipFrame"}, target = {@CTarget("HEAD")}) + private static void overlay(InjectionCallback ci) { + Overlay.render(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/input/KeybindManager.java b/src/main/java/dev/zprestige/prestige/input/KeybindManager.java new file mode 100644 index 0000000..922e45c --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/input/KeybindManager.java @@ -0,0 +1,94 @@ +package dev.zprestige.prestige.input; + +import dev.zprestige.prestige.Module; +import dev.zprestige.prestige.Native; +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.event.KeyEvent; +import dev.zprestige.prestige.event.MouseButtonEvent; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.VirtualKeyMapper; +import java.util.Map; + +public class KeybindManager implements MinecraftAccess { + private static Double pendingScaleFactor = null; + private static final Map MOUSE_KEYCODE_TO_BUTTON = Map.of(9999, 0, 9998, 1, 9997, 2, 9996, 3, 9995, 4); + private long lastGuiPollTime; + + public KeybindManager() { + super(); + this.lastGuiPollTime = 0L; + Prestige.eventBus.register(this); + } + + @Subscribe + public void onKey(KeyEvent event) { + if (event.getAction() == 0) { + if (event.getKey() == VirtualKeyMapper.toGlfwKey(Prestige.moduleManager.getMenu().getMenuKey().getValue())) { + mc.setScreen(Prestige.clickGuiScreen); + Prestige.clickGuiScreen.resetClosedState(); + } + } + + for (Module module : (Iterable)(Prestige.moduleManager.getModules())) { + int moduleKey = VirtualKeyMapper.toGlfwKey(module.getKey()); + if (module.getKeybind().isHoldMode()) { + if (module.isEnabled() && mc.currentScreen != null) { + module.toggle(); + } else if (event.getAction() == 0) { + if (module.isEnabled() && moduleKey == event.getKey()) { + module.toggle(); + } + } else if (event.getAction() == 1 && mc.currentScreen == null && !module.isEnabled() && moduleKey == event.getKey()) { + module.toggle(); + } + } else if (mc.currentScreen == null + && module.getKey() != -1 + && event.getAction() == 1 + && moduleKey == event.getKey()) { + module.toggle(); + } + } + } + + @Subscribe + public void onFrame(FrameEvent event) { + if (mc.currentScreen == null) { + long now = System.currentTimeMillis(); + if (now - this.lastGuiPollTime >= 30L) { + this.lastGuiPollTime = now; + if (Native.isMenuOpen()) { + mc.setScreen(Prestige.clickGuiScreen); + Prestige.clickGuiScreen.resetClosedState(); + } + } + + if (pendingScaleFactor != null) { + mc.getWindow().setScaleFactor((int)Math.round(pendingScaleFactor)); + pendingScaleFactor = null; + } + } + } + + @Subscribe + public void onMouseButton(MouseButtonEvent event) { + if (!Prestige.simulatedClickManager.isSimulated(event.getButton())) { + for (Module module : (Iterable)(Prestige.moduleManager.getModules())) { + if (module.getKey() != -1 + && MOUSE_KEYCODE_TO_BUTTON.containsKey(module.getKey()) + && (Integer)MOUSE_KEYCODE_TO_BUTTON.get(module.getKey()) == event.getButton()) { + if (module.getKeybind().isHoldMode()) { + if (event.getAction() == 1 && mc.currentScreen == null && !module.isEnabled()) { + module.toggle(); + } else if (event.getAction() == 0 && module.isEnabled()) { + module.toggle(); + } + } else if (mc.currentScreen == null && event.getAction() == 1) { + module.toggle(); + } + } + } + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/input/MouseManager.java b/src/main/java/dev/zprestige/prestige/input/MouseManager.java deleted file mode 100644 index ec11434..0000000 --- a/src/main/java/dev/zprestige/prestige/input/MouseManager.java +++ /dev/null @@ -1,179 +0,0 @@ -package dev.zprestige.prestige.input; - -import dev.zprestige.prestige.Module; -import dev.zprestige.prestige.Native; -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.IntEvent2; -import dev.zprestige.prestige.event.IntEvent4; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderUtil4; -import dev.zprestige.prestige.util.BindManager; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Map; - -public class MouseManager implements RenderContract2 { - private static Double a = null; - private static final Map c = Map.of(9999, 0, 9998, 1, 9997, 2, 9996, 3, 9995, 4); - private long d; - - public MouseManager(long var1) { - super(); - var1 = 0L; - var1 = 21801194406431L ^ var1; - long var3 = var1 ^ 70144848628720L; - this.d = 0L; - Prestige.eventBus.register(new Object[]{this, var3}); - } - - @Subscribe - public void a(IntEvent2 var1) { - if (var1.b(new Object[0]) == 0) { - int var10000 = var1.a(new Object[0]); - int var10001 = (Integer)Prestige.moduleManager.getMenu(new Object[0]).getMenuKey(new Object[0]).getValue(); - Object[] var10004 = new Object[]{null, 58384228437483L}; - var10004[0] = var10001; - if (var10000 == RenderUtil4.a(var10004)) { - b.setScreen(Prestige.k); - Prestige.k.a(new Object[0]); - } - } - - for (Module var12 : (Iterable)(Prestige.moduleManager.getModules())) { - int var14 = var12.getKey(new Object[]{13012393635966L}); - Object[] var10003 = new Object[]{null, 58384228437483L}; - var10003[0] = var14; - int var13 = RenderUtil4.a(var10003); - if (var12.getKeybind(new Object[0]).isToggleMode()) { - if (var12.isEnabled() && b.currentScreen != null) { - var12.toggle(new Object[]{115103427876780L}); - } else if (var1.b(new Object[0]) == 0) { - if (var12.isEnabled() && var13 == var1.a(new Object[0])) { - var12.toggle(new Object[]{115103427876780L}); - } - } else if (var1.b(new Object[0]) == 1 && b.currentScreen == null && !var12.isEnabled() && var13 == var1.a(new Object[0])) { - var12.toggle(new Object[]{115103427876780L}); - } - } else if (b.currentScreen == null - && var12.getKey(new Object[]{13012393635966L}) != -1 - && var1.b(new Object[0]) == 1 - && var13 == var1.a(new Object[0])) { - var12.toggle(new Object[]{115103427876780L}); - } - } - } - - @Subscribe - public void a(TickEvent24 var1) { - if (b.currentScreen == null) { - long var5 = System.currentTimeMillis(); - if (var5 - this.d >= 30L) { - this.d = var5; - if (Native.j()) { - b.setScreen(Prestige.k); - Prestige.k.a(new Object[0]); - } - } - - if (a != null) { - b.getWindow().setScaleFactor((int)Math.round(a)); - a = null; - } - } - } - - @Subscribe - public void a(IntEvent4 var1) { - BindManager var10000 = Prestige.q; - int var10001 = var1.a(new Object[0]); - Object[] var10004 = new Object[]{null, 128352941745080L}; - var10004[0] = var10001; - if (!var10000.a(var10004)) { - for (Module var12 : (Iterable)(Prestige.moduleManager.getModules())) { - if (var12.getKey(new Object[]{13012393635966L}) != -1 - && c.containsKey(var12.getKey(new Object[]{13012393635966L})) - && (Integer)c.get(var12.getKey(new Object[]{13012393635966L})) == var1.a(new Object[0])) { - if (var12.getKeybind(new Object[0]).isToggleMode()) { - if (var1.b(new Object[0]) == 1 && b.currentScreen == null && !var12.isEnabled()) { - var12.toggle(new Object[]{115103427876780L}); - } else if (var1.b(new Object[0]) == 0 && var12.isEnabled()) { - var12.toggle(new Object[]{115103427876780L}); - } - } else if (b.currentScreen == null && var1.b(new Object[0]) == 1) { - var12.toggle(new Object[]{115103427876780L}); - } - } - } - } - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/inventory/AnchorUseGuard.java b/src/main/java/dev/zprestige/prestige/inventory/AnchorUseGuard.java new file mode 100644 index 0000000..f07f3ea --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inventory/AnchorUseGuard.java @@ -0,0 +1,74 @@ +package dev.zprestige.prestige.inventory; + +import dev.zprestige.prestige.module.combat.AnchorExploder; +import dev.zprestige.prestige.module.combat.AnchorMacro; +import dev.zprestige.prestige.module.combat.AnchorPearlCatch; +import dev.zprestige.prestige.module.combat.AnchorPlacer; +import dev.zprestige.prestige.module.combat.AutoAnchor; +import dev.zprestige.prestige.module.combat.DoubleAnchor; +import dev.zprestige.prestige.module.combat.SafeAnchor; +import dev.zprestige.prestige.render.MinecraftAccess; +import net.minecraft.block.Blocks; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.item.BowItem; +import net.minecraft.item.BucketItem; +import net.minecraft.item.CrossbowItem; +import net.minecraft.item.EggItem; +import net.minecraft.item.EnderPearlItem; +import net.minecraft.item.ExperienceBottleItem; +import net.minecraft.item.FishingRodItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.PotionItem; +import net.minecraft.item.ShieldItem; +import net.minecraft.item.SnowballItem; +import net.minecraft.item.TridentItem; +import net.minecraft.item.WindChargeItem; +import net.minecraft.util.hit.BlockHitResult; + +public final class AnchorUseGuard implements MinecraftAccess { + private AnchorUseGuard() { + } + + public static boolean shouldCancelItemUse() { + if (mc.player != null && mc.world != null) { + if (!isAnchorModuleActive()) { + return false; + } else if (mc.player.getMainHandStack().getItem() != Items.RESPAWN_ANCHOR && mc.player.getOffHandStack().getItem() != Items.RESPAWN_ANCHOR) { + if (mc.crosshairTarget instanceof BlockHitResult blockHit) { + return mc.world.getBlockState(blockHit.getBlockPos()).getBlock() != Blocks.RESPAWN_ANCHOR + ? false + : !isUsableItem(mc.player.getMainHandStack()) && !isUsableItem(mc.player.getOffHandStack()); + } else { + return false; + } + } else { + return true; + } + } else { + return false; + } + } + + private static boolean isAnchorModuleActive() { + return AutoAnchor.sequenceActive || AnchorExploder.lookingAtAnchor || AnchorMacro.acting || AnchorPearlCatch.active || AnchorPlacer.acting || DoubleAnchor.acting || SafeAnchor.isCoverPending(); + } + + private static boolean isUsableItem(ItemStack stack) { + Item item = stack.getItem(); + return stack.get(DataComponentTypes.FOOD) != null + || item instanceof BowItem + || item instanceof CrossbowItem + || item instanceof EnderPearlItem + || item instanceof SnowballItem + || item instanceof EggItem + || item instanceof TridentItem + || item instanceof WindChargeItem + || item instanceof PotionItem + || item instanceof ExperienceBottleItem + || item instanceof ShieldItem + || item instanceof BucketItem + || item instanceof FishingRodItem; + } +} diff --git a/src/main/java/dev/zprestige/prestige/inventory/ArmorUtil.java b/src/main/java/dev/zprestige/prestige/inventory/ArmorUtil.java deleted file mode 100644 index 70eecff..0000000 --- a/src/main/java/dev/zprestige/prestige/inventory/ArmorUtil.java +++ /dev/null @@ -1,151 +0,0 @@ -package dev.zprestige.prestige.inventory; - -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.module.combat.AnchorExploder; -import dev.zprestige.prestige.module.combat.AnchorMacro; -import dev.zprestige.prestige.module.combat.AnchorPearlCatch; -import dev.zprestige.prestige.module.combat.AnchorPlacer; -import dev.zprestige.prestige.module.combat.AutoAnchor; -import dev.zprestige.prestige.module.combat.DoubleAnchor; -import dev.zprestige.prestige.module.combat.SafeAnchor; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.block.Blocks; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.item.BowItem; -import net.minecraft.item.BucketItem; -import net.minecraft.item.CrossbowItem; -import net.minecraft.item.EggItem; -import net.minecraft.item.EnderPearlItem; -import net.minecraft.item.ExperienceBottleItem; -import net.minecraft.item.FishingRodItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.PotionItem; -import net.minecraft.item.ShieldItem; -import net.minecraft.item.SnowballItem; -import net.minecraft.item.TridentItem; -import net.minecraft.item.WindChargeItem; -import net.minecraft.util.hit.BlockHitResult; - -public final class ArmorUtil implements RenderContract2 { - private ArmorUtil() { - } - - public static boolean a(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 87650301936136L ^ var1; - long var3 = var1 ^ 105190636902736L; - long var5 = var1 ^ 58724177745006L; - if (b.player != null && b.world != null) { - if (!b(new Object[]{var3})) { - return false; - } else if (b.player.getMainHandStack().getItem() != Items.RESPAWN_ANCHOR && b.player.getOffHandStack().getItem() != Items.RESPAWN_ANCHOR) { - if (b.crosshairTarget instanceof BlockHitResult var8) { - return b.world.getBlockState(var8.getBlockPos()).getBlock() != Blocks.RESPAWN_ANCHOR - ? false - : !c(new Object[]{b.player.getMainHandStack(), var5}) && !c(new Object[]{b.player.getOffHandStack(), var5}); - } else { - return false; - } - } else { - return true; - } - } else { - return false; - } - } - - private static boolean b(Object[] var0) { - return AutoAnchor.B || AnchorExploder.o || AnchorMacro.p || AnchorPearlCatch.C || AnchorPlacer.k || DoubleAnchor.s || SafeAnchor.d(new Object[0]); - } - - private static boolean c(Object[] var0) { - ItemStack var3 = (ItemStack)var0[0]; - Event.b(); - Item var5 = var3.getItem(); - return var3.get(DataComponentTypes.FOOD) != null - || var5 instanceof BowItem - || var5 instanceof CrossbowItem - || var5 instanceof EnderPearlItem - || var5 instanceof SnowballItem - || var5 instanceof EggItem - || var5 instanceof TridentItem - || var5 instanceof WindChargeItem - || var5 instanceof PotionItem - || var5 instanceof ExperienceBottleItem - || var5 instanceof ShieldItem - || var5 instanceof BucketItem - || var5 instanceof FishingRodItem; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/inventory/DeathLootDetector.java b/src/main/java/dev/zprestige/prestige/inventory/DeathLootDetector.java new file mode 100644 index 0000000..aec4dd7 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inventory/DeathLootDetector.java @@ -0,0 +1,50 @@ +package dev.zprestige.prestige.inventory; + +import dev.zprestige.prestige.render.MinecraftAccess; +import net.minecraft.entity.Entity; +import net.minecraft.entity.ItemEntity; +import net.minecraft.item.Item; +import net.minecraft.item.Items; +import net.minecraft.util.math.BlockPos; + +public class DeathLootDetector implements MinecraftAccess { + public static boolean isLootNearby(BlockPos pos) { + int lootCount = 0; + + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof ItemEntity itemEntity + && !(itemEntity.getY() < pos.getY()) + && isValuableLoot(itemEntity.getStack().getItem()) + && !(Math.sqrt(itemEntity.squaredDistanceTo(pos.toCenterPos())) > 15.0)) { + lootCount++; + } + } + + return lootCount > 3; + } + + public static boolean isValuableLoot(Item item) { + return item.equals(Items.DIAMOND_HELMET) + || item.equals(Items.DIAMOND_CHESTPLATE) + || item.equals(Items.DIAMOND_LEGGINGS) + || item.equals(Items.DIAMOND_BOOTS) + || item.equals(Items.NETHERITE_HELMET) + || item.equals(Items.NETHERITE_CHESTPLATE) + || item.equals(Items.NETHERITE_LEGGINGS) + || item.equals(Items.NETHERITE_BOOTS) + || item.equals(Items.DIAMOND_PICKAXE) + || item.equals(Items.NETHERITE_PICKAXE) + || item.equals(Items.DIAMOND_SWORD) + || item.equals(Items.NETHERITE_SWORD) + || item.equals(Items.DIAMOND_AXE) + || item.equals(Items.NETHERITE_AXE) + || item.equals(Items.TOTEM_OF_UNDYING) + || item.equals(Items.GOLDEN_APPLE) + || item.equals(Items.ENCHANTED_GOLDEN_APPLE) + || item.equals(Items.ENDER_PEARL) + || item.equals(Items.EXPERIENCE_BOTTLE) + || item.equals(Items.END_CRYSTAL) + || item.equals(Items.RESPAWN_ANCHOR) + || item.equals(Items.GLOWSTONE); + } +} diff --git a/src/main/java/dev/zprestige/prestige/inventory/EnchantmentLabel.java b/src/main/java/dev/zprestige/prestige/inventory/EnchantmentLabel.java new file mode 100644 index 0000000..7dac9aa --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inventory/EnchantmentLabel.java @@ -0,0 +1,13 @@ +package dev.zprestige.prestige.inventory; + +import net.minecraft.item.ItemStack; + +public class EnchantmentLabel { + public ItemStack stack; + public String text; + + public EnchantmentLabel(ItemStack itemStack, String labelText) { + this.stack = itemStack; + this.text = labelText; + } +} diff --git a/src/main/java/dev/zprestige/prestige/inventory/HeldItemRendererAccessor.java b/src/main/java/dev/zprestige/prestige/inventory/HeldItemRendererAccessor.java new file mode 100644 index 0000000..1057887 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inventory/HeldItemRendererAccessor.java @@ -0,0 +1,37 @@ +package dev.zprestige.prestige.inventory; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.client.render.item.HeldItemRenderer; +import net.minecraft.item.ItemStack; + +public class HeldItemRendererAccessor { + private final HeldItemRenderer renderer; + + public HeldItemRendererAccessor(HeldItemRenderer heldItemRenderer) { + this.renderer = heldItemRenderer; + } + + public void setMainHandEquipProgress(float progress) { + FieldAccessor.bindMapped(this.renderer, "equipProgressMainHand", HeldItemRenderer.class, float.class).set(progress); + } + + public void setOffHandEquipProgress(float progress) { + FieldAccessor.bindMapped(this.renderer, "equipProgressOffHand", HeldItemRenderer.class, float.class).set(progress); + } + + public float getMainHandEquipProgress() { + return (Float)FieldAccessor.bindMapped(this.renderer, "equipProgressMainHand", HeldItemRenderer.class, float.class).get(); + } + + public float getOffHandEquipProgress() { + return (Float)FieldAccessor.bindMapped(this.renderer, "equipProgressOffHand", HeldItemRenderer.class, float.class).get(); + } + + public void setMainHandStack(ItemStack stack) { + FieldAccessor.bindMapped(this.renderer, "mainHand", HeldItemRenderer.class, ItemStack.class).set(stack); + } + + public void setOffHandStack(ItemStack stack) { + FieldAccessor.bindMapped(this.renderer, "offHand", HeldItemRenderer.class, ItemStack.class).set(stack); + } +} diff --git a/src/main/java/dev/zprestige/prestige/inventory/InventoryHelper.java b/src/main/java/dev/zprestige/prestige/inventory/InventoryHelper.java deleted file mode 100644 index a4e2a97..0000000 --- a/src/main/java/dev/zprestige/prestige/inventory/InventoryHelper.java +++ /dev/null @@ -1,146 +0,0 @@ -package dev.zprestige.prestige.inventory; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.render.item.HeldItemRenderer; -import net.minecraft.item.ItemStack; - -public class InventoryHelper { - private final HeldItemRenderer a; - - public InventoryHelper(HeldItemRenderer var1) { - this.a = var1; - } - - public void a(Object[] var1) { - float var2 = (Float)var1[0]; - long var3 = (Long)var1[1]; - var3 = 43351946238974L ^ var3; - long var5 = var3 ^ 103970603468878L; - long var7 = var3 ^ 116348097453130L; - FieldValue var9 = FieldAccessor.b(new Object[]{this.a, "equipProgressMainHand", HeldItemRenderer.class, float.class, var7}); - var9.a_void_____________(new Object[]{var2, var5}); - } - - public void b(Object[] var1) { - float var2 = (Float)var1[0]; - long var3 = (Long)var1[1]; - var3 = 43351946238974L ^ var3; - long var5 = var3 ^ 20140288343608L; - long var7 = var3 ^ 40749229713980L; - FieldValue var9 = FieldAccessor.b(new Object[]{this.a, "equipProgressOffHand", HeldItemRenderer.class, float.class, var7}); - var9.a_void_____________(new Object[]{var2, var5}); - } - - public float a_float________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 43351946238974L ^ var2; - long var4 = var2 ^ 85040611111317L; - long var6 = var2 ^ 62469302213731L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, "equipProgressMainHand", HeldItemRenderer.class, float.class, var6}); - return (Float)var8.a(new Object[]{var4}); - } - - public float b_float____(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 43351946238974L ^ var2; - long var4 = var2 ^ 17211154073484L; - long var6 = var2 ^ 134344484219514L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, "equipProgressOffHand", HeldItemRenderer.class, float.class, var6}); - return (Float)var8.a(new Object[]{var4}); - } - - public void c(Object[] var1) { - ItemStack var2 = (ItemStack)var1[0]; - long var3 = (Long)var1[1]; - var3 = 43351946238974L ^ var3; - long var5 = var3 ^ 88171330322886L; - long var7 = var3 ^ 113722432755138L; - FieldValue var9 = FieldAccessor.b(new Object[]{this.a, "mainHand", HeldItemRenderer.class, ItemStack.class, var7}); - var9.a_void_____________(new Object[]{var2, var5}); - } - - public void d(Object[] var1) { - ItemStack var2 = (ItemStack)var1[0]; - long var3 = (Long)var1[1]; - var3 = 43351946238974L ^ var3; - long var5 = var3 ^ 43756257674950L; - long var7 = var3 ^ 18232703832770L; - FieldValue var9 = FieldAccessor.b(new Object[]{this.a, "offHand", HeldItemRenderer.class, ItemStack.class, var7}); - var9.a_void_____________(new Object[]{var2, var5}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static RuntimeException a(RuntimeException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/inventory/InventoryUtil.java b/src/main/java/dev/zprestige/prestige/inventory/InventoryUtil.java index c3eb685..2661532 100644 --- a/src/main/java/dev/zprestige/prestige/inventory/InventoryUtil.java +++ b/src/main/java/dev/zprestige/prestige/inventory/InventoryUtil.java @@ -1,11 +1,7 @@ package dev.zprestige.prestige.inventory; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.network.PacketQueue; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.MinecraftAccess; import java.util.ArrayList; import java.util.List; import net.minecraft.block.Block; @@ -19,395 +15,216 @@ import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.screen.GenericContainerScreenHandler; import net.minecraft.screen.slot.SlotActionType; -public class InventoryUtil implements RenderContract2 { - public static boolean a(Object[] var0) { - ItemStack var1 = (ItemStack)var0[0]; - return var1.getItem() == Items.DIAMOND_SWORD - || var1.getItem() == Items.NETHERITE_SWORD - || var1.getItem() == Items.IRON_SWORD - || var1.getItem() == Items.GOLDEN_SWORD - || var1.getItem() == Items.STONE_SWORD - || var1.getItem() == Items.WOODEN_SWORD; +public class InventoryUtil implements MinecraftAccess { + public static boolean isSword(ItemStack stack) { + return stack.getItem() == Items.DIAMOND_SWORD + || stack.getItem() == Items.NETHERITE_SWORD + || stack.getItem() == Items.IRON_SWORD + || stack.getItem() == Items.GOLDEN_SWORD + || stack.getItem() == Items.STONE_SWORD + || stack.getItem() == Items.WOODEN_SWORD; } - public static boolean b(Object[] var0) { - ItemStack var3 = (ItemStack)var0[0]; - return var3.getItem() == Items.DIAMOND_AXE - || var3.getItem() == Items.NETHERITE_AXE - || var3.getItem() == Items.IRON_AXE - || var3.getItem() == Items.GOLDEN_AXE - || var3.getItem() == Items.STONE_AXE - || var3.getItem() == Items.WOODEN_AXE; + public static boolean isAxe(ItemStack stack) { + return stack.getItem() == Items.DIAMOND_AXE + || stack.getItem() == Items.NETHERITE_AXE + || stack.getItem() == Items.IRON_AXE + || stack.getItem() == Items.GOLDEN_AXE + || stack.getItem() == Items.STONE_AXE + || stack.getItem() == Items.WOODEN_AXE; } - public static boolean c(Object[] var0) { - ItemStack var3 = (ItemStack)var0[0]; - return var3.getItem() == Items.DIAMOND_PICKAXE - || var3.getItem() == Items.NETHERITE_PICKAXE - || var3.getItem() == Items.IRON_PICKAXE - || var3.getItem() == Items.GOLDEN_PICKAXE - || var3.getItem() == Items.STONE_PICKAXE - || var3.getItem() == Items.WOODEN_PICKAXE; + public static boolean isPickaxe(ItemStack stack) { + return stack.getItem() == Items.DIAMOND_PICKAXE + || stack.getItem() == Items.NETHERITE_PICKAXE + || stack.getItem() == Items.IRON_PICKAXE + || stack.getItem() == Items.GOLDEN_PICKAXE + || stack.getItem() == Items.STONE_PICKAXE + || stack.getItem() == Items.WOODEN_PICKAXE; } - public static boolean e(Object[] var0) { - int var4 = (Integer)var0[0]; - int var5 = (Integer)var0[1]; - SlotActionType var3 = (SlotActionType)var0[2]; - if (!(b.currentScreen instanceof InventoryScreen)) { - b.interactionManager.clickSlot(b.player.currentScreenHandler.syncId, var4, var5, var3, b.player); + public static boolean clickSlot(int slotId, int button, SlotActionType actionType) { + if (!(mc.currentScreen instanceof InventoryScreen)) { + mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, slotId, button, actionType, mc.player); return false; } else { - b.interactionManager.clickSlot(((InventoryScreen)b.currentScreen).getScreenHandler().syncId, var4, var5, var3, b.player); + mc.interactionManager.clickSlot(((InventoryScreen)mc.currentScreen).getScreenHandler().syncId, slotId, button, actionType, mc.player); return true; } } - public static boolean f(Object[] var0) { - int var3 = (Integer)var0[0]; - int var4 = (Integer)var0[1]; - long var1 = (Long)var0[2]; - var1 = 91984986229325L ^ var1; - long var5 = var1 ^ 139299028015949L; - long var7 = var1 ^ 15339803618154L; - Event.b(); - boolean var10 = b.currentScreen instanceof InventoryScreen; - if (Prestige.u == null) { - Object[] var12 = new Object[]{null, null, SlotActionType.SWAP, var5}; - var12[1] = var4; - var12[0] = var3; - e(var12); - return var10; + public static boolean swapSlot(int slotId, int hotbarSlot) { + boolean inventoryOpen = mc.currentScreen instanceof InventoryScreen; + if (Prestige.inventorySwapQueue == null) { + clickSlot(slotId, hotbarSlot, SlotActionType.SWAP); + return inventoryOpen; } else { - PacketQueue var10000 = Prestige.u; - Object[] var10005 = new Object[]{null, null, var7}; - var10005[1] = var4; - var10005[0] = var3; - var10000.a(var10005); - return var10; + Prestige.inventorySwapQueue.requestSwap(slotId, hotbarSlot); + return inventoryOpen; } } - public static boolean g(Object[] var0) { - int var5 = (Integer)var0[0]; - int var4 = (Integer)var0[1]; - SlotActionType var3 = (SlotActionType)var0[2]; - if (!(b.player.currentScreenHandler instanceof GenericContainerScreenHandler)) { + public static boolean clickContainerSlot(int slotId, int button, SlotActionType actionType) { + if (!(mc.player.currentScreenHandler instanceof GenericContainerScreenHandler)) { return false; } else { - b.interactionManager.clickSlot(b.player.currentScreenHandler.syncId, var5, var4, var3, b.player); + mc.interactionManager.clickSlot(mc.player.currentScreenHandler.syncId, slotId, button, actionType, mc.player); return true; } } - public static boolean h(Object[] var0) { - Item var1 = (Item)var0[0]; - long var2 = (Long)var0[1]; - var2 = 91984986229325L ^ var2; - long var4 = var2 ^ 100351665601188L; - long var6 = var2 ^ 74535592989125L; - Event.b(); - Integer var9 = a_Integer(new Object[]{var1, var4}); - if (var9 == null) { + public static boolean switchToItem(Item item) { + Integer slot = findHotbarSlot(item); + if (slot == null) { return false; } else { - int var10000 = var9; - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var10000; - a_void________(var10003); + selectSlot(slot); return true; } } - public static boolean i(Object[] var0) { - Block var1 = (Block)var0[0]; - long var2 = (Long)var0[1]; - var2 = 91984986229325L ^ var2; - long var4 = var2 ^ 140376941298418L; - return h(new Object[]{var1.asItem(), var4}); + public static boolean switchToBlock(Block block) { + return switchToItem(block.asItem()); } - public static void a_void________(Object[] var0) { - int var1 = (Integer)var0[0]; - if (var1 <= 8 && var1 >= 0) { - b.player.getInventory().setSelectedSlot(var1); + public static void selectSlot(int slot) { + if (slot <= 8 && slot >= 0) { + mc.player.getInventory().setSelectedSlot(slot); } } - public static void b_void__(Object[] var0) { - int var5 = (Integer)var0[0]; - Runnable var1 = (Runnable)var0[1]; - boolean var4 = (Boolean)var0[2]; - long var2 = (Long)var0[3]; - var2 = 91984986229325L ^ var2; - long var6 = var2 ^ 71766697816248L; - long var8 = var2 ^ 27939443117419L; - int var11 = a_int_____(new Object[]{var8}); - Event.b(); - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = var5; - a_void________(var10004); - var1.run(); - if (var4) { - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var11; - a_void________(var10003); + public static void runWithSlot(int slot, Runnable action, boolean switchBack) { + int previousSlot = getSelectedSlot(); + selectSlot(slot); + action.run(); + if (switchBack) { + selectSlot(previousSlot); } } - public static boolean j(Object[] var0) { - Item var5 = (Item)var0[0]; - Runnable var2 = (Runnable)var0[1]; - boolean var1 = (Boolean)var0[2]; - long var3 = (Long)var0[3]; - var3 = 91984986229325L ^ var3; - long var6 = var3 ^ 12307063424163L; - long var8 = var3 ^ 1452707992887L; - Event.b(); - Integer var11 = a_Integer(new Object[]{var5, var8}); - if (var11 == null) { + public static boolean runWithItem(Item item, Runnable action, boolean switchBack) { + Integer slot = findHotbarSlot(item); + if (slot == null) { return false; } else { - int var10000 = var11; - Object[] var10005 = new Object[]{null, null, null, var6}; - var10005[2] = var1; - var10005[1] = var2; - var10005[0] = var10000; - b_void__(var10005); + runWithSlot(slot, action, switchBack); return true; } } - public static boolean k(Object[] var0) { - Block var5 = (Block)var0[0]; - Runnable var1 = (Runnable)var0[1]; - boolean var4 = (Boolean)var0[2]; - long var2 = (Long)var0[3]; - var2 = 91984986229325L ^ var2; - long var6 = var2 ^ 71279824906444L; - Item var10000 = var5.asItem(); - Object[] var10005 = new Object[]{null, null, null, var6}; - var10005[2] = var4; - var10005[1] = var1; - var10005[0] = var10000; - return j(var10005); + public static boolean runWithBlock(Block block, Runnable action, boolean switchBack) { + return runWithItem(block.asItem(), action, switchBack); } - public static Integer a_Integer(Object[] var0) { - Item var3 = (Item)var0[0]; - Event.b(); - - for (int var5 = 0; var5 <= 8; var5++) { - ItemStack var6 = b.player.getInventory().getStack(var5); - if (var6.getItem() == var3) { - return var5; + public static Integer findHotbarSlot(Item item) { + for (int slot = 0; slot <= 8; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == item) { + return slot; } } return null; } - public static Integer b_Integer(Object[] var0) { - Item var1 = (Item)var0[0]; - Event.b(); - - for (int var5 = 0; var5 <= 8; var5++) { - ItemStack var6 = b.player.getInventory().getStack(var5); - if (var6.getItem() != var1 && var6.getItem() != Items.AIR) { - return var5; + public static Integer findSlotWithOtherItem(Item item) { + for (int slot = 0; slot <= 8; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack.getItem() != item && stack.getItem() != Items.AIR) { + return slot; } } return null; } - public static Integer c_Integer(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 91984986229325L ^ var1; - long var3 = var1 ^ 66031891214505L; - Event.b(); - - for (int var6 = 0; var6 <= 8; var6++) { - ItemStack var7 = b.player.getInventory().getStack(var6); - if (o(new Object[]{var7, var3})) { - return var6; + public static Integer findMaceSlot() { + for (int slot = 0; slot <= 8; slot++) { + if (isMace(mc.player.getInventory().getStack(slot))) { + return slot; } } return null; } - public static Integer d(Object[] var0) { - Block var1 = (Block)var0[0]; - Event.b(); - - for (int var5 = 0; var5 <= 8; var5++) { - ItemStack var6 = b.player.getInventory().getStack(var5); - if (var6.getItem() == var1.asItem()) { - return var5; + public static Integer findBlockSlot(Block block) { + for (int slot = 0; slot <= 8; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == block.asItem()) { + return slot; } } return null; } - public static List a_List(Object[] var0) { - Item var1 = (Item)var0[0]; - boolean var4 = (Boolean)var0[1]; - Event.b(); - ArrayList var6 = new ArrayList(); + public static List findInventorySlots(Item item, boolean includeHotbar) { + ArrayList slots = new ArrayList(); - for (int var7 = var4 ? 0 : 9; var7 <= 35; var7++) { - if (b.player.getInventory().getStack(var7).getItem() == var1) { - var6.add(var7); + for (int slot = includeHotbar ? 0 : 9; slot <= 35; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == item) { + slots.add(slot); } } - return var6; + return slots; } - public static List b_List(Object[] var0) { - Item var2 = (Item)var0[0]; - boolean var1 = (Boolean)var0[1]; - Event.b(); - ArrayList var6 = new ArrayList(); + public static List collectInventorySlots(Item item, boolean includeHotbar) { + ArrayList slots = new ArrayList(); - for (int var7 = var1 ? 0 : 9; var7 <= 35; var7++) { - if (b.player.getInventory().getStack(var7).getItem() == var2) { - var6.add(var7); + for (int slot = includeHotbar ? 0 : 9; slot <= 35; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == item) { + slots.add(slot); } } - return var6; + return slots; } - public static boolean l(Object[] var0) { - Item var3 = (Item)var0[0]; - return b.player.getMainHandStack().getItem() == var3; + public static boolean isHolding(Item item) { + return mc.player.getMainHandStack().getItem() == item; } - public static Item a_class_1792(Object[] var0) { - return b.player.getMainHandStack().getItem(); + public static Item getHeldItem() { + return mc.player.getMainHandStack().getItem(); } - public static boolean m(Object[] var0) { - Item var3 = (Item)var0[0]; - return b.player.getOffHandStack().getItem() == var3; + public static boolean isHoldingOffhand(Item item) { + return mc.player.getOffHandStack().getItem() == item; } - public static int a_int_____(Object[] var0) { - return b.player.getInventory().getSelectedSlot(); + public static int getSelectedSlot() { + return mc.player.getInventory().getSelectedSlot(); } - public static Integer e_Integer(Object[] var0) { - int var1 = (Integer)var0[0]; - int var5 = (Integer)var0[1]; - RegistryEntry var2 = (RegistryEntry)var0[2]; - long var3 = (Long)var0[3]; - var3 = 91984986229325L ^ var3; - long var6 = var3 ^ 19397901641776L; - Event.b(); - - for (int var9 = var1; var9 < var5; var9++) { - ItemStack var10 = b.player.getInventory().getStack(var9); - if (var10.getItem() == Items.SPLASH_POTION && (var2 == null || n(new Object[]{var10, var2, var6}))) { - return var9; + public static Integer findSplashPotion(int fromSlot, int toSlot, RegistryEntry effect) { + for (int slot = fromSlot; slot < toSlot; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack.getItem() == Items.SPLASH_POTION && (effect == null || hasEffect(stack, effect))) { + return slot; } } return null; } - public static boolean n(Object[] var0) { - ItemStack var1 = (ItemStack)var0[0]; - RegistryEntry var2 = (RegistryEntry)var0[1]; - Event.b(); - boolean var6 = false; + public static boolean hasEffect(ItemStack stack, RegistryEntry effect) { + boolean found = false; - for (StatusEffectInstance var8 : var1.get(DataComponentTypes.POTION_CONTENTS).getEffects()) { - if (var8.getEffectType() == var2) { - var6 = true; + for (StatusEffectInstance instance : stack.get(DataComponentTypes.POTION_CONTENTS).getEffects()) { + if (instance.getEffectType() == effect) { + found = true; } } - return var6; + return found; } - public static boolean o(Object[] var0) { - ItemStack var1 = (ItemStack)var0[0]; - return var1.getItem().equals(Items.MACE); + public static boolean isMace(ItemStack stack) { + return stack.getItem().equals(Items.MACE); } - public static boolean p(Object[] var0) { - ItemStack var3 = (ItemStack)var0[0]; - return var3.getItem().equals(Items.WIND_CHARGE); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public static boolean isWindCharge(ItemStack stack) { + return stack.getItem().equals(Items.WIND_CHARGE); } } diff --git a/src/main/java/dev/zprestige/prestige/inventory/InventoryUtil2.java b/src/main/java/dev/zprestige/prestige/inventory/InventoryUtil2.java deleted file mode 100644 index 6287d31..0000000 --- a/src/main/java/dev/zprestige/prestige/inventory/InventoryUtil2.java +++ /dev/null @@ -1,165 +0,0 @@ -package dev.zprestige.prestige.inventory; - -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.entity.Entity; -import net.minecraft.item.Items; -import net.minecraft.item.PotionItem; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; - -public class InventoryUtil2 implements RenderContract2 { - public static boolean a(Object[] var0) { - BlockHitResult var1 = (BlockHitResult)var0[0]; - long var2 = (Long)var0[1]; - var2 = 19061682513592L ^ var2; - long var4 = var2 ^ 106127797897354L; - return b(new Object[]{var1, Hand.MAIN_HAND, var4}); - } - - public static boolean b(Object[] var0) { - BlockHitResult var1 = (BlockHitResult)var0[0]; - Hand var4 = (Hand)var0[1]; - Event.b(); - ActionResult var6 = b.interactionManager.interactBlock(b.player, var4, var1); - if (!b.player.isSpectator()) { - Prestige.o.g(new Object[]{true}); - } - - if (var6.isAccepted()) { - b.player.swingHand(var4); - return true; - } else { - return false; - } - } - - public static void a_void_________(Object[] var0) { - Entity var1 = (Entity)var0[0]; - b.interactionManager.attackEntity(b.player, var1); - b.player.swingHand(Hand.MAIN_HAND); - Prestige.o.g(new Object[]{true}); - } - - public static boolean c(Object[] var0) { - Hand var1 = (Hand)var0[0]; - Event.b(); - ActionResult var5 = b.interactionManager.interactItem(b.player, var1); - if (!b.player.isSpectator()) { - Prestige.o.g(new Object[]{true}); - } - - if (var5.isAccepted()) { - b.player.swingHand(Hand.MAIN_HAND); - return true; - } else { - return false; - } - } - - public static void b_void___(Object[] var0) { - b.player.startGliding(); - } - - public static float a_float_________(Object[] var0) { - boolean var1 = (Boolean)var0[0]; - return var1 ? 5.0F : 4.5F; - } - - public static float b_float_____(Object[] var0) { - return a_float_________(new Object[]{b.player.isCreative()}); - } - - public static boolean d(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 19061682513592L ^ var1; - long var3 = var1 ^ 87606581186488L; - return b.player.isUsingItem() - && (b.player.getMainHandStack().getItem() == Items.SHIELD || b.player.getOffHandStack().getItem() == Items.SHIELD && !e(new Object[]{var3})); - } - - public static boolean e(Object[] var0) { - return b.player.getMainHandStack().get(DataComponentTypes.FOOD) != null - ? true - : b.player.getMainHandStack().getItem() instanceof PotionItem - || b.player.getMainHandStack().getItem() == Items.SNOWBALL - || b.player.getMainHandStack().getItem() == Items.EGG - || b.player.getMainHandStack().getItem() == Items.ENDER_PEARL - || b.player.getMainHandStack().getItem() == Items.EXPERIENCE_BOTTLE - || b.player.getMainHandStack().getItem() == Items.SPLASH_POTION - || b.player.getMainHandStack().getItem() == Items.LINGERING_POTION; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/inventory/InventoryUtil3.java b/src/main/java/dev/zprestige/prestige/inventory/InventoryUtil3.java deleted file mode 100644 index 3545897..0000000 --- a/src/main/java/dev/zprestige/prestige/inventory/InventoryUtil3.java +++ /dev/null @@ -1,127 +0,0 @@ -package dev.zprestige.prestige.inventory; - -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.entity.Entity; -import net.minecraft.entity.ItemEntity; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.util.math.BlockPos; - -public class InventoryUtil3 implements RenderContract2 { - public static boolean a(Object[] var0) { - BlockPos var1 = (BlockPos)var0[0]; - long var2 = (Long)var0[1]; - var2 = 53464839490873L ^ var2; - long var4 = var2 ^ 122684777618761L; - Event.b(); - int var7 = 0; - - for (Entity var9 : b.world.getEntities()) { - if (var9 instanceof ItemEntity var10 - && !(var10.getY() < var1.getY()) - && b(new Object[]{var10.getStack().getItem(), var4}) - && !(Math.sqrt(var10.squaredDistanceTo(var1.toCenterPos())) > 15.0)) { - var7++; - } - } - - return var7 > 3; - } - - public static boolean b(Object[] var0) { - Item var1 = (Item)var0[0]; - return var1.equals(Items.DIAMOND_HELMET) - || var1.equals(Items.DIAMOND_CHESTPLATE) - || var1.equals(Items.DIAMOND_LEGGINGS) - || var1.equals(Items.DIAMOND_BOOTS) - || var1.equals(Items.NETHERITE_HELMET) - || var1.equals(Items.NETHERITE_CHESTPLATE) - || var1.equals(Items.NETHERITE_LEGGINGS) - || var1.equals(Items.NETHERITE_BOOTS) - || var1.equals(Items.DIAMOND_PICKAXE) - || var1.equals(Items.NETHERITE_PICKAXE) - || var1.equals(Items.DIAMOND_SWORD) - || var1.equals(Items.NETHERITE_SWORD) - || var1.equals(Items.DIAMOND_AXE) - || var1.equals(Items.NETHERITE_AXE) - || var1.equals(Items.TOTEM_OF_UNDYING) - || var1.equals(Items.GOLDEN_APPLE) - || var1.equals(Items.ENCHANTED_GOLDEN_APPLE) - || var1.equals(Items.ENDER_PEARL) - || var1.equals(Items.EXPERIENCE_BOTTLE) - || var1.equals(Items.END_CRYSTAL) - || var1.equals(Items.RESPAWN_ANCHOR) - || var1.equals(Items.GLOWSTONE); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/inventory/ItemESPHelper.java b/src/main/java/dev/zprestige/prestige/inventory/ItemEspLabel.java similarity index 50% rename from src/main/java/dev/zprestige/prestige/inventory/ItemESPHelper.java rename to src/main/java/dev/zprestige/prestige/inventory/ItemEspLabel.java index 3f7658b..fd0433b 100644 --- a/src/main/java/dev/zprestige/prestige/inventory/ItemESPHelper.java +++ b/src/main/java/dev/zprestige/prestige/inventory/ItemEspLabel.java @@ -2,7 +2,7 @@ package dev.zprestige.prestige.inventory; import net.minecraft.item.ItemStack; -public class ItemESPHelper { - public String a; - public ItemStack b; +public class ItemEspLabel { + public String label; + public ItemStack stack; } diff --git a/src/main/java/dev/zprestige/prestige/inventory/ItemLabel.java b/src/main/java/dev/zprestige/prestige/inventory/ItemLabel.java deleted file mode 100644 index cc7bc7c..0000000 --- a/src/main/java/dev/zprestige/prestige/inventory/ItemLabel.java +++ /dev/null @@ -1,13 +0,0 @@ -package dev.zprestige.prestige.inventory; - -import net.minecraft.item.ItemStack; - -public class ItemLabel { - public ItemStack a; - public String b; - - public ItemLabel(ItemStack var1, String var2) { - this.a = var1; - this.b = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/inventory/PlayerInteractions.java b/src/main/java/dev/zprestige/prestige/inventory/PlayerInteractions.java new file mode 100644 index 0000000..2f3c81d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/inventory/PlayerInteractions.java @@ -0,0 +1,80 @@ +package dev.zprestige.prestige.inventory; + +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.render.MinecraftAccess; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.entity.Entity; +import net.minecraft.item.Items; +import net.minecraft.item.PotionItem; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; + +public class PlayerInteractions implements MinecraftAccess { + public static boolean interactBlock(BlockHitResult hitResult) { + return interactBlock(hitResult, Hand.MAIN_HAND); + } + + public static boolean interactBlock(BlockHitResult hitResult, Hand hand) { + ActionResult result = mc.interactionManager.interactBlock(mc.player, hand, hitResult); + if (!mc.player.isSpectator()) { + Prestige.silentRotationManager.setActedThisTick(true); + } + + if (result.isAccepted()) { + mc.player.swingHand(hand); + return true; + } else { + return false; + } + } + + public static void attackEntity(Entity target) { + mc.interactionManager.attackEntity(mc.player, target); + mc.player.swingHand(Hand.MAIN_HAND); + Prestige.silentRotationManager.setActedThisTick(true); + } + + public static boolean interactItem(Hand hand) { + ActionResult result = mc.interactionManager.interactItem(mc.player, hand); + if (!mc.player.isSpectator()) { + Prestige.silentRotationManager.setActedThisTick(true); + } + + if (result.isAccepted()) { + mc.player.swingHand(Hand.MAIN_HAND); + return true; + } else { + return false; + } + } + + public static void startGliding() { + mc.player.startGliding(); + } + + public static float getReachDistance(boolean creative) { + return creative ? 5.0F : 4.5F; + } + + public static float getReachDistance() { + return getReachDistance(mc.player.isCreative()); + } + + public static boolean isBlocking() { + return mc.player.isUsingItem() + && (mc.player.getMainHandStack().getItem() == Items.SHIELD || mc.player.getOffHandStack().getItem() == Items.SHIELD && !isHoldingUsableItem()); + } + + public static boolean isHoldingUsableItem() { + return mc.player.getMainHandStack().get(DataComponentTypes.FOOD) != null + ? true + : mc.player.getMainHandStack().getItem() instanceof PotionItem + || mc.player.getMainHandStack().getItem() == Items.SNOWBALL + || mc.player.getMainHandStack().getItem() == Items.EGG + || mc.player.getMainHandStack().getItem() == Items.ENDER_PEARL + || mc.player.getMainHandStack().getItem() == Items.EXPERIENCE_BOTTLE + || mc.player.getMainHandStack().getItem() == Items.SPLASH_POTION + || mc.player.getMainHandStack().getItem() == Items.LINGERING_POTION; + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/AutoCrystalHelper.java b/src/main/java/dev/zprestige/prestige/math/AutoCrystalHelper.java deleted file mode 100644 index 5babf39..0000000 --- a/src/main/java/dev/zprestige/prestige/math/AutoCrystalHelper.java +++ /dev/null @@ -1,205 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.module.combat.AutoCrystal; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.item.Items; -import net.minecraft.util.hit.HitResult.Type; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; - -public class AutoCrystalHelper { - private AutoCrystal a; - private BlockPos b; - private Box c; - private float d = 0.0F; - public long e = 0L; - public long f; - - public AutoCrystalHelper(AutoCrystal var1, long var2) { - this.a = var1; - } - - @Subscribe - public void a(TickEvent27 var1) { - if ((Boolean)this.a.i.getValue()) { - this.e = System.currentTimeMillis() - this.f; - this.f = System.currentTimeMillis(); - float var11 = (float)this.e * 0.005F; - if (!(var11 > 1.0F)) { - if (this.b != null) { - if (this.a.isEnabled() - && RenderContract2.b.player.getMainHandStack().isOf(Items.END_CRYSTAL) - && RenderContract2.b.crosshairTarget != null - && RenderContract2.b.crosshairTarget.getType() == Type.BLOCK) { - float var15 = this.d; - float var10002 = ((Color)this.a.j.getValue()).getAlpha() / 255.0F; - Object[] var23 = new Object[]{null, null, null, 127101728255981L}; - var23[2] = var11; - var23[1] = var10002; - var23[0] = var15; - this.d = MathHelper4.b_float______(var23); - } else { - float var10001 = this.d; - Object[] var10006 = new Object[]{null, null, null, 127101728255981L}; - var10006[2] = var11; - var10006[1] = 0.0F; - var10006[0] = var10001; - this.d = MathHelper4.b_float______(var10006); - } - - if (this.d <= 0.01F) { - this.b = null; - return; - } - - if (this.c == null) { - this.c = new Box(this.b); - } - - this.c = this.c.offset((this.b.getX() - this.c.minX) * 0.05F, (this.b.getY() - this.c.minY) * 0.05F, (this.b.getZ() - this.c.minZ) * 0.05F); - Color var12 = new Color( - ((Color)this.a.j.getValue()).getRed(), - ((Color)this.a.j.getValue()).getGreen(), - ((Color)this.a.j.getValue()).getBlue(), - (int)(this.d / 4.0F * 255.0F) - ); - Color var13 = new Color( - ((Color)this.a.j.getValue()).getRed(), - ((Color)this.a.j.getValue()).getGreen(), - ((Color)this.a.j.getValue()).getBlue(), - (int)(this.d * 255.0F) - ); - MatrixCameraData var10000 = var1.b; - RenderHelper8 var16 = var1.a; - float var18 = (float)this.c.minX; - float var10003 = (float)this.c.minY; - float var10004 = (float)this.c.minZ; - float var10005 = (float)this.c.maxX; - float var24 = (float)this.c.maxY; - float var10007 = (float)this.c.maxZ; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var12, 108390846498585L}; - var10011[7] = var10007; - var10011[6] = var24; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var18; - var10011[1] = var16; - var10011[0] = var10000; - RenderState.h(var10011); - var10000 = var1.b; - var16 = var1.a; - var18 = (float)this.c.minX; - var10003 = (float)this.c.minY; - var10004 = (float)this.c.minZ; - var10005 = (float)this.c.maxX; - var24 = (float)this.c.maxY; - var10007 = (float)this.c.maxZ; - var10011 = new Object[]{null, null, null, null, null, null, null, null, var13, 119015971454350L}; - var10011[7] = var10007; - var10011[6] = var24; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var18; - var10011[1] = var16; - var10011[0] = var10000; - RenderState.g(var10011); - } - } - } - } - - public void a(Object[] var1) { - BlockPos var2 = (BlockPos)var1[0]; - this.b = var2; - } - - public BlockPos a_class_2338(Object[] var1) { - return this.b; - } - - public void b(Object[] var1) { - this.b = null; - this.c = null; - this.d = 0.0F; - this.e = 0L; - this.f = System.currentTimeMillis(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/AutoCrystalRenderer.java b/src/main/java/dev/zprestige/prestige/math/AutoCrystalRenderer.java new file mode 100644 index 0000000..2e6321d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/AutoCrystalRenderer.java @@ -0,0 +1,87 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.module.combat.AutoCrystal; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.ShapeRenderer; +import java.awt.Color; +import net.minecraft.item.Items; +import net.minecraft.util.hit.HitResult.Type; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; + +public class AutoCrystalRenderer { + private AutoCrystal module; + private BlockPos targetPos; + private Box renderBox; + private float alpha = 0.0F; + public long frameDelta = 0L; + public long lastFrameTime; + + public AutoCrystalRenderer(AutoCrystal autoCrystal) { + this.module = autoCrystal; + } + + @Subscribe + public void onRender3D(Render3DEvent event) { + if (this.module.render.getValue()) { + this.frameDelta = System.currentTimeMillis() - this.lastFrameTime; + this.lastFrameTime = System.currentTimeMillis(); + float step = (float)this.frameDelta * 0.005F; + if (!(step > 1.0F)) { + if (this.targetPos != null) { + if (this.module.isEnabled() + && MinecraftAccess.mc.player.getMainHandStack().isOf(Items.END_CRYSTAL) + && MinecraftAccess.mc.crosshairTarget != null + && MinecraftAccess.mc.crosshairTarget.getType() == Type.BLOCK) { + this.alpha = UiMath.approach(this.alpha, this.module.color.getValue().getAlpha() / 255.0F, step); + } else { + this.alpha = UiMath.approach(this.alpha, 0.0F, step); + } + + if (this.alpha <= 0.01F) { + this.targetPos = null; + return; + } + + if (this.renderBox == null) { + this.renderBox = new Box(this.targetPos); + } + + this.renderBox = this.renderBox.offset((this.targetPos.getX() - this.renderBox.minX) * 0.05F, (this.targetPos.getY() - this.renderBox.minY) * 0.05F, (this.targetPos.getZ() - this.renderBox.minZ) * 0.05F); + Color fillColor = new Color( + this.module.color.getValue().getRed(), + this.module.color.getValue().getGreen(), + this.module.color.getValue().getBlue(), + (int)(this.alpha / 4.0F * 255.0F) + ); + Color outlineColor = new Color( + this.module.color.getValue().getRed(), + this.module.color.getValue().getGreen(), + this.module.color.getValue().getBlue(), + (int)(this.alpha * 255.0F) + ); + ShapeRenderer.drawFilledBox(event.context, event.renderer, (float)this.renderBox.minX, (float)this.renderBox.minY, (float)this.renderBox.minZ, (float)this.renderBox.maxX, (float)this.renderBox.maxY, (float)this.renderBox.maxZ, fillColor); + ShapeRenderer.drawBoxOutline(event.context, event.renderer, (float)this.renderBox.minX, (float)this.renderBox.minY, (float)this.renderBox.minZ, (float)this.renderBox.maxX, (float)this.renderBox.maxY, (float)this.renderBox.maxZ, outlineColor); + } + } + } + } + + public void setTargetPos(BlockPos pos) { + this.targetPos = pos; + } + + public BlockPos getTargetPos() { + return this.targetPos; + } + + public void reset() { + this.targetPos = null; + this.renderBox = null; + this.alpha = 0.0F; + this.frameDelta = 0L; + this.lastFrameTime = System.currentTimeMillis(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/AutoObbyCrystalHelper.java b/src/main/java/dev/zprestige/prestige/math/AutoObbyCrystalHelper.java deleted file mode 100644 index 76de270..0000000 --- a/src/main/java/dev/zprestige/prestige/math/AutoObbyCrystalHelper.java +++ /dev/null @@ -1,25 +0,0 @@ -package dev.zprestige.prestige.math; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.util.math.Vec3d; - -public final class AutoObbyCrystalHelper { - public BlockPos a; - public BlockPos b; - public Direction c; - public Vec3d d; - public boolean e; - public boolean f; - public double g; - - public AutoObbyCrystalHelper(BlockPos var1, BlockPos var2, Direction var3, Vec3d var4, boolean var5, boolean var6, double var7) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = var4; - this.e = var5; - this.f = var6; - this.g = var7; - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/BlockChangeTracker.java b/src/main/java/dev/zprestige/prestige/math/BlockChangeTracker.java new file mode 100644 index 0000000..ba0035e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/BlockChangeTracker.java @@ -0,0 +1,58 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.network.BlockChangeListener; +import dev.zprestige.prestige.render.MinecraftAccess; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import net.minecraft.util.math.BlockPos; + +public final class BlockChangeTracker implements MinecraftAccess { + public static final Map CLEARED_BLOCKS = new HashMap(); + public static final Map EXPLOSIONS = new HashMap(); + public static final Map PLACED_BLOCKS = new HashMap(); + private static boolean listenerRegistered; + + private BlockChangeTracker() { + } + + private static void ensureListenerRegistered() { + if (!listenerRegistered && Prestige.eventBus != null) { + listenerRegistered = true; + Prestige.eventBus.register(new BlockChangeListener()); + } + } + + public static void markExplosion(BlockPos pos) { + ensureListenerRegistered(); + EXPLOSIONS.put(pos.toImmutable(), System.currentTimeMillis()); + } + + public static boolean isRecentlyExploded(BlockPos pos) { + ensureListenerRegistered(); + long now = System.currentTimeMillis(); + Long clearedAt = (Long)CLEARED_BLOCKS.get(pos); + if (clearedAt != null && now - clearedAt < 300L) { + return true; + } else { + for (Entry explosion : (Iterable)(EXPLOSIONS.entrySet())) { + if (now - (Long)explosion.getValue() <= 100L && ((BlockPos)explosion.getKey()).getSquaredDistance(pos) <= 42.25) { + return true; + } + } + + return false; + } + } + + public static boolean isRecentlyPlaced(BlockPos pos) { + ensureListenerRegistered(); + Long placedAt = (Long)PLACED_BLOCKS.get(pos); + return placedAt != null && System.currentTimeMillis() - placedAt < 120L; + } + + public static void markCleared(BlockPos pos, long time) { + CLEARED_BLOCKS.put(pos.toImmutable(), time); + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/HitEffectHelper.java b/src/main/java/dev/zprestige/prestige/math/HitEffectHelper.java deleted file mode 100644 index 34300f8..0000000 --- a/src/main/java/dev/zprestige/prestige/math/HitEffectHelper.java +++ /dev/null @@ -1,152 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.type.AnimationMode; -import dev.zprestige.prestige.world.PlacementCheck; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.util.math.Vec3d; - -public class HitEffectHelper implements RenderContract2 { - private final RenderHelper27 a; - public Vec3d b; - public Vec3d c; - public Vec3d d; - public Vec3d e; - public final PlacementCheck f; - public final AnimationMode g; - - public HitEffectHelper(Vec3d var1, Vec3d var2, AnimationMode var3, long var4) { - super(); - var4 = 0L; - var4 = 26183465440188L ^ var4; - long var6 = var4 ^ 71503997410734L; - long var8 = var4 ^ 4340496562606L; - long var10 = var4 ^ 114862446739809L; - this.a = new RenderHelper27(var6); - this.b = var1; - this.c = var2; - this.e = var2; - this.d = new Vec3d((Math.random() * 0.5 - 0.25) * 0.01, Math.random() * 0.25 * 0.01, (Math.random() * 0.5 - 0.25) * 0.01); - this.g = var3; - this.f = this.a(new Object[]{var10}); - this.a.a_void_____________________(new Object[]{var8}); - } - - private PlacementCheck a(Object[] var1) { - return (PlacementCheck)(switch (this.g) { - case LEGACY -> new MathUtil(); - case POP -> new MathUtil2(); - }); - } - - public void a_void__________(Object[] var1) { - boolean var2 = (Boolean)var1[0]; - long var3 = (Long)var1[1]; - var3 = 26183465440188L ^ var3; - long var5 = var3 ^ 74231399566631L; - this.e = this.c; - PlacementCheck var10000 = this.f; - Object[] var10005 = new Object[]{null, null, var5}; - var10005[1] = var2; - var10005[0] = this; - var10000.a(var10005); - } - - public float a_float__________(Object[] var1) { - float var2 = (Float)var1[0]; - long var3 = (Long)var1[1]; - var3 = 26183465440188L ^ var3; - long var5 = var3 ^ 44892599887962L; - return Math.min(1.0F, this.a.a_float__________________(new Object[]{var5}) / var2); - } - - public Vec3d a_class_243_(Object[] var1) { - return this.e; - } - - public Vec3d b(Object[] var1) { - return this.c; - } - - public Vec3d c(Object[] var1) { - return this.d; - } - - public RenderHelper27 a_RenderHelper27(Object[] var1) { - return this.a; - } - - public AnimationMode a_AnimationMode(Object[] var1) { - return this.g; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/HitParticle.java b/src/main/java/dev/zprestige/prestige/math/HitParticle.java new file mode 100644 index 0000000..fbdf82b --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/HitParticle.java @@ -0,0 +1,65 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.type.AnimationMode; +import dev.zprestige.prestige.world.HitParticlePhysics; +import net.minecraft.util.math.Vec3d; + +public class HitParticle implements MinecraftAccess { + private final StopWatch ageTimer; + public Vec3d origin; + public Vec3d pos; + public Vec3d velocity; + public Vec3d prevPos; + public final HitParticlePhysics motionModel; + public final AnimationMode mode; + + public HitParticle(Vec3d originPos, Vec3d startPos, AnimationMode animationMode) { + super(); + this.ageTimer = new StopWatch(); + this.origin = originPos; + this.pos = startPos; + this.prevPos = startPos; + this.velocity = new Vec3d((Math.random() * 0.5 - 0.25) * 0.01, Math.random() * 0.25 * 0.01, (Math.random() * 0.5 - 0.25) * 0.01); + this.mode = animationMode; + this.motionModel = this.createMotionModel(); + this.ageTimer.reset(); + } + + private HitParticlePhysics createMotionModel() { + return (HitParticlePhysics)(switch (this.mode) { + case LEGACY -> new LegacyParticlePhysics(); + case POP -> new PopParticlePhysics(); + }); + } + + public void update(boolean physicsEnabled) { + this.prevPos = this.pos; + this.motionModel.updateMotion(this, physicsEnabled); + } + + public float getLifeProgress(float lifetimeMs) { + return Math.min(1.0F, this.ageTimer.getElapsed() / lifetimeMs); + } + + public Vec3d getPrevPos() { + return this.prevPos; + } + + public Vec3d getPos() { + return this.pos; + } + + public Vec3d getVelocity() { + return this.velocity; + } + + public StopWatch getAgeTimer() { + return this.ageTimer; + } + + public AnimationMode getMode() { + return this.mode; + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/JumpCircle.java b/src/main/java/dev/zprestige/prestige/math/JumpCircle.java new file mode 100644 index 0000000..225025d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/JumpCircle.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.math; + +import net.minecraft.util.math.Vec3d; + +public class JumpCircle { + public Vec3d pos; + public long spawnTime; + public int lifetimeMs; + + public JumpCircle(Vec3d position, int lifetime) { + this.pos = position; + this.spawnTime = System.currentTimeMillis(); + this.lifetimeMs = lifetime; + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/JumpCirclesHelper.java b/src/main/java/dev/zprestige/prestige/math/JumpCirclesHelper.java deleted file mode 100644 index d6ce11b..0000000 --- a/src/main/java/dev/zprestige/prestige/math/JumpCirclesHelper.java +++ /dev/null @@ -1,85 +0,0 @@ -package dev.zprestige.prestige.math; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.util.math.Vec3d; - -public class JumpCirclesHelper { - public Vec3d a; - public long b; - public int c; - - public JumpCirclesHelper(Vec3d var1, int var2, long var3) { - this.a = var1; - this.b = System.currentTimeMillis(); - this.c = var2; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/LegacyParticlePhysics.java b/src/main/java/dev/zprestige/prestige/math/LegacyParticlePhysics.java new file mode 100644 index 0000000..a5a3e5e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/LegacyParticlePhysics.java @@ -0,0 +1,34 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.world.HitParticlePhysics; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; + +public class LegacyParticlePhysics extends HitParticlePhysics { + @Override + public void updateMotion(HitParticle particle, boolean physicsEnabled) { + if (!physicsEnabled) { + this.applyLegacyMotion(particle); + } else { + if (!this.isPassable(MinecraftAccess.mc.world.getBlockState(BlockPos.ofFloored(particle.pos.x, particle.pos.y, particle.pos.z + particle.velocity.z)))) { + particle.velocity = new Vec3d(particle.velocity.x, particle.velocity.y, particle.velocity.z * -0.8); + } + + if (!this.isPassable(MinecraftAccess.mc.world.getBlockState(BlockPos.ofFloored(particle.pos.x, particle.pos.y + particle.velocity.y, particle.pos.z)))) { + particle.velocity = new Vec3d(particle.velocity.x * 0.999F, particle.velocity.y * -0.6, particle.velocity.z * 0.999F); + } + + if (!this.isPassable(MinecraftAccess.mc.world.getBlockState(BlockPos.ofFloored(particle.pos.x + particle.velocity.x, particle.pos.y, particle.pos.z)))) { + particle.velocity = new Vec3d(particle.velocity.x * -0.8, particle.velocity.y, particle.velocity.z); + } + + this.applyLegacyMotion(particle); + } + } + + private void applyLegacyMotion(HitParticle particle) { + particle.pos = particle.pos.add(particle.velocity); + particle.velocity = new Vec3d(particle.velocity.x / 0.999998F, particle.velocity.y - 1.5E-6, particle.velocity.z / 0.999998F); + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/MathHelper.java b/src/main/java/dev/zprestige/prestige/math/MathHelper.java deleted file mode 100644 index be32056..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathHelper.java +++ /dev/null @@ -1,85 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.MethodValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.util.math.Vec2f; - -public class MathHelper { - private static final MethodValue a = FieldAccessor.a_MethodValue(new Object[]{Vec2f.class, "x", float.class, 0L}); - private static final MethodValue b = FieldAccessor.a_MethodValue(new Object[]{Vec2f.class, "y", float.class, 0L}); - private final Vec2f c; - - public MathHelper(Vec2f var1) { - this.c = var1; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MathHelper2.java b/src/main/java/dev/zprestige/prestige/math/MathHelper2.java deleted file mode 100644 index 482fb91..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathHelper2.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.math; - -import net.minecraft.util.math.Vec3d; - -public final class MathHelper2 { - public Vec3d a; - public Vec3d b; - public boolean c; - - public MathHelper2(Vec3d var1, Vec3d var2, boolean var3) { - this.a = var1; - this.b = var2; - this.c = var3; - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MathHelper3.java b/src/main/java/dev/zprestige/prestige/math/MathHelper3.java deleted file mode 100644 index 96a1da3..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathHelper3.java +++ /dev/null @@ -1,113 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.MethodValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.util.math.Vec3d; - -public class MathHelper3 { - private static final MethodValue a = FieldAccessor.a_MethodValue(new Object[]{Vec3d.class, "x", double.class, 0L}); - private static final MethodValue b = FieldAccessor.a_MethodValue(new Object[]{Vec3d.class, "y", double.class, 0L}); - private static final MethodValue c = FieldAccessor.a_MethodValue(new Object[]{Vec3d.class, "z", double.class, 0L}); - private final Vec3d d; - - public MathHelper3(Vec3d var1) { - this.d = var1; - } - - public void d(Object[] var1) { - double var2 = (Double)var1[0]; - double var4 = (Double)var1[1]; - double var6 = (Double)var1[2]; - long var8 = (Long)var1[3]; - var8 = 113192846192854L ^ var8; - long var10 = var8 ^ 124005428690047L; - MethodValue var10000 = a; - Vec3d var10001 = this.d; - Object[] var10005 = new Object[]{null, null, var10}; - var10005[1] = var2; - var10005[0] = var10001; - var10000.a_void______________(var10005); - var10000 = b; - var10001 = this.d; - var10005 = new Object[]{null, null, var10}; - var10005[1] = var4; - var10005[0] = var10001; - var10000.a_void______________(var10005); - var10000 = c; - var10001 = this.d; - var10005 = new Object[]{null, null, var10}; - var10005[1] = var6; - var10005[0] = var10001; - var10000.a_void______________(var10005); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MathHelper4.java b/src/main/java/dev/zprestige/prestige/math/MathHelper4.java deleted file mode 100644 index d1037cd..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathHelper4.java +++ /dev/null @@ -1,222 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.client.Prestige; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.HashMap; - -public class MathHelper4 { - public float a; - public float b; - public float c; - public float d; - public String e; - - public MathHelper4(float var1, float var2, float var3, float var4, String var5) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = var4; - this.e = var5; - } - - public static Color b(Object[] var0) { - Color var4 = (Color)var0[0]; - float var1 = (Float)var0[1]; - return new Color(var4.getRed() / 255.0F, var4.getGreen() / 255.0F, var4.getBlue() / 255.0F, net.minecraft.util.math.MathHelper.clamp(var1, 0.0F, 1.0F)); - } - - public static Color d(Object[] var0) { - return (Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue(); - } - - public static float a(Object[] var0) { - float var2 = (Float)var0[0]; - float var1 = (Float)var0[1]; - float var5 = (Float)var0[2]; - return var2 < var1 ? var1 : Math.min(var2, var5); - } - - public static float b_float______(Object[] var0) { - float var2 = (Float)var0[0]; - float var1 = (Float)var0[1]; - float var5 = (Float)var0[2]; - long var3 = (Long)var0[3]; - var3 = 29597793068458L ^ var3; - long var6 = var3 ^ 82621437909205L; - float var10001 = var2 - var1; - Object[] var10007 = new Object[]{null, null, null, var6}; - var10007[2] = 1.0F; - var10007[1] = 0.0F; - var10007[0] = var5; - return var2 - var10001 * a(var10007); - } - - public static float c(Object[] var0) { - float var4 = (Float)var0[0]; - int var1 = (Integer)var0[1]; - if (var1 < 0) { - throw new IllegalArgumentException(); - } else { - BigDecimal var5 = BigDecimal.valueOf((double)var4); - var5 = var5.setScale(var1, RoundingMode.FLOOR); - return var5.floatValue(); - } - } - - public static String a_String_____(Object[] var0) { - int var1 = (Integer)var0[0]; - HashMap var4 = new HashMap(); - var4.put(9999, "LMB"); - var4.put(9998, "RMB"); - var4.put(9997, "MMB"); - var4.put(9996, "MB4"); - var4.put(9995, "MM5"); - var4.put(345, "R-Ctrl"); - var4.put(344, "Right Shift"); - var4.put(342, "L-Alt"); - var4.put(341, "L-Ctrl"); - var4.put(340, "Shift"); - var4.put(258, "Tab"); - return (String)var4.get(var1); - } - - public void d_void(Object[] var1) { - } - - public void e(Object[] var1) { - } - - public void f(Object[] var1) { - } - - public void g(Object[] var1) { - } - - public void h(Object[] var1) { - } - - public void i(Object[] var1) { - this.e = null; - } - - public float f_float(Object[] var1) { - return this.a; - } - - public void j(Object[] var1) { - float var2 = (Float)var1[0]; - this.a = var2; - } - - public float g_float(Object[] var1) { - return this.b; - } - - public void k(Object[] var1) { - float var2 = (Float)var1[0]; - this.b = var2; - } - - public float h_float(Object[] var1) { - return this.c; - } - - public void l(Object[] var1) { - float var2 = (Float)var1[0]; - this.c = var2; - } - - public float i_float(Object[] var1) { - return this.d; - } - - public void m(Object[] var1) { - float var2 = (Float)var1[0]; - this.d = var2; - } - - public String b_String__(Object[] var1) { - return this.e; - } - - public void n(Object[] var1) { - String var2 = (String)var1[0]; - this.e = var2; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static IllegalArgumentException a(IllegalArgumentException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MathHelper5.java b/src/main/java/dev/zprestige/prestige/math/MathHelper5.java deleted file mode 100644 index 63705ed..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathHelper5.java +++ /dev/null @@ -1,142 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.Framebuffer; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.MinecraftClient; -import org.joml.Vector4f; - -public class MathHelper5 { - public Framebuffer a; - public FontRenderer b; - private int c; - private int d; - private static final MinecraftClient e = MinecraftClient.getInstance(); - private Vector4f f; - private Vector4f g; - private float h; - private float i; - private Color j; - private boolean k; - private long l; - - private void c(Object[] var1) { - long var2 = (Long)var1[0]; - this.l = var2; - } - - public void d(Object[] var1) { - Vector4f var2 = (Vector4f)var1[0]; - this.f = var2; - } - - public Vector4f a(Object[] var1) { - return this.f; - } - - public void e(Object[] var1) { - float var2 = (Float)var1[0]; - this.h = var2; - } - - public float a_float___________(Object[] var1) { - return this.h; - } - - public void f(Object[] var1) { - float var2 = (Float)var1[0]; - this.i = var2; - } - - public float b(Object[] var1) { - return this.i; - } - - public void g(Object[] var1) { - Vector4f var2 = (Vector4f)var1[0]; - this.g = var2; - } - - public Vector4f b_Vector4f(Object[] var1) { - return this.g; - } - - public void h(Object[] var1) { - Color var2 = (Color)var1[0]; - this.j = var2; - } - - public Color a_Color_(Object[] var1) { - return this.j; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MathHelper6.java b/src/main/java/dev/zprestige/prestige/math/MathHelper6.java deleted file mode 100644 index f22afe0..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathHelper6.java +++ /dev/null @@ -1,106 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.type.BlendMode; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.joml.Vector4f; - -public class MathHelper6 { - public final FontRenderer a; - public final Vector4f b; - public final BlendMode c; - public final boolean d; - - public MathHelper6(FontRenderer var1, Vector4f var2, BlendMode var3, boolean var4) { - this.a = var1; - this.b = new Vector4f(var2); - this.c = var3; - this.d = var4; - } - - @Override - public boolean equals(Object var1) { - if (this == var1) { - return true; - } else { - return !(var1 instanceof MathHelper6 var5) ? false : this.d == var5.d && this.c == var5.c && this.a.equals(var5.a) && this.b.equals(var5.b); - } - } - - @Override - public int hashCode() { - int var3 = this.a.hashCode(); - var3 = 31 * var3 + this.b.hashCode(); - var3 = 31 * var3 + this.c.hashCode(); - return 31 * var3 + Boolean.hashCode(this.d); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MathUtil.java b/src/main/java/dev/zprestige/prestige/math/MathUtil.java deleted file mode 100644 index fe3362b..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathUtil.java +++ /dev/null @@ -1,118 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.world.PlacementCheck; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; - -public class MathUtil extends PlacementCheck { - @Override - public void a(Object[] var1) { - HitEffectHelper var3 = (HitEffectHelper)var1[0]; - boolean var2 = (Boolean)var1[1]; - long var4 = (Long)var1[2]; - long var6 = var4 ^ 114389671997888L; - long var8 = var4 ^ 8606540417602L; - if (!var2) { - this.b(new Object[]{var3, var8}); - } else { - BlockState var11 = RenderContract2.b.world.getBlockState(BlockPos.ofFloored(var3.c.x, var3.c.y, var3.c.z + var3.d.z)); - if (!this.a_boolean______(new Object[]{var11, var6})) { - var3.d = new Vec3d(var3.d.x, var3.d.y, var3.d.z * -0.8); - } - - BlockState var12 = RenderContract2.b.world.getBlockState(BlockPos.ofFloored(var3.c.x, var3.c.y + var3.d.y, var3.c.z)); - if (!this.a_boolean______(new Object[]{var12, var6})) { - var3.d = new Vec3d(var3.d.x * 0.999F, var3.d.y * -0.6, var3.d.z * 0.999F); - } - - BlockState var13 = RenderContract2.b.world.getBlockState(BlockPos.ofFloored(var3.c.x + var3.d.x, var3.c.y, var3.c.z)); - if (!this.a_boolean______(new Object[]{var13, var6})) { - var3.d = new Vec3d(var3.d.x * -0.8, var3.d.y, var3.d.z); - } - - this.b(new Object[]{var3, var8}); - } - } - - private void b(Object[] var1) { - HitEffectHelper var2 = (HitEffectHelper)var1[0]; - var2.c = var2.c.add(var2.d); - var2.d = new Vec3d(var2.d.x / 0.999998F, var2.d.y - 1.5E-6, var2.d.z / 0.999998F); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static MatchException b(MatchException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MathUtil2.java b/src/main/java/dev/zprestige/prestige/math/MathUtil2.java deleted file mode 100644 index eeeabee..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathUtil2.java +++ /dev/null @@ -1,118 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.world.PlacementCheck; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; - -public class MathUtil2 extends PlacementCheck { - @Override - public void a(Object[] var1) { - HitEffectHelper var3 = (HitEffectHelper)var1[0]; - boolean var2 = (Boolean)var1[1]; - long var4 = (Long)var1[2]; - long var6 = var4 ^ 125794288529166L; - long var8 = var4 ^ 114389671997888L; - if (!var2) { - this.b(new Object[]{var3, var6}); - } else { - BlockState var11 = RenderContract2.b.world.getBlockState(BlockPos.ofFloored(var3.c.x, var3.c.y, var3.c.z + var3.d.z)); - if (!this.a_boolean______(new Object[]{var11, var8})) { - var3.d = new Vec3d(var3.d.x, var3.d.y, var3.d.z * -0.8); - } - - BlockState var12 = RenderContract2.b.world.getBlockState(BlockPos.ofFloored(var3.c.x, var3.c.y + var3.d.y, var3.c.z)); - if (!this.a_boolean______(new Object[]{var12, var8})) { - var3.d = new Vec3d(var3.d.x * 0.999F, var3.d.y * -0.6, var3.d.z * 0.999F); - } - - BlockState var13 = RenderContract2.b.world.getBlockState(BlockPos.ofFloored(var3.c.x + var3.d.x, var3.c.y, var3.c.z)); - if (!this.a_boolean______(new Object[]{var13, var8})) { - var3.d = new Vec3d(var3.d.x * -0.8, var3.d.y, var3.d.z); - } - - this.b(new Object[]{var3, var6}); - } - } - - private void b(Object[] var1) { - HitEffectHelper var2 = (HitEffectHelper)var1[0]; - var2.c = var2.c.add(var2.d); - var2.d = new Vec3d(var2.d.x / 0.999998F, var2.d.y - 5.5E-6, var2.d.z / 0.999998F); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static MatchException b(MatchException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MathUtil3.java b/src/main/java/dev/zprestige/prestige/math/MathUtil3.java deleted file mode 100644 index 22be90b..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathUtil3.java +++ /dev/null @@ -1,149 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.network.NetworkUtil2; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import net.minecraft.util.math.BlockPos; - -public final class MathUtil3 implements RenderContract2 { - private static final double e = 6.5; - public static final Map f = new HashMap(); - public static final Map g = new HashMap(); - public static final Map h = new HashMap(); - private static boolean i; - - private MathUtil3() { - } - - private static void a(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 7601911366469L ^ var1; - long var3 = var1 ^ 106503665461141L; - if (!i && Prestige.eventBus != null) { - i = true; - Prestige.eventBus.register(new Object[]{new NetworkUtil2(), var3}); - } - } - - public static void b(Object[] var0) { - BlockPos var1 = (BlockPos)var0[0]; - long var2 = (Long)var0[1]; - var2 = 7601911366469L ^ var2; - long var4 = var2 ^ 116735878948814L; - a(new Object[]{var4}); - g.put(var1.toImmutable(), System.currentTimeMillis()); - } - - public static boolean a_boolean_______(Object[] var0) { - BlockPos var3 = (BlockPos)var0[0]; - long var1 = (Long)var0[1]; - var1 = 7601911366469L ^ var1; - long var4 = var1 ^ 50975971845519L; - Event.b(); - a(new Object[]{var4}); - long var7 = System.currentTimeMillis(); - Long var9 = (Long)f.get(var3); - if (var9 != null && var7 - var9 < 300L) { - return true; - } else { - for (Entry var11 : (Iterable)(g.entrySet())) { - if (var7 - (Long)var11.getValue() <= 100L && ((BlockPos)var11.getKey()).getSquaredDistance(var3) <= 42.25) { - return true; - } - } - - return false; - } - } - - public static boolean b_boolean_____(Object[] var0) { - BlockPos var1 = (BlockPos)var0[0]; - long var2 = (Long)var0[1]; - var2 = 7601911366469L ^ var2; - long var4 = var2 ^ 59319111295995L; - Event.b(); - a(new Object[]{var4}); - Long var7 = (Long)h.get(var1); - return var7 != null && System.currentTimeMillis() - var7 < 120L; - } - - public static void c(Object[] var0) { - BlockPos var1 = (BlockPos)var0[0]; - long var2 = (Long)var0[1]; - f.put(var1.toImmutable(), var2); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MathUtil4.java b/src/main/java/dev/zprestige/prestige/math/MathUtil4.java deleted file mode 100644 index 302cf8d..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathUtil4.java +++ /dev/null @@ -1,181 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.util.LruCache; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Map; -import org.joml.Vector4f; - -public final class MathUtil4 { - private static final String b = "This is a utility class and cannot be instantiated"; - - private MathUtil4(long var1) { - throw new UnsupportedOperationException(b); - } - - public static Map a(Object[] var0) { - int var3 = (Integer)var0[0]; - return new LruCache(16, 0.75F, true, var3); - } - - public static float a_float____________(Object[] var0) { - float var3 = (Float)var0[0]; - return Math.round(var3 * 4.0F) * 0.25F; - } - - public static Vector4f a_Vector4f(Object[] var0) { - Vector4f var1 = (Vector4f)var0[0]; - long var2 = (Long)var0[1]; - var2 = 3124556471920L ^ var2; - long var4 = var2 ^ 20773240911943L; - float var10002 = var1.x; - Object[] var10005 = new Object[]{null, var4}; - var10005[0] = var10002; - var10002 = a_float____________(var10005); - float var10003 = var1.y; - Object[] var10006 = new Object[]{null, var4}; - var10006[0] = var10003; - var10003 = a_float____________(var10006); - float var10004 = var1.z; - Object[] var10007 = new Object[]{null, var4}; - var10007[0] = var10004; - var10004 = a_float____________(var10007); - float var10 = var1.w; - Object[] var10008 = new Object[]{null, var4}; - var10008[0] = var10; - return new Vector4f(var10002, var10003, var10004, a_float____________(var10008)); - } - - public static int a_int______(Object[] var0) { - int var3 = (Integer)var0[0]; - return var3 >>> 24; - } - - public static int b(Object[] var0) { - int var3 = (Integer)var0[0]; - return var3 >> 16 & 0xFF; - } - - public static int c(Object[] var0) { - int var3 = (Integer)var0[0]; - return var3 >> 8 & 0xFF; - } - - public static int d(Object[] var0) { - int var3 = (Integer)var0[0]; - return var3 & 0xFF; - } - - public static float b_float_______(Object[] var0) { - int var3 = (Integer)var0[0]; - long var1 = (Long)var0[1]; - var1 = 3124556471920L ^ var1; - long var4 = var1 ^ 6652825324971L; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var3; - return f(new Object[]{a_int______(var10003)}); - } - - public static float c_float_(Object[] var0) { - int var3 = (Integer)var0[0]; - long var1 = (Long)var0[1]; - var1 = 3124556471920L ^ var1; - long var4 = var1 ^ 59046493756333L; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var3; - return f(new Object[]{b(var10003)}); - } - - public static float d_float(Object[] var0) { - int var3 = (Integer)var0[0]; - long var1 = (Long)var0[1]; - var1 = 3124556471920L ^ var1; - long var4 = var1 ^ 29288782198406L; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var3; - return f(new Object[]{c(var10003)}); - } - - public static float e(Object[] var0) { - int var1 = (Integer)var0[0]; - long var2 = (Long)var0[1]; - var2 = 3124556471920L ^ var2; - long var4 = var2 ^ 42599639253721L; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var1; - return f(new Object[]{d(var10003)}); - } - - private static float f(Object[] var0) { - int var1 = (Integer)var0[0]; - return var1 / 255.0F; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MathUtil5.java b/src/main/java/dev/zprestige/prestige/math/MathUtil5.java deleted file mode 100644 index 824811b..0000000 --- a/src/main/java/dev/zprestige/prestige/math/MathUtil5.java +++ /dev/null @@ -1,311 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.BoolSetting; -import dev.zprestige.prestige.ColorSetting; -import dev.zprestige.prestige.EnumSetting; -import dev.zprestige.prestige.FloatSetting; -import dev.zprestige.prestige.IntSetting; -import dev.zprestige.prestige.KeybindSetting; -import dev.zprestige.prestige.MultiSetting; -import dev.zprestige.prestige.RangeSetting; -import dev.zprestige.prestige.Setting; -import dev.zprestige.prestige.TextSetting; -import dev.zprestige.prestige.event.Event; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Map.Entry; - -public final class MathUtil5 { - private MathUtil5() { - } - - public static void a(Object[] var0) { - Setting var1 = (Setting)var0[0]; - Object var2 = var0[1]; - long var3 = (Long)var0[2]; - var3 = 13152399989566L ^ var3; - long var5 = var3 ^ 53532658688614L; - long var7 = var3 ^ 125782011785815L; - long var9 = var3 ^ 122878328812744L; - long var11 = var3 ^ 102927444203567L; - long var13 = var3 ^ 78814096253474L; - long var15 = var3 ^ 91988742845466L; - if (var1 == null) { - throw new IllegalArgumentException("setting is missing"); - } else if (var2 == null) { - throw new IllegalArgumentException("value is null"); - } else { - String var18 = var2.toString(); - if (var1 instanceof BoolSetting var35) { - var35.setValue(a_boolean________(new Object[]{var18, var11})); - } else if (var1 instanceof KeybindSetting var34) { - String[] var40 = var18.split("\\.", -1); - if (var40.length != 2) { - throw new IllegalArgumentException("expected key.hold"); - } else { - int var43 = a_int_______(new Object[]{var40[0], "key", var15}); - boolean var46 = a_boolean________(new Object[]{var40[1], var11}); - if (var43 >= -1 && (var43 <= 348 || var43 >= 9995 && var43 <= 9999)) { - var34.setValue(var43); - var34.setToggleMode(var46); - } else { - throw new IllegalArgumentException("key is outside the supported bind range"); - } - } - } else if (var1 instanceof ColorSetting var33) { - String[] var39 = var18.split("\\.", -1); - if (var39.length != 4) { - throw new IllegalArgumentException("expected red.green.blue.alpha"); - } else { - int var42 = b(new Object[]{var39[0], "red", var13}); - int var45 = b(new Object[]{var39[1], "green", var13}); - int var47 = b(new Object[]{var39[2], "blue", var13}); - int var48 = b(new Object[]{var39[3], "alpha", var13}); - var33.setValue(new Color(var42, var45, var47, var48)); - } - } else if (var1 instanceof FloatSetting var32) { - float var38 = a_float_____________(new Object[]{var18, var7}); - var32.setValue(Math.clamp(var38, var32.getMin(), var32.getMax())); - } else if (var1 instanceof IntSetting var31) { - int var37 = a_int_______(new Object[]{var18, "integer", var15}); - var31.setValue(Math.clamp((long)var37, var31.getMin(), var31.getMax())); - } else if (var1 instanceof EnumSetting var30) { - if (Arrays.stream(var30.getOptions()).noneMatch(var18::equals)) { - Object[] var10006 = new Object[]{null, null, var9}; - var10006[1] = 32; - var10006[0] = var18; - throw new IllegalArgumentException("unknown mode '" + a_String______(var10006) + "'"); - } else { - var30.setValue(var18); - } - } else if (!(var1 instanceof MultiSetting var19)) { - if (var1 instanceof RangeSetting var29) { - String[] var36 = var18.split("\\|", -1); - if (var36.length != 2) { - throw new IllegalArgumentException("expected minimum|maximum"); - } else { - float var41 = a_float_____________(new Object[]{var36[0], var7}); - float var44 = a_float_____________(new Object[]{var36[1], var7}); - float var23 = Math.clamp(var41, var29.getMin(), var29.getMax()); - float var24 = Math.clamp(var44, var29.getMin(), var29.getMax()); - if (var23 > var24) { - throw new IllegalArgumentException("minimum is greater than maximum"); - } else { - float var25 = var29.getRolled(new Object[0]); - float var26 = Float.isFinite(var25) ? Math.clamp(var25, var23, var24) : var23; - var29.setLow(var23); - var29.setHigh(var24); - var29.setRolled(new Object[]{var26}); - } - } - } else if (var1 instanceof TextSetting var28) { - var28.setValue(var18); - } else { - throw new IllegalArgumentException("unsupported setting type " + var1.getClass().getSimpleName()); - } - } else { - Map var20 = a_Map(new Object[]{var19, var18, var5}); - - for (Entry var22 : (Iterable)(var20.entrySet())) { - var19.setSelected((String)var22.getKey(), (Boolean)var22.getValue()); - } - } - } - } - - public static boolean a_boolean________(Object[] var0) { - Object var3 = var0[0]; - if (var3 == null) { - throw new IllegalArgumentException("value is null"); - } else { - String var5 = var3.toString().trim(); - if ("true".equalsIgnoreCase(var5)) { - return true; - } else if ("false".equalsIgnoreCase(var5)) { - return false; - } else { - throw new IllegalArgumentException("expected true or false"); - } - } - } - - public static float a_float_____________(Object[] var0) { - Object var1 = var0[0]; - if (var1 == null) { - throw new IllegalArgumentException("value is null"); - } else { - float var5; - try { - var5 = Float.parseFloat(var1.toString().trim()); - } catch (NumberFormatException var7) { - throw new IllegalArgumentException("expected a number", var7); - } - - if (!Float.isFinite(var5)) { - throw new IllegalArgumentException("number must be finite"); - } else { - return var5; - } - } - } - - private static Map a_Map(Object[] var0) { - MultiSetting var4 = (MultiSetting)var0[0]; - String var1 = (String)var0[1]; - long var2 = (Long)var0[2]; - var2 = 13152399989566L ^ var2; - long var5 = var2 ^ 92941281938832L; - long var7 = var2 ^ 113090423431543L; - Event.b(); - LinkedHashMap var10 = new LinkedHashMap(); - if (var1.isEmpty()) { - throw new IllegalArgumentException("mode list is empty"); - } else { - for (String var14 : var1.split("&", -1)) { - if (!var14.isEmpty()) { - int var15 = var14.lastIndexOf(46); - if (var15 <= 0 || var15 == var14.length() - 1) { - throw new IllegalArgumentException("expected option.true or option.false"); - } - - String var16 = var14.substring(0, var15); - boolean var17 = Arrays.stream(var4.getOptions()).anyMatch(var16::equals); - if (!var17) { - Object[] var23 = new Object[]{null, null, var5}; - var23[1] = 32; - var23[0] = var16; - throw new IllegalArgumentException("unknown option '" + a_String______(var23) + "'"); - } - - if (var10.containsKey(var16)) { - Object[] var10006 = new Object[]{null, null, var5}; - var10006[1] = 32; - var10006[0] = var16; - throw new IllegalArgumentException("duplicate option '" + a_String______(var10006) + "'"); - } - - var10.put(var16, a_boolean________(new Object[]{var14.substring(var15 + 1), var7})); - } - } - - for (String var22 : var4.getOptions()) { - if (!var22.isEmpty() && !var10.containsKey(var22)) { - Object[] var24 = new Object[]{null, null, var5}; - var24[1] = 32; - var24[0] = var22; - throw new IllegalArgumentException("missing option '" + a_String______(var24) + "'"); - } - } - - return var10; - } - } - - private static int a_int_______(Object[] var0) { - String var2 = (String)var0[0]; - String var1 = (String)var0[1]; - - try { - return Integer.parseInt(var2.trim()); - } catch (NumberFormatException var6) { - throw new IllegalArgumentException("expected " + var1, var6); - } - } - - private static int b(Object[] var0) { - String var4 = (String)var0[0]; - String var3 = (String)var0[1]; - long var1 = (Long)var0[2]; - var1 = 13152399989566L ^ var1; - long var5 = var1 ^ 35123475238150L; - Event.b(); - int var8 = a_int_______(new Object[]{var4, var3 + " channel", var5}); - if (var8 >= 0 && var8 <= 255) { - return var8; - } else { - throw new IllegalArgumentException(var3 + " channel must be between 0 and 255"); - } - } - - private static String a_String______(Object[] var0) { - String var1 = (String)var0[0]; - int var2 = (Integer)var0[1]; - return var1.length() <= var2 ? var1 : var1.substring(0, var2 - 3) + "..."; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static IllegalArgumentException a(IllegalArgumentException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/MotionState.java b/src/main/java/dev/zprestige/prestige/math/MotionState.java new file mode 100644 index 0000000..9acf95e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/MotionState.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.math; + +import net.minecraft.util.math.Vec3d; + +public final class MotionState { + public Vec3d pos; + public Vec3d velocity; + public boolean onGround; + + public MotionState(Vec3d position, Vec3d motion, boolean grounded) { + this.pos = position; + this.velocity = motion; + this.onGround = grounded; + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/ObbyCrystalCandidate.java b/src/main/java/dev/zprestige/prestige/math/ObbyCrystalCandidate.java new file mode 100644 index 0000000..f1085f9 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/ObbyCrystalCandidate.java @@ -0,0 +1,25 @@ +package dev.zprestige.prestige.math; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; + +public final class ObbyCrystalCandidate { + public BlockPos basePos; + public BlockPos supportPos; + public Direction placeSide; + public Vec3d hitVec; + public boolean needsObsidian; + public boolean hasCrystal; + public double score; + + public ObbyCrystalCandidate(BlockPos base, BlockPos support, Direction side, Vec3d aimPos, boolean placeObsidian, boolean crystalPresent, double candidateScore) { + this.basePos = base; + this.supportPos = support; + this.placeSide = side; + this.hitVec = aimPos; + this.needsObsidian = placeObsidian; + this.hasCrystal = crystalPresent; + this.score = candidateScore; + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/PearlLandingMarker.java b/src/main/java/dev/zprestige/prestige/math/PearlLandingMarker.java new file mode 100644 index 0000000..f4decb8 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/PearlLandingMarker.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.math; + +import net.minecraft.util.math.Vec3d; + +public class PearlLandingMarker { + public Vec3d landingPos; + public float flightSeconds; + public float alpha; + + public PearlLandingMarker(Vec3d landing, float seconds, float opacity) { + this.landingPos = landing; + this.flightSeconds = seconds; + this.alpha = opacity; + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/PearlTrajectoryHelper.java b/src/main/java/dev/zprestige/prestige/math/PearlTrajectoryHelper.java deleted file mode 100644 index 281777f..0000000 --- a/src/main/java/dev/zprestige/prestige/math/PearlTrajectoryHelper.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.math; - -import net.minecraft.util.math.Vec3d; - -public class PearlTrajectoryHelper { - public Vec3d a; - public float b; - public float c; - - public PearlTrajectoryHelper(Vec3d var1, float var2, float var3) { - this.a = var1; - this.b = var2; - this.c = var3; - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/Point3D.java b/src/main/java/dev/zprestige/prestige/math/Point3D.java deleted file mode 100644 index 2458907..0000000 --- a/src/main/java/dev/zprestige/prestige/math/Point3D.java +++ /dev/null @@ -1,13 +0,0 @@ -package dev.zprestige.prestige.math; - -import dev.zprestige.prestige.combat.TwoDESPHelper; - -public final class Point3D { - public float a; - public float b; - public float c; - public float d; - public float e; - public long f; - public TwoDESPHelper g; -} diff --git a/src/main/java/dev/zprestige/prestige/math/PopParticlePhysics.java b/src/main/java/dev/zprestige/prestige/math/PopParticlePhysics.java new file mode 100644 index 0000000..72d69ca --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/PopParticlePhysics.java @@ -0,0 +1,34 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.world.HitParticlePhysics; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; + +public class PopParticlePhysics extends HitParticlePhysics { + @Override + public void updateMotion(HitParticle particle, boolean physicsEnabled) { + if (!physicsEnabled) { + this.applyPopMotion(particle); + } else { + if (!this.isPassable(MinecraftAccess.mc.world.getBlockState(BlockPos.ofFloored(particle.pos.x, particle.pos.y, particle.pos.z + particle.velocity.z)))) { + particle.velocity = new Vec3d(particle.velocity.x, particle.velocity.y, particle.velocity.z * -0.8); + } + + if (!this.isPassable(MinecraftAccess.mc.world.getBlockState(BlockPos.ofFloored(particle.pos.x, particle.pos.y + particle.velocity.y, particle.pos.z)))) { + particle.velocity = new Vec3d(particle.velocity.x * 0.999F, particle.velocity.y * -0.6, particle.velocity.z * 0.999F); + } + + if (!this.isPassable(MinecraftAccess.mc.world.getBlockState(BlockPos.ofFloored(particle.pos.x + particle.velocity.x, particle.pos.y, particle.pos.z)))) { + particle.velocity = new Vec3d(particle.velocity.x * -0.8, particle.velocity.y, particle.velocity.z); + } + + this.applyPopMotion(particle); + } + } + + private void applyPopMotion(HitParticle particle) { + particle.pos = particle.pos.add(particle.velocity); + particle.velocity = new Vec3d(particle.velocity.x / 0.999998F, particle.velocity.y - 5.5E-6, particle.velocity.z / 0.999998F); + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/RenderCacheUtil.java b/src/main/java/dev/zprestige/prestige/math/RenderCacheUtil.java new file mode 100644 index 0000000..bcc3a6f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/RenderCacheUtil.java @@ -0,0 +1,61 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.util.LruCache; +import java.util.Map; +import org.joml.Vector4f; + +public final class RenderCacheUtil { + private static final String NO_INSTANCE_MESSAGE = "This is a utility class and cannot be instantiated"; + + private RenderCacheUtil() { + throw new UnsupportedOperationException(NO_INSTANCE_MESSAGE); + } + + public static Map newLruCache(int capacity) { + return new LruCache(16, 0.75F, true, capacity); + } + + public static float quantize(float value) { + return Math.round(value * 4.0F) * 0.25F; + } + + public static Vector4f quantizeVector(Vector4f vector) { + return new Vector4f(quantize(vector.x), quantize(vector.y), quantize(vector.z), quantize(vector.w)); + } + + public static int getAlpha(int argb) { + return argb >>> 24; + } + + public static int getRed(int argb) { + return argb >> 16 & 0xFF; + } + + public static int getGreen(int argb) { + return argb >> 8 & 0xFF; + } + + public static int getBlue(int argb) { + return argb & 0xFF; + } + + public static float getAlphaFloat(int argb) { + return channelToFloat(getAlpha(argb)); + } + + public static float getRedFloat(int argb) { + return channelToFloat(getRed(argb)); + } + + public static float getGreenFloat(int argb) { + return channelToFloat(getGreen(argb)); + } + + public static float getBlueFloat(int argb) { + return channelToFloat(getBlue(argb)); + } + + private static float channelToFloat(int channel) { + return channel / 255.0F; + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/SettingValueParser.java b/src/main/java/dev/zprestige/prestige/math/SettingValueParser.java new file mode 100644 index 0000000..74c460f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/SettingValueParser.java @@ -0,0 +1,187 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.BoolSetting; +import dev.zprestige.prestige.ColorSetting; +import dev.zprestige.prestige.EnumSetting; +import dev.zprestige.prestige.FloatSetting; +import dev.zprestige.prestige.IntSetting; +import dev.zprestige.prestige.KeybindSetting; +import dev.zprestige.prestige.MultiSetting; +import dev.zprestige.prestige.RangeSetting; +import dev.zprestige.prestige.Setting; +import dev.zprestige.prestige.TextSetting; +import java.awt.Color; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; + +public final class SettingValueParser { + private SettingValueParser() { + } + + public static void applyValue(Setting setting, Object value) { + if (setting == null) { + throw new IllegalArgumentException("setting is missing"); + } else if (value == null) { + throw new IllegalArgumentException("value is null"); + } else { + String text = value.toString(); + if (setting instanceof BoolSetting boolSetting) { + boolSetting.setValue(parseBoolean(text)); + } else if (setting instanceof KeybindSetting keybindSetting) { + String[] keyParts = text.split("\\.", -1); + if (keyParts.length != 2) { + throw new IllegalArgumentException("expected key.hold"); + } else { + int key = parseInt(keyParts[0], "key"); + boolean holdMode = parseBoolean(keyParts[1]); + if (key >= -1 && (key <= 348 || key >= 9995 && key <= 9999)) { + keybindSetting.setValue(key); + keybindSetting.setHoldMode(holdMode); + } else { + throw new IllegalArgumentException("key is outside the supported bind range"); + } + } + } else if (setting instanceof ColorSetting colorSetting) { + String[] rgba = text.split("\\.", -1); + if (rgba.length != 4) { + throw new IllegalArgumentException("expected red.green.blue.alpha"); + } else { + colorSetting.setValue(new Color(parseColorChannel(rgba[0], "red"), parseColorChannel(rgba[1], "green"), parseColorChannel(rgba[2], "blue"), parseColorChannel(rgba[3], "alpha"))); + } + } else if (setting instanceof FloatSetting floatSetting) { + floatSetting.setValue(Math.clamp(parseFloat(text), floatSetting.getMin(), floatSetting.getMax())); + } else if (setting instanceof IntSetting intSetting) { + intSetting.setValue(Math.clamp((long)parseInt(text, "integer"), intSetting.getMin(), intSetting.getMax())); + } else if (setting instanceof EnumSetting enumSetting) { + if (Arrays.stream(enumSetting.getOptions()).noneMatch(text::equals)) { + throw new IllegalArgumentException("unknown mode '" + truncate(text, 32) + "'"); + } else { + enumSetting.setValue(text); + } + } else if (!(setting instanceof MultiSetting multiSetting)) { + if (setting instanceof RangeSetting rangeSetting) { + String[] bounds = text.split("\\|", -1); + if (bounds.length != 2) { + throw new IllegalArgumentException("expected minimum|maximum"); + } else { + float rawMin = parseFloat(bounds[0]); + float rawMax = parseFloat(bounds[1]); + float min = Math.clamp(rawMin, rangeSetting.getMin(), rangeSetting.getMax()); + float max = Math.clamp(rawMax, rangeSetting.getMin(), rangeSetting.getMax()); + if (min > max) { + throw new IllegalArgumentException("minimum is greater than maximum"); + } else { + float rolled = rangeSetting.getRolled(); + float clampedRolled = Float.isFinite(rolled) ? Math.clamp(rolled, min, max) : min; + rangeSetting.setLow(min); + rangeSetting.setHigh(max); + rangeSetting.setRolled(clampedRolled); + } + } + } else if (setting instanceof TextSetting textSetting) { + textSetting.setValue(text); + } else { + throw new IllegalArgumentException("unsupported setting type " + setting.getClass().getSimpleName()); + } + } else { + Map selections = parseMultiSelection(multiSetting, text); + + for (Entry entry : (Iterable)(selections.entrySet())) { + multiSetting.setSelected((String)entry.getKey(), (Boolean)entry.getValue()); + } + } + } + } + + public static boolean parseBoolean(Object value) { + if (value == null) { + throw new IllegalArgumentException("value is null"); + } else { + String text = value.toString().trim(); + if ("true".equalsIgnoreCase(text)) { + return true; + } else if ("false".equalsIgnoreCase(text)) { + return false; + } else { + throw new IllegalArgumentException("expected true or false"); + } + } + } + + public static float parseFloat(Object value) { + if (value == null) { + throw new IllegalArgumentException("value is null"); + } else { + float parsed; + try { + parsed = Float.parseFloat(value.toString().trim()); + } catch (NumberFormatException exception) { + throw new IllegalArgumentException("expected a number", exception); + } + + if (!Float.isFinite(parsed)) { + throw new IllegalArgumentException("number must be finite"); + } else { + return parsed; + } + } + } + + private static Map parseMultiSelection(MultiSetting setting, String text) { + LinkedHashMap selections = new LinkedHashMap(); + if (text.isEmpty()) { + throw new IllegalArgumentException("mode list is empty"); + } else { + for (String token : text.split("&", -1)) { + if (!token.isEmpty()) { + int dotIndex = token.lastIndexOf(46); + if (dotIndex <= 0 || dotIndex == token.length() - 1) { + throw new IllegalArgumentException("expected option.true or option.false"); + } + + String option = token.substring(0, dotIndex); + if (!Arrays.stream(setting.getOptions()).anyMatch(option::equals)) { + throw new IllegalArgumentException("unknown option '" + truncate(option, 32) + "'"); + } + + if (selections.containsKey(option)) { + throw new IllegalArgumentException("duplicate option '" + truncate(option, 32) + "'"); + } + + selections.put(option, parseBoolean(token.substring(dotIndex + 1))); + } + } + + for (String requiredOption : setting.getOptions()) { + if (!requiredOption.isEmpty() && !selections.containsKey(requiredOption)) { + throw new IllegalArgumentException("missing option '" + truncate(requiredOption, 32) + "'"); + } + } + + return selections; + } + } + + private static int parseInt(String text, String description) { + try { + return Integer.parseInt(text.trim()); + } catch (NumberFormatException exception) { + throw new IllegalArgumentException("expected " + description, exception); + } + } + + private static int parseColorChannel(String text, String channelName) { + int channel = parseInt(text, channelName + " channel"); + if (channel >= 0 && channel <= 255) { + return channel; + } else { + throw new IllegalArgumentException(channelName + " channel must be between 0 and 255"); + } + } + + private static String truncate(String text, int maxLength) { + return text.length() <= maxLength ? text : text.substring(0, maxLength - 3) + "..."; + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/TexturedDrawModeKey.java b/src/main/java/dev/zprestige/prestige/math/TexturedDrawModeKey.java new file mode 100644 index 0000000..8e58c6b --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/TexturedDrawModeKey.java @@ -0,0 +1,33 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.type.BlendMode; +import org.joml.Vector4f; + +public class TexturedDrawModeKey { + public final GlTextureHandle texture; + public final Vector4f radius; + public final BlendMode blendMode; + public final boolean depthTest; + + public TexturedDrawModeKey(GlTextureHandle glTexture, Vector4f cornerRadius, BlendMode blend, boolean useDepthTest) { + this.texture = glTexture; + this.radius = new Vector4f(cornerRadius); + this.blendMode = blend; + this.depthTest = useDepthTest; + } + + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } else { + return !(other instanceof TexturedDrawModeKey that) ? false : this.depthTest == that.depthTest && this.blendMode == that.blendMode && this.texture.equals(that.texture) && this.radius.equals(that.radius); + } + } + + @Override + public int hashCode() { + return 31 * (31 * (31 * this.texture.hashCode() + this.radius.hashCode()) + this.blendMode.hashCode()) + Boolean.hashCode(this.depthTest); + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/TrailMark.java b/src/main/java/dev/zprestige/prestige/math/TrailMark.java new file mode 100644 index 0000000..5179569 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/TrailMark.java @@ -0,0 +1,27 @@ +package dev.zprestige.prestige.math; + +import net.minecraft.util.math.Vec3d; + +public class TrailMark { + public Vec3d pos; + public long spawnTime; + public int lifetimeMs; + public String mode; + public float yawRadians; + public boolean leftFoot; + public Vec3d velocity; + public double randomOffset; + public float colorBlend; + + public TrailMark(Vec3d position, String trailMode, int lifetime, float yawDegrees, boolean left, Vec3d motion) { + this.pos = position; + this.mode = trailMode; + this.spawnTime = System.currentTimeMillis(); + this.lifetimeMs = lifetime; + this.yawRadians = (float)Math.toRadians(yawDegrees); + this.leftFoot = left; + this.velocity = motion; + this.randomOffset = Math.random(); + this.colorBlend = (float)Math.random(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/TrailTracker.java b/src/main/java/dev/zprestige/prestige/math/TrailTracker.java new file mode 100644 index 0000000..6c812ec --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/TrailTracker.java @@ -0,0 +1,8 @@ +package dev.zprestige.prestige.math; + +import net.minecraft.util.math.Vec3d; + +public class TrailTracker { + public Vec3d lastPos; + public boolean leftFoot = true; +} diff --git a/src/main/java/dev/zprestige/prestige/math/TrailsHelper.java b/src/main/java/dev/zprestige/prestige/math/TrailsHelper.java deleted file mode 100644 index 6a932f2..0000000 --- a/src/main/java/dev/zprestige/prestige/math/TrailsHelper.java +++ /dev/null @@ -1,8 +0,0 @@ -package dev.zprestige.prestige.math; - -import net.minecraft.util.math.Vec3d; - -public class TrailsHelper { - public Vec3d a; - public boolean b = true; -} diff --git a/src/main/java/dev/zprestige/prestige/math/TrailsHelper2.java b/src/main/java/dev/zprestige/prestige/math/TrailsHelper2.java deleted file mode 100644 index 54866e6..0000000 --- a/src/main/java/dev/zprestige/prestige/math/TrailsHelper2.java +++ /dev/null @@ -1,97 +0,0 @@ -package dev.zprestige.prestige.math; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.util.math.Vec3d; - -public class TrailsHelper2 { - public Vec3d a; - public long b; - public int c; - public String d; - public float e; - public boolean f; - public Vec3d g; - public double h; - public float i; - - public TrailsHelper2(Vec3d var1, String var2, int var3, float var4, boolean var5, Vec3d var6, long var7) { - this.a = var1; - this.d = var2; - this.b = System.currentTimeMillis(); - this.c = var3; - this.e = (float)Math.toRadians(var4); - this.f = var5; - this.g = var6; - this.h = Math.random(); - this.i = (float)Math.random(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/TwoDEspBox.java b/src/main/java/dev/zprestige/prestige/math/TwoDEspBox.java new file mode 100644 index 0000000..7919d58 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/TwoDEspBox.java @@ -0,0 +1,13 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.combat.TwoDEspTarget; + +public final class TwoDEspBox { + public float minX; + public float minY; + public float maxX; + public float maxY; + public float alpha; + public long lastFrame; + public TwoDEspTarget target; +} diff --git a/src/main/java/dev/zprestige/prestige/math/UiMath.java b/src/main/java/dev/zprestige/prestige/math/UiMath.java new file mode 100644 index 0000000..a1e6031 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/UiMath.java @@ -0,0 +1,122 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.client.Prestige; +import java.awt.Color; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.HashMap; + +public class UiMath { + public float x; + public float y; + public float width; + public float height; + public String label; + + public UiMath(float initialX, float initialY, float initialWidth, float initialHeight, String initialLabel) { + this.x = initialX; + this.y = initialY; + this.width = initialWidth; + this.height = initialHeight; + this.label = initialLabel; + } + + public static Color withAlpha(Color color, float alpha) { + return new Color(color.getRed() / 255.0F, color.getGreen() / 255.0F, color.getBlue() / 255.0F, net.minecraft.util.math.MathHelper.clamp(alpha, 0.0F, 1.0F)); + } + + public static Color getAccentColor() { + return Prestige.moduleManager.getMenu().getMenuColor().getValue(); + } + + public static float clamp(float value, float min, float max) { + return value < min ? min : Math.min(value, max); + } + + public static float approach(float current, float target, float speed) { + return current - (current - target) * clamp(speed, 0.0F, 1.0F); + } + + public static float floorToDecimals(float value, int decimals) { + if (decimals < 0) { + throw new IllegalArgumentException(); + } else { + return BigDecimal.valueOf((double)value).setScale(decimals, RoundingMode.FLOOR).floatValue(); + } + } + + public static String getSpecialKeyName(int keyCode) { + HashMap names = new HashMap(); + names.put(9999, "LMB"); + names.put(9998, "RMB"); + names.put(9997, "MMB"); + names.put(9996, "MB4"); + names.put(9995, "MM5"); + names.put(345, "R-Ctrl"); + names.put(344, "Right Shift"); + names.put(342, "L-Alt"); + names.put(341, "L-Ctrl"); + names.put(340, "Shift"); + names.put(258, "Tab"); + return (String)names.get(keyCode); + } + + public void init() { + } + + public void update() { + } + + public void draw() { + } + + public void onShow() { + } + + public void onHide() { + } + + public void clearLabel() { + this.label = null; + } + + public float getX() { + return this.x; + } + + public void setX(float newX) { + this.x = newX; + } + + public float getY() { + return this.y; + } + + public void setY(float newY) { + this.y = newY; + } + + public float getWidth() { + return this.width; + } + + public void setWidth(float newWidth) { + this.width = newWidth; + } + + public float getHeight() { + return this.height; + } + + public void setHeight(float newHeight) { + this.height = newHeight; + } + + public String getLabel() { + return this.label; + } + + public void setLabel(String newLabel) { + this.label = newLabel; + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/Vec3dMutator.java b/src/main/java/dev/zprestige/prestige/math/Vec3dMutator.java new file mode 100644 index 0000000..61b7fea --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/Vec3dMutator.java @@ -0,0 +1,22 @@ +package dev.zprestige.prestige.math; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import dev.zprestige.prestige.reflect.MappedField; +import net.minecraft.util.math.Vec3d; + +public class Vec3dMutator { + private static final MappedField X_FIELD = FieldAccessor.mappedField(Vec3d.class, "x", double.class); + private static final MappedField Y_FIELD = FieldAccessor.mappedField(Vec3d.class, "y", double.class); + private static final MappedField Z_FIELD = FieldAccessor.mappedField(Vec3d.class, "z", double.class); + private final Vec3d target; + + public Vec3dMutator(Vec3d vec) { + this.target = vec; + } + + public void set(double x, double y, double z) { + X_FIELD.setDouble(this.target, x); + Y_FIELD.setDouble(this.target, y); + Z_FIELD.setDouble(this.target, z); + } +} diff --git a/src/main/java/dev/zprestige/prestige/math/WeatherHelper.java b/src/main/java/dev/zprestige/prestige/math/WeatherHelper.java deleted file mode 100644 index 6128d41..0000000 --- a/src/main/java/dev/zprestige/prestige/math/WeatherHelper.java +++ /dev/null @@ -1,97 +0,0 @@ -package dev.zprestige.prestige.math; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.util.math.Vec3d; - -public class WeatherHelper { - public Vec3d a; - public Vec3d b; - public float c; - public int d; - public double e; - public float f; - - public WeatherHelper(Vec3d var1, Vec3d var2, int var3, long var4) { - this.a = var1; - this.b = var2; - this.c = 0.0F; - this.d = var3; - this.e = Math.random() * Math.PI * 2.0; - this.f = (float)Math.random(); - } - - public void a(Object[] var1) { - float var4 = (Float)var1[0]; - this.a = this.a.add(this.b.multiply(var4)); - this.c += var4; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/math/WeatherParticle.java b/src/main/java/dev/zprestige/prestige/math/WeatherParticle.java new file mode 100644 index 0000000..1ad4022 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/math/WeatherParticle.java @@ -0,0 +1,26 @@ +package dev.zprestige.prestige.math; + +import net.minecraft.util.math.Vec3d; + +public class WeatherParticle { + public Vec3d pos; + public Vec3d velocity; + public float age; + public int maxAge; + public double phase; + public float colorBlend; + + public WeatherParticle(Vec3d position, Vec3d motion, int lifetime) { + this.pos = position; + this.velocity = motion; + this.age = 0.0F; + this.maxAge = lifetime; + this.phase = Math.random() * Math.PI * 2.0; + this.colorBlend = (float)Math.random(); + } + + public void advance(float delta) { + this.pos = this.pos.add(this.velocity.multiply(delta)); + this.age += delta; + } +} diff --git a/src/main/java/dev/zprestige/prestige/mixin/AbstractBlockStateMixin.java b/src/main/java/dev/zprestige/prestige/mixin/AbstractBlockStateMixin.java index f2de547..1848637 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/AbstractBlockStateMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/AbstractBlockStateMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.BlockBoolEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.BlockVisibilityEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -18,10 +18,10 @@ public class AbstractBlockStateMixin { target = {@CTarget("RETURN")}, cancellable = true ) - private void a(BlockView blockView, BlockPos blockPos, InjectionCallback cir) { - if (ClientUtil.a(Prestige.eventBus, BlockBoolEvent.class)) { - BlockBoolEvent event = ClientUtil.b(null); - if (ClientUtil.c(event)) { + private void overrideAmbientOcclusionLightLevelAtReturn(BlockView blockView, BlockPos blockPos, InjectionCallback cir) { + if (HookBridge.hasAmbientOcclusionListeners(Prestige.eventBus, BlockVisibilityEvent.class)) { + BlockVisibilityEvent event = HookBridge.createAmbientOcclusionEvent(null); + if (HookBridge.postAmbientOcclusionEvent(event)) { cir.setReturnValue(1.0F); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/AbstractClientPlayerEntityMixin.java b/src/main/java/dev/zprestige/prestige/mixin/AbstractClientPlayerEntityMixin.java index 656e8b3..8b791a8 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/AbstractClientPlayerEntityMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/AbstractClientPlayerEntityMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.StringEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.SkinTexturesEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -17,11 +17,11 @@ public class AbstractClientPlayerEntityMixin { target = {@CTarget("RETURN")}, cancellable = true ) - private void a(InjectionCallback ci) { - if (ClientUtil.d(Prestige.eventBus, StringEvent.class)) { - StringEvent event = ClientUtil.e((SkinTextures)ci.getReturnValue(), ((AbstractClientPlayerEntity)(Object)this).getName().getString()); - if (ClientUtil.f(event)) { - ci.setReturnValue(ClientUtil.g(event)); + private void overridePlayerSkinAtGetSkinReturn(InjectionCallback ci) { + if (HookBridge.hasPlayerSkinListeners(Prestige.eventBus, SkinTexturesEvent.class)) { + SkinTexturesEvent event = HookBridge.createPlayerSkinEvent((SkinTextures)ci.getReturnValue(), ((AbstractClientPlayerEntity)(Object)this).getName().getString()); + if (HookBridge.postPlayerSkinEvent(event)) { + ci.setReturnValue(HookBridge.getPlayerSkinTextures(event)); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/BlockMixin.java b/src/main/java/dev/zprestige/prestige/mixin/BlockMixin.java index df36743..679dd96 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/BlockMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/BlockMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.BlockBoolEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.BlockVisibilityEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -18,11 +18,11 @@ public class BlockMixin { target = {@CTarget("HEAD")}, cancellable = true ) - public static void a(BlockState state, BlockState otherState, Direction side, InjectionCallback cir) { - if (ClientUtil.z(Prestige.eventBus, BlockBoolEvent.class)) { - BlockBoolEvent event = ClientUtil.A(state.getBlock()); - if (ClientUtil.B(event)) { - cir.setReturnValue(ClientUtil.C(event)); + public static void overrideShouldDrawSideAtHead(BlockState state, BlockState otherState, Direction side, InjectionCallback cir) { + if (HookBridge.hasDrawSideListeners(Prestige.eventBus, BlockVisibilityEvent.class)) { + BlockVisibilityEvent event = HookBridge.createDrawSideEvent(state.getBlock()); + if (HookBridge.postDrawSideEvent(event)) { + cir.setReturnValue(HookBridge.shouldDrawSide(event)); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/CameraMixin.java b/src/main/java/dev/zprestige/prestige/mixin/CameraMixin.java index 63afad5..31ac256 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/CameraMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/CameraMixin.java @@ -1,9 +1,9 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.DoubleEvent; -import dev.zprestige.prestige.event.FloatEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.CameraPositionEvent; +import dev.zprestige.prestige.event.CameraRotationEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -17,13 +17,13 @@ public class CameraMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(double x, double y, double z, InjectionCallback ci) { - if (!DoubleEvent.a && ClientUtil.D(Prestige.eventBus, DoubleEvent.class)) { - DoubleEvent event = ClientUtil.E(x, y, z); - if (ClientUtil.F(event)) { - DoubleEvent.a = true; - ClientUtil.K(ClientUtil.G((Camera)(Object)this), ClientUtil.H(event), ClientUtil.I(event), ClientUtil.J(event)); - DoubleEvent.a = false; + private void overrideCameraPosAtSetPosHead(double x, double y, double z, InjectionCallback ci) { + if (!CameraPositionEvent.applyingOverride && HookBridge.hasCameraPosListeners(Prestige.eventBus, CameraPositionEvent.class)) { + CameraPositionEvent event = HookBridge.createCameraPosEvent(x, y, z); + if (HookBridge.postCameraPosEvent(event)) { + CameraPositionEvent.applyingOverride = true; + HookBridge.setCameraPos(HookBridge.createCameraPosAccessor((Camera)(Object)this), HookBridge.getCameraPosX(event), HookBridge.getCameraPosY(event), HookBridge.getCameraPosZ(event)); + CameraPositionEvent.applyingOverride = false; ci.cancel(); } } @@ -34,13 +34,13 @@ public class CameraMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void b(float yaw, float pitch, InjectionCallback ci) { - if (!FloatEvent.a) { - FloatEvent event = ClientUtil.L(yaw, pitch); - if (ClientUtil.M(event)) { - FloatEvent.a = true; - ClientUtil.Q(ClientUtil.N((Camera)(Object)this), ClientUtil.O(event), ClientUtil.P(event)); - FloatEvent.a = false; + private void overrideCameraRotationAtSetRotationHead(float yaw, float pitch, InjectionCallback ci) { + if (!CameraRotationEvent.applyingOverride) { + CameraRotationEvent event = HookBridge.createCameraRotationEvent(yaw, pitch); + if (HookBridge.postCameraRotationEvent(event)) { + CameraRotationEvent.applyingOverride = true; + HookBridge.setCameraRotation(HookBridge.createCameraRotationAccessor((Camera)(Object)this), HookBridge.getCameraYaw(event), HookBridge.getCameraPitch(event)); + CameraRotationEvent.applyingOverride = false; ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ChunkOcclusionDataBuilderMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ChunkOcclusionDataBuilderMixin.java index 1dcc416..dd5fa2f 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ChunkOcclusionDataBuilderMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ChunkOcclusionDataBuilderMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.BlockBoolEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.BlockVisibilityEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -17,9 +17,9 @@ public class ChunkOcclusionDataBuilderMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(BlockPos pos, InjectionCallback ci) { - if (ClientUtil.R(Prestige.eventBus, BlockBoolEvent.class)) { - if (ClientUtil.T(ClientUtil.S(null))) { + private void skipChunkOcclusionAtMarkClosedHead(BlockPos pos, InjectionCallback ci) { + if (HookBridge.hasChunkOcclusionListeners(Prestige.eventBus, BlockVisibilityEvent.class)) { + if (HookBridge.postChunkOcclusionEvent(HookBridge.createChunkOcclusionEvent(null))) { ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ClientConnectionMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ClientConnectionMixin.java index e59a145..d83a68e 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ClientConnectionMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ClientConnectionMixin.java @@ -1,9 +1,9 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -19,10 +19,10 @@ public class ClientConnectionMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private static void a(Packet packet, PacketListener listener, InjectionCallback ci) { - if (ClientUtil.U(Prestige.eventBus, PacketEvent.class)) { - PacketEvent event = ClientUtil.V(packet); - if (ClientUtil.W(event)) { + private static void postPacketReceiveEventAtHandlePacketHead(Packet packet, PacketListener listener, InjectionCallback ci) { + if (HookBridge.hasPacketReceiveListeners(Prestige.eventBus, PacketReceiveEvent.class)) { + PacketReceiveEvent event = HookBridge.createPacketReceiveEvent(packet); + if (HookBridge.postPacketReceiveEvent(event)) { ci.cancel(); } } @@ -33,17 +33,17 @@ public class ClientConnectionMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void b(Packet packet, InjectionCallback ci) { - if (Prestige.eventBus != null && ClientUtil.X(Prestige.eventBus, PacketEvent2.class)) { - PacketEvent2 event = ClientUtil.Y(packet); - if (ClientUtil.Z(event)) { + private void postPacketSendEventAtSendHead(Packet packet, InjectionCallback ci) { + if (Prestige.eventBus != null && HookBridge.hasPacketSendListeners(Prestige.eventBus, PacketSendEvent.class)) { + PacketSendEvent event = HookBridge.createPacketSendEvent(packet); + if (HookBridge.postPacketSendEvent(event)) { ci.cancel(); return; } } - if (Prestige.u != null) { - ClientUtil.aa(Prestige.u, packet); + if (Prestige.inventorySwapQueue != null) { + HookBridge.trackOutgoingPacket(Prestige.inventorySwapQueue, packet); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ClientPlayNetworkHandlerMixin.java index e5f887a..aadac8b 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ClientPlayNetworkHandlerMixin.java @@ -1,7 +1,7 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CShadow; import net.lenni0451.classtransform.annotations.CTarget; @@ -22,10 +22,10 @@ public class ClientPlayNetworkHandlerMixin { method = {"onGameJoin"}, target = {@CTarget("TAIL")} ) - private void a(GameJoinS2CPacket gameJoinS2CPacket, InjectionCallback ci) { + private void postGameJoinEventAtTail(GameJoinS2CPacket gameJoinS2CPacket, InjectionCallback ci) { if (this.world != null) { - TickEvent3 event = ClientUtil.ab(); - ClientUtil.ac(event); + GameJoinEvent event = HookBridge.createGameJoinEvent(); + HookBridge.postGameJoinEvent(event); } } @@ -33,8 +33,8 @@ public class ClientPlayNetworkHandlerMixin { method = {"onChunkData"}, target = {@CTarget("TAIL")} ) - private void b(ChunkDataS2CPacket packet, InjectionCallback info) { + private void postChunkDataEventAtTail(ChunkDataS2CPacket packet, InjectionCallback info) { WorldChunk chunk = this.world.getChunk(packet.getChunkX(), packet.getChunkZ()); - ClientUtil.ae(ClientUtil.ad(chunk)); + HookBridge.postChunkDataEvent(HookBridge.createChunkDataEvent(chunk)); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ClientPlayerEntityMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ClientPlayerEntityMixin.java index e4156bd..5e69afb 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ClientPlayerEntityMixin.java @@ -2,11 +2,11 @@ package dev.zprestige.prestige.mixin; import com.mojang.authlib.GameProfile; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.BoolEvent; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.render.RenderBatch; +import dev.zprestige.prestige.event.SwingHandEvent; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.render.Rotation; import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -27,12 +27,12 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity target = {@CTarget("HEAD")}, cancellable = true ) - private void a(Hand hand, InjectionCallback ci) { - if (Prestige.eventBus != null && ClientUtil.af(Prestige.eventBus, BoolEvent.class)) { - BoolEvent event = ClientUtil.ag(EventPhase.PRE); - if (ClientUtil.ah(event)) { + private void postSwingHandEventAtHead(Hand hand, InjectionCallback ci) { + if (Prestige.eventBus != null && HookBridge.hasSwingHandListeners(Prestige.eventBus, SwingHandEvent.class)) { + SwingHandEvent event = HookBridge.createSwingHandPreEvent(EventPhase.PRE); + if (HookBridge.postSwingHandPreEvent(event)) { ci.cancel(); - } else if (!ClientUtil.ai(event) && ClientUtil.ak(ClientUtil.aj(EventPhase.POST))) { + } else if (!HookBridge.shouldSkipSwingHandPost(event) && HookBridge.postSwingHandPostEvent(HookBridge.createSwingHandPostEvent(EventPhase.POST))) { ci.cancel(); } } @@ -42,18 +42,18 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity method = {"sendMovementPackets"}, target = {@CTarget("HEAD")} ) - private void b() { - FloatEvent2.c = this.getYaw(); - FloatEvent2.d = this.getPitch(); - FloatEvent2 event = ClientUtil.al(EventPhase.PRE, FloatEvent2.c, FloatEvent2.d); - boolean changed = ClientUtil.am(event); - RenderBatch movementOverride = Prestige.o == null ? null : ClientUtil.an(Prestige.o); + private void spoofRotationAtSendMovementPacketsHead() { + SendMovementPacketsEvent.savedYaw = this.getYaw(); + SendMovementPacketsEvent.savedPitch = this.getPitch(); + SendMovementPacketsEvent event = HookBridge.createMovementPacketsPreEvent(EventPhase.PRE, SendMovementPacketsEvent.savedYaw, SendMovementPacketsEvent.savedPitch); + boolean changed = HookBridge.postMovementPacketsPreEvent(event); + Rotation movementOverride = Prestige.silentRotationManager == null ? null : HookBridge.getLockedMovementRotation(Prestige.silentRotationManager); if (movementOverride != null) { - this.setYaw(ClientUtil.ao(movementOverride)); - this.setPitch(ClientUtil.ap(movementOverride)); + this.setYaw(HookBridge.getLockedRotationYaw(movementOverride)); + this.setPitch(HookBridge.getLockedRotationPitch(movementOverride)); } else if (changed) { - this.setYaw(ClientUtil.aq(event)); - this.setPitch(ClientUtil.ar(event)); + this.setYaw(HookBridge.getMovementPacketsYaw(event)); + this.setPitch(HookBridge.getMovementPacketsPitch(event)); } } @@ -61,10 +61,10 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity method = {"sendMovementPackets"}, target = {@CTarget("RETURN")} ) - private void c() { - FloatEvent2 event = ClientUtil.as(EventPhase.POST, FloatEvent2.c, FloatEvent2.d); - ClientUtil.at(event); - this.setYaw(FloatEvent2.c); - this.setPitch(FloatEvent2.d); + private void restoreRotationAtSendMovementPacketsReturn() { + SendMovementPacketsEvent event = HookBridge.createMovementPacketsPostEvent(EventPhase.POST, SendMovementPacketsEvent.savedYaw, SendMovementPacketsEvent.savedPitch); + HookBridge.postMovementPacketsPostEvent(event); + this.setYaw(SendMovementPacketsEvent.savedYaw); + this.setPitch(SendMovementPacketsEvent.savedPitch); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ClientPlayerInteractionManagerMixin.java index c37002e..ca791a7 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ClientPlayerInteractionManagerMixin.java @@ -1,7 +1,7 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -18,11 +18,11 @@ public class ClientPlayerInteractionManagerMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(PlayerEntity player, Entity target, InjectionCallback ci) { + private void postAttackEntityEventAtHead(PlayerEntity player, Entity target, InjectionCallback ci) { if (MinecraftClient.getInstance().player != null) { if (player.equals(MinecraftClient.getInstance().player)) { - EntityEvent event = ClientUtil.au(target); - if (ClientUtil.av(event)) { + AttackEntityEvent event = HookBridge.createAttackEntityEvent(target); + if (HookBridge.postAttackEntityEvent(event)) { ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ClientWorldMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ClientWorldMixin.java index f818eb8..700e7dd 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ClientWorldMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ClientWorldMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.event.EntityEvent3; +import dev.zprestige.prestige.event.EntityAddRemoveEvent; import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -17,10 +17,10 @@ public class ClientWorldMixin { method = {"addEntity"}, target = {@CTarget("TAIL")} ) - private void a(Entity entity, InjectionCallback ci) { + private void postEntityAddedEventAtAddEntityTail(Entity entity, InjectionCallback ci) { if (entity != null) { - EntityEvent3 event = ClientUtil.aw(entity, EventPhase.PRE); - ClientUtil.ax(event); + EntityAddRemoveEvent event = HookBridge.createEntityAddedEvent(entity, EventPhase.PRE); + HookBridge.postEntityAddedEvent(event); } } @@ -28,13 +28,13 @@ public class ClientWorldMixin { method = {"removeEntity"}, target = {@CTarget("HEAD")} ) - private void b(int entityId, RemovalReason removalReason, InjectionCallback ci) { + private void postEntityRemovedEventAtRemoveEntityHead(int entityId, RemovalReason removalReason, InjectionCallback ci) { ClientWorld world = (ClientWorld)(Object)this; if (world != null) { Entity entity = world.getEntityById(entityId); if (entity != null) { - EntityEvent3 event = ClientUtil.ay(entity, EventPhase.POST); - ClientUtil.az(event); + EntityAddRemoveEvent event = HookBridge.createEntityRemovedEvent(entity, EventPhase.POST); + HookBridge.postEntityRemovedEvent(event); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/EntityMixin.java b/src/main/java/dev/zprestige/prestige/mixin/EntityMixin.java index 205b8f6..1da5f50 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/EntityMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/EntityMixin.java @@ -1,11 +1,11 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.DoubleEvent3; -import dev.zprestige.prestige.event.EntityEvent2; -import dev.zprestige.prestige.event.FloatPositionEvent; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.VelocityUpdateEvent; +import dev.zprestige.prestige.event.BoundingBoxEvent; +import dev.zprestige.prestige.event.MovementYawEvent; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -23,23 +23,23 @@ public abstract class EntityMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(float speed, Vec3d movementInput, InjectionCallback ci) { + private void applyMovementYawAtUpdateVelocityHead(float speed, Vec3d movementInput, InjectionCallback ci) { Entity entity = (Entity)(Object)this; MinecraftClient mc = MinecraftClient.getInstance(); - if (entity == mc.player && Prestige.o != null && ClientUtil.aA(Prestige.o) != null) { - FloatPositionEvent event = ClientUtil.aB(entity.getYaw(), movementInput); - if (ClientUtil.aC(event)) { - float yaw = ClientUtil.aD(event); - Vec3d input = ClientUtil.aE(event) != null ? ClientUtil.aF(event) : movementInput; - double d = input.lengthSquared(); + if (entity == mc.player && Prestige.silentRotationManager != null && HookBridge.getUpdateVelocityRotation(Prestige.silentRotationManager) != null) { + MovementYawEvent event = HookBridge.createUpdateVelocityEvent(entity.getYaw(), movementInput); + if (HookBridge.postUpdateVelocityEvent(event)) { + float yaw = HookBridge.getUpdateVelocityYaw(event); + Vec3d input = HookBridge.getUpdateVelocityInputOrNull(event) != null ? HookBridge.getUpdateVelocityInput(event) : movementInput; + double inputLengthSq = input.lengthSquared(); Vec3d vec3d; - if (d < 1.0E-7) { + if (inputLengthSq < 1.0E-7) { vec3d = Vec3d.ZERO; } else { - Vec3d scaled = (d > 1.0 ? input.normalize() : input).multiply(speed); - float f = MathHelper.sin(yaw * (float) (Math.PI / 180.0)); - float g = MathHelper.cos(yaw * (float) (Math.PI / 180.0)); - vec3d = ClientUtil.aG(scaled.x * g - scaled.z * f, scaled.y, scaled.z * g + scaled.x * f); + Vec3d scaled = (inputLengthSq > 1.0 ? input.normalize() : input).multiply(speed); + float sinYaw = MathHelper.sin(yaw * (float) (Math.PI / 180.0)); + float cosYaw = MathHelper.cos(yaw * (float) (Math.PI / 180.0)); + vec3d = HookBridge.createVelocityVector(scaled.x * cosYaw - scaled.z * sinYaw, scaled.y, scaled.z * cosYaw + scaled.x * sinYaw); } entity.setVelocity(entity.getVelocity().add(vec3d)); @@ -53,14 +53,14 @@ public abstract class EntityMixin { target = {@CTarget("RETURN")}, cancellable = true ) - private void b(InjectionCallback cir) { + private void overrideBoundingBoxAtReturn(InjectionCallback cir) { Entity entity = (Entity)(Object)this; if (entity != null) { - if (ClientUtil.aH(Prestige.eventBus, EntityEvent2.class)) { + if (HookBridge.hasBoundingBoxListeners(Prestige.eventBus, BoundingBoxEvent.class)) { Box box = (Box)cir.getReturnValue(); - EntityEvent2 event = ClientUtil.aI(entity, box); - if (ClientUtil.aJ(event)) { - cir.setReturnValue(ClientUtil.aK(event)); + BoundingBoxEvent event = HookBridge.createBoundingBoxEvent(entity, box); + if (HookBridge.postBoundingBoxEvent(event)) { + cir.setReturnValue(HookBridge.getModifiedBoundingBox(event)); } } } @@ -71,12 +71,12 @@ public abstract class EntityMixin { target = {@CTarget("HEAD")}, cancellable = true ) - public void c(Vec3d velocity, InjectionCallback ci) { + public void overrideVelocityAtSetVelocityClientHead(Vec3d velocity, InjectionCallback ci) { Entity entity = (Entity)(Object)this; if (entity == MinecraftClient.getInstance().player) { - DoubleEvent3 event = ClientUtil.aL(velocity.x, velocity.y, velocity.z); - if (ClientUtil.aM(event)) { - entity.setVelocity(ClientUtil.aN(event), ClientUtil.aO(event), ClientUtil.aP(event)); + VelocityUpdateEvent event = HookBridge.createSetVelocityEvent(velocity.x, velocity.y, velocity.z); + if (HookBridge.postSetVelocityEvent(event)) { + entity.setVelocity(HookBridge.getSetVelocityX(event), HookBridge.getSetVelocityY(event), HookBridge.getSetVelocityZ(event)); ci.cancel(); } } @@ -87,12 +87,12 @@ public abstract class EntityMixin { target = {@CTarget("HEAD")}, cancellable = true ) - public void d(float tickDelta, InjectionCallback cir) { + public void applySilentRotationAtGetRotationVecHead(float tickDelta, InjectionCallback cir) { MinecraftClient mc = MinecraftClient.getInstance(); - if (mc != null && mc.player != null && (Object)this == mc.player && Prestige.o != null) { - RenderBatch rot = ClientUtil.aQ(Prestige.o); + if (mc != null && mc.player != null && (Object)this == mc.player && Prestige.silentRotationManager != null) { + Rotation rot = HookBridge.getRotationVecOverride(Prestige.silentRotationManager); if (rot != null) { - cir.setReturnValue(mc.player.getRotationVector(ClientUtil.aR(rot), ClientUtil.aS(rot))); + cir.setReturnValue(mc.player.getRotationVector(HookBridge.getRotationVecPitch(rot), HookBridge.getRotationVecYaw(rot))); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/EntityRendererMixin.java b/src/main/java/dev/zprestige/prestige/mixin/EntityRendererMixin.java index 6e3e0d1..03a88da 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/EntityRendererMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/EntityRendererMixin.java @@ -1,13 +1,13 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.EntityEvent4; -import dev.zprestige.prestige.event.EntityEvent5; -import dev.zprestige.prestige.event.EntityEvent6; -import dev.zprestige.prestige.event.PlayerStringEvent; -import dev.zprestige.prestige.event.TickEvent2; +import dev.zprestige.prestige.event.PlayerRenderStateEvent; +import dev.zprestige.prestige.event.LabelTextEvent; +import dev.zprestige.prestige.event.RenderLabelEvent; +import dev.zprestige.prestige.event.HealthIndicatorEvent; +import dev.zprestige.prestige.event.FullBrightEvent; import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -26,10 +26,10 @@ public abstract class EntityRendererMixin delayedActions = ClientUtil.bp(); - boolean renderWork = Prestige.eventBus != null && ClientUtil.bq(); + public void renderHudPassAtRenderTail(RenderTickCounter tickCounter, boolean tick) { + List delayedActions = HookBridge.drainHudRenderTasks(); + boolean renderWork = Prestige.eventBus != null && HookBridge.hasHudRenderWork(); if (!renderWork && delayedActions.isEmpty()) { - ClientUtil.br(); - ClientUtil.bs(); + HookBridge.advanceFrameCounter(); + HookBridge.fireIdleFrameEvent(); } else { - GlState cap = ClientUtil.bt(); - boolean var11 = false /* VF: Semaphore variable */; + GlStateSnapshot cap = HookBridge.captureHudGlState(); + boolean renderFailed = false /* VF: Semaphore variable */; label53: { try { - var11 = true; - ClientUtil.bu(delayedActions); + renderFailed = true; + HookBridge.runHudRenderTasks(delayedActions); if (!renderWork) { - ClientUtil.bv(); - ClientUtil.bw(); - var11 = false; + HookBridge.advanceFrameCounterAfterTasks(); + HookBridge.fireIdleFrameEventAfterTasks(); + renderFailed = false; break label53; } Window window = this.client.getWindow(); - Matrix4f proj = ClientUtil.bB( - ClientUtil.bA(ClientUtil.bz(ClientUtil.by(this.guiRenderer))), + Matrix4f proj = HookBridge.getProjectionMatrix( + HookBridge.createProjectionMatrixAccessor(HookBridge.getGuiProjectionMatrix(HookBridge.createGuiRendererAccessor(this.guiRenderer))), (float)window.getFramebufferWidth() / window.getScaleFactor(), (float)window.getFramebufferHeight() / window.getScaleFactor() ); - MatrixCameraData context = ClientUtil.bD(proj, ClientUtil.bC().setTranslation(0.0F, 0.0F, -10000.0F), null); - ClientUtil.bE(context); - var11 = false; + CameraMatrices context = HookBridge.createHudRenderContext(proj, HookBridge.createHudModelViewMatrix().setTranslation(0.0F, 0.0F, -10000.0F), null); + HookBridge.renderHudPass(context); + renderFailed = false; } finally { - if (var11) { - ClientUtil.bG(cap); + if (renderFailed) { + HookBridge.restoreHudGlStateOnError(cap); } } - ClientUtil.bF(cap); + HookBridge.restoreHudGlState(cap); return; } - ClientUtil.bx(cap); + HookBridge.restoreHudGlStateAfterTasks(cap); } } @@ -96,15 +96,15 @@ public class GameRendererMixin { target = {@CTarget("HEAD")}, method = {"renderWorld"} ) - private void b(RenderTickCounter tickCounter) { - if (ClientUtil.bH()) { + private void captureCameraMatricesAtRenderWorldHead(RenderTickCounter tickCounter) { + if (HookBridge.shouldCaptureCameraMatrices()) { Camera camera = this.client.gameRenderer.getCamera(); - MatrixStack matrixStack = ClientUtil.bI(); + MatrixStack matrixStack = HookBridge.createCameraMatrixStack(); RenderSystem.getModelViewStack().pushMatrix().mul(matrixStack.peek().getPositionMatrix()); matrixStack.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch())); matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(camera.getYaw() + 180.0F)); - dev.zprestige.prestige.render.MatrixStack.e.set(RenderSystem.getModelViewMatrix()); - dev.zprestige.prestige.render.MatrixStack.f.set(matrixStack.peek().getPositionMatrix()); + dev.zprestige.prestige.render.Render2D.modelViewMatrix.set(RenderSystem.getModelViewMatrix()); + dev.zprestige.prestige.render.Render2D.cameraRotationMatrix.set(matrixStack.peek().getPositionMatrix()); RenderSystem.getModelViewStack().popMatrix(); } } @@ -114,10 +114,10 @@ public class GameRendererMixin { method = {"tiltViewWhenHurt"}, cancellable = true ) - private void c(MatrixStack matrices, float tickDelta, InjectionCallback ci) { - if (Prestige.eventBus != null && ClientUtil.bJ(Prestige.eventBus, TickEvent20.class)) { - TickEvent20 event = ClientUtil.bK(); - if (ClientUtil.bL(event)) { + private void cancelHurtCamAtTiltViewWhenHurtHead(MatrixStack matrices, float tickDelta, InjectionCallback ci) { + if (Prestige.eventBus != null && HookBridge.hasHurtCamListeners(Prestige.eventBus, HurtCamEvent.class)) { + HurtCamEvent event = HookBridge.createHurtCamEvent(); + if (HookBridge.postHurtCamEvent(event)) { ci.cancel(); } } @@ -127,13 +127,13 @@ public class GameRendererMixin { target = {@CTarget("HEAD")}, method = {"tick"} ) - private void d() { - if (Prestige.eventBus != null && ClientUtil.bM(Prestige.eventBus, IntEvent.class)) { - IntEvent event = ClientUtil.bN(0); - ClientUtil.bO(event); + private void addExtraFloatingItemTicksAtTickHead() { + if (Prestige.eventBus != null && HookBridge.hasFloatingItemTickListeners(Prestige.eventBus, FloatingItemTickEvent.class)) { + FloatingItemTickEvent event = HookBridge.createFloatingItemTickEvent(0); + HookBridge.postFloatingItemTickEvent(event); - for (int i = 0; i < ClientUtil.bP(event); i++) { - ClientUtil.bR(ClientUtil.bQ((GameRenderer)(Object)this)).tickFloatingItemTimer(); + for (int i = 0; i < HookBridge.getExtraFloatingItemTicks(event); i++) { + HookBridge.getOverlayRenderer(HookBridge.createGameRendererAccessor((GameRenderer)(Object)this)).tickFloatingItemTimer(); } } } @@ -143,53 +143,53 @@ public class GameRendererMixin { target = {@CTarget("HEAD")}, cancellable = true ) - public void e(float tickDelta, InjectionCallback ci) { - if (Prestige.eventBus != null && ClientUtil.bS(Prestige.eventBus, FloatEvent4.class)) { + public void applyReachAtUpdateCrosshairTargetHead(float tickDelta, InjectionCallback ci) { + if (Prestige.eventBus != null && HookBridge.hasReachListeners(Prestige.eventBus, ReachEvent.class)) { Entity entity2 = this.client.getCameraEntity(); if (entity2 != null) { if (this.client.world != null) { Profilers.get().push("pick"); this.client.targetedEntity = null; - double d = ClientUtil.bT(); - FloatEvent4 reachEvent = ClientUtil.bU(0.0F); - boolean call = ClientUtil.bV(reachEvent); + double reach = HookBridge.getBaseReachDistance(); + ReachEvent reachEvent = HookBridge.createReachEvent(0.0F); + boolean call = HookBridge.postReachEvent(reachEvent); if (call) { - d += ClientUtil.bW(reachEvent); + reach += HookBridge.getExtraReach(reachEvent); } - this.client.crosshairTarget = entity2.raycast(d, tickDelta, false); + this.client.crosshairTarget = entity2.raycast(reach, tickDelta, false); Vec3d vec3d = entity2.getCameraPosVec(tickDelta); boolean bl = false; - double e = d; + double entityReachSq = reach; if (this.client.player.isCreative()) { - e = 6.0; - d = 6.0; + entityReachSq = 6.0; + reach = 6.0; } else { - if (d > 3.0 && !call) { + if (reach > 3.0 && !call) { bl = true; } - d = d; + reach = reach; } - e *= e; + entityReachSq *= entityReachSq; if (this.client.crosshairTarget != null) { - e = this.client.crosshairTarget.getPos().squaredDistanceTo(vec3d); + entityReachSq = this.client.crosshairTarget.getPos().squaredDistanceTo(vec3d); } Vec3d vec3d2 = entity2.getRotationVec(1.0F); - Vec3d vec3d3 = vec3d.add(vec3d2.x * d, vec3d2.y * d, vec3d2.z * d); - Box box = entity2.getBoundingBox().stretch(vec3d2.multiply(d)).expand(1.0, 1.0, 1.0); - EntityHitResult entityHitResult = ProjectileUtil.raycast(entity2, vec3d, vec3d3, box, ClientUtil.bX(), e); + Vec3d vec3d3 = vec3d.add(vec3d2.x * reach, vec3d2.y * reach, vec3d2.z * reach); + Box box = entity2.getBoundingBox().stretch(vec3d2.multiply(reach)).expand(1.0, 1.0, 1.0); + EntityHitResult entityHitResult = ProjectileUtil.raycast(entity2, vec3d, vec3d3, box, HookBridge.getTargetableEntityPredicate(), entityReachSq); if (entityHitResult != null) { Entity entity22 = entityHitResult.getEntity(); Vec3d vec3d4 = entityHitResult.getPos(); - double g = vec3d.squaredDistanceTo(vec3d4); - if (bl && g > 9.0) { + double entityDistanceSq = vec3d.squaredDistanceTo(vec3d4); + if (bl && entityDistanceSq > 9.0) { this.client.crosshairTarget = BlockHitResult.createMissed( vec3d4, Direction.getFacing(vec3d2.x, vec3d2.y, vec3d2.z), BlockPos.ofFloored(vec3d4) ); - } else if (g < e || this.client.crosshairTarget == null) { + } else if (entityDistanceSq < entityReachSq || this.client.crosshairTarget == null) { this.client.crosshairTarget = entityHitResult; if (entity22 instanceof LivingEntity || entity22 instanceof ItemFrameEntity) { this.client.targetedEntity = entity22; diff --git a/src/main/java/dev/zprestige/prestige/mixin/HeightContextMixin.java b/src/main/java/dev/zprestige/prestige/mixin/HeightContextMixin.java index 283f820..5c0e49b 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/HeightContextMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/HeightContextMixin.java @@ -1,7 +1,7 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.util.ClientUtil; -import dev.zprestige.prestige.world.WorldHelper7; +import dev.zprestige.prestige.util.HookBridge; +import dev.zprestige.prestige.world.HeightContextAccessor; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -17,11 +17,11 @@ public class HeightContextMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(ChunkGenerator generator, HeightLimitView world, InjectionCallback ci) { + private void handleNullGeneratorAtInitHead(ChunkGenerator generator, HeightLimitView world, InjectionCallback ci) { if (generator == null) { - WorldHelper7 accessor = ClientUtil.bY(this); - ClientUtil.bZ(accessor, -9999999); - ClientUtil.ca(accessor, 100000000); + HeightContextAccessor accessor = HookBridge.createHeightContextAccessor(this); + HookBridge.setHeightContextMinY(accessor, -9999999); + HookBridge.setHeightContextHeight(accessor, 100000000); ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/HeldItemRendererMixin.java b/src/main/java/dev/zprestige/prestige/mixin/HeldItemRendererMixin.java index 9f9a263..eb4c28f 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/HeldItemRendererMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/HeldItemRendererMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.FloatEvent5; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.SwingArmEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -18,10 +18,10 @@ public abstract class HeldItemRendererMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(float swingProgress, MatrixStack matrixStack, int i, Arm arm, InjectionCallback ci) { - if (ClientUtil.cb(Prestige.eventBus, FloatEvent5.class)) { - FloatEvent5 event = ClientUtil.cc(matrixStack, arm, swingProgress, 1.0F); - if (ClientUtil.cd(event)) { + private void postSwingArmEventAtHead(float swingProgress, MatrixStack matrixStack, int i, Arm arm, InjectionCallback ci) { + if (HookBridge.hasSwingArmListeners(Prestige.eventBus, SwingArmEvent.class)) { + SwingArmEvent event = HookBridge.createSwingArmEvent(matrixStack, arm, swingProgress, 1.0F); + if (HookBridge.postSwingArmEvent(event)) { matrixStack.scale(2.0F, 2.0F, 2.0F); ci.cancel(); } diff --git a/src/main/java/dev/zprestige/prestige/mixin/InGameHudMixin.java b/src/main/java/dev/zprestige/prestige/mixin/InGameHudMixin.java index 4239f7d..0b8c3a4 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/InGameHudMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/InGameHudMixin.java @@ -1,11 +1,11 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.TickEvent14; -import dev.zprestige.prestige.event.TickEvent17; -import dev.zprestige.prestige.event.TickEvent26; -import dev.zprestige.prestige.event.TickEvent31; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.RenderCrosshairEvent; +import dev.zprestige.prestige.event.RenderStatusEffectsEvent; +import dev.zprestige.prestige.event.OverlayMessageEvent; +import dev.zprestige.prestige.event.RenderScoreboardEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -21,9 +21,9 @@ public class InGameHudMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(DrawContext context, RenderTickCounter tickCounter, InjectionCallback ci) { - TickEvent17 event = ClientUtil.ce(); - if (ClientUtil.cf(event)) { + private void hideStatusEffectOverlayAtHead(DrawContext context, RenderTickCounter tickCounter, InjectionCallback ci) { + RenderStatusEffectsEvent event = HookBridge.createStatusEffectOverlayEvent(); + if (HookBridge.postStatusEffectOverlayEvent(event)) { ci.cancel(); } } @@ -33,10 +33,10 @@ public class InGameHudMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void b(DrawContext context, RenderTickCounter tickCounter, InjectionCallback ci) { - if (ClientUtil.cg(Prestige.eventBus, TickEvent14.class)) { - TickEvent14 event = ClientUtil.ch(); - if (ClientUtil.ci(event)) { + private void hideCrosshairAtHead(DrawContext context, RenderTickCounter tickCounter, InjectionCallback ci) { + if (HookBridge.hasCrosshairRenderListeners(Prestige.eventBus, RenderCrosshairEvent.class)) { + RenderCrosshairEvent event = HookBridge.createCrosshairRenderEvent(); + if (HookBridge.postCrosshairRenderEvent(event)) { ci.cancel(); } } @@ -47,9 +47,9 @@ public class InGameHudMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void c(DrawContext context, RenderTickCounter counter, InjectionCallback ci) { - if (ClientUtil.cj(Prestige.eventBus, TickEvent31.class)) { - if (ClientUtil.cl(ClientUtil.ck())) { + private void hideScoreboardSidebarAtHead(DrawContext context, RenderTickCounter counter, InjectionCallback ci) { + if (HookBridge.hasScoreboardRenderListeners(Prestige.eventBus, RenderScoreboardEvent.class)) { + if (HookBridge.postScoreboardRenderEvent(HookBridge.createScoreboardRenderEvent())) { ci.cancel(); } } @@ -60,9 +60,9 @@ public class InGameHudMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void d(DrawContext context, RenderTickCounter tickCounter, InjectionCallback ci) { - if (ClientUtil.cm(Prestige.eventBus, TickEvent26.class)) { - if (ClientUtil.co(ClientUtil.cn())) { + private void hideOverlayMessageAtHead(DrawContext context, RenderTickCounter tickCounter, InjectionCallback ci) { + if (HookBridge.hasOverlayMessageListeners(Prestige.eventBus, OverlayMessageEvent.class)) { + if (HookBridge.postOverlayMessageEvent(HookBridge.createOverlayMessageEvent())) { ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/InGameOverlayRendererMixin.java b/src/main/java/dev/zprestige/prestige/mixin/InGameOverlayRendererMixin.java index 9a8765c..173c738 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/InGameOverlayRendererMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/InGameOverlayRendererMixin.java @@ -1,7 +1,7 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.event.TickEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.FireOverlayEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -20,9 +20,9 @@ public class InGameOverlayRendererMixin { )}, cancellable = true ) - private static void a(MatrixStack matrices, VertexConsumerProvider vertexConsumers, InjectionCallback ci) { - TickEvent event = ClientUtil.cp(); - if (ClientUtil.cq(event)) { + private static void hideFireOverlayBeforeTranslate(MatrixStack matrices, VertexConsumerProvider vertexConsumers, InjectionCallback ci) { + FireOverlayEvent event = HookBridge.createFireOverlayEvent(); + if (HookBridge.postFireOverlayEvent(event)) { ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/InactivityFpsLimiterMixin.java b/src/main/java/dev/zprestige/prestige/mixin/InactivityFpsLimiterMixin.java index eba7a8f..699bc99 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/InactivityFpsLimiterMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/InactivityFpsLimiterMixin.java @@ -15,9 +15,9 @@ public class InactivityFpsLimiterMixin { target = {@CTarget("HEAD")}, cancellable = true ) - public void a(InjectionCallback cir) { + public void keepMaxFpsInClickGuiAtUpdateHead(InjectionCallback cir) { MinecraftClient mc = MinecraftClient.getInstance(); - if (Prestige.k != null && mc.currentScreen == Prestige.k) { + if (Prestige.clickGuiScreen != null && mc.currentScreen == Prestige.clickGuiScreen) { int maxFps = mc.options.getMaxFps().getValue(); cir.setReturnValue(maxFps); } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ItemStackMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ItemStackMixin.java index 7eb169f..f1c2e4f 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ItemStackMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ItemStackMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.TickEvent11; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.ItemBobbingEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -16,9 +16,9 @@ public class ItemStackMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(InjectionCallback info) { - if (ClientUtil.cr(Prestige.eventBus, TickEvent11.class)) { - if (ClientUtil.ct(ClientUtil.cs())) { + private void suppressGetBobbingAnimationTimeAtHead(InjectionCallback info) { + if (HookBridge.hasGetBobbingTimeListeners(Prestige.eventBus, ItemBobbingEvent.class)) { + if (HookBridge.postGetBobbingTimeEvent(HookBridge.createGetBobbingTimeEvent())) { info.setReturnValue(0); } } @@ -29,9 +29,9 @@ public class ItemStackMixin { target = {@CTarget("HEAD")}, cancellable = true ) - public void b(int bobbingAnimationTime, InjectionCallback ci) { - if (ClientUtil.cu(Prestige.eventBus, TickEvent11.class)) { - if (ClientUtil.cw(ClientUtil.cv())) { + public void suppressSetBobbingAnimationTimeAtHead(int bobbingAnimationTime, InjectionCallback ci) { + if (HookBridge.hasSetBobbingTimeListeners(Prestige.eventBus, ItemBobbingEvent.class)) { + if (HookBridge.postSetBobbingTimeEvent(HookBridge.createSetBobbingTimeEvent())) { ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/KeyboardInputMixin.java b/src/main/java/dev/zprestige/prestige/mixin/KeyboardInputMixin.java index e27e075..79aed09 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/KeyboardInputMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/KeyboardInputMixin.java @@ -1,9 +1,9 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.TickEvent16; +import dev.zprestige.prestige.event.KeyboardInputTickEvent; import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -19,30 +19,30 @@ public class KeyboardInputMixin extends Input { method = {"tick"}, target = {@CTarget("HEAD")} ) - private void a(InjectionCallback ci) { - TickEvent16 event = ClientUtil.cz(EventPhase.PRE); - ClientUtil.cA(event); + private void postInputTickPreEventAtTickHead(InjectionCallback ci) { + KeyboardInputTickEvent event = HookBridge.createInputTickPreEvent(EventPhase.PRE); + HookBridge.postInputTickPreEvent(event); } @CInject( method = {"tick"}, target = {@CTarget("RETURN")} ) - private void b(InjectionCallback ci) { - TickEvent16 keyboardTickEvent = ClientUtil.cB(EventPhase.POST); - ClientUtil.cC(keyboardTickEvent); + private void postInputTickPostEventAtTickReturn(InjectionCallback ci) { + KeyboardInputTickEvent keyboardTickEvent = HookBridge.createInputTickPostEvent(EventPhase.POST); + HookBridge.postInputTickPostEvent(keyboardTickEvent); } @CInject( method = {"tick"}, target = {@CTarget("RETURN")} ) - private void c(InjectionCallback ci) { - if (Prestige.u != null) { - if (ClientUtil.cD(Prestige.u)) { - this.playerInput = ClientUtil.cE(false, false, false, false, false, false, false); + private void blockInputDuringSwapAtTickReturn(InjectionCallback ci) { + if (Prestige.inventorySwapQueue != null) { + if (HookBridge.shouldBlockMovementInput(Prestige.inventorySwapQueue)) { + this.playerInput = HookBridge.createPlayerInput(false, false, false, false, false, false, false); this.movementVector = Vec2f.ZERO; - } else if (ClientUtil.cF(Prestige.u) && this.hasForwardMovement()) { + } else if (HookBridge.shouldRestoreSprint(Prestige.inventorySwapQueue) && this.hasForwardMovement()) { MinecraftClient client = MinecraftClient.getInstance(); if (client.player != null && !client.player.isSprinting()) { client.player.setSprinting(true); diff --git a/src/main/java/dev/zprestige/prestige/mixin/KeyboardMixin.java b/src/main/java/dev/zprestige/prestige/mixin/KeyboardMixin.java index 7852425..834066e 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/KeyboardMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/KeyboardMixin.java @@ -1,7 +1,7 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.event.IntEvent2; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.KeyEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CShadow; import net.lenni0451.classtransform.annotations.CTarget; @@ -21,11 +21,11 @@ public class KeyboardMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(long window, int action, KeyInput input, InjectionCallback ci) { + private void postKeyEventAtHead(long window, int action, KeyInput input, InjectionCallback ci) { int key = input.getKeycode(); if (key != -1) { - IntEvent2 event = ClientUtil.cx(key, action); - if (ClientUtil.cy(event)) { + KeyEvent event = HookBridge.createKeyEvent(key, action); + if (HookBridge.postKeyEvent(event)) { ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/LightmapTextureManagerMixin.java b/src/main/java/dev/zprestige/prestige/mixin/LightmapTextureManagerMixin.java index b5748b7..862a62c 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/LightmapTextureManagerMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/LightmapTextureManagerMixin.java @@ -3,8 +3,8 @@ package dev.zprestige.prestige.mixin; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.textures.GpuTexture; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.TickEvent2; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.FullBrightEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CShadow; import net.lenni0451.classtransform.annotations.CTarget; @@ -28,10 +28,10 @@ public class LightmapTextureManagerMixin { )}, cancellable = true ) - private void a(float tickProgress, InjectionCallback ci) { - if (ClientUtil.cG(Prestige.eventBus, TickEvent2.class)) { - TickEvent2 event = ClientUtil.cH(); - if (ClientUtil.cI(event)) { + private void forceFullBrightLightmapAfterProfilerPush(float tickProgress, InjectionCallback ci) { + if (HookBridge.hasLightmapListeners(Prestige.eventBus, FullBrightEvent.class)) { + FullBrightEvent event = HookBridge.createLightmapEvent(); + if (HookBridge.postLightmapEvent(event)) { RenderSystem.getDevice().createCommandEncoder().clearColorTexture(this.glTexture, ColorHelper.getArgb(255, 255, 255, 255)); Profilers.get().pop(); ci.cancel(); diff --git a/src/main/java/dev/zprestige/prestige/mixin/LivingEntityMixin.java b/src/main/java/dev/zprestige/prestige/mixin/LivingEntityMixin.java index de9c238..cdf38c2 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/LivingEntityMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/LivingEntityMixin.java @@ -1,12 +1,12 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.FloatEvent3; -import dev.zprestige.prestige.event.FloatPositionEvent; -import dev.zprestige.prestige.event.IntEvent3; -import dev.zprestige.prestige.event.LivingEvent; +import dev.zprestige.prestige.event.TravelEvent; +import dev.zprestige.prestige.event.MovementYawEvent; +import dev.zprestige.prestige.event.HandSwingDurationEvent; +import dev.zprestige.prestige.event.ShieldBreakEvent; import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -22,16 +22,16 @@ public abstract class LivingEntityMixin { method = {"travel"}, target = {@CTarget("HEAD")} ) - private void a(Vec3d movementInput, InjectionCallback ci) { + private void spoofRotationAtTravelHead(Vec3d movementInput, InjectionCallback ci) { if (MinecraftClient.getInstance().player != null) { if (((LivingEntity)(Object)this).equals(MinecraftClient.getInstance().player)) { - if (Prestige.o != null && ClientUtil.cJ(Prestige.o) != null) { - FloatEvent3 event = ClientUtil.cK(EventPhase.PRE, ((LivingEntity)(Object)this).getYaw(), ((LivingEntity)(Object)this).getPitch()); - if (ClientUtil.cL(event)) { - FloatEvent3.c = ((LivingEntity)(Object)this).getYaw(); - FloatEvent3.d = ((LivingEntity)(Object)this).getPitch(); - ((LivingEntity)(Object)this).setYaw(event.a); - ((LivingEntity)(Object)this).setPitch(event.b); + if (Prestige.silentRotationManager != null && HookBridge.getTravelPreRotation(Prestige.silentRotationManager) != null) { + TravelEvent event = HookBridge.createTravelPreEvent(EventPhase.PRE, ((LivingEntity)(Object)this).getYaw(), ((LivingEntity)(Object)this).getPitch()); + if (HookBridge.postTravelPreEvent(event)) { + TravelEvent.savedYaw = ((LivingEntity)(Object)this).getYaw(); + TravelEvent.savedPitch = ((LivingEntity)(Object)this).getPitch(); + ((LivingEntity)(Object)this).setYaw(event.yaw); + ((LivingEntity)(Object)this).setPitch(event.pitch); } } } @@ -42,14 +42,14 @@ public abstract class LivingEntityMixin { method = {"travel"}, target = {@CTarget("RETURN")} ) - private void b(Vec3d movementInput) { + private void restoreRotationAtTravelReturn(Vec3d movementInput) { if (MinecraftClient.getInstance().player != null) { if (((LivingEntity)(Object)this).equals(MinecraftClient.getInstance().player)) { - if (Prestige.o != null && ClientUtil.cM(Prestige.o) != null) { - FloatEvent3 event = ClientUtil.cN(EventPhase.POST, ((LivingEntity)(Object)this).getYaw(), ((LivingEntity)(Object)this).getPitch()); - if (ClientUtil.cO(event)) { - ((LivingEntity)(Object)this).setYaw(FloatEvent3.c); - ((LivingEntity)(Object)this).setPitch(FloatEvent3.d); + if (Prestige.silentRotationManager != null && HookBridge.getTravelPostRotation(Prestige.silentRotationManager) != null) { + TravelEvent event = HookBridge.createTravelPostEvent(EventPhase.POST, ((LivingEntity)(Object)this).getYaw(), ((LivingEntity)(Object)this).getPitch()); + if (HookBridge.postTravelPostEvent(event)) { + ((LivingEntity)(Object)this).setYaw(TravelEvent.savedYaw); + ((LivingEntity)(Object)this).setPitch(TravelEvent.savedPitch); } } } @@ -61,11 +61,11 @@ public abstract class LivingEntityMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void c(InjectionCallback ci) { - if (Prestige.eventBus != null && ClientUtil.cP(Prestige.eventBus, IntEvent3.class)) { - IntEvent3 event = ClientUtil.cQ(0); - if (ClientUtil.cR(event)) { - ci.setReturnValue(event.a); + private void overrideHandSwingDurationAtHead(InjectionCallback ci) { + if (Prestige.eventBus != null && HookBridge.hasHandSwingDurationListeners(Prestige.eventBus, HandSwingDurationEvent.class)) { + HandSwingDurationEvent event = HookBridge.createHandSwingDurationEvent(0); + if (HookBridge.postHandSwingDurationEvent(event)) { + ci.setReturnValue(event.duration); } } } @@ -74,10 +74,10 @@ public abstract class LivingEntityMixin { method = {"handleStatus"}, target = {@CTarget("HEAD")} ) - private void d(byte status) { - if (Prestige.eventBus != null && ClientUtil.cS(Prestige.eventBus, LivingEvent.class)) { + private void postShieldBreakEventAtHandleStatusHead(byte status) { + if (Prestige.eventBus != null && HookBridge.hasShieldBreakListeners(Prestige.eventBus, ShieldBreakEvent.class)) { if (status == 30) { - ClientUtil.cU(ClientUtil.cT((LivingEntity)(Object)this)); + HookBridge.postShieldBreakEvent(HookBridge.createShieldBreakEvent((LivingEntity)(Object)this)); } } } @@ -90,15 +90,15 @@ public abstract class LivingEntityMixin { )}, cancellable = true ) - private void e(InjectionCallback ci) { + private void applyJumpYawBeforeAddVelocityInternal(InjectionCallback ci) { LivingEntity entity = (LivingEntity)(Object)this; - if (entity == MinecraftClient.getInstance().player && Prestige.o != null && ClientUtil.cV(Prestige.o) != null) { + if (entity == MinecraftClient.getInstance().player && Prestige.silentRotationManager != null && HookBridge.getJumpRotation(Prestige.silentRotationManager) != null) { float yaw = entity.getYaw(); - FloatPositionEvent event = ClientUtil.cW(yaw); - if (ClientUtil.cX(event)) { - yaw = ClientUtil.cY(event); - float f = yaw * (float) (Math.PI / 180.0); - entity.setVelocity(entity.getVelocity().add(-MathHelper.sin(f) * 0.2F, 0.0, MathHelper.cos(f) * 0.2F)); + MovementYawEvent event = HookBridge.createJumpYawEvent(yaw); + if (HookBridge.postJumpYawEvent(event)) { + yaw = HookBridge.getJumpYaw(event); + float yawRadians = yaw * (float) (Math.PI / 180.0); + entity.setVelocity(entity.getVelocity().add(-MathHelper.sin(yawRadians) * 0.2F, 0.0, MathHelper.cos(yawRadians) * 0.2F)); entity.velocityDirty = true; ci.cancel(); } diff --git a/src/main/java/dev/zprestige/prestige/mixin/LivingEntityRendererMixin.java b/src/main/java/dev/zprestige/prestige/mixin/LivingEntityRendererMixin.java index 5a67817..5f4cb3c 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/LivingEntityRendererMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/LivingEntityRendererMixin.java @@ -1,7 +1,7 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.render.ESPUtil; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.render.EspShaderManager; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CShadow; import net.lenni0451.classtransform.annotations.CTarget; @@ -21,10 +21,10 @@ public class LivingEntityRendererMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(LivingEntityRenderState state, InjectionCallback ci) { - if (ESPUtil.e && ESPUtil.f) { + private void forceVisibleForEspAtIsVisibleHead(LivingEntityRenderState state, InjectionCallback ci) { + if (EspShaderManager.enabled && EspShaderManager.renderInvisible) { if (this.model != null) { - if (ClientUtil.cZ(this.model)) { + if (HookBridge.isEspModelForVisibility(this.model)) { ci.setReturnValue(true); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin.java b/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin.java index db4fb8a..dbd7d6c 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin.java @@ -1,13 +1,97 @@ package dev.zprestige.prestige.mixin; +import dev.zprestige.prestige.ModuleManager; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.util.HookBridge; +import net.lenni0451.classtransform.InjectionCallback; +import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; +import net.lenni0451.classtransform.annotations.injection.CInject; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.text.Text; @CTransformer({MinecraftClient.class}) -public class MinecraftClientMixin extends Screen { - public MinecraftClientMixin(Text title) { - super(title); +public class MinecraftClientMixin { + @CInject( + method = {"tick"}, + target = {@CTarget( + value = "INVOKE", + target = "Lnet/minecraft/client/gui/hud/InGameHud;tick(Z)V", + shift = CTarget.Shift.AFTER + )}, + cancellable = true + ) + public void postClientTickEventAfterHudTick(InjectionCallback ci) { + if (MinecraftClient.getInstance().world != null && MinecraftClient.getInstance().player != null) { + ModuleManager.headTickFallback = false; + ClientTickEvent event = HookBridge.createClientTickEvent(); + if (HookBridge.postClientTickEvent(event)) { + ci.cancel(); + } + } + } + + @CInject( + method = {"tick"}, + target = {@CTarget("HEAD")}, + cancellable = true + ) + public void postFallbackClientTickEventAtTickHead(InjectionCallback ci) { + if (ModuleManager.headTickFallback) { + if (MinecraftClient.getInstance().world != null && MinecraftClient.getInstance().player != null) { + ClientTickEvent event = HookBridge.createFallbackClientTickEvent(); + if (HookBridge.postFallbackClientTickEvent(event)) { + ci.cancel(); + } + } + } + } + + @CInject( + method = {"tick"}, + target = {@CTarget("HEAD")} + ) + public void postPreTickEventAtTickHead(InjectionCallback ci) { + HookBridge.postPreTickEvent(HookBridge.createPreTickEvent()); + } + + @CInject( + method = {"onResolutionChanged"}, + target = {@CTarget("TAIL")} + ) + public void postResolutionChangedEventAtTail(InjectionCallback ci) { + HookBridge.postResolutionChangedEvent(HookBridge.createResolutionChangedEvent(MinecraftClient.getInstance().getWindow())); + } + + @CInject( + method = {"doItemUse"}, + target = {@CTarget("HEAD")}, + cancellable = true + ) + public void postItemUseEventAtDoItemUseHead(InjectionCallback ci) { + if (HookBridge.postItemUseEvent(HookBridge.createItemUseEvent())) { + ci.cancel(); + } + } + + @CInject( + method = {"doAttack"}, + target = {@CTarget("HEAD")}, + cancellable = true + ) + public void postDoAttackEventAtHead(InjectionCallback cir) { + if (HookBridge.postDoAttackEvent(HookBridge.createDoAttackEvent())) { + cir.setReturnValue(false); + } + } + + @CInject( + method = {"handleBlockBreaking"}, + target = {@CTarget("HEAD")}, + cancellable = true + ) + public void postHandleBlockBreakingEventAtHead(boolean bl, InjectionCallback ci) { + if (HookBridge.postBlockBreakingEvent(HookBridge.createBlockBreakingEvent())) { + ci.cancel(); + } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin2.java b/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin2.java deleted file mode 100644 index 9506d73..0000000 --- a/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin2.java +++ /dev/null @@ -1,8 +0,0 @@ -package dev.zprestige.prestige.mixin; - -import net.lenni0451.classtransform.annotations.CTransformer; -import net.minecraft.client.MinecraftClient; - -@CTransformer({MinecraftClient.class}) -public class MinecraftClientMixin2 { -} diff --git a/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin3.java b/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin3.java deleted file mode 100644 index 956d2f2..0000000 --- a/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin3.java +++ /dev/null @@ -1,97 +0,0 @@ -package dev.zprestige.prestige.mixin; - -import dev.zprestige.prestige.ModuleManager; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.util.ClientUtil; -import net.lenni0451.classtransform.InjectionCallback; -import net.lenni0451.classtransform.annotations.CTarget; -import net.lenni0451.classtransform.annotations.CTransformer; -import net.lenni0451.classtransform.annotations.injection.CInject; -import net.minecraft.client.MinecraftClient; - -@CTransformer({MinecraftClient.class}) -public class MinecraftClientMixin3 { - @CInject( - method = {"tick"}, - target = {@CTarget( - value = "INVOKE", - target = "Lnet/minecraft/client/gui/hud/InGameHud;tick(Z)V", - shift = CTarget.Shift.AFTER - )}, - cancellable = true - ) - public void a(InjectionCallback ci) { - if (MinecraftClient.getInstance().world != null && MinecraftClient.getInstance().player != null) { - ModuleManager.f = false; - TickEvent19 event = ClientUtil.da(); - if (ClientUtil.db(event)) { - ci.cancel(); - } - } - } - - @CInject( - method = {"tick"}, - target = {@CTarget("HEAD")}, - cancellable = true - ) - public void b(InjectionCallback ci) { - if (ModuleManager.f) { - if (MinecraftClient.getInstance().world != null && MinecraftClient.getInstance().player != null) { - TickEvent19 event = ClientUtil.dc(); - if (ClientUtil.dd(event)) { - ci.cancel(); - } - } - } - } - - @CInject( - method = {"tick"}, - target = {@CTarget("HEAD")} - ) - public void c(InjectionCallback ci) { - ClientUtil.df(ClientUtil.de()); - } - - @CInject( - method = {"onResolutionChanged"}, - target = {@CTarget("TAIL")} - ) - public void d(InjectionCallback ci) { - ClientUtil.dh(ClientUtil.dg(MinecraftClient.getInstance().getWindow())); - } - - @CInject( - method = {"doItemUse"}, - target = {@CTarget("HEAD")}, - cancellable = true - ) - public void e(InjectionCallback ci) { - if (ClientUtil.dj(ClientUtil.di())) { - ci.cancel(); - } - } - - @CInject( - method = {"doAttack"}, - target = {@CTarget("HEAD")}, - cancellable = true - ) - public void f(InjectionCallback cir) { - if (ClientUtil.dl(ClientUtil.dk())) { - cir.setReturnValue(false); - } - } - - @CInject( - method = {"handleBlockBreaking"}, - target = {@CTarget("HEAD")}, - cancellable = true - ) - public void g(boolean bl, InjectionCallback ci) { - if (ClientUtil.dn(ClientUtil.dm())) { - ci.cancel(); - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin4.java b/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin4.java deleted file mode 100644 index 8c1ee29..0000000 --- a/src/main/java/dev/zprestige/prestige/mixin/MinecraftClientMixin4.java +++ /dev/null @@ -1,8 +0,0 @@ -package dev.zprestige.prestige.mixin; - -import net.lenni0451.classtransform.annotations.CTransformer; -import net.minecraft.client.MinecraftClient; - -@CTransformer({MinecraftClient.class}) -public class MinecraftClientMixin4 { -} diff --git a/src/main/java/dev/zprestige/prestige/mixin/ModelCommandRendererMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ModelCommandRendererMixin.java index e607e35..2ff23a5 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ModelCommandRendererMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ModelCommandRendererMixin.java @@ -1,9 +1,9 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.module.visual.ESP; -import dev.zprestige.prestige.render.ESPUtil; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.render.EspShaderManager; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.util.HookBridge; import java.util.Optional; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -26,15 +26,15 @@ public class ModelCommandRendererMixin { method = {"render(Lnet/minecraft/client/render/command/OrderedRenderCommandQueueImpl$ModelCommand;Lnet/minecraft/client/render/RenderLayer;Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/client/render/OutlineVertexConsumerProvider;Lnet/minecraft/client/render/VertexConsumerProvider$Immediate;)V"}, target = {@CTarget("HEAD")} ) - private void a( + private void captureRenderLayerAtRenderHead( ModelCommand model, RenderLayer renderLayer, VertexConsumer vertexConsumer, OutlineVertexConsumerProvider outlineVertexConsumers, Immediate crumblingOverlayVertexConsumers ) { - if (ESPUtil.e) { - ESP.u.set(renderLayer); + if (EspShaderManager.enabled) { + ESP.CURRENT_RENDER_LAYER.set(renderLayer); } } @@ -42,9 +42,9 @@ public class ModelCommandRendererMixin { method = {"render(Lnet/minecraft/client/render/command/OrderedRenderCommandQueueImpl$ModelCommand;Lnet/minecraft/client/render/RenderLayer;Lnet/minecraft/client/render/VertexConsumer;Lnet/minecraft/client/render/OutlineVertexConsumerProvider;Lnet/minecraft/client/render/VertexConsumerProvider$Immediate;)V"}, target = {@CTarget("RETURN")} ) - private void b() { - if (ESPUtil.e) { - ESP.u.remove(); + private void clearRenderLayerAtRenderReturn() { + if (EspShaderManager.enabled) { + ESP.CURRENT_RENDER_LAYER.remove(); } } @@ -56,20 +56,20 @@ public class ModelCommandRendererMixin { ordinal = 0 ) ) - private void c(Model model, MatrixStack matrices, VertexConsumer originalConsumer, int light, int overlay, int color) { + private void redirectModelRenderWithEspOutline(Model model, MatrixStack matrices, VertexConsumer originalConsumer, int light, int overlay, int color) { VertexConsumer consumer = originalConsumer; - RenderLayer layer = (RenderLayer)ESP.u.get(); - if (ESPUtil.e + RenderLayer layer = (RenderLayer)ESP.CURRENT_RENDER_LAYER.get(); + if (EspShaderManager.enabled && layer != null && model instanceof EntityModel entityModel && (layer.isOutline() || layer.getAffectedOutline().isPresent()) - && ClientUtil.do_() != null - && ClientUtil.dp(entityModel) - && (RenderContract2.b.currentScreen == null || RenderContract2.b.currentScreen instanceof ChatScreen)) { - Optional textureId = ClientUtil.dq(layer); + && HookBridge.getEspPostShader() != null + && HookBridge.isEspModelForGlow(entityModel) + && (MinecraftAccess.mc.currentScreen == null || MinecraftAccess.mc.currentScreen instanceof ChatScreen)) { + Optional textureId = HookBridge.getRenderLayerTextureId(layer); Integer id = textureId.orElse(null); if (id != null) { - consumer = ClientUtil.dr(originalConsumer, id); + consumer = HookBridge.wrapWithOutlineConsumer(originalConsumer, id); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/MouseMixin.java b/src/main/java/dev/zprestige/prestige/mixin/MouseMixin.java index 0a6533f..3022d53 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/MouseMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/MouseMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.DoubleEvent2; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.MouseUpdateEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CShadow; import net.lenni0451.classtransform.annotations.CTarget; @@ -23,10 +23,10 @@ public class MouseMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(double timeDelta, InjectionCallback ci) { - if (ClientUtil.ds(Prestige.eventBus, DoubleEvent2.class)) { - DoubleEvent2 event = ClientUtil.dt(this.cursorDeltaX, this.cursorDeltaY); - if (ClientUtil.du(event)) { + private void postMouseMoveEventAtUpdateMouseHead(double timeDelta, InjectionCallback ci) { + if (HookBridge.hasMouseMoveListeners(Prestige.eventBus, MouseUpdateEvent.class)) { + MouseUpdateEvent event = HookBridge.createMouseMoveEvent(this.cursorDeltaX, this.cursorDeltaY); + if (HookBridge.postMouseMoveEvent(event)) { ci.cancel(); } } @@ -36,10 +36,10 @@ public class MouseMixin { method = {"onMouseButton"}, target = {@CTarget("HEAD")} ) - private void b(long window, MouseInput input, int action, InjectionCallback ci) { + private void postMouseButtonEventAtHead(long window, MouseInput input, int action, InjectionCallback ci) { int button = input.button(); if (button != -1) { - ClientUtil.dw(ClientUtil.dv(button, action)); + HookBridge.postMouseButtonEvent(HookBridge.createMouseButtonEvent(button, action)); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/NamespaceResourceManagerMixin.java b/src/main/java/dev/zprestige/prestige/mixin/NamespaceResourceManagerMixin.java index 4f8d5e4..54d03e2 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/NamespaceResourceManagerMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/NamespaceResourceManagerMixin.java @@ -1,6 +1,6 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.util.HookBridge; import java.util.Optional; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; @@ -16,9 +16,9 @@ public class NamespaceResourceManagerMixin { target = {@CTarget("HEAD")}, cancellable = true ) - public void a(Identifier identifier, InjectionCallback callbackInfoReturnable) { + public void servePrestigeResourceAtGetResourceHead(Identifier identifier, InjectionCallback callbackInfoReturnable) { if (identifier.getNamespace().equals("prestige")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dx(identifier))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadNamespaceResource(identifier))); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ParticleManagerMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ParticleManagerMixin.java index bd5cf00..6b1961c 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ParticleManagerMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ParticleManagerMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.TickEvent21; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.AddParticleEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -17,10 +17,10 @@ public class ParticleManagerMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(Particle particle, InjectionCallback ci) { - if (ClientUtil.dy(Prestige.eventBus, TickEvent21.class)) { - TickEvent21 event = ClientUtil.dz(); - if (ClientUtil.dA(event)) { + private void postAddParticleEventAtHead(Particle particle, InjectionCallback ci) { + if (HookBridge.hasAddParticleListeners(Prestige.eventBus, AddParticleEvent.class)) { + AddParticleEvent event = HookBridge.createAddParticleEvent(); + if (HookBridge.postAddParticleEvent(event)) { ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/PlayerEntityMixin.java b/src/main/java/dev/zprestige/prestige/mixin/PlayerEntityMixin.java index 17732c7..8c3d4bc 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/PlayerEntityMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/PlayerEntityMixin.java @@ -1,6 +1,6 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -14,8 +14,8 @@ public class PlayerEntityMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(InjectionCallback ci) { - if (ClientUtil.dC(ClientUtil.dB())) { + private void postAttackCooldownResetEventAtResetTicksSinceHead(InjectionCallback ci) { + if (HookBridge.postAttackCooldownResetEvent(HookBridge.createAttackCooldownResetEvent())) { ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/PlayerListEntryMixin.java b/src/main/java/dev/zprestige/prestige/mixin/PlayerListEntryMixin.java index 10e6bc8..14a87dc 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/PlayerListEntryMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/PlayerListEntryMixin.java @@ -2,8 +2,8 @@ package dev.zprestige.prestige.mixin; import com.mojang.authlib.GameProfile; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.StringEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.SkinTexturesEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CShadow; import net.lenni0451.classtransform.annotations.CTarget; @@ -22,11 +22,11 @@ public class PlayerListEntryMixin { target = {@CTarget("RETURN")}, cancellable = true ) - private void a(InjectionCallback ci) { - if (this.profile != null && ClientUtil.dD(Prestige.eventBus, StringEvent.class)) { - StringEvent event = ClientUtil.dF((SkinTextures)ci.getReturnValue(), ClientUtil.dE(this.profile)); - if (ClientUtil.dG(event)) { - ci.setReturnValue(ClientUtil.dH(event)); + private void overrideListEntrySkinAtGetSkinTexturesReturn(InjectionCallback ci) { + if (this.profile != null && HookBridge.hasListEntrySkinListeners(Prestige.eventBus, SkinTexturesEvent.class)) { + SkinTexturesEvent event = HookBridge.createListEntrySkinEvent((SkinTextures)ci.getReturnValue(), HookBridge.getProfileName(this.profile)); + if (HookBridge.postListEntrySkinEvent(event)) { + ci.setReturnValue(HookBridge.getListEntrySkinTextures(event)); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ReloadableResourceManagerImplMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ReloadableResourceManagerImplMixin.java index 7f6edb6..cdb151f 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ReloadableResourceManagerImplMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ReloadableResourceManagerImplMixin.java @@ -1,6 +1,6 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.util.HookBridge; import java.util.Optional; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; @@ -16,45 +16,45 @@ public class ReloadableResourceManagerImplMixin { target = {@CTarget("HEAD")}, cancellable = true ) - public void a(Identifier identifier, InjectionCallback callbackInfoReturnable) { + public void serveCustomResourcesAtGetResourceHead(Identifier identifier, InjectionCallback callbackInfoReturnable) { if (identifier.getNamespace().equals("prestige")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dI(identifier))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadPrestigeResource(identifier))); } if (identifier.getPath().equals("shaders/post/glow.json")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dJ("assets/prestige/shaders/post/glow.json"))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadGlowPostJson("assets/prestige/shaders/post/glow.json"))); } if (identifier.getPath().equals("shaders/program/glow.json")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dK("assets/prestige/shaders/program/glow.json"))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadGlowProgramJson("assets/prestige/shaders/program/glow.json"))); } if (identifier.getPath().equals("shaders/program/glow.fsh")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dL("assets/prestige/shaders/program/glow.fsh"))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadGlowFragmentShader("assets/prestige/shaders/program/glow.fsh"))); } if (identifier.getPath().equals("shaders/core/blur.json")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dM("assets/minecraft/shaders/core/blur.json"))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadBlurShaderJson("assets/minecraft/shaders/core/blur.json"))); } if (identifier.getPath().equals("shaders/core/blur.fsh")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dN("assets/minecraft/shaders/core/blur.fsh"))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadBlurFragmentShader("assets/minecraft/shaders/core/blur.fsh"))); } if (identifier.getPath().equals("shaders/core/rounded_rect.json")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dO("assets/minecraft/shaders/core/rounded_rect.json"))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadRoundedRectShaderJson("assets/minecraft/shaders/core/rounded_rect.json"))); } if (identifier.getPath().equals("shaders/core/rounded_rect.fsh")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dP("assets/minecraft/shaders/core/rounded_rect.fsh"))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadRoundedRectFragmentShader("assets/minecraft/shaders/core/rounded_rect.fsh"))); } if (identifier.getPath().equals("shaders/core/rounded_rect_glow.json")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dQ("assets/minecraft/shaders/core/rounded_rect_glow.json"))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadRoundedRectGlowShaderJson("assets/minecraft/shaders/core/rounded_rect_glow.json"))); } if (identifier.getPath().equals("shaders/core/rounded_rect_glow.fsh")) { - callbackInfoReturnable.setReturnValue(Optional.of(ClientUtil.dR("assets/minecraft/shaders/core/rounded_rect_glow.fsh"))); + callbackInfoReturnable.setReturnValue(Optional.of(HookBridge.loadRoundedRectGlowFragmentShader("assets/minecraft/shaders/core/rounded_rect_glow.fsh"))); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ScreenMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ScreenMixin.java index 99a5d75..54cecb2 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ScreenMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ScreenMixin.java @@ -1,7 +1,7 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.event.TickEvent8; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.ScreenBackgroundEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -17,9 +17,9 @@ public class ScreenMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private void a(DrawContext drawContext, int i, int j, float f, InjectionCallback ci) { - TickEvent8 event = ClientUtil.dS(); - if (ClientUtil.dT(event)) { + private void hideScreenBackgroundAtHead(DrawContext drawContext, int mouseX, int mouseY, float deltaTicks, InjectionCallback ci) { + ScreenBackgroundEvent event = HookBridge.createScreenBackgroundEvent(); + if (HookBridge.postScreenBackgroundEvent(event)) { ci.cancel(); } } @@ -29,9 +29,9 @@ public class ScreenMixin { target = {@CTarget("HEAD")}, cancellable = true ) - private static void b(DrawContext drawContext, Identifier identifier, int i, int j, float f, float g, int k, int l, InjectionCallback ci) { - TickEvent8 event = ClientUtil.dU(); - if (ClientUtil.dV(event)) { + private static void hideBackgroundTextureAtHead(DrawContext drawContext, Identifier texture, int x, int y, float u, float v, int width, int height, InjectionCallback ci) { + ScreenBackgroundEvent event = HookBridge.createBackgroundTextureEvent(); + if (HookBridge.postBackgroundTextureEvent(event)) { ci.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/ServerWorldMixin.java b/src/main/java/dev/zprestige/prestige/mixin/ServerWorldMixin.java index dee3b41..ded4ec3 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/ServerWorldMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/ServerWorldMixin.java @@ -1,7 +1,7 @@ package dev.zprestige.prestige.mixin; -import dev.zprestige.prestige.event.FloatDoubleEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.ExplosionEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -21,7 +21,7 @@ public class ServerWorldMixin { method = {"createExplosion"}, target = {@CTarget("HEAD")} ) - public void a( + public void postExplosionEventAtCreateExplosionHead( Entity entity, DamageSource damageSource, ExplosionBehavior behavior, @@ -36,7 +36,7 @@ public class ServerWorldMixin { RegistryEntry soundEvent, InjectionCallback ci ) { - FloatDoubleEvent event = ClientUtil.dW(power, x, y, z); - ClientUtil.dX(event); + ExplosionEvent event = HookBridge.createExplosionEvent(power, x, y, z); + HookBridge.postExplosionEvent(event); } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/SkyRenderingMixin.java b/src/main/java/dev/zprestige/prestige/mixin/SkyRenderingMixin.java index bd0c044..9217caf 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/SkyRenderingMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/SkyRenderingMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.ColorEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.SkyColorEvent; +import dev.zprestige.prestige.util.HookBridge; import java.awt.Color; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; @@ -19,23 +19,23 @@ public class SkyRenderingMixin { method = {"updateRenderState"}, target = {@CTarget("TAIL")} ) - private void a(ClientWorld world, float tickDelta, Camera camera, SkyRenderState state, InjectionCallback ci) { - if (ClientUtil.dY(Prestige.eventBus, ColorEvent.class)) { + private void overrideSkyColorAtUpdateRenderStateTail(ClientWorld world, float tickDelta, Camera camera, SkyRenderState state, InjectionCallback ci) { + if (HookBridge.hasSkyColorListeners(Prestige.eventBus, SkyColorEvent.class)) { int skyPacked = state.skyColor; - Color initialSky = ClientUtil.dZ(skyPacked >> 16 & 0xFF, skyPacked >> 8 & 0xFF, skyPacked & 0xFF); + Color initialSky = HookBridge.createSkyColor(skyPacked >> 16 & 0xFF, skyPacked >> 8 & 0xFF, skyPacked & 0xFF); int hzPacked = state.sunriseAndSunsetColor; - Color initialHorizon = ClientUtil.ea(hzPacked >> 16 & 0xFF, hzPacked >> 8 & 0xFF, hzPacked & 0xFF); - ColorEvent event = ClientUtil.eb(initialSky, initialHorizon); - if (ClientUtil.ec(event)) { - if (ClientUtil.ed(event) != null) { - Color c = ClientUtil.ee(event); - state.skyColor = 0xFF000000 | (c.getRed() & 0xFF) << 16 | (c.getGreen() & 0xFF) << 8 | c.getBlue() & 0xFF; + Color initialHorizon = HookBridge.createHorizonColor(hzPacked >> 16 & 0xFF, hzPacked >> 8 & 0xFF, hzPacked & 0xFF); + SkyColorEvent event = HookBridge.createSkyColorEvent(initialSky, initialHorizon); + if (HookBridge.postSkyColorEvent(event)) { + if (HookBridge.getSkyColorOrNull(event) != null) { + Color skyColor = HookBridge.getSkyColor(event); + state.skyColor = 0xFF000000 | (skyColor.getRed() & 0xFF) << 16 | (skyColor.getGreen() & 0xFF) << 8 | skyColor.getBlue() & 0xFF; } - if (ClientUtil.ef(event) != null) { - Color h = ClientUtil.eg(event); + if (HookBridge.getHorizonColorOrNull(event) != null) { + Color horizonColor = HookBridge.getHorizonColor(event); int origAlpha = hzPacked >> 24 & 0xFF; - state.sunriseAndSunsetColor = origAlpha << 24 | (h.getRed() & 0xFF) << 16 | (h.getGreen() & 0xFF) << 8 | h.getBlue() & 0xFF; + state.sunriseAndSunsetColor = origAlpha << 24 | (horizonColor.getRed() & 0xFF) << 16 | (horizonColor.getGreen() & 0xFF) << 8 | horizonColor.getBlue() & 0xFF; } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/TextDisplayEntityRendererMixin.java b/src/main/java/dev/zprestige/prestige/mixin/TextDisplayEntityRendererMixin.java index 271dd5d..6ea84a4 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/TextDisplayEntityRendererMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/TextDisplayEntityRendererMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.EntityEvent5; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.LabelTextEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; import net.lenni0451.classtransform.annotations.injection.CModifyArgs; @@ -23,8 +23,8 @@ public class TextDisplayEntityRendererMixin { ordinal = 0 )} ) - public void a(CArgs cArgs) { - if (ClientUtil.eh(Prestige.eventBus, EntityEvent5.class)) { + public void modifyLabelTextBeforeWrapLines(CArgs cArgs) { + if (HookBridge.hasTextDisplayLabelListeners(Prestige.eventBus, LabelTextEvent.class)) { Text text = (Text)cArgs.get(0); String stringText = text.getString(); ClientWorld world = MinecraftClient.getInstance().world; @@ -36,9 +36,9 @@ public class TextDisplayEntityRendererMixin { || index + player.getNameForScoreboard().length() < stringText.length() && Character.isLetterOrDigit(stringText.charAt(index + player.getNameForScoreboard().length())); if (!surrounded) { - EntityEvent5 labelTextEvent = ClientUtil.ei(player, text); - if (ClientUtil.ej(labelTextEvent)) { - cArgs.set(0, ClientUtil.ek(labelTextEvent)); + LabelTextEvent labelTextEvent = HookBridge.createTextDisplayLabelEvent(player, text); + if (HookBridge.postTextDisplayLabelEvent(labelTextEvent)) { + cArgs.set(0, HookBridge.getTextDisplayLabelText(labelTextEvent)); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/TextVisitFactoryMixin.java b/src/main/java/dev/zprestige/prestige/mixin/TextVisitFactoryMixin.java index 7ac44f6..74d52e8 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/TextVisitFactoryMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/TextVisitFactoryMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.StringEvent2; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.TextReplaceEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; import net.lenni0451.classtransform.annotations.injection.CModifyArgs; @@ -19,16 +19,16 @@ public class TextVisitFactoryMixin { ordinal = 0 )} ) - private static void a(CArgs cArgs) { + private static void replaceTextBeforeVisitFormatted(CArgs cArgs) { String text = (String)cArgs.get(0); if (text != null) { - if (!ClientUtil.el(Prestige.eventBus, StringEvent2.class)) { + if (!HookBridge.hasTextReplaceListeners(Prestige.eventBus, TextReplaceEvent.class)) { return; } - StringEvent2 event = ClientUtil.em("", text); - if (ClientUtil.en(event)) { - cArgs.set(0, text.replace(ClientUtil.eo(event), ClientUtil.ep(event))); + TextReplaceEvent event = HookBridge.createTextReplaceEvent("", text); + if (HookBridge.postTextReplaceEvent(event)) { + cArgs.set(0, text.replace(HookBridge.getTextReplaceTarget(event), HookBridge.getTextReplacement(event))); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/WorldChunkMixin.java b/src/main/java/dev/zprestige/prestige/mixin/WorldChunkMixin.java index 397d501..ad280a6 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/WorldChunkMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/WorldChunkMixin.java @@ -1,8 +1,8 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.BlockPosBlockEvent; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.BlockStateUpdateEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CShadow; import net.lenni0451.classtransform.annotations.CTarget; @@ -22,11 +22,11 @@ public class WorldChunkMixin { method = {"setBlockState"}, target = {@CTarget("TAIL")} ) - private void a(BlockPos pos, BlockState state, int flags, InjectionCallback cir) { - if (ClientUtil.ex(Prestige.eventBus, BlockPosBlockEvent.class)) { + private void postBlockUpdateEventAtSetBlockStateTail(BlockPos pos, BlockState state, int flags, InjectionCallback cir) { + if (HookBridge.hasBlockUpdateListeners(Prestige.eventBus, BlockStateUpdateEvent.class)) { if (this.world.isClient()) { - BlockPosBlockEvent event = ClientUtil.ey(pos, state); - ClientUtil.ez(event); + BlockStateUpdateEvent event = HookBridge.createBlockUpdateEvent(pos, state); + HookBridge.postBlockUpdateEvent(event); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/WorldMixin.java b/src/main/java/dev/zprestige/prestige/mixin/WorldMixin.java index e363797..590e99c 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/WorldMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/WorldMixin.java @@ -1,9 +1,9 @@ package dev.zprestige.prestige.mixin; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.LongEvent; -import dev.zprestige.prestige.event.TickEvent23; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.event.TimeOfDayEvent; +import dev.zprestige.prestige.event.RainGradientEvent; +import dev.zprestige.prestige.util.HookBridge; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CTarget; import net.lenni0451.classtransform.annotations.CTransformer; @@ -17,9 +17,9 @@ public class WorldMixin { target = {@CTarget("RETURN")}, cancellable = true ) - private void a(float delta, InjectionCallback cir) { - if (ClientUtil.eq(Prestige.eventBus, TickEvent23.class)) { - if (ClientUtil.es(ClientUtil.er())) { + private void overrideRainGradientAtReturn(float delta, InjectionCallback cir) { + if (HookBridge.hasRainGradientListeners(Prestige.eventBus, RainGradientEvent.class)) { + if (HookBridge.postRainGradientEvent(HookBridge.createRainGradientEvent())) { cir.setReturnValue(0.0F); } } @@ -30,11 +30,11 @@ public class WorldMixin { target = {@CTarget("RETURN")}, cancellable = true ) - private void b(InjectionCallback cir) { - if (ClientUtil.et(Prestige.eventBus, LongEvent.class)) { - LongEvent event = ClientUtil.eu((Long)cir.getReturnValue()); - if (ClientUtil.ev(event)) { - cir.setReturnValue(ClientUtil.ew(event)); + private void overrideTimeOfDayAtReturn(InjectionCallback cir) { + if (HookBridge.hasTimeOfDayListeners(Prestige.eventBus, TimeOfDayEvent.class)) { + TimeOfDayEvent event = HookBridge.createTimeOfDayEvent((Long)cir.getReturnValue()); + if (HookBridge.postTimeOfDayEvent(event)) { + cir.setReturnValue(HookBridge.getTimeOfDay(event)); } } } diff --git a/src/main/java/dev/zprestige/prestige/mixin/WorldRendererMixin.java b/src/main/java/dev/zprestige/prestige/mixin/WorldRendererMixin.java index d9b25f4..34e99d9 100644 --- a/src/main/java/dev/zprestige/prestige/mixin/WorldRendererMixin.java +++ b/src/main/java/dev/zprestige/prestige/mixin/WorldRendererMixin.java @@ -3,12 +3,12 @@ package dev.zprestige.prestige.mixin; import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.systems.RenderSystem; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.TickEvent22; -import dev.zprestige.prestige.event.TickEvent30; -import dev.zprestige.prestige.render.GlState; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.util.ClientUtil; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.event.FrustumSetupEvent; +import dev.zprestige.prestige.event.WorldRendererReloadEvent; +import dev.zprestige.prestige.render.GlStateSnapshot; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.util.HookBridge; import java.util.List; import net.lenni0451.classtransform.InjectionCallback; import net.lenni0451.classtransform.annotations.CShadow; @@ -40,7 +40,7 @@ public class WorldRendererMixin { shift = CTarget.Shift.AFTER )} ) - public void a( + public void renderWorldPassAfterFrameGraphRun( ObjectAllocator allocator, RenderTickCounter tickCounter, boolean renderBlockOutline, @@ -53,44 +53,44 @@ public class WorldRendererMixin { boolean renderSky ) { if (Prestige.eventBus != null) { - List delayedActions = ClientUtil.eA(); - boolean renderWork = ClientUtil.eB(); - boolean hudWork = ClientUtil.eC(); + List delayedActions = HookBridge.drainWorldRenderTasks(); + boolean renderWork = HookBridge.hasWorldRenderWork(); + boolean hudWork = HookBridge.hasHudRenderWorkInWorldPass(); if (hudWork) { - MatrixStack.d.set(actualRealProjMatrix); + Render2D.projectionMatrix.set(actualRealProjMatrix); if (!renderWork) { - ClientUtil.eD(); + HookBridge.captureViewport(); } } if (renderWork || !delayedActions.isEmpty()) { - GlState cap = ClientUtil.eE(); - boolean var19 = false /* VF: Semaphore variable */; + GlStateSnapshot cap = HookBridge.captureWorldGlState(); + boolean renderFailed = false /* VF: Semaphore variable */; label53: { try { - var19 = true; - ClientUtil.eF(delayedActions); + renderFailed = true; + HookBridge.runWorldRenderTasks(delayedActions); if (!renderWork) { - var19 = false; + renderFailed = false; break label53; } Matrix4fStack actualRealModView = RenderSystem.getModelViewStack(); - MatrixCameraData context = ClientUtil.eI(actualRealProjMatrix, ClientUtil.eH(actualRealModView), camera); - ClientUtil.eJ(context); - var19 = false; + CameraMatrices context = HookBridge.createWorldRenderContext(actualRealProjMatrix, HookBridge.copyModelViewMatrix(actualRealModView), camera); + HookBridge.renderWorldPass(context); + renderFailed = false; } finally { - if (var19) { - ClientUtil.eL(cap); + if (renderFailed) { + HookBridge.restoreWorldGlStateOnError(cap); } } - ClientUtil.eK(cap); + HookBridge.restoreWorldGlState(cap); return; } - ClientUtil.eG(cap); + HookBridge.restoreWorldGlStateAfterTasks(cap); } } } @@ -99,10 +99,10 @@ public class WorldRendererMixin { method = {"setupFrustum"}, target = {@CTarget("RETURN")} ) - private void b(Matrix4f matrix4f, Matrix4f matrix4f2, Vec3d vec3d, InjectionCallback ci) { - if (Prestige.eventBus != null && ClientUtil.eM(Prestige.eventBus, TickEvent22.class)) { - TickEvent22 event = ClientUtil.eN((Frustum)ci.getReturnValue()); - ClientUtil.eO(event); + private void postFrustumEventAtSetupFrustumReturn(Matrix4f matrix4f, Matrix4f matrix4f2, Vec3d vec3d, InjectionCallback ci) { + if (Prestige.eventBus != null && HookBridge.hasFrustumListeners(Prestige.eventBus, FrustumSetupEvent.class)) { + FrustumSetupEvent event = HookBridge.createFrustumEvent((Frustum)ci.getReturnValue()); + HookBridge.postFrustumEvent(event); } } @@ -110,9 +110,9 @@ public class WorldRendererMixin { method = {"reload"}, target = {@CTarget("HEAD")} ) - private void c(InjectionCallback ci) { - if (Prestige.eventBus != null && ClientUtil.eP(Prestige.eventBus, TickEvent30.class)) { - ClientUtil.eR(ClientUtil.eQ()); + private void postWorldRendererReloadEventAtHead(InjectionCallback ci) { + if (Prestige.eventBus != null && HookBridge.hasWorldRendererReloadListeners(Prestige.eventBus, WorldRendererReloadEvent.class)) { + HookBridge.postWorldRendererReloadEvent(HookBridge.createWorldRendererReloadEvent()); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AimAssist.java b/src/main/java/dev/zprestige/prestige/module/combat/AimAssist.java index 240631f..8b891a4 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AimAssist.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AimAssist.java @@ -7,17 +7,14 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent24; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.FrameEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.Entity; @@ -31,224 +28,191 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; public class AimAssist extends Module { - private EnumSetting a; - private EnumSetting c; - private FloatSetting d; - private FloatSetting e; - private BoolSetting f; - private BoolSetting g; - private BoolSetting h; - private BoolSetting i; - private BoolSetting j; - private BoolSetting k; - private BoolSetting l; - private BoolSetting m; - private FloatSetting n; - private FloatSetting o; - private FloatSetting p; - private BoolSetting q; - private FloatSetting r; - private BoolSetting s; - private FloatSetting t; - private BoolSetting u; - private BoolSetting v; - private Entity w; - private RenderHelper27 x = new RenderHelper27(26293358099357L); - private float y = 0.0F; - private double[] z = new double[]{0.0, 0.0}; - private float A = 0.0F; - private float B = 0.0F; + private EnumSetting mode; + private EnumSetting target; + private FloatSetting fov; + private FloatSetting range; + private BoolSetting stickyTargeting; + private BoolSetting throughWalls; + private BoolSetting onlyOnRotate; + private BoolSetting stopOnBlockBreak; + private BoolSetting weaponOnly; + private BoolSetting crystalOnly; + private BoolSetting requireLeftClick; + private BoolSetting requireRightClick; + private FloatSetting reactionDelay; + private FloatSetting speed; + private FloatSetting randomness; + private BoolSetting smoothen; + private FloatSetting smoothness; + private BoolSetting predictMovement; + private FloatSetting predictMultiply; + private BoolSetting verticalOnly; + private BoolSetting stopOnHitbox; + private Entity currentTarget; + private StopWatch reactionTimer = new StopWatch(); + private float rolledReactionDelay = 0.0F; + private double[] lastMousePos = new double[]{0.0, 0.0}; + private float smoothedYawDelta = 0.0F; + private float smoothedPitchDelta = 0.0F; public AimAssist() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.j.setVisibility_BoolSetting(new Object[]{(Predicate)lpL79_0 -> ((String)this.a.getValue()).equals("Players"), 73196168581295L}); - this.l.setVisibility_BoolSetting(new Object[]{(Predicate)lpL77_0 -> ((String)this.a.getValue()).equals("Players"), 73196168581295L}); - this.t - .setVisibility_FloatSetting( - new Object[]{(Predicate)lpL73_0 -> (Boolean)this.s.getValue() && ((String)this.a.getValue()).equals("Players"), 35046756052036L} + this.weaponOnly.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Players")); + this.requireLeftClick.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Players")); + this.predictMultiply + .visibleWhen( + (Predicate)ignored -> this.predictMovement.getValue() && this.mode.getValue().equals("Players") ); - this.k.setVisibility_BoolSetting(new Object[]{(Predicate)lpL78_0 -> ((String)this.a.getValue()).equals("Crystals"), 73196168581295L}); - this.u.setVisibility_BoolSetting(new Object[]{(Predicate)lpL72_0 -> ((String)this.a.getValue()).equals("Crystals"), 73196168581295L}); - this.s.setVisibility_BoolSetting(new Object[]{(Predicate)lpL74_0 -> ((String)this.a.getValue()).equals("Players"), 73196168581295L}); - this.m.setVisibility_BoolSetting(new Object[]{(Predicate)lpL76_0 -> ((String)this.a.getValue()).equals("Crystals"), 73196168581295L}); - this.r.setVisibility_FloatSetting(new Object[]{(Predicate)lpL75_0 -> (Boolean)this.q.getValue(), 35046756052036L}); + this.crystalOnly.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Crystals")); + this.verticalOnly.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Crystals")); + this.predictMovement.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Players")); + this.requireRightClick.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Crystals")); + this.smoothness.visibleWhen((Predicate)ignored -> this.smoothen.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword); } @Subscribe - public void a(TickEvent24 var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - if (!AutoObbyCrystal.R) { - if (!(Boolean)this.i.getValue() || b.crosshairTarget == null || b.crosshairTarget.getType() != Type.BLOCK || !b.options.attackKey.isPressed()) { - if (((String)this.a.getValue()).equals("Players")) { - if ((Boolean)this.j.getValue() - && !InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L}) - && !(InventoryUtil.a_class_1792(new Object[]{36931329843449L}) instanceof AxeItem)) { + public void onFrame(FrameEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (!AutoObbyCrystal.sequenceActive) { + if (!this.stopOnBlockBreak.getValue() || mc.crosshairTarget == null || mc.crosshairTarget.getType() != Type.BLOCK || !mc.options.attackKey.isPressed()) { + if (this.mode.getValue().equals("Players")) { + if (this.weaponOnly.getValue() + && !InventoryUtil.isSword(mc.player.getMainHandStack()) + && !(InventoryUtil.getHeldItem() instanceof AxeItem)) { return; } - if ((Boolean)this.l.getValue() && !b.options.attackKey.isPressed()) { + if (this.requireLeftClick.getValue() && !mc.options.attackKey.isPressed()) { return; } } - if (((String)this.a.getValue()).equals("Crystals")) { - if ((Boolean)this.k.getValue() && !InventoryUtil.l(new Object[]{Items.END_CRYSTAL, 65539821781598L})) { + if (this.mode.getValue().equals("Crystals")) { + if (this.crystalOnly.getValue() && !InventoryUtil.isHolding(Items.END_CRYSTAL)) { return; } - if ((Boolean)this.m.getValue() && !b.options.useKey.isPressed()) { + if (this.requireRightClick.getValue() && !mc.options.useKey.isPressed()) { return; } } - Entity var27 = this.w; - if (this.w != null) { - if (!this.w.isAlive()) { - this.w = null; + Entity previousTarget = this.currentTarget; + if (this.currentTarget != null) { + if (!this.currentTarget.isAlive()) { + this.currentTarget = null; } else { - Vec3d var28 = this.w.getEyePos(); - if (Math.sqrt(b.player.squaredDistanceTo(var28.x, var28.y, var28.z)) > ((Float)this.e.getValue()).floatValue()) { - this.w = null; + Vec3d targetEyePos = this.currentTarget.getEyePos(); + if (Math.sqrt(mc.player.squaredDistanceTo(targetEyePos.x, targetEyePos.y, targetEyePos.z)) > this.range.getValue().floatValue()) { + this.currentTarget = null; } else { - if ((Float)this.d.getValue() < 360.0F) { - RenderBatch var29 = WorldUtil.a_RenderBatch_(new Object[]{var28, 6563042098863L}); - RenderBatch var10000 = new RenderBatch(b.player.getYaw(), b.player.getPitch()); - float var10002 = (Float)this.d.getValue(); - Object[] var10005 = new Object[]{null, null, null, 5238195483605L}; - var10005[2] = var10002; - var10005[1] = var29; - var10005[0] = var10000; - if (!WorldUtil.f(var10005)) { - this.w = null; + if (this.fov.getValue() < 360.0F) { + Rotation rotationToTarget = RotationUtil.getRotationTo(targetEyePos); + if (!RotationUtil.isWithinAngle(new Rotation(mc.player.getYaw(), mc.player.getPitch()), rotationToTarget, this.fov.getValue())) { + this.currentTarget = null; } } - if (this.w != null && !(Boolean)this.g.getValue() && !b.player.canSee(this.w)) { - this.w = null; + if (this.currentTarget != null && !this.throughWalls.getValue() && !mc.player.canSee(this.currentTarget)) { + this.currentTarget = null; } } } } - if (!(Boolean)this.f.getValue() || this.w == null) { - this.w = this.a(new Object[]{116016010037847L}); + if (!this.stickyTargeting.getValue() || this.currentTarget == null) { + this.currentTarget = this.findTarget(); } - if (this.w == null || !this.w.equals(var27)) { - this.x.a_void_____________________(new Object[]{93540861878173L}); - float var10001 = (Float)this.n.getValue(); - Object[] var10006 = new Object[]{null, null, 29524726012237L}; - var10006[1] = 1.25F; - var10006[0] = 0.75F; - this.y = var10001 * RenderUtil5.a(var10006); - this.A = 0.0F; - this.B = 0.0F; + if (this.currentTarget == null || !this.currentTarget.equals(previousTarget)) { + this.reactionTimer.reset(); + float baseDelay = this.reactionDelay.getValue(); + this.rolledReactionDelay = baseDelay * RandomUtil.randomFloat(0.75F, 1.25F); + this.smoothedYawDelta = 0.0F; + this.smoothedPitchDelta = 0.0F; } - if ((Boolean)this.h.getValue()) { - double var44 = this.z[0]; - double var30 = this.z[1]; - this.z[0] = b.mouse.getX(); - this.z[1] = b.mouse.getY(); - if (var44 == this.z[0] && var30 == this.z[1]) { + if (this.onlyOnRotate.getValue()) { + double lastMouseX = this.lastMousePos[0]; + double lastMouseY = this.lastMousePos[1]; + this.lastMousePos[0] = mc.mouse.getX(); + this.lastMousePos[1] = mc.mouse.getY(); + if (lastMouseX == this.lastMousePos[0] && lastMouseY == this.lastMousePos[1]) { return; } } - RenderHelper27 var52 = this.x; - float var55 = this.y; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var55; - if (var52.a(var10004)) { - if (!(Boolean)this.v.getValue() - || this.w == null - || b.crosshairTarget == null - || b.crosshairTarget.getType() != Type.ENTITY - || !((EntityHitResult)b.crosshairTarget).getEntity().equals(this.w)) { - if (this.w != null) { - Vec3d var45 = this.w.getEyePos(); - if (this.w instanceof EndCrystalEntity) { - var45 = PositionUtil.a(new Object[]{this.w, 67736483458412L}); + if (this.reactionTimer.hasElapsed(this.rolledReactionDelay)) { + if (!this.stopOnHitbox.getValue() + || this.currentTarget == null + || mc.crosshairTarget == null + || mc.crosshairTarget.getType() != Type.ENTITY + || !((EntityHitResult)mc.crosshairTarget).getEntity().equals(this.currentTarget)) { + if (this.currentTarget != null) { + Vec3d aimPos = this.currentTarget.getEyePos(); + if (this.currentTarget instanceof EndCrystalEntity) { + aimPos = PositionUtil.getEntityPos(this.currentTarget); } - Vec3d var46 = new Vec3d(this.w.getX() - this.w.lastX, this.w.getY() - this.w.lastY, this.w.getZ() - this.w.lastZ) - .multiply(((Float)this.t.getValue()).floatValue()); - if ((Boolean)this.s.getValue() && ((String)this.a.getValue()).equals("Players")) { - var45 = var45.add(var46); + Vec3d predictionOffset = new Vec3d(this.currentTarget.getX() - this.currentTarget.lastX, this.currentTarget.getY() - this.currentTarget.lastY, this.currentTarget.getZ() - this.currentTarget.lastZ) + .multiply(this.predictMultiply.getValue().floatValue()); + if (this.predictMovement.getValue() && this.mode.getValue().equals("Players")) { + aimPos = aimPos.add(predictionOffset); } - RenderBatch var47 = WorldUtil.a_RenderBatch_(new Object[]{var45, 6563042098863L}); - float var31 = var47.a(new Object[0]) - b.player.getYaw(); - float var32 = var47.b(new Object[0]) - b.player.getPitch(); + Rotation targetRotation = RotationUtil.getRotationTo(aimPos); + float yawDelta = targetRotation.getYaw() - mc.player.getYaw(); + float pitchDelta = targetRotation.getPitch() - mc.player.getPitch(); - while (var31 > 180.0F) { - var31 -= 360.0F; + while (yawDelta > 180.0F) { + yawDelta -= 360.0F; } - while (var31 < -180.0F) { - var31 += 360.0F; + while (yawDelta < -180.0F) { + yawDelta += 360.0F; } - if (!((Float)this.d.getValue() < 360.0F) - || !(Math.abs(var31) > (Float)this.d.getValue() / 2.0F) && !(Math.abs(var32) > (Float)this.d.getValue() / 2.0F)) { - float var33 = Math.max(b.getCurrentFps(), 1); - float var34 = (Float)this.o.getValue() * 2.0F / var33; - float var58 = (Float)this.p.getValue() / 100.0F; - Object[] var61 = new Object[]{null, null, 29524726012237L}; - var61[1] = var58; - var61[0] = 0.0F; - float var35 = 1.0F - RenderUtil5.a(var61) * 0.3F; - var34 *= var35; - float var36 = Math.min((Float)this.o.getValue() / 100.0F * 0.15F, 1.0F); - if ((Boolean)this.q.getValue()) { - float var37 = (Float)this.r.getValue() / 100.0F; - float var38 = Math.max(0.02F, 1.0F - var37); - var36 = Math.max(0.005F, var38 * 0.18F); - var34 *= var38; + if (!(this.fov.getValue() < 360.0F) + || !(Math.abs(yawDelta) > this.fov.getValue() / 2.0F) && !(Math.abs(pitchDelta) > this.fov.getValue() / 2.0F)) { + float fps = Math.max(mc.getCurrentFps(), 1); + float maxStep = this.speed.getValue() * 2.0F / fps; + float jitterFactor = 1.0F - RandomUtil.randomFloat(0.0F, this.randomness.getValue() / 100.0F) * 0.3F; + maxStep *= jitterFactor; + float smoothingFactor = Math.min(this.speed.getValue() / 100.0F * 0.15F, 1.0F); + if (this.smoothen.getValue()) { + float glideFactor = Math.max(0.02F, 1.0F - (this.smoothness.getValue() / 100.0F)); + smoothingFactor = Math.max(0.005F, glideFactor * 0.18F); + maxStep *= glideFactor; } - this.A = this.A + (var31 - this.A) * var36; - this.B = this.B + (var32 - this.B) * var36; - boolean var49 = ((String)this.a.getValue()).equals("Crystals") && (Boolean)this.u.getValue(); - if (!var49) { - float var50 = Math.min(Math.abs(this.A), var34) * Math.signum(this.A); - if (Math.abs(var31) <= var34) { - b.player.setYaw(var47.a(new Object[0])); + this.smoothedYawDelta = this.smoothedYawDelta + (yawDelta - this.smoothedYawDelta) * smoothingFactor; + this.smoothedPitchDelta = this.smoothedPitchDelta + (pitchDelta - this.smoothedPitchDelta) * smoothingFactor; + if (!(this.mode.getValue().equals("Crystals") && this.verticalOnly.getValue())) { + float yawStep = Math.min(Math.abs(this.smoothedYawDelta), maxStep) * Math.signum(this.smoothedYawDelta); + if (Math.abs(yawDelta) <= maxStep) { + mc.player.setYaw(targetRotation.getYaw()); } else { - b.player.setYaw(b.player.getYaw() + var50); + mc.player.setYaw(mc.player.getYaw() + yawStep); } } - Box var51 = this.w.getBoundingBox(); - float var53 = (float)(var51.minX + (var51.maxX - var51.minX) / 2.0); - var55 = (float)(var51.minY + var46.getY()); - var58 = (float)(var51.minZ + (var51.maxZ - var51.minZ) / 2.0); - var61 = new Object[]{null, null, null, 5229932684601L}; - var61[2] = var58; - var61[1] = var55; - var61[0] = var53; - RenderBatch var39 = WorldUtil.b_RenderBatch_____________(var61); - float var54 = (float)(var51.minX + (var51.maxX - var51.minX) / 2.0); - var55 = (float)(var51.maxY + var46.getY()); - var58 = (float)(var51.minZ + (var51.maxZ - var51.minZ) / 2.0); - var61 = new Object[]{null, null, null, 5229932684601L}; - var61[2] = var58; - var61[1] = var55; - var61[0] = var54; - RenderBatch var40 = WorldUtil.b_RenderBatch_____________(var61); - float var41 = var39.b(new Object[0]); - float var42 = var40.b(new Object[0]); - if (b.player.getPitch() > var41 || b.player.getPitch() < var42) { - float var43 = Math.min(Math.abs(this.B), var34) * Math.signum(this.B); - if (Math.abs(var32) <= var34) { - b.player.setPitch(var47.b(new Object[0])); + Box targetBox = this.currentTarget.getBoundingBox(); + Rotation bottomRotation = RotationUtil.getRotationToPoint((float)(targetBox.minX + (targetBox.maxX - targetBox.minX) / 2.0), (float)(targetBox.minY + predictionOffset.getY()), (float)(targetBox.minZ + (targetBox.maxZ - targetBox.minZ) / 2.0)); + Rotation topRotation = RotationUtil.getRotationToPoint((float)(targetBox.minX + (targetBox.maxX - targetBox.minX) / 2.0), (float)(targetBox.maxY + predictionOffset.getY()), (float)(targetBox.minZ + (targetBox.maxZ - targetBox.minZ) / 2.0)); + float bottomPitch = bottomRotation.getPitch(); + float topPitch = topRotation.getPitch(); + if (mc.player.getPitch() > bottomPitch || mc.player.getPitch() < topPitch) { + float pitchStep = Math.min(Math.abs(this.smoothedPitchDelta), maxStep) * Math.signum(this.smoothedPitchDelta); + if (Math.abs(pitchDelta) <= maxStep) { + mc.player.setPitch(targetRotation.getPitch()); } else { - b.player.setPitch(b.player.getPitch() + var43); + mc.player.setPitch(mc.player.getPitch() + pitchStep); } } } @@ -260,59 +224,35 @@ public class AimAssist extends Module { } } - private Entity a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 60361130766012L ^ var2; - long var4 = var2 ^ 81331214648673L; - long var6 = var2 ^ 121017117675732L; - long var8 = var2 ^ 132678000133337L; - long var10 = var2 ^ 87815776288296L; - long var12 = var2 ^ 100752988510014L; - long var14 = var2 ^ 100744071430610L; - String var17 = (String)this.c.getValue(); - Entity var18 = null; - double var19 = Double.MAX_VALUE; - Event.b(); - RenderBatch var21 = new RenderBatch(b.player.getYaw(), b.player.getPitch()); + private Entity findTarget() { + String priority = this.target.getValue(); + Entity bestTarget = null; + double bestScore = Double.MAX_VALUE; + Rotation playerRotation = new Rotation(mc.player.getYaw(), mc.player.getPitch()); - for (Entity var23 : b.world.getEntities()) { - if (var23.isAlive()) { - boolean var24 = CombatUtil.a(new Object[]{var23, var10}); - if ((var24 || var23 instanceof EndCrystalEntity) - && (!var24 || ((String)this.a.getValue()).equals("Players")) - && (!(var23 instanceof EndCrystalEntity) || ((String)this.a.getValue()).equals("Crystals")) - && Prestige.i.a_boolean_(new Object[]{var23, var6}) - && (!(var23 instanceof PlayerEntity) || !Prestige.g.a(new Object[]{var23.getName().getString(), var4}))) { - Vec3d var25 = var23.getEyePos(); - double var26 = b.player.squaredDistanceTo(var25.x, var25.y, var25.z); - if (!(Math.sqrt(var26) > ((Float)this.e.getValue()).floatValue())) { - float var10000 = (float)var25.x; - float var10001 = (float)var25.y; - float var10002 = (float)var25.z; - Object[] var10005 = new Object[]{null, null, null, var14}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var10000; - RenderBatch var28 = WorldUtil.b_RenderBatch_____________(var10005); - if ((Float)this.d.getValue() < 360.0F) { - var10002 = (Float)this.d.getValue(); - var10005 = new Object[]{null, null, null, var12}; - var10005[2] = var10002; - var10005[1] = var28; - var10005[0] = var21; - if (!WorldUtil.f(var10005)) { + for (Entity entity : mc.world.getEntities()) { + if (entity.isAlive()) { + boolean isPlayer = TargetSelector.isPlayer(entity); + if ((isPlayer || entity instanceof EndCrystalEntity) + && (!isPlayer || this.mode.getValue().equals("Players")) + && (!(entity instanceof EndCrystalEntity) || this.mode.getValue().equals("Crystals")) + && Prestige.botFilter.isValidTarget(entity) + && (!(entity instanceof PlayerEntity) || !Prestige.friendManager.isFriend(entity.getName().getString()))) { + Vec3d eyePos = entity.getEyePos(); + double distanceSq = mc.player.squaredDistanceTo(eyePos.x, eyePos.y, eyePos.z); + if (!(Math.sqrt(distanceSq) > this.range.getValue().floatValue())) { + Rotation rotation = RotationUtil.getRotationToPoint((float)eyePos.x, (float)eyePos.y, (float)eyePos.z); + if (this.fov.getValue() < 360.0F) { + if (!RotationUtil.isWithinAngle(playerRotation, rotation, this.fov.getValue())) { continue; } } - if ((Boolean)this.g.getValue() || b.player.canSee(var23)) { - Object[] var10007 = new Object[]{null, null, var28, var17, var8}; - var10007[1] = var26; - var10007[0] = var23; - double var29 = this.a_double(var10007); - if (var29 < var19) { - var18 = var23; - var19 = var29; + if (this.throughWalls.getValue() || mc.player.canSee(entity)) { + double score = this.scoreTarget(entity, distanceSq, rotation, priority); + if (score < bestScore) { + bestTarget = entity; + bestScore = score; } } } @@ -320,104 +260,28 @@ public class AimAssist extends Module { } } - return var18; + return bestTarget; } - private double a_double(Object[] var1) { - Entity var3 = (Entity)var1[0]; - double var4 = (Double)var1[1]; - RenderBatch var2 = (RenderBatch)var1[2]; - String var6 = (String)var1[3]; - long var7 = (Long)var1[4]; - var7 = 60361130766012L ^ var7; - long var9 = var7 ^ 106486827641636L; - Event.b(); - switch (var6) { + private double scoreTarget(Entity entity, double distanceSq, Rotation rotation, String priority) { + switch (priority) { case "Crosshair": - return WorldUtil.a(new Object[]{var2, var9}); + return RotationUtil.getAngleFromPlayerRotation(rotation); case "Lowest HP": - if (var3 instanceof PlayerEntity var16) { - return (var16.getHealth() + var16.getAbsorptionAmount()) * 1000.0 + var4; + if (entity instanceof PlayerEntity hpTarget) { + return (hpTarget.getHealth() + hpTarget.getAbsorptionAmount()) * 1000.0 + distanceSq; } - return var4; + return distanceSq; case "Lowest Armor": - if (var3 instanceof PlayerEntity var14) { - return var14.getArmor() * 1000.0 + var4; + if (entity instanceof PlayerEntity armorTarget) { + return armorTarget.getArmor() * 1000.0 + distanceSq; } - return var4; + return distanceSq; case "Closest": default: - return var4; - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + return distanceSq; } } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AnchorExploder.java b/src/main/java/dev/zprestige/prestige/module/combat/AnchorExploder.java index 73eb9ff..283627e 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AnchorExploder.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AnchorExploder.java @@ -10,32 +10,28 @@ import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.inventory.ArmorUtil; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.inventory.AnchorUseGuard; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.math.MathUtil3; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.math.BlockChangeTracker; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.world.PositionUtil; import dev.zprestige.prestige.world.RaycastUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.util.ArrayList; import java.util.Set; import java.util.function.Predicate; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; @@ -44,125 +40,117 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; -public class AnchorExploder extends Module implements RenderContract3 { - private BoolSetting d; - private RangeSetting a; - private BoolSetting c; - private EnumSetting e; - private BoolSetting f; - private BoolSetting g; - private EnumSetting h; - private IntSetting i; - private BoolSetting j; - private BoolSetting k; - private BoolSetting l; - private MultiSetting m; - private FloatSetting n; - public static boolean o; - private RenderHelper27 p = new RenderHelper27(26293358099357L); - private ArrayList q = new ArrayList(); - private int r = -1; - private int s = -1; +public class AnchorExploder extends Module implements RotationProvider { + private BoolSetting onlyOwnAnchors; + private RangeSetting delay; + private BoolSetting glowstone; + private EnumSetting glowstoneSwap; + private BoolSetting glowstoneSwapBack; + private BoolSetting explode; + private EnumSetting explodeSwap; + private IntSetting explodeSlot; + private BoolSetting explodeSwapBack; + private BoolSetting explodeDamageTick; + private BoolSetting disableAfterExplode; + private MultiSetting silentAim; + private FloatSetting silentAimFov; + public static boolean lookingAtAnchor; + private StopWatch actionTimer = new StopWatch(); + private ArrayList ownAnchors = new ArrayList(); + private int glowstoneSwapBackSlot = -1; + private int explodeSwapBackSlot = -1; public AnchorExploder() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.e.setVisibility_EnumSetting(new Object[]{(Predicate)lpL94_0 -> (Boolean)this.c.getValue(), 90319707064974L}); - this.j - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL90_0 -> (Boolean)this.g.getValue() && ((String)this.h.getValue()).equals("Swap"), 73196168581295L} + this.glowstoneSwap.visibleWhen((Predicate)ignored -> this.glowstone.getValue()); + this.explodeSwapBack + .visibleWhen( + (Predicate)ignored -> this.explode.getValue() && this.explodeSwap.getValue().equals("Swap") ); - this.k.setVisibility_BoolSetting(new Object[]{(Predicate)lpL89_0 -> (Boolean)this.g.getValue(), 73196168581295L}); - this.i.setVisibility_IntSetting(new Object[]{(Predicate)lpL91_0 -> (Boolean)this.g.getValue(), 98265949679296L}); - this.n - .setVisibility_FloatSetting( - new Object[]{ - (Predicate)lpL88_0 -> this.m.isSelected(new Object[]{"Glowstone", 47850572908778L}) - || this.m.isSelected(new Object[]{"Explode", 47850572908778L}), - 35046756052036L - } + this.explodeDamageTick.visibleWhen((Predicate)ignored -> this.explode.getValue()); + this.explodeSlot.visibleWhen((Predicate)ignored -> this.explode.getValue()); + this.silentAimFov + .visibleWhen( + (Predicate)ignored -> this.silentAim.isSelected("Glowstone") + || this.silentAim.isSelected("Explode") ); - this.f - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL93_0 -> (Boolean)this.c.getValue() && ((String)this.e.getValue()).equals("Swap"), 73196168581295L} + this.glowstoneSwapBack + .visibleWhen( + (Predicate)ignored -> this.glowstone.getValue() && this.glowstoneSwap.getValue().equals("Swap") ); - this.h.setVisibility_EnumSetting(new Object[]{(Predicate)lpL92_0 -> (Boolean)this.g.getValue(), 90319707064974L}); + this.explodeSwap.visibleWhen((Predicate)ignored -> this.explode.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public boolean b(Object[] var1) { - return Boolean.FALSE.equals(this.l.getValue()); + public boolean isPersistent() { + return Boolean.FALSE.equals(this.disableAfterExplode.getValue()); } @Subscribe - public void a(TickEvent5 var1) { - if (this.getKey(new Object[]{13012393635966L}) == 9998 && b.player.getMainHandStack().getItem().equals(Blocks.GLOWSTONE.asItem())) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (this.getKey() == 9998 && mc.player.getMainHandStack().getItem().equals(Blocks.GLOWSTONE.asItem())) { + event.cancel(); } else { - if (ArmorUtil.a(new Object[]{12659099461385L})) { - var1.a_void_____(new Object[0]); + if (AnchorUseGuard.shouldCancelItemUse()) { + event.cancel(); } } } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - this.q.clear(); - this.r = -1; - this.s = -1; - o = false; - Prestige.o.f(new Object[]{this, var4}); + public void onDisable() { + this.ownAnchors.clear(); + this.glowstoneSwapBackSlot = -1; + this.explodeSwapBackSlot = -1; + lookingAtAnchor = false; + Prestige.silentRotationManager.removeRotationProvider(this); } @Subscribe - public void a(TickEvent3 var1) { - this.q.clear(); + public void onGameJoin(GameJoinEvent event) { + this.ownAnchors.clear(); } @Subscribe - public void a(TickEvent19 var1) { - if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem()) { - if (!Prestige.o.d_boolean______(new Object[0])) { - if (!AutoObbyCrystal.R && !AnchorPearlCatch.C) { - if (!SafeAnchor.d(new Object[0])) { - if (this.p.b(new Object[]{this.a, 89714527855213L})) { - this.p.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); - if ((Boolean)this.d.getValue()) { - this.q.removeIf(lpL87_0 -> b.world.getBlockState(((net.minecraft.util.math.BlockPos)lpL87_0)).getBlock() != Blocks.RESPAWN_ANCHOR); + public void onClientTick(ClientTickEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem()) { + if (!Prestige.silentRotationManager.hasActedThisTick()) { + if (!AutoObbyCrystal.sequenceActive && !AnchorPearlCatch.active) { + if (!SafeAnchor.isCoverPending()) { + if (this.actionTimer.hasElapsedRandom(this.delay)) { + this.actionTimer.reset(); + this.delay.reroll(); + if (this.onlyOwnAnchors.getValue()) { + this.ownAnchors.removeIf(anchorPos -> mc.world.getBlockState(((net.minecraft.util.math.BlockPos)anchorPos)).getBlock() != Blocks.RESPAWN_ANCHOR); } - if (b.crosshairTarget instanceof BlockHitResult var21) { - boolean var23 = WorldUtil2.k(new Object[]{var21.getBlockPos(), Blocks.RESPAWN_ANCHOR, 137239425566158L}); - if (var23) { - o = true; - if (MathUtil3.a_boolean_______(new Object[]{var21.getBlockPos(), 44262730353436L}) - || MathUtil3.b_boolean_____(new Object[]{var21.getBlockPos(), 57098141355368L})) { + if (mc.crosshairTarget instanceof BlockHitResult crosshairHit) { + if (BlockUtil.isBlock(crosshairHit.getBlockPos(), Blocks.RESPAWN_ANCHOR)) { + lookingAtAnchor = true; + if (BlockChangeTracker.isRecentlyExploded(crosshairHit.getBlockPos()) + || BlockChangeTracker.isRecentlyPlaced(crosshairHit.getBlockPos())) { return; } - if ((Boolean)this.c.getValue() && this.d(new Object[]{117171810338500L})) { + if (this.glowstone.getValue() && this.tryChargeAnchor()) { return; } - if ((Boolean)this.g.getValue()) { - this.j(new Object[]{69363607833452L}); + if (this.explode.getValue()) { + this.tryExplodeAnchor(); } } else { - o = false; + lookingAtAnchor = false; } } } @@ -173,142 +161,113 @@ public class AnchorExploder extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 85123560351320L; - long var6 = var2 ^ 56466007075447L; - long var8 = var2 ^ 120434008667598L; - long var10 = var2 ^ 110018189354835L; - long var12 = var2 ^ 39587186614724L; - long var14 = var2 ^ 58982489950237L; - long var16 = var2 ^ 71343916077473L; - long var18 = var2 ^ 127616945565159L; - long var20 = var2 ^ 116785209433731L; - long var22 = var2 ^ 7477342050734L; - long var24 = var2 ^ 39291485316836L; - long var26 = var2 ^ 26672500495419L; - long var28 = var2 ^ 75440226304702L; - long var30 = var2 ^ 2116952030326L; - long var32 = var2 ^ 114122501858469L; - long var34 = var2 ^ 136772110525137L; - long var36 = var2 ^ 103998936193343L; - long var38 = var2 ^ 101816702374277L; - long var40 = var2 ^ 90085269546745L; - if (!this.m.isSelected(new Object[]{"Glowstone", var10}) && !this.m.isSelected(new Object[]{"Explode", var10})) { + public Rotation provideRotation() { + if (!this.silentAim.isSelected("Glowstone") && !this.silentAim.isSelected("Explode")) { return null; - } else if (b.player.isUsingItem()) { + } else if (mc.player.isUsingItem()) { return null; - } else if (Prestige.o.d_boolean______(new Object[0])) { + } else if (Prestige.silentRotationManager.hasActedThisTick()) { return null; } else { - boolean var43 = this.m.isSelected(new Object[]{"Glowstone", var10}) && (Boolean)this.c.getValue(); - boolean var44 = this.m.isSelected(new Object[]{"Explode", var10}) && (Boolean)this.g.getValue(); - if (!var43 && !var44) { + boolean silentCharge = this.silentAim.isSelected("Glowstone") && this.glowstone.getValue(); + boolean silentExplode = this.silentAim.isSelected("Explode") && this.explode.getValue(); + if (!silentCharge && !silentExplode) { return null; - } else if (SafeAnchor.d(new Object[0])) { + } else if (SafeAnchor.isCoverPending()) { return null; - } else if (AnchorPearlCatch.C) { + } else if (AnchorPearlCatch.active) { return null; - } else if (b.crosshairTarget instanceof BlockHitResult var45 && WorldUtil2.k(new Object[]{var45.getBlockPos(), Blocks.RESPAWN_ANCHOR, var6})) { + } else if (mc.crosshairTarget instanceof BlockHitResult crosshairHit && BlockUtil.isBlock(crosshairHit.getBlockPos(), Blocks.RESPAWN_ANCHOR)) { return null; } else { - RenderBatch var61 = null; - boolean var62 = false; - double var47 = Double.MAX_VALUE; - Object[] var10004 = new Object[]{ - null, (Predicate)lpL86_0 -> WorldUtil2.b(new Object[]{((net.minecraft.util.math.BlockPos)lpL86_0), Blocks.RESPAWN_ANCHOR, 91415361137757L}), var28 - }; - var10004[0] = 5; + Rotation bestRotation = null; + boolean bestNeedsCharge = false; + double bestDistance = Double.MAX_VALUE; - for (BlockPos var50 : (Iterable)(WorldUtil2.a_List___(var10004))) { - if (!(PositionUtil.b(new Object[]{var12}).distanceTo(var50.toCenterPos()) > InventoryUtil2.b_float_____(new Object[]{var36})) - && (!(Boolean)this.d.getValue() || this.q.contains(var50))) { - int var51 = WorldUtil2.a_int______________________________(new Object[]{var50, var30}); - boolean var52 = var43 && var51 == 0; - boolean var53 = var44 && var51 > 0; - if (var52 || var53) { - Vec3d var54 = RaycastUtil.b(new Object[]{var50, var4}); - if (var54 == null) { - var54 = var50.toCenterPos(); + for (BlockPos anchorPos : (Iterable)(BlockUtil.getBlocksInRadius(5, (Predicate)pos -> BlockUtil.isOf(pos, Blocks.RESPAWN_ANCHOR)))) { + if (!(PositionUtil.getPlayerPos().distanceTo(anchorPos.toCenterPos()) > PlayerInteractions.getReachDistance()) + && (!this.onlyOwnAnchors.getValue() || this.ownAnchors.contains(anchorPos))) { + int charges = BlockUtil.getAnchorCharges(anchorPos); + boolean needsCharge = silentCharge && charges == 0; + boolean canExplode = silentExplode && charges > 0; + if (needsCharge || canExplode) { + Vec3d aimPoint = RaycastUtil.getVisibleTopPoint(anchorPos); + if (aimPoint == null) { + aimPoint = anchorPos.toCenterPos(); } - RenderBatch var55 = Prestige.o.a_RenderBatch(new Object[]{var54, var38}); - var55 = WorldUtil.d_RenderBatch(new Object[]{var55, var54, var22}); - float var56 = var55.a(new Object[0]) - b.player.getYaw(); - if (!(var56 > (Float)this.n.getValue()) - && !(var56 < -(Float)this.n.getValue()) - && WorldUtil.a_class_239_(new Object[]{var55, var20}) instanceof BlockHitResult var58 - && var58.getBlockPos().equals(var50)) { - double var59 = PositionUtil.b(new Object[]{var12}).distanceTo(var50.toCenterPos()); - if (var59 < var47) { - var47 = var59; - var61 = var55; - var62 = var52; + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + rotation = RotationUtil.addRandomJitter(rotation, aimPoint); + float yawDelta = rotation.getYaw() - mc.player.getYaw(); + if (!(yawDelta > this.silentAimFov.getValue()) + && !(yawDelta < -this.silentAimFov.getValue()) + && RotationUtil.raycastRotation(rotation) instanceof BlockHitResult rayHit + && rayHit.getBlockPos().equals(anchorPos)) { + double distance = PositionUtil.getPlayerPos().distanceTo(anchorPos.toCenterPos()); + if (distance < bestDistance) { + bestDistance = distance; + bestRotation = rotation; + bestNeedsCharge = needsCharge; } } } } } - if (var61 == null) { + if (bestRotation == null) { return null; - } else if (var61.a_boolean________________________________________(new Object[0])) { - return var61; - } else if (WorldUtil.a_class_239_(new Object[]{var61, var20}) instanceof BlockHitResult var64) { - if (!MathUtil3.a_boolean_______(new Object[]{var64.getBlockPos(), var32}) - && !MathUtil3.b_boolean_____(new Object[]{var64.getBlockPos(), var34})) { - if (var62) { - String var65 = (String)this.e.getValue(); - switch (var65) { + } else if (bestRotation.isClamped()) { + return bestRotation; + } else if (RotationUtil.raycastRotation(bestRotation) instanceof BlockHitResult bestHit) { + if (!BlockChangeTracker.isRecentlyExploded(bestHit.getBlockPos()) + && !BlockChangeTracker.isRecentlyPlaced(bestHit.getBlockPos())) { + if (bestNeedsCharge) { + switch (this.glowstoneSwap.getValue()) { case "None": - if (!InventoryUtil.l(new Object[]{Items.GLOWSTONE, var18})) { + if (!InventoryUtil.isHolding(Items.GLOWSTONE)) { return null; } break; case "Swap": - if ((Boolean)this.f.getValue()) { - this.r = InventoryUtil.a_int_____(new Object[]{var14}); + if (this.glowstoneSwapBack.getValue()) { + this.glowstoneSwapBackSlot = InventoryUtil.getSelectedSlot(); } - if (!InventoryUtil.i(new Object[]{Blocks.GLOWSTONE, var40})) { + if (!InventoryUtil.switchToBlock(Blocks.GLOWSTONE)) { return null; } } - InventoryUtil2.a(new Object[]{var64, var26}); + PlayerInteractions.interactBlock(bestHit); } else { - String var66 = (String)this.h.getValue(); - switch (var66) { + switch (this.explodeSwap.getValue()) { case "None": - if ((Integer)this.i.getValue() - 1 != InventoryUtil.a_int_____(new Object[]{var14})) { + if (this.explodeSlot.getValue() - 1 != InventoryUtil.getSelectedSlot()) { return null; } break; case "Swap": - if ((Boolean)this.j.getValue()) { - this.s = InventoryUtil.a_int_____(new Object[]{var14}); + if (this.explodeSwapBack.getValue()) { + this.explodeSwapBackSlot = InventoryUtil.getSelectedSlot(); } - int var10000 = (Integer)this.i.getValue() - 1; - Object[] var10003 = new Object[]{null, var8}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(this.explodeSlot.getValue() - 1); } - if ((Boolean)this.k.getValue()) { - PlayerEntity var67 = CombatUtil.a_class_1657(new Object[]{var16}); - if (var67 != null && b.player.distanceTo(var67) < 10.0F && var67.hurtTime != 0) { + if (this.explodeDamageTick.getValue()) { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null && mc.player.distanceTo(enemy) < 10.0F && enemy.hurtTime != 0) { return null; } } - InventoryUtil2.a(new Object[]{var64, var26}); - MathUtil3.b(new Object[]{var64.getBlockPos(), var24}); + PlayerInteractions.interactBlock(bestHit); + BlockChangeTracker.markExplosion(bestHit.getBlockPos()); } - return var61; + return bestRotation; } else { - return var61; + return bestRotation; } } else { return null; @@ -317,129 +276,97 @@ public class AnchorExploder extends Module implements RenderContract3 { } } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 69590137679535L ^ var2; - long var4 = var2 ^ 2281245873129L; - long var6 = var2 ^ 45123135630757L; - long var8 = var2 ^ 30502524238756L; - long var10 = var2 ^ 131776886174236L; - long var12 = var2 ^ 52733179580367L; - long var14 = var2 ^ 121221870414389L; - long var16 = var2 ^ 83286199034155L; - if (this.r != -1) { - int var10000 = this.r; - Object[] var10003 = new Object[]{null, var10}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - this.r = -1; + private boolean tryChargeAnchor() { + if (this.glowstoneSwapBackSlot != -1) { + InventoryUtil.selectSlot(this.glowstoneSwapBackSlot); + this.glowstoneSwapBackSlot = -1; return false; - } else if (!(b.crosshairTarget instanceof BlockHitResult var19)) { + } else if (!(mc.crosshairTarget instanceof BlockHitResult crosshairHit)) { return false; - } else if (!b.player.isSneaking() - && WorldUtil2.k(new Object[]{var19.getBlockPos(), Blocks.RESPAWN_ANCHOR, var6}) - && (!(Boolean)this.d.getValue() || this.q.contains(var19.getBlockPos())) - && WorldUtil2.a_int______________________________(new Object[]{var19.getBlockPos(), var8}) == 0) { - String var23 = (String)this.e.getValue(); - switch (var23) { + } else if (!mc.player.isSneaking() + && BlockUtil.isBlock(crosshairHit.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && (!this.onlyOwnAnchors.getValue() || this.ownAnchors.contains(crosshairHit.getBlockPos())) + && BlockUtil.getAnchorCharges(crosshairHit.getBlockPos()) == 0) { + switch (this.glowstoneSwap.getValue()) { case "None": - if (!InventoryUtil.l(new Object[]{Items.GLOWSTONE, var14})) { + if (!InventoryUtil.isHolding(Items.GLOWSTONE)) { return false; } break; case "Swap": - if ((Boolean)this.f.getValue()) { - this.r = InventoryUtil.a_int_____(new Object[]{var12}); + if (this.glowstoneSwapBack.getValue()) { + this.glowstoneSwapBackSlot = InventoryUtil.getSelectedSlot(); } - if (!InventoryUtil.i(new Object[]{Blocks.GLOWSTONE, var16})) { + if (!InventoryUtil.switchToBlock(Blocks.GLOWSTONE)) { return false; } } - Prestige.o.b(new Object[0]); - InventoryUtil2.a(new Object[]{var19, var4}); + Prestige.silentRotationManager.clearRotation(); + PlayerInteractions.interactBlock(crosshairHit); return true; } else { return false; } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 69590137679535L ^ var2; - long var4 = var2 ^ 119200410741918L; - long var6 = var2 ^ 115383570100847L; - long var8 = var2 ^ 96310041452097L; - long var10 = var2 ^ 136952639578125L; - long var12 = var2 ^ 86007341495820L; - long var14 = var2 ^ 37784897978292L; - long var16 = var2 ^ 16728056896475L; - long var18 = var2 ^ 134626546369127L; - if ((Boolean)this.k.getValue()) { - PlayerEntity var21 = CombatUtil.a_class_1657(new Object[]{var16}); - if (var21 != null && b.player.distanceTo(var21) < 10.0F && var21.hurtTime != 0) { + private void tryExplodeAnchor() { + if (this.explodeDamageTick.getValue()) { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null && mc.player.distanceTo(enemy) < 10.0F && enemy.hurtTime != 0) { return; } } - if (this.s != -1) { - int var27 = this.s; - Object[] var28 = new Object[]{null, var14}; - var28[0] = var27; - InventoryUtil.a_void________(var28); - this.s = -1; - } else if (b.crosshairTarget instanceof BlockHitResult var25) { - if (!b.player.isSneaking() - && WorldUtil2.k(new Object[]{var25.getBlockPos(), Blocks.RESPAWN_ANCHOR, var10}) - && (!(Boolean)this.d.getValue() || this.q.contains(var25.getBlockPos())) - && WorldUtil2.a_int______________________________(new Object[]{var25.getBlockPos(), var12}) != 0) { - String var26 = (String)this.h.getValue(); - switch (var26) { + if (this.explodeSwapBackSlot != -1) { + InventoryUtil.selectSlot(this.explodeSwapBackSlot); + this.explodeSwapBackSlot = -1; + } else if (mc.crosshairTarget instanceof BlockHitResult crosshairHit) { + if (!mc.player.isSneaking() + && BlockUtil.isBlock(crosshairHit.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && (!this.onlyOwnAnchors.getValue() || this.ownAnchors.contains(crosshairHit.getBlockPos())) + && BlockUtil.getAnchorCharges(crosshairHit.getBlockPos()) != 0) { + switch (this.explodeSwap.getValue()) { case "None": - if ((Integer)this.i.getValue() - 1 != InventoryUtil.a_int_____(new Object[]{var18})) { + if (this.explodeSlot.getValue() - 1 != InventoryUtil.getSelectedSlot()) { return; } break; case "Swap": - if ((Boolean)this.j.getValue()) { - this.s = InventoryUtil.a_int_____(new Object[]{var18}); + if (this.explodeSwapBack.getValue()) { + this.explodeSwapBackSlot = InventoryUtil.getSelectedSlot(); } - int var10000 = (Integer)this.i.getValue() - 1; - Object[] var10003 = new Object[]{null, var14}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(this.explodeSlot.getValue() - 1); } - Prestige.o.b(new Object[0]); - InventoryUtil2.a(new Object[]{var25, var8}); - MathUtil3.b(new Object[]{var25.getBlockPos(), var4}); - if ((Boolean)this.l.getValue()) { - this.toggle(new Object[]{var6}); + Prestige.silentRotationManager.clearRotation(); + PlayerInteractions.interactBlock(crosshairHit); + BlockChangeTracker.markExplosion(crosshairHit.getBlockPos()); + if (this.disableAfterExplode.getValue()) { + this.toggle(); } } } } @Subscribe - public void a(PacketEvent2 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket var9) { - ItemStack var13 = var9.getHand().equals(Hand.MAIN_HAND) ? b.player.getMainHandStack() : b.player.getOffHandStack(); - if (var13.getItem() == Items.RESPAWN_ANCHOR) { - BlockHitResult var11 = var9.getBlockHitResult(); - BlockPos var12 = var11.getBlockPos().add(var11.getSide().getOffsetX(), var11.getSide().getOffsetY(), var11.getSide().getOffsetZ()); - if ((Boolean)this.d.getValue() && !this.q.contains(var12)) { - this.q + public void onPacketSend(PacketSendEvent event) { + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket interactPacket) { + if ((interactPacket.getHand().equals(Hand.MAIN_HAND) ? mc.player.getMainHandStack() : mc.player.getOffHandStack()).getItem() == Items.RESPAWN_ANCHOR) { + BlockHitResult hitResult = interactPacket.getBlockHitResult(); + BlockPos placePos = hitResult.getBlockPos().add(hitResult.getSide().getOffsetX(), hitResult.getSide().getOffsetY(), hitResult.getSide().getOffsetZ()); + if (this.onlyOwnAnchors.getValue() && !this.ownAnchors.contains(placePos)) { + this.ownAnchors .add( - !WorldUtil2.b(new Object[]{var11.getBlockPos(), Blocks.RESPAWN_ANCHOR, 91415361137757L}) - && !WorldUtil2.b(new Object[]{var11.getBlockPos(), Blocks.FIRE, 91415361137757L}) - && !WorldUtil2.b( - new Object[]{var11.getBlockPos(), WorldUtil2.a_class_2248_(new Object[]{12315318725950L}), 91415361137757L} + !BlockUtil.isOf(hitResult.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && !BlockUtil.isOf(hitResult.getBlockPos(), Blocks.FIRE) + && !BlockUtil.isOf( + hitResult.getBlockPos(), BlockUtil.getShortGrass() ) - ? var12 - : var11.getBlockPos() + ? placePos + : hitResult.getBlockPos() ); } } @@ -447,80 +374,11 @@ public class AnchorExploder extends Module implements RenderContract3 { } @Subscribe - public void a(PacketEvent var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof BlockUpdateS2CPacket var5) { - if (var5.getState() != null && var5.getState().getBlock() != Blocks.RESPAWN_ANCHOR) { - this.q.remove(var5.getPos()); + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof BlockUpdateS2CPacket blockUpdate) { + if (blockUpdate.getState() != null && blockUpdate.getState().getBlock() != Blocks.RESPAWN_ANCHOR) { + this.ownAnchors.remove(blockUpdate.getPos()); } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AnchorMacro.java b/src/main/java/dev/zprestige/prestige/module/combat/AnchorMacro.java index 7bdc7b9..9396478 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AnchorMacro.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AnchorMacro.java @@ -9,24 +9,20 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.hud.ModuleNotificationsElement; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.type.NotificationType; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.BlockUtil; import java.util.ArrayList; import java.util.Set; import java.util.function.Predicate; import net.minecraft.block.Blocks; -import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; @@ -35,81 +31,81 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; public class AnchorMacro extends Module { - private BoolSetting d; - private RangeSetting a; - private BoolSetting c; - private KeybindSetting f; - private EnumSetting e; - private BoolSetting g; - private BoolSetting h; - private EnumSetting i; - private BoolSetting j; - private BoolSetting k; - private BoolSetting l; - private EnumSetting m; - private IntSetting n; - private BoolSetting o; - public static boolean p; - private RenderHelper27 q = new RenderHelper27(26293358099357L); - private boolean r; - private ArrayList s = new ArrayList(); - private ArrayList t = new ArrayList(); - private int u = -1; - private int v = -1; - private int w = -1; + private BoolSetting onlyOwnAnchors; + private RangeSetting delay; + private BoolSetting place; + private KeybindSetting placeBind; + private EnumSetting placeSwap; + private BoolSetting placeSwapBack; + private BoolSetting glowstone; + private EnumSetting glowstoneSwap; + private BoolSetting glowstoneSwapBack; + private BoolSetting onlyOnPlaceBind; + private BoolSetting explode; + private EnumSetting explodeSwap; + private IntSetting explodeSlot; + private BoolSetting explodeSwapBack; + public static boolean acting; + private StopWatch actionTimer = new StopWatch(); + private boolean placedThisPress; + private ArrayList ownAnchors = new ArrayList(); + private ArrayList bindPlacedAnchors = new ArrayList(); + private int placeSwapBackSlot = -1; + private int glowstoneSwapBackSlot = -1; + private int explodeSwapBackSlot = -1; public AnchorMacro() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.n.setVisibility_IntSetting(new Object[]{(Predicate)lpL97_0 -> (Boolean)this.l.getValue(), 98265949679296L}); - this.o - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL96_0 -> (Boolean)this.l.getValue() && ((String)this.m.getValue()).equals("Swap"), 73196168581295L} + this.explodeSlot.visibleWhen((Predicate)ignored -> this.explode.getValue()); + this.explodeSwapBack + .visibleWhen( + (Predicate)ignored -> this.explode.getValue() && this.explodeSwap.getValue().equals("Swap") ); - this.i.setVisibility_EnumSetting(new Object[]{(Predicate)lpL101_0 -> (Boolean)this.h.getValue(), 90319707064974L}); - this.k.setVisibility_BoolSetting(new Object[]{(Predicate)lpL99_0 -> (Boolean)this.h.getValue(), 73196168581295L}); - this.j - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL100_0 -> (Boolean)this.h.getValue() && ((String)this.i.getValue()).equals("Swap"), 73196168581295L} + this.glowstoneSwap.visibleWhen((Predicate)ignored -> this.glowstone.getValue()); + this.onlyOnPlaceBind.visibleWhen((Predicate)ignored -> this.glowstone.getValue()); + this.glowstoneSwapBack + .visibleWhen( + (Predicate)ignored -> this.glowstone.getValue() && this.glowstoneSwap.getValue().equals("Swap") ); - this.m.setVisibility_EnumSetting(new Object[]{(Predicate)lpL98_0 -> (Boolean)this.l.getValue(), 90319707064974L}); - this.f.setVisibility_KeybindSetting(new Object[]{(Predicate)lpL104_0 -> (Boolean)this.c.getValue(), 112715924896781L}); - this.g - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL102_0 -> (Boolean)this.c.getValue() && ((String)this.e.getValue()).equals("Swap"), 73196168581295L} + this.explodeSwap.visibleWhen((Predicate)ignored -> this.explode.getValue()); + this.placeBind.visibleWhen((Predicate)ignored -> this.place.getValue()); + this.placeSwapBack + .visibleWhen( + (Predicate)ignored -> this.place.getValue() && this.placeSwap.getValue().equals("Swap") ); - this.e.setVisibility_EnumSetting(new Object[]{(Predicate)lpL103_0 -> (Boolean)this.c.getValue(), 90319707064974L}); + this.placeSwap.visibleWhen((Predicate)ignored -> this.place.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Subscribe - public void a(TickEvent3 var1) { - this.s.clear(); - this.t.clear(); + public void onGameJoin(GameJoinEvent event) { + this.ownAnchors.clear(); + this.bindPlacedAnchors.clear(); } @Subscribe - public void a(TickEvent19 var1) { - if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem()) { - if (!AutoObbyCrystal.R && !AnchorPearlCatch.C && !Prestige.o.d_boolean______(new Object[0])) { - if (this.q.b(new Object[]{this.a, 89714527855213L})) { - if ((Boolean)this.d.getValue()) { - this.s.removeIf(lpL95_0 -> b.world.getBlockState(((net.minecraft.util.math.BlockPos)lpL95_0)).getBlock() != Blocks.RESPAWN_ANCHOR); + public void onClientTick(ClientTickEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem()) { + if (!AutoObbyCrystal.sequenceActive && !AnchorPearlCatch.active && !Prestige.silentRotationManager.hasActedThisTick()) { + if (this.actionTimer.hasElapsedRandom(this.delay)) { + if (this.onlyOwnAnchors.getValue()) { + this.ownAnchors.removeIf(anchorPos -> mc.world.getBlockState(((net.minecraft.util.math.BlockPos)anchorPos)).getBlock() != Blocks.RESPAWN_ANCHOR); } - this.q.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); - p = true; - if (!(Boolean)this.c.getValue() || !this.d(new Object[]{34842388242754L})) { - if (!(Boolean)this.h.getValue() || !this.e(new Object[]{94313242050293L})) { - if ((Boolean)this.l.getValue()) { - this.j(new Object[]{32886828184658L}); + this.actionTimer.reset(); + this.delay.reroll(); + acting = true; + if (!this.place.getValue() || !this.tryPlaceAnchor()) { + if (!this.glowstone.getValue() || !this.tryChargeAnchor()) { + if (this.explode.getValue()) { + this.tryExplodeAnchor(); } - p = false; + acting = false; } } } @@ -117,97 +113,78 @@ public class AnchorMacro extends Module { } } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 65616062650638L ^ var2; - long var4 = var2 ^ 71530962494024L; - long var6 = var2 ^ 127361578402766L; - long var8 = var2 ^ 116010806500946L; - long var10 = var2 ^ 117078214650755L; - long var12 = var2 ^ 6731204092475L; - long var14 = var2 ^ 131087805649937L; - long var16 = var2 ^ 51876427273586L; - long var18 = var2 ^ 103575000047592L; - long var20 = var2 ^ 68336797087553L; - long var22 = var2 ^ 34663137311250L; - long var24 = var2 ^ 64291855462668L; - if ((Integer)this.f.getValue() == -1) { + private boolean tryPlaceAnchor() { + if (this.placeBind.getValue() == -1) { return false; - } else if (this.u != -1) { - int var10000 = this.u; - Object[] var34 = new Object[]{null, var12}; - var34[0] = var10000; - InventoryUtil.a_void________(var34); - this.u = -1; + } else if (this.placeSwapBackSlot != -1) { + InventoryUtil.selectSlot(this.placeSwapBackSlot); + this.placeSwapBackSlot = -1; return false; - } else if (!this.f.isPressed(new Object[]{var20})) { - this.r = false; + } else if (!this.placeBind.isPressed()) { + this.placedThisPress = false; return false; } else { - if (!this.r) { - ModuleNotificationsElement.s(new Object[]{this, "Is placing an anchor.", NotificationType.INFO, var4}); + if (!this.placedThisPress) { + ModuleNotificationsElement.postNotification(this, "Is placing an anchor.", NotificationType.INFO); } - if (!this.r && b.crosshairTarget instanceof BlockHitResult var27) { - boolean var33 = WorldUtil2.b(new Object[]{var27.getBlockPos(), Blocks.RESPAWN_ANCHOR, var14}) - && WorldUtil2.a_int______________________________(new Object[]{var27.getBlockPos(), var10}) == 0; - if (!WorldUtil2.d(new Object[]{var27, var8}) && !var33) { + if (!this.placedThisPress && mc.crosshairTarget instanceof BlockHitResult crosshairHit) { + boolean emptyAnchor = BlockUtil.isOf(crosshairHit.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && BlockUtil.getAnchorCharges(crosshairHit.getBlockPos()) == 0; + if (!BlockUtil.isClickableBlockHit(crosshairHit) && !emptyAnchor) { return false; } else { - int var29 = -1; - String var30 = (String)this.e.getValue(); - switch (var30) { + int silentRestoreSlot = -1; + switch (this.placeSwap.getValue()) { case "None": - if (var33 && !InventoryUtil.l(new Object[]{Items.GLOWSTONE, var22})) { + if (emptyAnchor && !InventoryUtil.isHolding(Items.GLOWSTONE)) { return false; } - if (!InventoryUtil.l(new Object[]{Items.RESPAWN_ANCHOR, var22})) { + if (!InventoryUtil.isHolding(Items.RESPAWN_ANCHOR)) { return false; } break; case "Swap": - if ((Boolean)this.g.getValue()) { - this.u = InventoryUtil.a_int_____(new Object[]{var18}); + if (this.placeSwapBack.getValue()) { + this.placeSwapBackSlot = InventoryUtil.getSelectedSlot(); } - if (var33) { - if (!InventoryUtil.i(new Object[]{Blocks.GLOWSTONE, var24})) { + if (emptyAnchor) { + if (!InventoryUtil.switchToBlock(Blocks.GLOWSTONE)) { return false; } - } else if (!InventoryUtil.i(new Object[]{Blocks.RESPAWN_ANCHOR, var24})) { + } else if (!InventoryUtil.switchToBlock(Blocks.RESPAWN_ANCHOR)) { return false; } break; case "Silent": - var29 = InventoryUtil.a_int_____(new Object[]{var18}); - if (var33) { - if (!InventoryUtil.i(new Object[]{Blocks.GLOWSTONE, var24})) { + silentRestoreSlot = InventoryUtil.getSelectedSlot(); + if (emptyAnchor) { + if (!InventoryUtil.switchToBlock(Blocks.GLOWSTONE)) { return false; } - } else if (!InventoryUtil.i(new Object[]{Blocks.RESPAWN_ANCHOR, var24})) { + } else if (!InventoryUtil.switchToBlock(Blocks.RESPAWN_ANCHOR)) { return false; } } - if (!var33) { - this.t + if (!emptyAnchor) { + this.bindPlacedAnchors .add( - !WorldUtil2.b(new Object[]{var27.getBlockPos(), Blocks.FIRE, var14}) - && !WorldUtil2.b(new Object[]{var27.getBlockPos(), WorldUtil2.a_class_2248_(new Object[]{var16}), var14}) - ? var27.getBlockPos().add(var27.getSide().getOffsetX(), var27.getSide().getOffsetY(), var27.getSide().getOffsetZ()) - : var27.getBlockPos() + !BlockUtil.isOf(crosshairHit.getBlockPos(), Blocks.FIRE) + && !BlockUtil.isOf(crosshairHit.getBlockPos(), BlockUtil.getShortGrass()) + ? crosshairHit.getBlockPos().add(crosshairHit.getSide().getOffsetX(), crosshairHit.getSide().getOffsetY(), crosshairHit.getSide().getOffsetZ()) + : crosshairHit.getBlockPos() ); } - InventoryUtil2.a(new Object[]{var27, var6}); - if (var29 != -1) { - Object[] var10003 = new Object[]{null, var12}; - var10003[0] = var29; - InventoryUtil.a_void________(var10003); + PlayerInteractions.interactBlock(crosshairHit); + if (silentRestoreSlot != -1) { + InventoryUtil.selectSlot(silentRestoreSlot); } - this.r = true; + this.placedThisPress = true; return true; } } else { @@ -216,225 +193,120 @@ public class AnchorMacro extends Module { } } - public boolean e(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 65616062650638L ^ var2; - long var4 = var2 ^ 63371416509561L; - long var6 = var2 ^ 20598233555509L; - long var8 = var2 ^ 35236012602420L; - long var10 = var2 ^ 84011043126668L; - long var12 = var2 ^ 22282499211359L; - long var14 = var2 ^ 94496806856101L; - long var16 = var2 ^ 123207551184571L; - if (this.v != -1) { - int var10000 = this.v; - Object[] var25 = new Object[]{null, var10}; - var25[0] = var10000; - InventoryUtil.a_void________(var25); - this.v = -1; + public boolean tryChargeAnchor() { + if (this.glowstoneSwapBackSlot != -1) { + InventoryUtil.selectSlot(this.glowstoneSwapBackSlot); + this.glowstoneSwapBackSlot = -1; return false; - } else if (!(b.crosshairTarget instanceof BlockHitResult var19)) { + } else if (!(mc.crosshairTarget instanceof BlockHitResult crosshairHit)) { return false; - } else if (b.player.isSneaking() - || !WorldUtil2.k(new Object[]{var19.getBlockPos(), Blocks.RESPAWN_ANCHOR, var6}) - || (Boolean)this.d.getValue() && !this.s.contains(var19.getBlockPos()) - || WorldUtil2.a_int______________________________(new Object[]{var19.getBlockPos(), var8}) != 0) { + } else if (mc.player.isSneaking() + || !BlockUtil.isBlock(crosshairHit.getBlockPos(), Blocks.RESPAWN_ANCHOR) + || this.onlyOwnAnchors.getValue() && !this.ownAnchors.contains(crosshairHit.getBlockPos()) + || BlockUtil.getAnchorCharges(crosshairHit.getBlockPos()) != 0) { return false; - } else if ((Boolean)this.k.getValue() && !this.t.contains(var19.getBlockPos())) { + } else if (this.onlyOnPlaceBind.getValue() && !this.bindPlacedAnchors.contains(crosshairHit.getBlockPos())) { return false; } else { - int var24 = -1; - String var21 = (String)this.i.getValue(); - switch (var21) { + int silentRestoreSlot = -1; + switch (this.glowstoneSwap.getValue()) { case "None": - if (!InventoryUtil.l(new Object[]{Items.GLOWSTONE, var14})) { + if (!InventoryUtil.isHolding(Items.GLOWSTONE)) { return false; } break; case "Swap": - if ((Boolean)this.j.getValue()) { - this.v = InventoryUtil.a_int_____(new Object[]{var12}); + if (this.glowstoneSwapBack.getValue()) { + this.glowstoneSwapBackSlot = InventoryUtil.getSelectedSlot(); } - if (!InventoryUtil.i(new Object[]{Blocks.GLOWSTONE, var16})) { + if (!InventoryUtil.switchToBlock(Blocks.GLOWSTONE)) { return false; } break; case "Silent": - var24 = InventoryUtil.a_int_____(new Object[]{var12}); - if (!InventoryUtil.i(new Object[]{Blocks.GLOWSTONE, var16})) { + silentRestoreSlot = InventoryUtil.getSelectedSlot(); + if (!InventoryUtil.switchToBlock(Blocks.GLOWSTONE)) { return false; } } - InventoryUtil2.a(new Object[]{var19, var4}); - if (var24 != -1) { - Object[] var10003 = new Object[]{null, var10}; - var10003[0] = var24; - InventoryUtil.a_void________(var10003); + PlayerInteractions.interactBlock(crosshairHit); + if (silentRestoreSlot != -1) { + InventoryUtil.selectSlot(silentRestoreSlot); } return true; } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 65616062650638L ^ var2; - long var4 = var2 ^ 124849367881438L; - long var6 = var2 ^ 99599932516498L; - long var8 = var2 ^ 114495422709395L; - long var10 = var2 ^ 4700113860395L; - long var12 = var2 ^ 101610345679608L; - if (this.w != -1) { - int var22 = this.w; - Object[] var25 = new Object[]{null, var10}; - var25[0] = var22; - InventoryUtil.a_void________(var25); - this.w = -1; - } else if (b.crosshairTarget instanceof BlockHitResult var15) { - if (!b.player.isSneaking() - && WorldUtil2.k(new Object[]{var15.getBlockPos(), Blocks.RESPAWN_ANCHOR, var6}) - && (!(Boolean)this.d.getValue() || this.s.contains(var15.getBlockPos())) - && WorldUtil2.a_int______________________________(new Object[]{var15.getBlockPos(), var8}) != 0) { - int var20 = -1; - String var17 = (String)this.m.getValue(); - switch (var17) { + private void tryExplodeAnchor() { + if (this.explodeSwapBackSlot != -1) { + InventoryUtil.selectSlot(this.explodeSwapBackSlot); + this.explodeSwapBackSlot = -1; + } else if (mc.crosshairTarget instanceof BlockHitResult crosshairHit) { + if (!mc.player.isSneaking() + && BlockUtil.isBlock(crosshairHit.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && (!this.onlyOwnAnchors.getValue() || this.ownAnchors.contains(crosshairHit.getBlockPos())) + && BlockUtil.getAnchorCharges(crosshairHit.getBlockPos()) != 0) { + int silentRestoreSlot = -1; + switch (this.explodeSwap.getValue()) { case "None": - if ((Integer)this.n.getValue() - 1 != InventoryUtil.a_int_____(new Object[]{var12})) { + if (this.explodeSlot.getValue() - 1 != InventoryUtil.getSelectedSlot()) { return; } break; case "Swap": - if ((Boolean)this.o.getValue()) { - this.w = InventoryUtil.a_int_____(new Object[]{var12}); + if (this.explodeSwapBack.getValue()) { + this.explodeSwapBackSlot = InventoryUtil.getSelectedSlot(); } - int var21 = (Integer)this.n.getValue() - 1; - Object[] var23 = new Object[]{null, var10}; - var23[0] = var21; - InventoryUtil.a_void________(var23); + InventoryUtil.selectSlot(this.explodeSlot.getValue() - 1); break; case "Silent": - var20 = InventoryUtil.a_int_____(new Object[]{var12}); - int var10000 = (Integer)this.n.getValue() - 1; - Object[] var10003 = new Object[]{null, var10}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + silentRestoreSlot = InventoryUtil.getSelectedSlot(); + InventoryUtil.selectSlot(this.explodeSlot.getValue() - 1); } - InventoryUtil2.a(new Object[]{var15, var4}); - if (var20 != -1) { - Object[] var24 = new Object[]{null, var10}; - var24[0] = var20; - InventoryUtil.a_void________(var24); + PlayerInteractions.interactBlock(crosshairHit); + if (silentRestoreSlot != -1) { + InventoryUtil.selectSlot(silentRestoreSlot); } } } } @Subscribe - public void a(PacketEvent2 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket var9) { - ItemStack var13 = var9.getHand().equals(Hand.MAIN_HAND) ? b.player.getMainHandStack() : b.player.getOffHandStack(); - if (var13.getItem() == Items.RESPAWN_ANCHOR) { - BlockHitResult var11 = var9.getBlockHitResult(); - BlockPos var12 = var11.getBlockPos().add(var11.getSide().getOffsetX(), var11.getSide().getOffsetY(), var11.getSide().getOffsetZ()); - if (!(Boolean)this.d.getValue() || this.s.contains(var12)) { + public void onPacketSend(PacketSendEvent event) { + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket interactPacket) { + if ((interactPacket.getHand().equals(Hand.MAIN_HAND) ? mc.player.getMainHandStack() : mc.player.getOffHandStack()).getItem() == Items.RESPAWN_ANCHOR) { + BlockHitResult hitResult = interactPacket.getBlockHitResult(); + BlockPos placePos = hitResult.getBlockPos().add(hitResult.getSide().getOffsetX(), hitResult.getSide().getOffsetY(), hitResult.getSide().getOffsetZ()); + if (!this.onlyOwnAnchors.getValue() || this.ownAnchors.contains(placePos)) { return; } - this.s + this.ownAnchors .add( - !WorldUtil2.b(new Object[]{var11.getBlockPos(), Blocks.RESPAWN_ANCHOR, 91415361137757L}) - && !WorldUtil2.b(new Object[]{var11.getBlockPos(), Blocks.FIRE, 91415361137757L}) - && !WorldUtil2.b(new Object[]{var11.getBlockPos(), WorldUtil2.a_class_2248_(new Object[]{12315318725950L}), 91415361137757L}) - ? var12 - : var11.getBlockPos() + !BlockUtil.isOf(hitResult.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && !BlockUtil.isOf(hitResult.getBlockPos(), Blocks.FIRE) + && !BlockUtil.isOf(hitResult.getBlockPos(), BlockUtil.getShortGrass()) + ? placePos + : hitResult.getBlockPos() ); } } } @Subscribe - public void a(PacketEvent var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof BlockUpdateS2CPacket var5) { - if (var5.getState() == null || var5.getState().getBlock() == Blocks.RESPAWN_ANCHOR) { + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof BlockUpdateS2CPacket blockUpdate) { + if (blockUpdate.getState() == null || blockUpdate.getState().getBlock() == Blocks.RESPAWN_ANCHOR) { return; } - this.t.remove(var5.getPos()); - this.s.remove(var5.getPos()); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + this.bindPlacedAnchors.remove(blockUpdate.getPos()); + this.ownAnchors.remove(blockUpdate.getPos()); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AnchorPearlCatch.java b/src/main/java/dev/zprestige/prestige/module/combat/AnchorPearlCatch.java index 844caee..22cc29e 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AnchorPearlCatch.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AnchorPearlCatch.java @@ -9,40 +9,36 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.data.VecBoolData; -import dev.zprestige.prestige.data.VecData; -import dev.zprestige.prestige.data.VecIntData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent10; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent25; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.event.TickEvent7; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.data.PearlCatchAnchorPlan; +import dev.zprestige.prestige.data.PearlCatchPlaceTarget; +import dev.zprestige.prestige.data.AnchorCatchPearlLanding; +import dev.zprestige.prestige.event.HandleBlockBreakingEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render2DEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.event.DoAttackEvent; import dev.zprestige.prestige.hud.ModuleNotificationsElement; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RenderUtil6; -import dev.zprestige.prestige.render.Renderer2D; -import dev.zprestige.prestige.render.RoundedPosColorShader; -import dev.zprestige.prestige.type.AnchorState; +import dev.zprestige.prestige.render.MsdfFont; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.SwapBackTracker; +import dev.zprestige.prestige.render.RoundedRectShader; +import dev.zprestige.prestige.type.AnchorCatchState; import dev.zprestige.prestige.type.NotificationType; import dev.zprestige.prestige.world.PositionUtil; import dev.zprestige.prestige.world.RaycastUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.HashSet; import java.util.Set; import java.util.UUID; @@ -65,163 +61,142 @@ import net.minecraft.world.RaycastContext.FluidHandling; import net.minecraft.world.RaycastContext.ShapeType; import org.joml.Matrix4f; -public class AnchorPearlCatch extends Module implements RenderContract3 { - private FloatSetting a; - private FloatSetting c; - private FloatSetting d; - private BoolSetting e; - private BoolSetting f; - private BoolSetting g; - private EnumSetting h; - private BoolSetting i; - private FloatSetting j; - private BoolSetting k; - private RangeSetting l; - private RangeSetting m; - private RangeSetting n; - private BoolSetting o; - private ColorSetting p; - private ColorSetting q; - private ColorSetting r; - private static final int[][] s = new int[][]{{-1, 0, 0}, {1, 0, 0}, {0, 0, -1}, {0, 0, 1}, {-1, 0, -1}, {-1, 0, 1}, {1, 0, -1}, {1, 0, 1}}; - private static final Direction[] t = Direction.values(); - private static final float u = 6.0F; - private static final float v = 200.0F; - private static final int w = 3; - private static final int x = 100; - private static final int y = 160; - private static final int z = 30; - private static final double A = 2.5; - private static final int B = 120; - public static boolean C; - private AnchorState D = AnchorState.IDLE; - private RenderHelper27 E = new RenderHelper27(26293358099357L); - private RenderHelper27 F = new RenderHelper27(26293358099357L); - private RenderHelper27 G = new RenderHelper27(26293358099357L); - private RenderHelper27 H = new RenderHelper27(26293358099357L); - private RenderHelper27 I = new RenderHelper27(26293358099357L); - private HashSet J = new HashSet(); - private UUID K; - private UUID L; - private Vec3d M; - private int N = -1; - private BlockPos O; - private BlockPos P; - private Vec3d Q; - private BlockPos R; - private BlockPos S; - private Vec3d T; - private int U = -1; - private int V; - private int W; - private int X; - private int Y; - private int Z; +public class AnchorPearlCatch extends Module implements RotationProvider { + private FloatSetting scanRange; + private FloatSetting minDamage; + private FloatSetting maxSelfDamage; + private BoolSetting antiSuicide; + private BoolSetting damageTick; + private BoolSetting safeAnchor; + private EnumSetting safeBlock; + private BoolSetting rotateSilently; + private FloatSetting silentAimFov; + private BoolSetting swapBack; + private RangeSetting placeDelay; + private RangeSetting chargeDelay; + private RangeSetting detonateDelay; + private BoolSetting render; + private ColorSetting anchorColor; + private ColorSetting safeColor; + private ColorSetting landingColor; + private static final int[][] COVER_OFFSETS = new int[][]{{-1, 0, 0}, {1, 0, 0}, {0, 0, -1}, {0, 0, 1}, {-1, 0, -1}, {-1, 0, 1}, {1, 0, -1}, {1, 0, 1}}; + private static final Direction[] DIRECTIONS = Direction.values(); + public static boolean active; + private AnchorCatchState state = AnchorCatchState.IDLE; + private StopWatch placeTimer = new StopWatch(); + private StopWatch chargeTimer = new StopWatch(); + private StopWatch detonateTimer = new StopWatch(); + private StopWatch stallTimer = new StopWatch(); + private StopWatch notifyTimer = new StopWatch(); + private HashSet handledPearls = new HashSet(); + private UUID pearlUuid; + private UUID throwerUuid; + private Vec3d landingPos; + private int ticksUntilLanding = -1; + private BlockPos anchorPos; + private BlockPos anchorSupportPos; + private Vec3d anchorHitVec; + private BlockPos coverPos; + private BlockPos coverSupportPos; + private Vec3d coverHitVec; + private int swapBackSlot = -1; + private int clickMisses; + private int actionTicks; + private int waitTicks; + private int detonateTicks; + private int targetAwayTicks; public AnchorPearlCatch() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.p.setVisibility_ColorSetting(new Object[]{(Predicate)lpL48_0 -> (Boolean)this.o.getValue(), 119980880492450L}); - this.r.setVisibility_ColorSetting(new Object[]{(Predicate)lpL46_0 -> (Boolean)this.o.getValue(), 119980880492450L}); - this.h.setVisibility_EnumSetting(new Object[]{(Predicate)lpL50_0 -> (Boolean)this.g.getValue(), 90319707064974L}); - this.j.setVisibility_FloatSetting(new Object[]{(Predicate)lpL49_0 -> (Boolean)this.i.getValue(), 35046756052036L}); - this.q - .setVisibility_ColorSetting(new Object[]{(Predicate)lpL47_0 -> (Boolean)this.o.getValue() && (Boolean)this.g.getValue(), 119980880492450L}); + this.anchorColor.visibleWhen((Predicate)ignored -> this.render.getValue()); + this.landingColor.visibleWhen((Predicate)ignored -> this.render.getValue()); + this.safeBlock.visibleWhen((Predicate)ignored -> this.safeAnchor.getValue()); + this.silentAimFov.visibleWhen((Predicate)ignored -> this.rotateSilently.getValue()); + this.safeColor + .visibleWhen((Predicate)ignored -> this.render.getValue() && this.safeAnchor.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - this.z(new Object[0]); - this.J.clear(); - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + this.resetState(); + this.handledPearls.clear(); + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 51011343502304L; - long var6 = var2 ^ 82893747353842L; - long var8 = var2 ^ 53560089228642L; - long var10 = var2 ^ 140372736859409L; - if (this.U != -1 && (Boolean)this.k.getValue() && Prestige.o.d_boolean______(new Object[0])) { - Renderer2D var10000 = Prestige.o; - int var10001 = this.U; - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = var10001; - var10000.i(var10004); - RenderUtil6.a_void____________________________(new Object[]{this, var4}); - this.U = -1; + public void onDisable() { + if (this.swapBackSlot != -1 && this.swapBack.getValue() && Prestige.silentRotationManager.hasActedThisTick()) { + Prestige.silentRotationManager.scheduleSlotSwitch(this.swapBackSlot); + SwapBackTracker.release(this); + this.swapBackSlot = -1; } - this.A(new Object[]{var8}); - this.z(new Object[0]); - Prestige.o.f(new Object[]{this, var10}); - C = false; + this.restoreOriginalSlot(); + this.resetState(); + Prestige.silentRotationManager.removeRotationProvider(this); + active = false; } @Subscribe - public void a(TickEvent3 var1) { - this.z(new Object[0]); - this.J.clear(); - C = false; + public void onGameJoin(GameJoinEvent event) { + this.resetState(); + this.handledPearls.clear(); + active = false; } @Subscribe - public void a(TickEvent7 var1) { - if (this.d(new Object[]{44483758100801L})) { - var1.a_void_____(new Object[0]); + public void onDoAttack(DoAttackEvent event) { + if (this.shouldBlockInput()) { + event.cancel(); } } @Subscribe - public void a(TickEvent10 var1) { - if (this.d(new Object[]{44483758100801L})) { - var1.a_void_____(new Object[0]); + public void onHandleBlockBreaking(HandleBlockBreakingEvent event) { + if (this.shouldBlockInput()) { + event.cancel(); } } @Subscribe - public void a(TickEvent5 var1) { - if (this.d(new Object[]{44483758100801L})) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (this.shouldBlockInput()) { + event.cancel(); } } - private boolean d(Object[] var1) { - return this.D == AnchorState.PLACE_ANCHOR || this.D == AnchorState.SAFE_COVER || this.D == AnchorState.CHARGE_ANCHOR; + private boolean shouldBlockInput() { + return this.state == AnchorCatchState.PLACE_ANCHOR || this.state == AnchorCatchState.SAFE_COVER || this.state == AnchorCatchState.CHARGE_ANCHOR; } - private VecIntData a_VecIntData(Object[] var1) { - EnderPearlEntity var4 = (EnderPearlEntity)var1[0]; - double var6 = var4.getX(); - double var8 = var4.getY(); - double var10 = var4.getZ(); - Event.b(); - Vec3d var12 = var4.getVelocity(); - double var13 = var12.x; - double var15 = var12.y; - double var17 = var12.z; + private AnchorCatchPearlLanding predictLanding(EnderPearlEntity pearl) { + double posX = pearl.getX(); + double posY = pearl.getY(); + double posZ = pearl.getZ(); + Vec3d velocity = pearl.getVelocity(); + double motionX = velocity.x; + double motionY = velocity.y; + double motionZ = velocity.z; - for (int var19 = 1; var19 <= 200; var19++) { - Vec3d var20 = new Vec3d(var6, var8, var10); - var6 += var13; - var8 += var15; - var10 += var17; - var13 *= 0.99; - var17 *= 0.99; - var15 = var15 * 0.99 - 0.03; - BlockHitResult var21 = b.world.raycast(new RaycastContext(var20, new Vec3d(var6, var8, var10), ShapeType.OUTLINE, FluidHandling.NONE, var4)); - if (var21 != null && var21.getType() == Type.BLOCK) { - return new VecIntData(var21.getPos(), var19); + for (int tick = 1; tick <= 200; tick++) { + Vec3d prevPos = new Vec3d(posX, posY, posZ); + posX += motionX; + posY += motionY; + posZ += motionZ; + motionX *= 0.99; + motionZ *= 0.99; + motionY = motionY * 0.99 - 0.03; + BlockHitResult hit = mc.world.raycast(new RaycastContext(prevPos, new Vec3d(posX, posY, posZ), ShapeType.OUTLINE, FluidHandling.NONE, pearl)); + if (hit != null && hit.getType() == Type.BLOCK) { + return new AnchorCatchPearlLanding(hit.getPos(), tick); } - if (var8 < -65.0) { + if (posY < -65.0) { break; } } @@ -229,11 +204,11 @@ public class AnchorPearlCatch extends Module implements RenderContract3 { return null; } - private EnderPearlEntity a_class_1684(Object[] var1) { - if (this.K != null && b.world != null) { - for (Entity var6 : b.world.getEntities()) { - if (var6 instanceof EnderPearlEntity var7 && var6.getUuid().equals(this.K)) { - return var7; + private EnderPearlEntity findTrackedPearl() { + if (this.pearlUuid != null && mc.world != null) { + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EnderPearlEntity pearl && entity.getUuid().equals(this.pearlUuid)) { + return pearl; } } @@ -243,11 +218,11 @@ public class AnchorPearlCatch extends Module implements RenderContract3 { } } - private PlayerEntity a_class_1657_(Object[] var1) { - if (this.L != null && b.world != null) { - for (Entity var6 : b.world.getEntities()) { - if (var6 instanceof PlayerEntity var7 && var6.getUuid().equals(this.L)) { - return var7; + private PlayerEntity findThrower() { + if (this.throwerUuid != null && mc.world != null) { + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof PlayerEntity player && entity.getUuid().equals(this.throwerUuid)) { + return player; } } @@ -257,121 +232,104 @@ public class AnchorPearlCatch extends Module implements RenderContract3 { } } - private double a_double_(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - Vec3d var5 = (Vec3d)var1[1]; - Event.b(); - double var7 = 10.0; - double var9 = Math.sqrt(var4.squaredDistanceTo(var5)) / var7; - if (var9 > 1.0) { + private double estimateLandingDamage(Vec3d targetPos, Vec3d explosionPos) { + double explosionDiameter = 10.0; + double distanceRatio = Math.sqrt(targetPos.squaredDistanceTo(explosionPos)) / explosionDiameter; + if (distanceRatio > 1.0) { return 0.0; } else { - int var11 = 0; + int visibleRays = 0; - for (double var15 : new double[]{0.2, 1.0, 1.7}) { - Vec3d var17 = var4.add(0.0, var15, 0.0); - BlockHitResult var18 = b.world.raycast(new RaycastContext(var5, var17, ShapeType.COLLIDER, FluidHandling.NONE, b.player)); - if (var18 == null || var18.getType() == Type.MISS) { - var11++; + for (double heightOffset : new double[]{0.2, 1.0, 1.7}) { + Vec3d samplePos = targetPos.add(0.0, heightOffset, 0.0); + BlockHitResult hit = mc.world.raycast(new RaycastContext(explosionPos, samplePos, ShapeType.COLLIDER, FluidHandling.NONE, mc.player)); + if (hit == null || hit.getType() == Type.MISS) { + visibleRays++; } } - double var19 = (1.0 - var9) * (var11 / 3.0); - return (var19 * var19 + var19) / 2.0 * 7.0 * var7 + 1.0; + double impact = (1.0 - distanceRatio) * (visibleRays / 3.0); + return (impact * impact + impact) / 2.0 * 7.0 * explosionDiameter + 1.0; } } - private VecBoolData a_VecBoolData(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - long var2 = (Long)var1[1]; - var2 = 55495940703451L ^ var2; - long var5 = var2 ^ 103392261267729L; - long var7 = var2 ^ 81689807741877L; - long var9 = var2 ^ 70347993463805L; - long var11 = var2 ^ 50860481262513L; - long var13 = var2 ^ 94916777813686L; - long var15 = var2 ^ 87963028854718L; - long var17 = var2 ^ 115638071237212L; - long var19 = var2 ^ 93240739490053L; - BlockPos var22 = BlockPos.ofFloored(var4); - Vec3d var23 = b.player.getEyePos(); - Event.b(); - float var24 = b.player.getHealth() + b.player.getAbsorptionAmount(); - Block var25 = ((String)this.h.getValue()).equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN; - boolean var26 = InventoryUtil.a_Integer(new Object[]{var25.asItem(), var9}) != null; - short var10000 = 26708; - BlockPos var27 = var22; - long var10001 = 7715639541459957327L ^ var2; - BlockPos var28 = var22.up(); - VecBoolData var29 = null; - double var30 = -Double.MAX_VALUE; + private PearlCatchAnchorPlan findAnchorPlan(Vec3d landing) { + BlockPos landingBlock = BlockPos.ofFloored(landing); + Vec3d eyePos = mc.player.getEyePos(); + float selfHealth = mc.player.getHealth() + mc.player.getAbsorptionAmount(); + Block coverBlock = this.safeBlock.getValue().equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN; + boolean hasCoverBlock = InventoryUtil.findHotbarSlot(coverBlock.asItem()) != null; + BlockPos feetBlock = landingBlock; + BlockPos headBlock = landingBlock.up(); + PearlCatchAnchorPlan bestPlan = null; + double bestScore = -Double.MAX_VALUE; - for (int var32 = -3; var32 <= 3; var32++) { - for (int var33 = -1; var33 <= 2; var33++) { - for (int var34 = -3; var34 <= 3; var34++) { - BlockPos var35 = var22.add(var32, var33, var34); - if (!var35.equals(var27) && !var35.equals(var28)) { - Vec3d var36 = var35.toCenterPos(); - if (!(var23.squaredDistanceTo(var36) > 19.360000000000003)) { - boolean var37 = WorldUtil2.b(new Object[]{var35, Blocks.RESPAWN_ANCHOR, var13}); - BlockPos var38 = null; - Vec3d var39 = null; - if (var37) { - var35 = var35.toImmutable(); + for (int dx = -3; dx <= 3; dx++) { + for (int dy = -1; dy <= 2; dy++) { + for (int dz = -3; dz <= 3; dz++) { + BlockPos candidatePos = landingBlock.add(dx, dy, dz); + if (!candidatePos.equals(feetBlock) && !candidatePos.equals(headBlock)) { + Vec3d candidateCenter = candidatePos.toCenterPos(); + if (!(eyePos.squaredDistanceTo(candidateCenter) > 19.360000000000003)) { + boolean anchorExists = BlockUtil.isOf(candidatePos, Blocks.RESPAWN_ANCHOR); + BlockPos supportPos = null; + Vec3d hitVec = null; + if (anchorExists) { + candidatePos = candidatePos.toImmutable(); } else { - if (WorldUtil2.e(new Object[]{var35, var5}) || WorldUtil2.g(new Object[]{var35, var7})) { + if (BlockUtil.isClickableBlock(candidatePos) || BlockUtil.hasEntityAt(candidatePos)) { continue; } - VecData var40 = this.a_VecData(new Object[]{var35, var23, var11}); - if (var40 == null) { + PearlCatchPlaceTarget placeTarget = this.findPlaceTarget(candidatePos, eyePos); + if (placeTarget == null) { continue; } - var38 = var40.j(); - var39 = var40.k(); + supportPos = placeTarget.supportPos(); + hitVec = placeTarget.hitVec(); } - double var60 = this.a_double_(new Object[]{var4, var36, var15}); - if (!(var60 < ((Float)this.c.getValue()).floatValue())) { - double var42 = Prestige.f.k(new Object[]{b.player, var36, var17}); - if (!(Boolean)this.e.getValue() || !(var42 >= var24 * 2.0F)) { - BlockPos var44 = null; - BlockPos var45 = null; - Vec3d var46 = null; - double var47 = var42; - if ((Boolean)this.g.getValue() && var26 && var42 > 6.0) { - double var49 = var42; + double targetDamage = this.estimateLandingDamage(landing, candidateCenter); + if (!(targetDamage < this.minDamage.getValue().floatValue())) { + double selfDamage = Prestige.damageCalculator.getAnchorDamage(mc.player, candidateCenter); + if (!this.antiSuicide.getValue() || !(selfDamage >= selfHealth * 2.0F)) { + BlockPos bestCoverPos = null; + BlockPos bestCoverSupportPos = null; + Vec3d bestCoverHitVec = null; + double effectiveSelfDamage = selfDamage; + if (this.safeAnchor.getValue() && hasCoverBlock && selfDamage > 6.0) { + double bestCoveredDamage = selfDamage; - for (int[] var54 : s) { - BlockPos var55 = var35.add(var54[0], var54[1], var54[2]); - if (!var55.equals(var27) - && !var55.equals(var28) - && !WorldUtil2.e(new Object[]{var55, var5}) - && !WorldUtil2.g(new Object[]{var55, var7})) { - VecData var56 = this.a_VecData(new Object[]{var55, var23, var11}); - if (var56 != null) { - double var57 = Prestige.f.l(new Object[]{b.player, var36, var55, var25.getDefaultState(), var19}); - if (!(var57 >= var49) && !(var42 - var57 < 2.0)) { - var49 = var57; - var44 = var55; - var45 = var56.j(); - var46 = var56.k(); + for (int[] offset : COVER_OFFSETS) { + BlockPos coverCandidate = candidatePos.add(offset[0], offset[1], offset[2]); + if (!coverCandidate.equals(feetBlock) + && !coverCandidate.equals(headBlock) + && !BlockUtil.isClickableBlock(coverCandidate) + && !BlockUtil.hasEntityAt(coverCandidate)) { + PearlCatchPlaceTarget coverTarget = this.findPlaceTarget(coverCandidate, eyePos); + if (coverTarget != null) { + double coveredDamage = Prestige.damageCalculator.getAnchorDamage(mc.player, candidateCenter, coverCandidate, coverBlock.getDefaultState()); + if (!(coveredDamage >= bestCoveredDamage) && !(selfDamage - coveredDamage < 2.0)) { + bestCoveredDamage = coveredDamage; + bestCoverPos = coverCandidate; + bestCoverSupportPos = coverTarget.supportPos(); + bestCoverHitVec = coverTarget.hitVec(); } } } } - if (var44 != null) { - var47 = var49; + if (bestCoverPos != null) { + effectiveSelfDamage = bestCoveredDamage; } } - if (!(var47 > ((Float)this.d.getValue()).floatValue()) && (!(Boolean)this.e.getValue() || !(var47 >= var24 - 1.0F))) { - double var61 = var60 - 0.5 * var4.distanceTo(var36) + (var37 ? 3.0 : 0.0); - if (var61 > var30) { - var30 = var61; - var29 = new VecBoolData(var35, var38, var39, var44, var45, var46, var37); + if (!(effectiveSelfDamage > this.maxSelfDamage.getValue().floatValue()) && (!this.antiSuicide.getValue() || !(effectiveSelfDamage >= selfHealth - 1.0F))) { + double score = targetDamage - 0.5 * landing.distanceTo(candidateCenter) + (anchorExists ? 3.0 : 0.0); + if (score > bestScore) { + bestScore = score; + bestPlan = new PearlCatchAnchorPlan(candidatePos, supportPos, hitVec, bestCoverPos, bestCoverSupportPos, bestCoverHitVec, anchorExists); } } } @@ -382,85 +340,72 @@ public class AnchorPearlCatch extends Module implements RenderContract3 { } } - return var29; + return bestPlan; } - private VecData a_VecData(Object[] var1) { - BlockPos var4 = (BlockPos)var1[0]; - Vec3d var5 = (Vec3d)var1[1]; - Event.b(); - BlockPos var7 = null; - Vec3d var8 = null; - double var9 = Double.MAX_VALUE; + private PearlCatchPlaceTarget findPlaceTarget(BlockPos placePos, Vec3d eyePos) { + BlockPos bestSupport = null; + Vec3d bestHitVec = null; + double bestDistSq = Double.MAX_VALUE; - for (Direction var14 : t) { - BlockPos var15 = var4.offset(var14); - if (!b.world.getBlockState(var15).isReplaceable()) { - Direction var16 = var14.getOpposite(); - Vec3d var17 = var15.toCenterPos().add(var16.getOffsetX() * 0.5, var16.getOffsetY() * 0.5, var16.getOffsetZ() * 0.5); - double var18 = var5.squaredDistanceTo(var17); - if (!(var18 > 18.0625) && !(var18 >= var9)) { - var9 = var18; - var7 = var15; - var8 = var17; + for (Direction direction : DIRECTIONS) { + BlockPos neighbor = placePos.offset(direction); + if (!mc.world.getBlockState(neighbor).isReplaceable()) { + Direction face = direction.getOpposite(); + Vec3d hitVec = neighbor.toCenterPos().add(face.getOffsetX() * 0.5, face.getOffsetY() * 0.5, face.getOffsetZ() * 0.5); + double distSq = eyePos.squaredDistanceTo(hitVec); + if (!(distSq > 18.0625) && !(distSq >= bestDistSq)) { + bestDistSq = distSq; + bestSupport = neighbor; + bestHitVec = hitVec; } } } - return var7 == null ? null : new VecData(var7, var8); + return bestSupport == null ? null : new PearlCatchPlaceTarget(bestSupport, bestHitVec); } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 11300586223115L; - long var6 = var2 ^ 91475489002186L; - long var8 = var2 ^ 128481067272063L; - long var10 = var2 ^ 18386640137437L; - long var12 = var2 ^ 139806472782422L; - long var14 = var2 ^ 126053932203376L; - long var16 = var2 ^ 130023359200673L; - long var18 = var2 ^ 9081094564810L; - if (InventoryUtil.a_Integer(new Object[]{Items.RESPAWN_ANCHOR, var12}) != null) { - if (InventoryUtil.a_Integer(new Object[]{Items.GLOWSTONE, var12}) != null) { - if (this.e_int(new Object[]{var18}) != -1) { - double var21 = ((Float)this.a.getValue()).floatValue(); + private void scanForPearls() { + if (InventoryUtil.findHotbarSlot(Items.RESPAWN_ANCHOR) != null) { + if (InventoryUtil.findHotbarSlot(Items.GLOWSTONE) != null) { + if (this.findNonGlowstoneSlot() != -1) { + double range = this.scanRange.getValue().floatValue(); - for (Entity var24 : b.world.getEntities()) { - if (var24 instanceof EnderPearlEntity var25 && !this.J.contains(var25.getUuid())) { - Vec3d var26 = new Vec3d(var25.getX(), var25.getY(), var25.getZ()); - if (!(b.player.getEyePos().squaredDistanceTo(var26) > var21 * var21) - && var25.getOwner() instanceof PlayerEntity var27 - && !var27.equals(b.player) - && Prestige.i.a_boolean_(new Object[]{var27, var8}) - && !Prestige.g.a(new Object[]{var27.getName().getString(), var6})) { - VecIntData var31 = this.a_VecIntData(new Object[]{var25, var4}); - if (var31 != null && var31.b() <= 100) { - VecBoolData var29 = this.a_VecBoolData(new Object[]{var31.a(), var14}); - if (var29 != null) { - this.K = var25.getUuid(); - this.L = var27.getUuid(); - this.M = var31.a(); - this.N = var31.b(); - this.O = var29.c(); - this.P = var29.d(); - this.Q = var29.e(); - this.R = var29.f(); - this.S = var29.g(); - this.T = var29.h(); - this.X = 0; - this.W = 0; - this.Y = 0; - this.Z = 0; - this.V = 0; - this.H.a_void_____________________(new Object[]{var10}); - this.E.a_void_____________________(new Object[]{var10}); - this.l.reroll(new Object[]{var16}); - this.F.a_void_____________________(new Object[]{var10}); - this.m.reroll(new Object[]{var16}); - this.G.a_void_____________________(new Object[]{var10}); - this.n.reroll(new Object[]{var16}); - this.D = AnchorState.WAIT; + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EnderPearlEntity pearl && !this.handledPearls.contains(pearl.getUuid())) { + Vec3d pearlPos = new Vec3d(pearl.getX(), pearl.getY(), pearl.getZ()); + if (!(mc.player.getEyePos().squaredDistanceTo(pearlPos) > range * range) + && pearl.getOwner() instanceof PlayerEntity thrower + && !thrower.equals(mc.player) + && Prestige.botFilter.isValidTarget(thrower) + && !Prestige.friendManager.isFriend(thrower.getName().getString())) { + AnchorCatchPearlLanding landing = this.predictLanding(pearl); + if (landing != null && landing.ticksUntilLanding() <= 100) { + PearlCatchAnchorPlan plan = this.findAnchorPlan(landing.landingPos()); + if (plan != null) { + this.pearlUuid = pearl.getUuid(); + this.throwerUuid = thrower.getUuid(); + this.landingPos = landing.landingPos(); + this.ticksUntilLanding = landing.ticksUntilLanding(); + this.anchorPos = plan.anchorPos(); + this.anchorSupportPos = plan.anchorSupportPos(); + this.anchorHitVec = plan.anchorHitVec(); + this.coverPos = plan.blockerPos(); + this.coverSupportPos = plan.blockerSupportPos(); + this.coverHitVec = plan.blockerHitVec(); + this.waitTicks = 0; + this.actionTicks = 0; + this.detonateTicks = 0; + this.targetAwayTicks = 0; + this.clickMisses = 0; + this.stallTimer.reset(); + this.placeTimer.reset(); + this.placeDelay.reroll(); + this.chargeTimer.reset(); + this.chargeDelay.reroll(); + this.detonateTimer.reset(); + this.detonateDelay.reroll(); + this.state = AnchorCatchState.WAIT; return; } } @@ -472,221 +417,152 @@ public class AnchorPearlCatch extends Module implements RenderContract3 { } } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 22391772937175L; - long var6 = var2 ^ 80417194319668L; - long var8 = var2 ^ 117373783149219L; - long var10 = var2 ^ 84933598205266L; - long var12 = var2 ^ 112333111235568L; - long var14 = var2 ^ 135458199582131L; - long var16 = var2 ^ 6507056684030L; - long var18 = var2 ^ 57563686535375L; - Event.b(); - PlayerEntity var21 = this.a_class_1657_(new Object[]{var16}); - if (var21 != null && !Prestige.i.a_boolean_(new Object[]{var21, var8})) { - Object[] var28 = new Object[]{null, null, var10}; - var28[1] = true; - var28[0] = null; - this.x(var28); - } else if (++this.X > 120) { - Object[] var27 = new Object[]{null, null, var10}; - var27[1] = true; - var27[0] = null; - this.x(var27); + private void tickWait() { + PlayerEntity thrower = this.findThrower(); + if (thrower != null && !Prestige.botFilter.isValidTarget(thrower)) { + this.abort(null, true); + } else if (++this.waitTicks > 120) { + this.abort(null, true); } else { - EnderPearlEntity var22 = this.a_class_1684(new Object[]{var18}); - if (var22 != null) { - VecIntData var23 = this.a_VecIntData(new Object[]{var22, var4}); - if (var23 == null) { - Object[] var26 = new Object[]{null, null, var10}; - var26[1] = true; - var26[0] = null; - this.x(var26); + EnderPearlEntity pearl = this.findTrackedPearl(); + if (pearl != null) { + AnchorCatchPearlLanding landing = this.predictLanding(pearl); + if (landing == null) { + this.abort(null, true); } else { - this.N = var23.b(); - if (var23.a().distanceTo(this.M) > 2.5) { - Object[] var25 = new Object[]{null, null, var10}; - var25[1] = false; - var25[0] = null; - this.x(var25); + this.ticksUntilLanding = landing.ticksUntilLanding(); + if (landing.landingPos().distanceTo(this.landingPos) > 2.5) { + this.abort(null, false); } else { - if (var23.b() <= this.d_int(new Object[]{var14})) { - this.l(new Object[]{var6}); + if (landing.ticksUntilLanding() <= this.getLeadTicks()) { + this.beginCatch(); } } } } else { - if (var21 != null && PositionUtil.a(new Object[]{var21, var12}).distanceTo(this.M) <= 3.0) { - this.l(new Object[]{var6}); + if (thrower != null && PositionUtil.getEntityPos(thrower).distanceTo(this.landingPos) <= 3.0) { + this.beginCatch(); } else { - Object[] var10005 = new Object[]{null, null, var10}; - var10005[1] = true; - var10005[0] = null; - this.x(var10005); + this.abort(null, true); } } } } - private int d_int(Object[] var1) { - Event.b(); - int var5 = 4 + Math.max(1, Math.round(this.l.getRolled(new Object[0]) / 50.0F)); - if ((Boolean)this.g.getValue() && this.R != null) { - var5 += 3; + private int getLeadTicks() { + int ticks = 4 + Math.max(1, Math.round(this.placeDelay.getRolled() / 50.0F)); + if (this.safeAnchor.getValue() && this.coverPos != null) { + ticks += 3; } - var5 += Math.max(1, Math.round(this.m.getRolled(new Object[0]) / 50.0F)); - var5 += 3; - return var5 + 2; + ticks += Math.max(1, Math.round(this.chargeDelay.getRolled() / 50.0F)); + ticks += 3; + return ticks + 2; } - private void l(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 129708724976366L; - long var6 = var2 ^ 121553697339068L; - long var8 = var2 ^ 20898228579218L; - long var10 = var2 ^ 127334162188590L; - Event.b(); - this.W = 0; - this.Y = 0; - this.Z = 0; - this.V = 0; - this.H.a_void_____________________(new Object[]{var4}); - this.F.a_void_____________________(new Object[]{var4}); - this.m.reroll(new Object[]{var8}); - if (WorldUtil2.b(new Object[]{this.O, Blocks.RESPAWN_ANCHOR, var10})) { - this.D = this.g.getValue() && this.R != null - ? AnchorState.SAFE_COVER - : (WorldUtil2.a_int______________________________(new Object[]{this.O, var6}) > 0 ? AnchorState.DETONATE : AnchorState.CHARGE_ANCHOR); - if (this.D == AnchorState.DETONATE) { - this.G.a_void_____________________(new Object[]{var4}); - this.n.reroll(new Object[]{var8}); + private void beginCatch() { + this.actionTicks = 0; + this.detonateTicks = 0; + this.targetAwayTicks = 0; + this.clickMisses = 0; + this.stallTimer.reset(); + this.chargeTimer.reset(); + this.chargeDelay.reroll(); + if (BlockUtil.isOf(this.anchorPos, Blocks.RESPAWN_ANCHOR)) { + this.state = this.safeAnchor.getValue() && this.coverPos != null + ? AnchorCatchState.SAFE_COVER + : (BlockUtil.getAnchorCharges(this.anchorPos) > 0 ? AnchorCatchState.DETONATE : AnchorCatchState.CHARGE_ANCHOR); + if (this.state == AnchorCatchState.DETONATE) { + this.detonateTimer.reset(); + this.detonateDelay.reroll(); } } else { - this.D = AnchorState.PLACE_ANCHOR; + this.state = AnchorCatchState.PLACE_ANCHOR; } } @Subscribe - public void a(TickEvent19 var1) { - if (b.player == null || b.world == null) { - C = false; - } else if (this.D == AnchorState.WAIT) { - this.k(new Object[]{116310162602567L}); - C = this.D == AnchorState.WAIT && this.N >= 0 && this.N <= this.d_int(new Object[]{35748756048687L}) + 8; - } else if (b.currentScreen != null || !b.isWindowFocused() || b.player.isUsingItem()) { - C = false; - } else if (!AutoObbyCrystal.R && !AutoAnchor.B && !AnchorMacro.p) { - if (this.D != AnchorState.IDLE) { - if (++this.W > 160) { - Object[] var3 = new Object[]{null, null, 24801603922894L}; - var3[1] = true; - var3[0] = "timed out"; - this.x(var3); + public void onClientTick(ClientTickEvent event) { + if (mc.player == null || mc.world == null) { + active = false; + } else if (this.state == AnchorCatchState.WAIT) { + this.tickWait(); + active = this.state == AnchorCatchState.WAIT && this.ticksUntilLanding >= 0 && this.ticksUntilLanding <= this.getLeadTicks() + 8; + } else if (mc.currentScreen != null || !mc.isWindowFocused() || mc.player.isUsingItem()) { + active = false; + } else if (!AutoObbyCrystal.sequenceActive && !AutoAnchor.sequenceActive && !AnchorMacro.acting) { + if (this.state != AnchorCatchState.IDLE) { + if (++this.actionTicks > 160) { + this.abort("timed out", true); return; } - if (this.D != AnchorState.DETONATE) { - RenderHelper27 var10000 = this.H; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 200.0F; - if (var10000.a(var10004)) { - Object[] var2 = new Object[]{null, null, 24801603922894L}; - var2[1] = true; - var2[0] = "stalled"; - this.x(var2); + if (this.state != AnchorCatchState.DETONATE) { + if (this.stallTimer.hasElapsed(200.0F)) { + this.abort("stalled", true); return; } } - if (this.D == AnchorState.DETONATE) { - this.m(new Object[]{135810372551516L}); + if (this.state == AnchorCatchState.DETONATE) { + this.tickDetonate(); } } else { - this.A(new Object[]{25384289206791L}); - this.j(new Object[]{131747906484123L}); + this.restoreOriginalSlot(); + this.scanForPearls(); } - if (this.D != AnchorState.IDLE && !(Boolean)this.i.getValue()) { - if (Prestige.o.d_boolean______(new Object[0])) { + if (this.state != AnchorCatchState.IDLE && !this.rotateSilently.getValue()) { + if (Prestige.silentRotationManager.hasActedThisTick()) { return; } - this.n(new Object[]{49466004368406L}); + this.rotateAndPerformStage(); } - C = this.D != AnchorState.IDLE; + active = this.state != AnchorCatchState.IDLE; } else { - if (this.D != AnchorState.IDLE) { - Object[] var10005 = new Object[]{null, null, 24801603922894L}; - var10005[1] = true; - var10005[0] = null; - this.x(var10005); + if (this.state != AnchorCatchState.IDLE) { + this.abort(null, true); } - C = false; + active = false; } } - private void m(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 31812202944538L; - long var6 = var2 ^ 127985057180395L; - long var8 = var2 ^ 118746247503344L; - long var10 = var2 ^ 29522446969818L; - long var12 = var2 ^ 134240512117094L; - long var14 = var2 ^ 125783940892121L; - long var16 = var2 ^ 4485980315405L; - long var18 = var2 ^ 6671112094412L; - long var20 = var2 ^ 104949205494857L; - long var22 = var2 ^ 8364944053320L; - long var24 = var2 ^ 26007270777573L; - long var26 = var2 ^ 66749685785796L; - long var28 = var2 ^ 41879554570708L; - if (WorldUtil2.b(new Object[]{this.O, Blocks.RESPAWN_ANCHOR, var10}) - && WorldUtil2.a_int______________________________(new Object[]{this.O, var22}) <= 0) { - this.D = AnchorState.CHARGE_ANCHOR; - this.V = 0; - this.Y = 0; - this.H.a_void_____________________(new Object[]{var4}); - this.F.a_void_____________________(new Object[]{var4}); - this.m.reroll(new Object[]{var12}); + private void tickDetonate() { + if (BlockUtil.isOf(this.anchorPos, Blocks.RESPAWN_ANCHOR) + && BlockUtil.getAnchorCharges(this.anchorPos) <= 0) { + this.state = AnchorCatchState.CHARGE_ANCHOR; + this.clickMisses = 0; + this.detonateTicks = 0; + this.stallTimer.reset(); + this.chargeTimer.reset(); + this.chargeDelay.reroll(); } else { - EnderPearlEntity var31 = this.a_class_1684(new Object[]{var28}); - if (var31 == null) { - this.N = 0; + EnderPearlEntity pearl = this.findTrackedPearl(); + if (pearl == null) { + this.ticksUntilLanding = 0; } else { - VecIntData var32 = this.a_VecIntData(new Object[]{var31, var18}); - this.N = var32 != null ? var32.b() : 0; + AnchorCatchPearlLanding landing = this.predictLanding(pearl); + this.ticksUntilLanding = landing != null ? landing.ticksUntilLanding() : 0; } - if (++this.Y > 30 && !this.e(new Object[]{var26})) { - Object[] var36 = new Object[]{null, null, var20}; - var36[1] = true; - var36[0] = "the pearl never landed"; - this.x(var36); + if (++this.detonateTicks > 30 && !this.hasPearlLanded()) { + this.abort("the pearl never landed", true); } else { - if (InventoryUtil.l(new Object[]{Items.GLOWSTONE, var14}) && !Prestige.o.d_boolean______(new Object[0])) { - int var34 = this.e_int(new Object[]{var16}); - if (var34 != -1) { - Object[] var10003 = new Object[]{null, var8}; - var10003[0] = var34; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); + if (InventoryUtil.isHolding(Items.GLOWSTONE) && !Prestige.silentRotationManager.hasActedThisTick()) { + int slot = this.findNonGlowstoneSlot(); + if (slot != -1) { + InventoryUtil.selectSlot(slot); + Prestige.silentRotationManager.setActedThisTick(true); } } - if (this.e(new Object[]{var26})) { - PlayerEntity var35 = this.a_class_1657_(new Object[]{var24}); - if (var35 != null && PositionUtil.a(new Object[]{var35, var6}).distanceTo(this.O.toCenterPos()) > 4.5 && ++this.Z > 10) { - Object[] var10005 = new Object[]{null, null, var20}; - var10005[1] = true; - var10005[0] = "they got away from the anchor"; - this.x(var10005); + if (this.hasPearlLanded()) { + PlayerEntity thrower = this.findThrower(); + if (thrower != null && PositionUtil.getEntityPos(thrower).distanceTo(this.anchorPos.toCenterPos()) > 4.5 && ++this.targetAwayTicks > 10) { + this.abort("they got away from the anchor", true); return; } } @@ -694,40 +570,31 @@ public class AnchorPearlCatch extends Module implements RenderContract3 { } } - private boolean e(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 9746452980435L; - long var6 = var2 ^ 44919710505419L; - if (this.K == null) { + private boolean hasPearlLanded() { + if (this.pearlUuid == null) { return true; } else { - EnderPearlEntity var9 = this.a_class_1684(new Object[]{var6}); - if (var9 == null) { + EnderPearlEntity pearl = this.findTrackedPearl(); + if (pearl == null) { return true; } else { - VecIntData var10 = this.a_VecIntData(new Object[]{var9, var4}); - return var10 == null || var10.b() <= 1; + AnchorCatchPearlLanding landing = this.predictLanding(pearl); + return landing == null || landing.ticksUntilLanding() <= 1; } } } - private boolean f(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 3189381078738L; - long var6 = var2 ^ 106820266972892L; - long var8 = var2 ^ 81591988441341L; - if (!this.e(new Object[]{var8})) { + private boolean canDetonate() { + if (!this.hasPearlLanded()) { return false; } else { - PlayerEntity var11 = this.a_class_1657_(new Object[]{var6}); - if (var11 != null) { - if (PositionUtil.a(new Object[]{var11, var4}).distanceTo(this.O.toCenterPos()) > 4.0) { + PlayerEntity thrower = this.findThrower(); + if (thrower != null) { + if (PositionUtil.getEntityPos(thrower).distanceTo(this.anchorPos.toCenterPos()) > 4.0) { return false; } - if ((Boolean)this.f.getValue() && var11.hurtTime > 0) { + if (this.damageTick.getValue() && thrower.hurtTime > 0) { return false; } } @@ -737,65 +604,45 @@ public class AnchorPearlCatch extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 53031967559301L; - long var6 = var2 ^ 7477342050734L; - long var8 = var2 ^ 139217056066258L; - long var10 = var2 ^ 97874213094519L; - long var12 = var2 ^ 122088347739286L; - long var14 = var2 ^ 19997521145790L; - long var16 = var2 ^ 51598816251400L; - long var18 = var2 ^ 116380450414193L; - long var20 = var2 ^ 101816702374277L; - long var22 = var2 ^ 18365272238834L; - if (!(Boolean)this.i.getValue()) { + public Rotation provideRotation() { + if (!this.rotateSilently.getValue()) { return null; - } else if (b.player == null || b.world == null || b.currentScreen != null || !b.isWindowFocused() || b.player.isUsingItem()) { + } else if (mc.player == null || mc.world == null || mc.currentScreen != null || !mc.isWindowFocused() || mc.player.isUsingItem()) { return null; - } else if (this.D == AnchorState.IDLE || this.O == null) { + } else if (this.state == AnchorCatchState.IDLE || this.anchorPos == null) { return null; - } else if (!AutoObbyCrystal.R && !AutoAnchor.B && !AnchorMacro.p) { - if (Prestige.o.d_boolean______(new Object[0])) { + } else if (!AutoObbyCrystal.sequenceActive && !AutoAnchor.sequenceActive && !AnchorMacro.acting) { + if (Prestige.silentRotationManager.hasActedThisTick()) { return null; } else { - boolean var25 = this.D == AnchorState.WAIT; - if (!var25 || this.N >= 0 && this.N <= this.d_int(new Object[]{var12}) + 8) { - Vec3d var26 = var25 ? this.a_class_243__(new Object[]{var18}) : this.b_class_243(new Object[]{var14}); - if (var26 == null) { - if (var25) { + boolean waiting = this.state == AnchorCatchState.WAIT; + if (!waiting || this.ticksUntilLanding >= 0 && this.ticksUntilLanding <= this.getLeadTicks() + 8) { + Vec3d aimPoint = waiting ? this.getPreAimPoint() : this.getStageAimPoint(); + if (aimPoint == null) { + if (waiting) { return null; } else { - this.h(new Object[]{var22}); + this.registerClickMiss(); return null; } - } else if (!var25 && b.player.getEyePos().distanceTo(var26) > 4.4) { - Object[] var29 = new Object[]{null, null, var10}; - var29[1] = true; - var29[0] = "the anchor left our reach"; - this.x(var29); + } else if (!waiting && mc.player.getEyePos().distanceTo(aimPoint) > 4.4) { + this.abort("the anchor left our reach", true); return null; } else { - RenderBatch var27 = Prestige.o.a_RenderBatch(new Object[]{var26, var20}); - var27 = WorldUtil.d_RenderBatch(new Object[]{var27, var26, var6}); - float var10000 = var27.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var16}; - var10003[0] = var10000; - if (Math.abs(WorldUtil.b_float_____________________(var10003)) >= (Float)this.j.getValue()) { - if (var25) { + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + rotation = RotationUtil.addRandomJitter(rotation, aimPoint); + if (Math.abs(RotationUtil.wrapDegrees(rotation.getYaw() - mc.player.getYaw())) >= this.silentAimFov.getValue()) { + if (waiting) { return null; } else { - Object[] var10005 = new Object[]{null, null, var10}; - var10005[1] = true; - var10005[0] = "outside silent aim FOV"; - this.x(var10005); + this.abort("outside silent aim FOV", true); return null; } - } else if (!var25 && !var27.a_boolean________________________________________(new Object[0]) && this.g(new Object[]{var4})) { - this.o(new Object[]{var27, var8}); - return this.D != AnchorState.IDLE && this.D != AnchorState.WAIT ? var27 : null; + } else if (!waiting && !rotation.isClamped() && this.isStageDelayElapsed()) { + this.performStage(rotation); + return this.state != AnchorCatchState.IDLE && this.state != AnchorCatchState.WAIT ? rotation : null; } else { - return var27; + return rotation; } } } else { @@ -807,505 +654,331 @@ public class AnchorPearlCatch extends Module implements RenderContract3 { } } - private Vec3d a_class_243__(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 25059374759154L; - long var6 = var2 ^ 78129950136654L; - if (!WorldUtil2.b(new Object[]{this.O, Blocks.RESPAWN_ANCHOR, var6})) { - return this.Q; + private Vec3d getPreAimPoint() { + if (!BlockUtil.isOf(this.anchorPos, Blocks.RESPAWN_ANCHOR)) { + return this.anchorHitVec; } else { - return this.g.getValue() && this.R != null && this.T != null ? this.T : RaycastUtil.b(new Object[]{this.O, var4}); + return this.safeAnchor.getValue() && this.coverPos != null && this.coverHitVec != null ? this.coverHitVec : RaycastUtil.getVisibleTopPoint(this.anchorPos); } } - private void n(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 106884231268849L; - long var6 = var2 ^ 52310086118822L; - long var8 = var2 ^ 8841299346179L; - long var10 = var2 ^ 73936017647818L; - long var12 = var2 ^ 30219515827810L; - long var14 = var2 ^ 67011777133794L; - long var16 = var2 ^ 72281694055814L; - if (this.g(new Object[]{var4})) { - Vec3d var19 = this.b_class_243(new Object[]{var10}); - if (var19 != null && b.player.getEyePos().distanceTo(var19) > 4.4) { - Object[] var10005 = new Object[]{null, null, var8}; - var10005[1] = true; - var10005[0] = "the anchor left our reach"; - this.x(var10005); - } else if (var19 == null) { - this.h(new Object[]{var16}); + private void rotateAndPerformStage() { + if (this.isStageDelayElapsed()) { + Vec3d aimPoint = this.getStageAimPoint(); + if (aimPoint != null && mc.player.getEyePos().distanceTo(aimPoint) > 4.4) { + this.abort("the anchor left our reach", true); + } else if (aimPoint == null) { + this.registerClickMiss(); } else { - RenderBatch var20 = WorldUtil.a_RenderBatch_(new Object[]{var19, var12}); - WorldUtil.a_void________________________________(new Object[]{var20, var14}); - this.o(new Object[]{var20, var6}); + Rotation rotation = RotationUtil.getRotationTo(aimPoint); + RotationUtil.applyRotation(rotation); + this.performStage(rotation); } } } - private boolean g(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 31132434106250L; - - return switch (this.D) { + private boolean isStageDelayElapsed() { + return switch (this.state) { case PLACE_ANCHOR -> true; - case SAFE_COVER -> this.E.b(new Object[]{this.l, var4}); - case CHARGE_ANCHOR -> this.F.b(new Object[]{this.m, var4}); - case DETONATE -> this.G.b(new Object[]{this.n, var4}); + case SAFE_COVER -> this.placeTimer.hasElapsedRandom(this.placeDelay); + case CHARGE_ANCHOR -> this.chargeTimer.hasElapsedRandom(this.chargeDelay); + case DETONATE -> this.detonateTimer.hasElapsedRandom(this.detonateDelay); default -> false; }; } - private Vec3d b_class_243(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 119994698583357L; - - return switch (this.D) { - case PLACE_ANCHOR -> this.Q; - case SAFE_COVER -> this.T; - case CHARGE_ANCHOR, DETONATE -> RaycastUtil.b(new Object[]{this.O, var4}); + private Vec3d getStageAimPoint() { + return switch (this.state) { + case PLACE_ANCHOR -> this.anchorHitVec; + case SAFE_COVER -> this.coverHitVec; + case CHARGE_ANCHOR, DETONATE -> RaycastUtil.getVisibleTopPoint(this.anchorPos); default -> null; }; } - private boolean h(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 136128013691486L; - if (++this.V >= 3) { - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = true; - var10005[0] = "lost the click line"; - this.x(var10005); + private boolean registerClickMiss() { + if (++this.clickMisses >= 3) { + this.abort("lost the click line", true); return true; } else { return false; } } - private void o(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - long var3 = (Long)var1[1]; - var3 = 55495940703451L ^ var3; - long var5 = var3 ^ 61769269446856L; - long var7 = var3 ^ 29599222396589L; - long var9 = var3 ^ 81959125273204L; - long var11 = var3 ^ 76359550527191L; - switch (this.D) { + private void performStage(Rotation rotation) { + switch (this.state) { case PLACE_ANCHOR: - this.p(new Object[]{var2, var7}); + this.placeAnchor(rotation); break; case SAFE_COVER: - this.r(new Object[]{var2, var9}); + this.placeCover(rotation); break; case CHARGE_ANCHOR: - this.t(new Object[]{var2, var11}); + this.chargeAnchor(rotation); break; case DETONATE: - this.v(new Object[]{var2, var5}); + this.detonateAnchor(rotation); } } - private void p(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 55495940703451L ^ var2; - long var5 = var2 ^ 139568295210075L; - long var7 = var2 ^ 19172812309200L; - long var9 = var2 ^ 10990255122865L; - long var11 = var2 ^ 132871915364251L; - long var13 = var2 ^ 118373233873600L; - long var15 = var2 ^ 26484172143911L; - long var17 = var2 ^ 89964705616994L; - long var19 = var2 ^ 123711374137404L; - long var21 = var2 ^ 67561877854216L; - long var23 = var2 ^ 58276865719177L; - long var25 = var2 ^ 131019556291918L; - long var27 = var2 ^ 8884709148034L; - long var29 = var2 ^ 128392066872973L; - long var31 = var2 ^ 84827517191119L; - if (WorldUtil2.b(new Object[]{this.O, Blocks.RESPAWN_ANCHOR, var11})) { - this.q(new Object[]{var25}); - } else if (WorldUtil2.e(new Object[]{this.O, var19})) { - Object[] var10005 = new Object[]{null, null, var21}; - var10005[1] = true; - var10005[0] = "the anchor spot got blocked"; - this.x(var10005); + private void placeAnchor(Rotation rotation) { + if (BlockUtil.isOf(this.anchorPos, Blocks.RESPAWN_ANCHOR)) { + this.enterCoverOrChargeStage(); + } else if (BlockUtil.isClickableBlock(this.anchorPos)) { + this.abort("the anchor spot got blocked", true); } else { - Integer var34 = InventoryUtil.a_Integer(new Object[]{Items.RESPAWN_ANCHOR, var7}); - if (var34 == null) { - this.y(new Object[]{"No respawn anchor in hotbar.", var27}); + Integer anchorSlot = InventoryUtil.findHotbarSlot(Items.RESPAWN_ANCHOR); + if (anchorSlot == null) { + this.abortWithError("No respawn anchor in hotbar."); } else { - BlockHitResult var35 = this.a_class_3965_(new Object[]{var4, var23}); - if (var35 != null && var35.getBlockPos().equals(this.P) && var35.getBlockPos().offset(var35.getSide()).equals(this.O)) { - this.V = 0; - if (this.U == -1) { - this.U = RenderUtil6.a(new Object[]{this, var31}); + BlockHitResult hit = this.raycastBlock(rotation); + if (hit != null && hit.getBlockPos().equals(this.anchorSupportPos) && hit.getBlockPos().offset(hit.getSide()).equals(this.anchorPos)) { + this.clickMisses = 0; + if (this.swapBackSlot == -1) { + this.swapBackSlot = SwapBackTracker.claim(this); } - if (InventoryUtil.a_int_____(new Object[]{var17}) != var34) { - int var10000 = var34; - Object[] var10003 = new Object[]{null, var9}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); - this.H.a_void_____________________(new Object[]{var5}); + if (InventoryUtil.getSelectedSlot() != anchorSlot) { + InventoryUtil.selectSlot(anchorSlot); + Prestige.silentRotationManager.setActedThisTick(true); + this.stallTimer.reset(); } else { - this.B(new Object[]{var35, var13}); - this.E.a_void_____________________(new Object[]{var5}); - this.l.reroll(new Object[]{var15}); - this.q(new Object[]{var25}); - this.H.a_void_____________________(new Object[]{var5}); + this.clickBlock(hit); + this.placeTimer.reset(); + this.placeDelay.reroll(); + this.enterCoverOrChargeStage(); + this.stallTimer.reset(); } } else { - this.h(new Object[]{var29}); + this.registerClickMiss(); } } } } - private void q(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 81287101386936L; - if ((Boolean)this.g.getValue() && this.R != null) { - this.D = AnchorState.SAFE_COVER; + private void enterCoverOrChargeStage() { + if (this.safeAnchor.getValue() && this.coverPos != null) { + this.state = AnchorCatchState.SAFE_COVER; } else { - this.s(new Object[]{var4}); + this.enterChargeStage(); } - this.V = 0; + this.clickMisses = 0; } - private void r(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - long var3 = (Long)var1[1]; - var3 = 55495940703451L ^ var3; - long var5 = var3 ^ 36158510474469L; - long var7 = var3 ^ 51190725791874L; - long var9 = var3 ^ 71541387984393L; - long var11 = var3 ^ 111469975799632L; - long var13 = var3 ^ 98543158039912L; - long var15 = var3 ^ 65738385714713L; - long var17 = var3 ^ 102114368597492L; - long var19 = var3 ^ 1870625810619L; - long var21 = var3 ^ 40289345931860L; - long var23 = var3 ^ 32192686800662L; - if (this.R != null && this.S != null && this.T != null) { - if (WorldUtil2.e(new Object[]{this.R, var5})) { - this.s(new Object[]{var17}); + private void placeCover(Rotation rotation) { + if (this.coverPos != null && this.coverSupportPos != null && this.coverHitVec != null) { + if (BlockUtil.isClickableBlock(this.coverPos)) { + this.enterChargeStage(); } else { - Block var26 = ((String)this.h.getValue()).equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN; - Integer var27 = InventoryUtil.a_Integer(new Object[]{var26.asItem(), var9}); - if (var27 == null) { - this.s(new Object[]{var17}); + Integer coverSlot = InventoryUtil.findHotbarSlot((this.safeBlock.getValue().equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN).asItem()); + if (coverSlot == null) { + this.enterChargeStage(); } else { - BlockHitResult var28 = this.a_class_3965_(new Object[]{var2, var11}); - if (var28 != null && var28.getBlockPos().equals(this.S) && var28.getBlockPos().offset(var28.getSide()).equals(this.R)) { - this.V = 0; - if (this.U == -1) { - this.U = RenderUtil6.a(new Object[]{this, var23}); + BlockHitResult hit = this.raycastBlock(rotation); + if (hit != null && hit.getBlockPos().equals(this.coverSupportPos) && hit.getBlockPos().offset(hit.getSide()).equals(this.coverPos)) { + this.clickMisses = 0; + if (this.swapBackSlot == -1) { + this.swapBackSlot = SwapBackTracker.claim(this); } - if (InventoryUtil.a_int_____(new Object[]{var19}) != var27) { - int var10000 = var27; - Object[] var10003 = new Object[]{null, var13}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); - this.H.a_void_____________________(new Object[]{var7}); + if (InventoryUtil.getSelectedSlot() != coverSlot) { + InventoryUtil.selectSlot(coverSlot); + Prestige.silentRotationManager.setActedThisTick(true); + this.stallTimer.reset(); } else { - this.B(new Object[]{var28, var15}); - this.V = 0; - this.s(new Object[]{var17}); - this.H.a_void_____________________(new Object[]{var7}); + this.clickBlock(hit); + this.clickMisses = 0; + this.enterChargeStage(); + this.stallTimer.reset(); } } else { - this.h(new Object[]{var21}); + this.registerClickMiss(); } } } } else { - this.s(new Object[]{var17}); + this.enterChargeStage(); } } - private void s(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 70543637838253L; - long var6 = var2 ^ 42679853197521L; - this.D = AnchorState.CHARGE_ANCHOR; - this.V = 0; - this.F.a_void_____________________(new Object[]{var4}); - this.m.reroll(new Object[]{var6}); - this.H.a_void_____________________(new Object[]{var4}); + private void enterChargeStage() { + this.state = AnchorCatchState.CHARGE_ANCHOR; + this.clickMisses = 0; + this.chargeTimer.reset(); + this.chargeDelay.reroll(); + this.stallTimer.reset(); } - private void t(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 55495940703451L ^ var2; - long var5 = var2 ^ 126168308975624L; - long var7 = var2 ^ 36793011993633L; - long var9 = var2 ^ 86763849274026L; - long var11 = var2 ^ 117209374501875L; - long var13 = var2 ^ 63787996704883L; - long var15 = var2 ^ 95002839497163L; - long var17 = var2 ^ 43164078460897L; - long var19 = var2 ^ 57387848221370L; - long var21 = var2 ^ 96267081242104L; - long var23 = var2 ^ 15718616826904L; - long var25 = var2 ^ 47677748881143L; - long var27 = var2 ^ 20612601287605L; - if (!WorldUtil2.b(new Object[]{this.O, Blocks.RESPAWN_ANCHOR, var17})) { - this.h(new Object[]{var25}); - } else if (WorldUtil2.a_int______________________________(new Object[]{this.O, var13}) > 0) { - this.u(new Object[]{var5}); + private void chargeAnchor(Rotation rotation) { + if (!BlockUtil.isOf(this.anchorPos, Blocks.RESPAWN_ANCHOR)) { + this.registerClickMiss(); + } else if (BlockUtil.getAnchorCharges(this.anchorPos) > 0) { + this.enterDetonateStage(); } else { - Integer var30 = InventoryUtil.a_Integer(new Object[]{Items.GLOWSTONE, var9}); - if (var30 == null) { - this.y(new Object[]{"No glowstone in hotbar.", var21}); + Integer glowstoneSlot = InventoryUtil.findHotbarSlot(Items.GLOWSTONE); + if (glowstoneSlot == null) { + this.abortWithError("No glowstone in hotbar."); } else { - BlockHitResult var31 = this.a_class_3965_(new Object[]{var4, var11}); - if (var31 != null && var31.getBlockPos().equals(this.O)) { - this.V = 0; - if (this.U == -1) { - this.U = RenderUtil6.a(new Object[]{this, var27}); + BlockHitResult hit = this.raycastBlock(rotation); + if (hit != null && hit.getBlockPos().equals(this.anchorPos)) { + this.clickMisses = 0; + if (this.swapBackSlot == -1) { + this.swapBackSlot = SwapBackTracker.claim(this); } - if (InventoryUtil.a_int_____(new Object[]{var23}) != var30) { - int var10000 = var30; - Object[] var10003 = new Object[]{null, var15}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); - this.H.a_void_____________________(new Object[]{var7}); + if (InventoryUtil.getSelectedSlot() != glowstoneSlot) { + InventoryUtil.selectSlot(glowstoneSlot); + Prestige.silentRotationManager.setActedThisTick(true); + this.stallTimer.reset(); } else { - this.B(new Object[]{var31, var19}); - this.u(new Object[]{var5}); + this.clickBlock(hit); + this.enterDetonateStage(); } } else { - this.h(new Object[]{var25}); + this.registerClickMiss(); } } } } - private void u(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 107410496745714L; - long var6 = var2 ^ 8013897572750L; - this.D = AnchorState.DETONATE; - this.V = 0; - this.Y = 0; - this.Z = 0; - this.G.a_void_____________________(new Object[]{var4}); - this.n.reroll(new Object[]{var6}); - this.H.a_void_____________________(new Object[]{var4}); + private void enterDetonateStage() { + this.state = AnchorCatchState.DETONATE; + this.clickMisses = 0; + this.detonateTicks = 0; + this.targetAwayTicks = 0; + this.detonateTimer.reset(); + this.detonateDelay.reroll(); + this.stallTimer.reset(); } - private void v(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - long var3 = (Long)var1[1]; - var3 = 55495940703451L ^ var3; - long var5 = var3 ^ 115212540778598L; - long var7 = var3 ^ 101333761233470L; - long var9 = var3 ^ 47521703352276L; - long var11 = var3 ^ 99089109688830L; - long var13 = var3 ^ 64665293144898L; - long var15 = var3 ^ 80739864521893L; - long var17 = var3 ^ 111468994665748L; - long var19 = var3 ^ 55667520196605L; - long var21 = var3 ^ 75673978443049L; - long var23 = var3 ^ 4664942623430L; - long var25 = var3 ^ 34858588251757L; - long var27 = var3 ^ 26143459558892L; - long var29 = var3 ^ 78464159653484L; - long var31 = var3 ^ 47085685652455L; - long var33 = var3 ^ 94574239697128L; - if (!WorldUtil2.b(new Object[]{this.O, Blocks.RESPAWN_ANCHOR, var11})) { - this.h(new Object[]{var33}); - } else if (WorldUtil2.a_int______________________________(new Object[]{this.O, var29}) <= 0) { - this.D = AnchorState.CHARGE_ANCHOR; - this.V = 0; - this.H.a_void_____________________(new Object[]{var7}); - this.F.a_void_____________________(new Object[]{var7}); - this.m.reroll(new Object[]{var13}); - } else if (this.f(new Object[]{var23})) { - double var36 = Prestige.f.k(new Object[]{b.player, this.O.toCenterPos(), var17}); - float var38 = b.player.getHealth() + b.player.getAbsorptionAmount(); - if (var36 > ((Float)this.d.getValue()).floatValue()) { - Object[] var42 = new Object[]{null, null, var25}; - var42[1] = true; - var42[0] = "self damage too high"; - this.x(var42); - } else if ((Boolean)this.e.getValue() && var36 >= var38 - 1.0F) { - Object[] var10005 = new Object[]{null, null, var25}; - var10005[1] = true; - var10005[0] = "would have killed us"; - this.x(var10005); - } else if (InventoryUtil.l(new Object[]{Items.GLOWSTONE, var19})) { - int var41 = this.U != -1 ? this.U : this.e_int(new Object[]{var21}); - if (var41 == -1) { - this.y(new Object[]{"No non-glowstone slot to detonate with.", var31}); + private void detonateAnchor(Rotation rotation) { + if (!BlockUtil.isOf(this.anchorPos, Blocks.RESPAWN_ANCHOR)) { + this.registerClickMiss(); + } else if (BlockUtil.getAnchorCharges(this.anchorPos) <= 0) { + this.state = AnchorCatchState.CHARGE_ANCHOR; + this.clickMisses = 0; + this.stallTimer.reset(); + this.chargeTimer.reset(); + this.chargeDelay.reroll(); + } else if (this.canDetonate()) { + double selfDamage = Prestige.damageCalculator.getAnchorDamage(mc.player, this.anchorPos.toCenterPos()); + float selfHealth = mc.player.getHealth() + mc.player.getAbsorptionAmount(); + if (selfDamage > this.maxSelfDamage.getValue().floatValue()) { + this.abort("self damage too high", true); + } else if (this.antiSuicide.getValue() && selfDamage >= selfHealth - 1.0F) { + this.abort("would have killed us", true); + } else if (InventoryUtil.isHolding(Items.GLOWSTONE)) { + int detonateSlot = this.swapBackSlot != -1 ? this.swapBackSlot : this.findNonGlowstoneSlot(); + if (detonateSlot == -1) { + this.abortWithError("No non-glowstone slot to detonate with."); } else { - Object[] var10003 = new Object[]{null, var9}; - var10003[0] = var41; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); - this.H.a_void_____________________(new Object[]{var7}); + InventoryUtil.selectSlot(detonateSlot); + Prestige.silentRotationManager.setActedThisTick(true); + this.stallTimer.reset(); } } else { - BlockHitResult var39 = this.a_class_3965_(new Object[]{var2, var27}); - if (var39 != null && var39.getBlockPos().equals(this.O)) { - this.V = 0; - this.B(new Object[]{var39, var15}); - this.w(new Object[]{var5}); + BlockHitResult hit = this.raycastBlock(rotation); + if (hit != null && hit.getBlockPos().equals(this.anchorPos)) { + this.clickMisses = 0; + this.clickBlock(hit); + this.finishCatch(); } else { - this.h(new Object[]{var33}); + this.registerClickMiss(); } } } } - private void w(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 75439754253081L; - if (this.K != null) { - this.J.add(this.K); + private void finishCatch() { + if (this.pearlUuid != null) { + this.handledPearls.add(this.pearlUuid); } - this.A(new Object[]{var4}); - this.z(new Object[0]); + this.restoreOriginalSlot(); + this.resetState(); } - private void x(Object[] var1) { - String var5 = (String)var1[0]; - boolean var2 = (Boolean)var1[1]; - long var3 = (Long)var1[2]; - var3 = 55495940703451L ^ var3; - long var6 = var3 ^ 72448090584337L; - long var8 = var3 ^ 125226629705864L; - long var10 = var3 ^ 57043752135954L; - long var12 = var3 ^ 42540602525721L; - if (var5 != null) { - RenderHelper27 var10000 = this.I; - Object[] var10004 = new Object[]{null, var12}; - var10004[0] = 3000.0F; - if (var10000.a(var10004)) { - ModuleNotificationsElement.s(new Object[]{this, "Anchor Pearl Catch: " + var5, NotificationType.INFO, var6}); - this.I.a_void_____________________(new Object[]{var8}); + private void abort(String reason, boolean markHandled) { + if (reason != null) { + if (this.notifyTimer.hasElapsed(3000.0F)) { + ModuleNotificationsElement.postNotification(this, "Anchor Pearl Catch: " + reason, NotificationType.INFO); + this.notifyTimer.reset(); } } - if (var2 && this.K != null) { - this.J.add(this.K); + if (markHandled && this.pearlUuid != null) { + this.handledPearls.add(this.pearlUuid); } - this.A(new Object[]{var10}); - this.z(new Object[0]); + this.restoreOriginalSlot(); + this.resetState(); } - private void y(Object[] var1) { - String var2 = (String)var1[0]; - long var3 = (Long)var1[1]; - var3 = 55495940703451L ^ var3; - long var5 = var3 ^ 128105903564955L; - long var7 = var3 ^ 75326219857154L; - long var9 = var3 ^ 7834012031313L; - long var11 = var3 ^ 21810277291411L; - RenderHelper27 var10000 = this.I; - Object[] var10004 = new Object[]{null, var11}; - var10004[0] = 3000.0F; - if (var10000.a(var10004)) { - ModuleNotificationsElement.s(new Object[]{this, var2, NotificationType.ERROR, var5}); - this.I.a_void_____________________(new Object[]{var7}); + private void abortWithError(String message) { + if (this.notifyTimer.hasElapsed(3000.0F)) { + ModuleNotificationsElement.postNotification(this, message, NotificationType.ERROR); + this.notifyTimer.reset(); } - Object[] var10005 = new Object[]{null, null, var9}; - var10005[1] = true; - var10005[0] = null; - this.x(var10005); + this.abort(null, true); } - private void z(Object[] var1) { - this.D = AnchorState.IDLE; - this.K = null; - this.L = null; - this.M = null; - this.N = -1; - this.O = null; - this.P = null; - this.Q = null; - this.R = null; - this.S = null; - this.T = null; - this.V = 0; - this.W = 0; - this.X = 0; - this.Y = 0; - this.Z = 0; - C = false; + private void resetState() { + this.state = AnchorCatchState.IDLE; + this.pearlUuid = null; + this.throwerUuid = null; + this.landingPos = null; + this.ticksUntilLanding = -1; + this.anchorPos = null; + this.anchorSupportPos = null; + this.anchorHitVec = null; + this.coverPos = null; + this.coverSupportPos = null; + this.coverHitVec = null; + this.clickMisses = 0; + this.actionTicks = 0; + this.waitTicks = 0; + this.detonateTicks = 0; + this.targetAwayTicks = 0; + active = false; } - private void A(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 55495940703451L ^ var2; - long var4 = var2 ^ 49109876669017L; - long var6 = var2 ^ 8165528657067L; - if (this.U != -1) { - if (b.player == null) { - RenderUtil6.a_void____________________________(new Object[]{this, var4}); - this.U = -1; - } else if (!RenderUtil6.a_boolean____________________________________________(new Object[]{this})) { - this.U = -1; - } else if (!Prestige.o.d_boolean______(new Object[0])) { - if ((Boolean)this.k.getValue()) { - int var10000 = this.U; - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); + private void restoreOriginalSlot() { + if (this.swapBackSlot != -1) { + if (mc.player == null) { + SwapBackTracker.release(this); + this.swapBackSlot = -1; + } else if (!SwapBackTracker.isOwner(this)) { + this.swapBackSlot = -1; + } else if (!Prestige.silentRotationManager.hasActedThisTick()) { + if (this.swapBack.getValue()) { + InventoryUtil.selectSlot(this.swapBackSlot); + Prestige.silentRotationManager.setActedThisTick(true); } - RenderUtil6.a_void____________________________(new Object[]{this, var4}); - this.U = -1; + SwapBackTracker.release(this); + this.swapBackSlot = -1; } } } - private void B(Object[] var1) { - BlockHitResult var4 = (BlockHitResult)var1[0]; - boolean var5 = b.interactionManager.interactBlock(b.player, Hand.MAIN_HAND, var4).isAccepted(); - Prestige.o.g(new Object[]{true}); - if (var5) { - b.player.swingHand(Hand.MAIN_HAND); + private void clickBlock(BlockHitResult hit) { + boolean accepted = mc.interactionManager.interactBlock(mc.player, Hand.MAIN_HAND, hit).isAccepted(); + Prestige.silentRotationManager.setActedThisTick(true); + if (accepted) { + mc.player.swingHand(Hand.MAIN_HAND); } } - private BlockHitResult a_class_3965_(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - long var3 = (Long)var1[1]; - var3 = 55495940703451L ^ var3; - long var5 = var3 ^ 10139559460270L; - Event.b(); - return WorldUtil.a_class_239_(new Object[]{var2, var5}) instanceof BlockHitResult var9 ? var9 : null; + private BlockHitResult raycastBlock(Rotation rotation) { + return RotationUtil.raycastRotation(rotation) instanceof BlockHitResult blockHit ? blockHit : null; } - private int e_int(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 < 9; var5++) { - if (b.player.getInventory().getStack(var5).getItem() != Items.GLOWSTONE) { - return var5; + private int findNonGlowstoneSlot() { + for (int slot = 0; slot < 9; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() != Items.GLOWSTONE) { + return slot; } } @@ -1313,212 +986,79 @@ public class AnchorPearlCatch extends Module implements RenderContract3 { } @Subscribe - public void a(TickEvent27 var1) { - if ((Boolean)this.o.getValue() && b.player != null && b.world != null) { - if (this.D != AnchorState.IDLE) { - if (this.D == AnchorState.WAIT && this.M != null) { - this.C(new Object[]{var1, BlockPos.ofFloored(this.M), (Color)this.r.getValue(), 22045344565916L}); + public void onRender3D(Render3DEvent event) { + if (this.render.getValue() && mc.player != null && mc.world != null) { + if (this.state != AnchorCatchState.IDLE) { + if (this.state == AnchorCatchState.WAIT && this.landingPos != null) { + this.drawBlockOutline(event, BlockPos.ofFloored(this.landingPos), this.landingColor.getValue()); } - if (this.O != null && this.D != AnchorState.WAIT) { - this.C(new Object[]{var1, this.O, (Color)this.p.getValue(), 22045344565916L}); + if (this.anchorPos != null && this.state != AnchorCatchState.WAIT) { + this.drawBlockOutline(event, this.anchorPos, this.anchorColor.getValue()); } - if (this.D == AnchorState.SAFE_COVER && this.R != null) { - this.C(new Object[]{var1, this.R, (Color)this.q.getValue(), 22045344565916L}); + if (this.state == AnchorCatchState.SAFE_COVER && this.coverPos != null) { + this.drawBlockOutline(event, this.coverPos, this.safeColor.getValue()); } } } } - private void C(Object[] var1) { - TickEvent27 var2 = (TickEvent27)var1[0]; - BlockPos var3 = (BlockPos)var1[1]; - Color var4 = (Color)var1[2]; - long var5 = (Long)var1[3]; - var5 = 55495940703451L ^ var5; - long var7 = var5 ^ 81687652922313L; - MatrixCameraData var10000 = var2.b; - RenderHelper8 var10001 = var2.a; - float var10002 = var3.getX(); - float var10003 = var3.getY(); - float var10004 = var3.getZ(); - float var10005 = var3.getX() + 1.0F; - float var10006 = var3.getY() + 1.0F; - float var10007 = var3.getZ() + 1.0F; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var4, var7}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); + private void drawBlockOutline(Render3DEvent event, BlockPos pos, Color color) { + CameraMatrices matrices = event.context; + BufferSource buffers = event.renderer; + float minX = pos.getX(); + float minY = pos.getY(); + float minZ = pos.getZ(); + ShapeRenderer.drawBoxOutline(matrices, buffers, minX, minY, minZ, pos.getX() + 1.0F, pos.getY() + 1.0F, pos.getZ() + 1.0F, color); } @Subscribe - public void a(TickEvent25 var1) { - if ((Boolean)this.o.getValue()) { - if (b.currentScreen == null || b.currentScreen instanceof ChatScreen) { - if (b.world != null && b.player != null) { - if (this.D != AnchorState.IDLE && this.O != null) { - String var21 = this.N > 0 ? String.format("%.1fs", this.N / 20.0F) : "!"; - Vec3d var22 = this.D == AnchorState.WAIT && this.M != null - ? new Vec3d(this.M.x, this.M.y + 0.8, this.M.z) - : new Vec3d(this.O.getX() + 0.5, this.O.getY() + 1.3, this.O.getZ() + 0.5); - Vec3d var23 = MatrixStack.a_class_243_______________(new Object[]{var22, 73023576373275L}); - if (!(var23.z < 0.0) && !(var23.z >= 1.0)) { - Font var24 = Prestige.c.a(new Object[]{1236438218049L}); - short var10000 = 24450; - float var25 = var24.c_float___(new Object[]{78913221670390L}); - String var26 = "Anchor"; - float var27 = var24.a_float______________(new Object[]{var26, 47859522476307L}); - float var28 = var24.a_float______________(new Object[]{var21, 47859522476307L}); - float var29 = 3.0F; - float var30 = 0.5F; - float var31 = 4.0F; - float var32 = 3.0F; - float var33 = 5.0F; - float var34 = Math.max(var27, var28); - float var35 = var25 + var29 + var30 + var29 + var25; - float var36 = var34 + 2.0F * var31; - float var37 = var35 + 2.0F * var32; - float var38 = (float)var23.x; - float var39 = (float)var23.y; - float var40 = var38 - var36 / 2.0F; - float var41 = var39 - var37 / 2.0F; - Matrix4f var42 = new Matrix4f(); - Color var43 = new Color(14, 14, 14, 200); - Color var44 = new Color(255, 255, 255, 50); - Color var45 = new Color(255, 255, 255, 255); - Color var46 = (Color)this.p.getValue(); - RenderHelper8 var50 = var1.a; - MatrixCameraData var10001 = var1.b; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 35553070502242L}; - var10011[8] = var33; - var10011[7] = 5; - var10011[6] = var37; - var10011[5] = var36; - var10011[4] = var41; - var10011[3] = var40; - var10011[2] = var42; - var10011[1] = var10001; - var10011[0] = var50; - RenderTarget.e(var10011); - RenderHelper8 var51 = var1.a; - var10001 = var1.b; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 16042616216793L}; - var10011[8] = var33; - var10011[7] = var43; - var10011[6] = var37; - var10011[5] = var36; - var10011[4] = var41; - var10011[3] = var40; - var10011[2] = var42; - var10011[1] = var10001; - var10011[0] = var51; - RoundedPosColorShader.c(var10011); - float var10003 = var38 - var27 / 2.0F; - float var10004 = var41 + var32; - Object[] var10008 = new Object[]{null, null, null, null, var46, 36494305523424L}; - var10008[3] = var10004; - var10008[2] = var10003; - var10008[1] = var26; - var10008[0] = var42; - var24.v(var10008); - float var47 = var40 + var31; - float var48 = var40 + var36 - var31; - float var49 = var41 + var32 + var25 + var29; - var10004 = var49 + var30; - var10008 = new Object[]{null, null, null, null, null, var44, 43912076835818L}; - var10008[4] = var10004; - var10008[3] = var48; - var10008[2] = var49; - var10008[1] = var47; - var10008[0] = var42; - RenderState.l(var10008); - var10003 = var38 - var28 / 2.0F; - var10004 = var49 + var30 + var29; - var10008 = new Object[]{null, null, null, null, var45, 36494305523424L}; - var10008[3] = var10004; - var10008[2] = var10003; - var10008[1] = var21; - var10008[0] = var42; - var24.v(var10008); + public void onRender2D(Render2DEvent event) { + if (this.render.getValue()) { + if (mc.currentScreen == null || mc.currentScreen instanceof ChatScreen) { + if (mc.world != null && mc.player != null) { + if (this.state != AnchorCatchState.IDLE && this.anchorPos != null) { + String etaText = this.ticksUntilLanding > 0 ? String.format("%.1fs", this.ticksUntilLanding / 20.0F) : "!"; + Vec3d screenPos = Render2D.worldToScreen(this.state == AnchorCatchState.WAIT && this.landingPos != null + ? new Vec3d(this.landingPos.x, this.landingPos.y + 0.8, this.landingPos.z) + : new Vec3d(this.anchorPos.getX() + 0.5, this.anchorPos.getY() + 1.3, this.anchorPos.getZ() + 0.5)); + if (!(screenPos.z < 0.0) && !(screenPos.z >= 1.0)) { + MsdfFont font = Prestige.fontManager.getDefaultFont(); + float lineHeight = font.getLineHeight(); + String title = "Anchor"; + float titleWidth = font.getTextWidth(title); + float etaWidth = font.getTextWidth(etaText); + float lineGap = 3.0F; + float dividerHeight = 0.5F; + float paddingX = 4.0F; + float paddingY = 3.0F; + float cornerRadius = 5.0F; + float contentWidth = Math.max(titleWidth, etaWidth); + float contentHeight = lineHeight + lineGap + dividerHeight + lineGap + lineHeight; + float boxWidth = contentWidth + 2.0F * paddingX; + float boxHeight = contentHeight + 2.0F * paddingY; + float centerX = (float)screenPos.x; + float centerY = (float)screenPos.y; + float boxX = centerX - boxWidth / 2.0F; + float boxY = centerY - boxHeight / 2.0F; + Matrix4f matrix = new Matrix4f(); + Color backgroundColor = new Color(14, 14, 14, 200); + Color dividerColor = new Color(255, 255, 255, 50); + Color textColor = new Color(255, 255, 255, 255); + Color titleColor = this.anchorColor.getValue(); + BlurredRoundedRectShader.drawBlurredRect(event.renderer, event.context, matrix, boxX, boxY, boxWidth, boxHeight, 5, cornerRadius); + RoundedRectShader.drawRoundedRect(event.renderer, event.context, matrix, boxX, boxY, boxWidth, boxHeight, backgroundColor, cornerRadius); + font.drawText(matrix, title, centerX - titleWidth / 2.0F, boxY + paddingY, titleColor); + float dividerLeft = boxX + paddingX; + float dividerRight = boxX + boxWidth - paddingX; + float dividerY = boxY + paddingY + lineHeight + lineGap; + ShapeRenderer.drawRect(matrix, dividerLeft, dividerY, dividerRight, dividerY + dividerHeight, dividerColor); + font.drawText(matrix, etaText, centerX - etaWidth / 2.0F, dividerY + dividerHeight + lineGap, textColor); } } } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AnchorPlacer.java b/src/main/java/dev/zprestige/prestige/module/combat/AnchorPlacer.java index 43985d7..7aae836 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AnchorPlacer.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AnchorPlacer.java @@ -8,23 +8,20 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.inventory.ArmorUtil; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.inventory.AnchorUseGuard; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.math.MathUtil3; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.math.BlockChangeTracker; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.world.RaycastUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.util.ArrayList; import java.util.Set; import java.util.function.Predicate; @@ -35,132 +32,117 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; -public class AnchorPlacer extends Module implements RenderContract3 { - private EnumSetting a; - private RangeSetting c; - private EnumSetting d; - private BoolSetting e; - private BoolSetting f; - private FloatSetting g; - public ArrayList h = new ArrayList(); - private RenderHelper27 i = new RenderHelper27(26293358099357L); - private int j = -1; - public static boolean k; - private int l = 0; +public class AnchorPlacer extends Module implements RotationProvider { + private EnumSetting fireMode; + private RangeSetting delay; + private EnumSetting swap; + private BoolSetting swapBack; + private BoolSetting silentAim; + private FloatSetting silentAimFov; + public ArrayList placedAnchors = new ArrayList(); + private StopWatch actionTimer = new StopWatch(); + private int swapBackSlot = -1; + public static boolean acting; + private int actingUntilAge = 0; public AnchorPlacer() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.g.setVisibility_FloatSetting(new Object[]{(Predicate)lpL52_0 -> (Boolean)this.f.getValue(), 35046756052036L}); - this.e.setVisibility_BoolSetting(new Object[]{(Predicate)lpL53_0 -> ((String)this.d.getValue()).equals("Swap"), 73196168581295L}); + this.silentAimFov.visibleWhen((Predicate)ignored -> this.silentAim.getValue()); + this.swapBack.visibleWhen((Predicate)ignored -> this.swap.getValue().equals("Swap")); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public boolean b(Object[] var1) { - return "Persistent".equals(this.a.getValue()); + public boolean isPersistent() { + return "Persistent".equals(this.fireMode.getValue()); } @Subscribe - public void a(TickEvent3 var1) { - this.h.clear(); + public void onGameJoin(GameJoinEvent event) { + this.placedAnchors.clear(); } @Subscribe - public void a(PacketEvent var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof BlockUpdateS2CPacket var5 && var5.getState() != null && var5.getState().getBlock() != Blocks.RESPAWN_ANCHOR) { - this.h.remove(var5.getPos()); + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof BlockUpdateS2CPacket blockUpdate && blockUpdate.getState() != null && blockUpdate.getState().getBlock() != Blocks.RESPAWN_ANCHOR) { + this.placedAnchors.remove(blockUpdate.getPos()); } } @Subscribe - public void a(TickEvent5 var1) { - if (ArmorUtil.a(new Object[]{12659099461385L})) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (AnchorUseGuard.shouldCancelItemUse()) { + event.cancel(); } } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - this.j = -1; - k = false; - this.l = 0; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + this.swapBackSlot = -1; + acting = false; + this.actingUntilAge = 0; + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - this.h.clear(); - this.j = -1; - k = false; - this.l = 0; - Prestige.o.f(new Object[]{this, var4}); + public void onDisable() { + this.placedAnchors.clear(); + this.swapBackSlot = -1; + acting = false; + this.actingUntilAge = 0; + Prestige.silentRotationManager.removeRotationProvider(this); } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 109216027809139L ^ var2; - long var4 = var2 ^ 19005928290183L; - if (((String)this.a.getValue()).equals("One-Shot")) { - this.toggle(new Object[]{var4}); + private void disableIfOneShot() { + if (this.fireMode.getValue().equals("One-Shot")) { + this.toggle(); } } @Subscribe - public void a(TickEvent19 var1) { - k = b.player != null && b.player.age <= this.l; - if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem()) { - if (!Prestige.o.d_boolean______(new Object[0])) { - if (!AutoObbyCrystal.R && !AnchorPearlCatch.C) { - if (!SafeAnchor.d(new Object[0])) { - if (this.i.b(new Object[]{this.c, 89714527855213L})) { - if (this.j != -1) { - this.l = b.player.age + 2; - k = true; - int var10000 = this.j; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - this.j = -1; - this.j(new Object[]{29353517675864L}); - } else if (!(Boolean)this.f.getValue() - || b.crosshairTarget instanceof BlockHitResult var29 + public void onClientTick(ClientTickEvent event) { + acting = mc.player != null && mc.player.age <= this.actingUntilAge; + if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem()) { + if (!Prestige.silentRotationManager.hasActedThisTick()) { + if (!AutoObbyCrystal.sequenceActive && !AnchorPearlCatch.active) { + if (!SafeAnchor.isCoverPending()) { + if (this.actionTimer.hasElapsedRandom(this.delay)) { + if (this.swapBackSlot != -1) { + this.actingUntilAge = mc.player.age + 2; + acting = true; + InventoryUtil.selectSlot(this.swapBackSlot); + this.swapBackSlot = -1; + this.disableIfOneShot(); + } else if (!this.silentAim.getValue() + || mc.crosshairTarget instanceof BlockHitResult targetedHit && ( - WorldUtil2.d(new Object[]{var29, 85348799407646L}) - && !WorldUtil2.g( - new Object[]{WorldUtil2.a_class_2338______(new Object[]{var29, 110292667014705L}), 87119771691358L} + BlockUtil.isClickableBlockHit(targetedHit) + && !BlockUtil.hasEntityAt( + BlockUtil.getPlacePos(targetedHit) ) - || WorldUtil2.b(new Object[]{var29.getBlockPos(), Blocks.RESPAWN_ANCHOR, 91415361137757L}) + || BlockUtil.isOf(targetedHit.getBlockPos(), Blocks.RESPAWN_ANCHOR) )) { - if (!(b.crosshairTarget instanceof BlockHitResult var32)) { - this.j(new Object[]{29353517675864L}); - } else if (!MathUtil3.a_boolean_______(new Object[]{var32.getBlockPos(), 44262730353436L}) - && !MathUtil3.b_boolean_____(new Object[]{var32.getBlockPos(), 57098141355368L})) { - boolean var34 = WorldUtil2.b(new Object[]{var32.getBlockPos(), Blocks.RESPAWN_ANCHOR, 91415361137757L}) - && WorldUtil2.a_int______________________________(new Object[]{var32.getBlockPos(), 86201794204623L}) == 0; - boolean var31 = WorldUtil2.b(new Object[]{var32.getBlockPos(), Blocks.RESPAWN_ANCHOR, 91415361137757L}) - && WorldUtil2.a_int______________________________(new Object[]{var32.getBlockPos(), 86201794204623L}) > 0; - if (var31) { - this.l = b.player.age + 2; - k = true; - this.l(new Object[]{var32, 25123173776940L}); - } else if (!WorldUtil2.d(new Object[]{var32, 85348799407646L}) && !var34) { - this.j(new Object[]{29353517675864L}); + if (!(mc.crosshairTarget instanceof BlockHitResult crosshairHit)) { + this.disableIfOneShot(); + } else if (!BlockChangeTracker.isRecentlyExploded(crosshairHit.getBlockPos()) + && !BlockChangeTracker.isRecentlyPlaced(crosshairHit.getBlockPos())) { + boolean emptyAnchor = BlockUtil.isOf(crosshairHit.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && BlockUtil.getAnchorCharges(crosshairHit.getBlockPos()) == 0; + if (BlockUtil.isOf(crosshairHit.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && BlockUtil.getAnchorCharges(crosshairHit.getBlockPos()) > 0) { + this.actingUntilAge = mc.player.age + 2; + acting = true; + this.explodeAnchor(crosshairHit); + } else if (!BlockUtil.isClickableBlockHit(crosshairHit) && !emptyAnchor) { + this.disableIfOneShot(); } else { - this.l = b.player.age + 2; - k = true; - Object[] var10005 = new Object[]{null, null, 7206424965116L}; - var10005[1] = var34; - var10005[0] = var32; - this.m(var10005); + this.actingUntilAge = mc.player.age + 2; + acting = true; + this.placeOrChargeAnchor(crosshairHit, emptyAnchor); } } } @@ -172,290 +154,159 @@ public class AnchorPlacer extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 85123560351320L; - long var6 = var2 ^ 29247161167908L; - long var8 = var2 ^ 48125314331016L; - long var10 = var2 ^ 31536927622116L; - long var12 = var2 ^ 136752692109656L; - long var14 = var2 ^ 81647464664376L; - long var16 = var2 ^ 116785209433731L; - long var18 = var2 ^ 7477342050734L; - long var20 = var2 ^ 784510322407L; - long var22 = var2 ^ 2290821892519L; - long var24 = var2 ^ 75440226304702L; - long var26 = var2 ^ 33065978990036L; - long var28 = var2 ^ 114122501858469L; - long var30 = var2 ^ 136772110525137L; - long var32 = var2 ^ 101816702374277L; - if (!(Boolean)this.f.getValue()) { + public Rotation provideRotation() { + if (!this.silentAim.getValue()) { return null; - } else if (b.player.isUsingItem()) { + } else if (mc.player.isUsingItem()) { return null; - } else if (!this.i.b(new Object[]{this.c, var26})) { + } else if (!this.actionTimer.hasElapsedRandom(this.delay)) { return null; - } else if (Prestige.o.d_boolean______(new Object[0])) { + } else if (Prestige.silentRotationManager.hasActedThisTick()) { return null; - } else if (SafeAnchor.d(new Object[0])) { + } else if (SafeAnchor.isCoverPending()) { return null; - } else if (AnchorPearlCatch.C) { + } else if (AnchorPearlCatch.active) { return null; } else if (!( - b.crosshairTarget instanceof BlockHitResult var35 + mc.crosshairTarget instanceof BlockHitResult crosshairHit && ( - WorldUtil2.d(new Object[]{var35, var22}) && !WorldUtil2.g(new Object[]{WorldUtil2.a_class_2338______(new Object[]{var35, var8}), var20}) - || WorldUtil2.b(new Object[]{var35.getBlockPos(), Blocks.RESPAWN_ANCHOR, var10}) + BlockUtil.isClickableBlockHit(crosshairHit) && !BlockUtil.hasEntityAt(BlockUtil.getPlacePos(crosshairHit)) + || BlockUtil.isOf(crosshairHit.getBlockPos(), Blocks.RESPAWN_ANCHOR) ) )) { - RenderBatch var48 = null; - double var49 = Double.MAX_VALUE; - Object[] var10004 = new Object[]{null, (Predicate)lpL51_0 -> WorldUtil2.e(new Object[]{((net.minecraft.util.math.BlockPos)lpL51_0), 100601689205754L}), var24}; - var10004[0] = 5; + Rotation bestRotation = null; + double bestAngleDelta = Double.MAX_VALUE; - for (BlockPos var39 : (Iterable)(WorldUtil2.a_List___(var10004))) { - if (!WorldUtil2.g(new Object[]{var39.up(), var20})) { - Vec3d var40 = RaycastUtil.b(new Object[]{var39, var4}); - if (var40 != null && !(b.player.getEyePos().distanceTo(var40) > 4.4)) { - RenderBatch var41 = Prestige.o.a_RenderBatch(new Object[]{var40, var32}); - var41 = WorldUtil.d_RenderBatch(new Object[]{var41, var40, var18}); - float var42 = var41.a(new Object[0]) - b.player.getYaw(); - float var43 = var41.b(new Object[0]) - b.player.getPitch(); - if (!(Math.abs(var42) > (Float)this.g.getValue()) - && WorldUtil.a_class_239_(new Object[]{var41, var16}) instanceof BlockHitResult var45 - && (var45.getBlockPos().equals(var39) || var45.getBlockPos().up().equals(var39))) { - double var46 = Math.sqrt(var42 * var42 + var43 * var43); - if (var46 < var49) { - var49 = var46; - var48 = var41; + for (BlockPos candidatePos : (Iterable)(BlockUtil.getBlocksInRadius(5, (Predicate)pos -> BlockUtil.isClickableBlock(pos)))) { + if (!BlockUtil.hasEntityAt(candidatePos.up())) { + Vec3d aimPoint = RaycastUtil.getVisibleTopPoint(candidatePos); + if (aimPoint != null && !(mc.player.getEyePos().distanceTo(aimPoint) > 4.4)) { + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + rotation = RotationUtil.addRandomJitter(rotation, aimPoint); + float yawDelta = rotation.getYaw() - mc.player.getYaw(); + float pitchDelta = rotation.getPitch() - mc.player.getPitch(); + if (!(Math.abs(yawDelta) > this.silentAimFov.getValue()) + && RotationUtil.raycastRotation(rotation) instanceof BlockHitResult rayHit + && (rayHit.getBlockPos().equals(candidatePos) || rayHit.getBlockPos().up().equals(candidatePos))) { + double angleDelta = Math.sqrt(yawDelta * yawDelta + pitchDelta * pitchDelta); + if (angleDelta < bestAngleDelta) { + bestAngleDelta = angleDelta; + bestRotation = rotation; } } } } } - if (var48 == null) { + if (bestRotation == null) { return null; - } else if (var48.a_boolean________________________________________(new Object[0])) { - return var48; - } else if (!(WorldUtil.a_class_239_(new Object[]{var48, var16}) instanceof BlockHitResult var51)) { - return var48; - } else if (!MathUtil3.a_boolean_______(new Object[]{var51.getBlockPos(), var28}) - && !MathUtil3.b_boolean_____(new Object[]{var51.getBlockPos(), var30})) { - this.k(new Object[]{var51, var14}); - this.i.a_void_____________________(new Object[]{var6}); - this.c.reroll(new Object[]{var12}); - return var48; + } else if (bestRotation.isClamped()) { + return bestRotation; + } else if (!(RotationUtil.raycastRotation(bestRotation) instanceof BlockHitResult bestHit)) { + return bestRotation; + } else if (!BlockChangeTracker.isRecentlyExploded(bestHit.getBlockPos()) + && !BlockChangeTracker.isRecentlyPlaced(bestHit.getBlockPos())) { + this.actOnBlockHit(bestHit); + this.actionTimer.reset(); + this.delay.reroll(); + return bestRotation; } else { - return var48; + return bestRotation; } } else { return null; } } - private void k(Object[] var1) { - BlockHitResult var2 = (BlockHitResult)var1[0]; - long var3 = (Long)var1[1]; - var3 = 109216027809139L ^ var3; - long var5 = var3 ^ 123442192812510L; - long var7 = var3 ^ 47294049833452L; - long var9 = var3 ^ 105629111998478L; - long var11 = var3 ^ 45055188804669L; - long var13 = var3 ^ 59064892791727L; - boolean var16 = WorldUtil2.b(new Object[]{var2.getBlockPos(), Blocks.RESPAWN_ANCHOR, var13}) - && WorldUtil2.a_int______________________________(new Object[]{var2.getBlockPos(), var11}) == 0; - boolean var17 = WorldUtil2.b(new Object[]{var2.getBlockPos(), Blocks.RESPAWN_ANCHOR, var13}) - && WorldUtil2.a_int______________________________(new Object[]{var2.getBlockPos(), var11}) > 0; - if (var17) { - this.l(new Object[]{var2, var5}); - } else if (WorldUtil2.d(new Object[]{var2, var7}) || var16) { - Object[] var10005 = new Object[]{null, null, var9}; - var10005[1] = var16; - var10005[0] = var2; - this.m(var10005); + private void actOnBlockHit(BlockHitResult hitResult) { + boolean emptyAnchor = BlockUtil.isOf(hitResult.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && BlockUtil.getAnchorCharges(hitResult.getBlockPos()) == 0; + if (BlockUtil.isOf(hitResult.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && BlockUtil.getAnchorCharges(hitResult.getBlockPos()) > 0) { + this.explodeAnchor(hitResult); + } else if (BlockUtil.isClickableBlockHit(hitResult) || emptyAnchor) { + this.placeOrChargeAnchor(hitResult, emptyAnchor); } } - private void l(Object[] var1) { - BlockHitResult var4 = (BlockHitResult)var1[0]; - long var2 = (Long)var1[1]; - var2 = 109216027809139L ^ var2; - long var5 = var2 ^ 37679828275421L; - long var7 = var2 ^ 86866930506313L; - long var9 = var2 ^ 11880186185971L; - long var11 = var2 ^ 96274147930408L; - long var13 = var2 ^ 17196083432699L; - long var15 = var2 ^ 122319639797255L; - long var17 = var2 ^ 85856574007553L; - Prestige.o.b(new Object[0]); - String var20 = (String)this.d.getValue(); - Event.b(); - switch (var20) { + private void explodeAnchor(BlockHitResult hitResult) { + Prestige.silentRotationManager.clearRotation(); + switch (this.swap.getValue()) { case "Swap": - Integer var22 = InventoryUtil.a_Integer(new Object[]{Items.TOTEM_OF_UNDYING, var7}); - if (var22 != null) { - if ((Boolean)this.e.getValue()) { - this.j = InventoryUtil.a_int_____(new Object[]{var13}); + Integer totemSlot = InventoryUtil.findHotbarSlot(Items.TOTEM_OF_UNDYING); + if (totemSlot != null) { + if (this.swapBack.getValue()) { + this.swapBackSlot = InventoryUtil.getSelectedSlot(); } - int var10000 = var22; - Object[] var10003 = new Object[]{null, var11}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - } else if (InventoryUtil.l(new Object[]{Items.GLOWSTONE, var17})) { - Integer var23 = InventoryUtil.b_Integer(new Object[]{Items.GLOWSTONE, var9}); - if (var23 == null) { + InventoryUtil.selectSlot(totemSlot); + } else if (InventoryUtil.isHolding(Items.GLOWSTONE)) { + Integer nonGlowstoneSlot = InventoryUtil.findSlotWithOtherItem(Items.GLOWSTONE); + if (nonGlowstoneSlot == null) { return; } - if ((Boolean)this.e.getValue()) { - this.j = InventoryUtil.a_int_____(new Object[]{var13}); + if (this.swapBack.getValue()) { + this.swapBackSlot = InventoryUtil.getSelectedSlot(); } - int var25 = var23; - Object[] var26 = new Object[]{null, var11}; - var26[0] = var25; - InventoryUtil.a_void________(var26); + InventoryUtil.selectSlot(nonGlowstoneSlot); } - InventoryUtil2.a(new Object[]{var4, var5}); - if (this.j == -1) { - this.j(new Object[]{var15}); + PlayerInteractions.interactBlock(hitResult); + if (this.swapBackSlot == -1) { + this.disableIfOneShot(); } break; case "None": - if (!InventoryUtil.l(new Object[]{Items.GLOWSTONE, var17})) { - InventoryUtil2.a(new Object[]{var4, var5}); - this.j(new Object[]{var15}); + if (!InventoryUtil.isHolding(Items.GLOWSTONE)) { + PlayerInteractions.interactBlock(hitResult); + this.disableIfOneShot(); } } } - private void m(Object[] var1) { - BlockHitResult var4 = (BlockHitResult)var1[0]; - boolean var5 = (Boolean)var1[1]; - long var2 = (Long)var1[2]; - var2 = 109216027809139L ^ var2; - long var6 = var2 ^ 55051103551757L; - long var8 = var2 ^ 53644597978386L; - long var10 = var2 ^ 60462314837714L; - long var12 = var2 ^ 121952725260209L; - long var14 = var2 ^ 94779428877422L; - long var16 = var2 ^ 35147190541611L; - long var18 = var2 ^ 140098931953623L; - long var20 = var2 ^ 103640163891409L; - long var22 = var2 ^ 136052315501519L; - Event.b(); - String var25 = (String)this.d.getValue(); - switch (var25) { + private void placeOrChargeAnchor(BlockHitResult hitResult, boolean emptyAnchor) { + switch (this.swap.getValue()) { case "None": - if (var5) { - if (!InventoryUtil.l(new Object[]{Items.GLOWSTONE, var20})) { + if (emptyAnchor) { + if (!InventoryUtil.isHolding(Items.GLOWSTONE)) { return; } - } else if (!InventoryUtil.l(new Object[]{Items.RESPAWN_ANCHOR, var20})) { + } else if (!InventoryUtil.isHolding(Items.RESPAWN_ANCHOR)) { return; } break; case "Swap": - if ((Boolean)this.e.getValue()) { - this.j = InventoryUtil.a_int_____(new Object[]{var16}); + if (this.swapBack.getValue()) { + this.swapBackSlot = InventoryUtil.getSelectedSlot(); } - if (var5) { - if (!InventoryUtil.i(new Object[]{Blocks.GLOWSTONE, var22})) { - this.j(new Object[]{var18}); + if (emptyAnchor) { + if (!InventoryUtil.switchToBlock(Blocks.GLOWSTONE)) { + this.disableIfOneShot(); return; } - } else if (!InventoryUtil.i(new Object[]{Blocks.RESPAWN_ANCHOR, var22})) { - this.j(new Object[]{var18}); + } else if (!InventoryUtil.switchToBlock(Blocks.RESPAWN_ANCHOR)) { + this.disableIfOneShot(); return; } } - BlockPos var28 = !WorldUtil2.b(new Object[]{var4.getBlockPos(), Blocks.FIRE, var10}) - && !WorldUtil2.b(new Object[]{var4.getBlockPos(), WorldUtil2.a_class_2248_(new Object[]{var12}), var10}) - ? var4.getBlockPos().add(var4.getSide().getOffsetX(), var4.getSide().getOffsetY(), var4.getSide().getOffsetZ()) - : var4.getBlockPos(); - if (!var5) { - this.h.add(var28); + BlockPos placePos = !BlockUtil.isOf(hitResult.getBlockPos(), Blocks.FIRE) + && !BlockUtil.isOf(hitResult.getBlockPos(), BlockUtil.getShortGrass()) + ? hitResult.getBlockPos().add(hitResult.getSide().getOffsetX(), hitResult.getSide().getOffsetY(), hitResult.getSide().getOffsetZ()) + : hitResult.getBlockPos(); + if (!emptyAnchor) { + this.placedAnchors.add(placePos); } - Prestige.o.b(new Object[0]); - InventoryUtil2.a(new Object[]{var4, var6}); - this.i.a_void_____________________(new Object[]{var8}); - this.c.reroll(new Object[]{var14}); - if (this.j == -1) { - this.j(new Object[]{var18}); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + Prestige.silentRotationManager.clearRotation(); + PlayerInteractions.interactBlock(hitResult); + this.actionTimer.reset(); + this.delay.reroll(); + if (this.swapBackSlot == -1) { + this.disableIfOneShot(); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AntiAction.java b/src/main/java/dev/zprestige/prestige/module/combat/AntiAction.java index e0a8a19..15b1d19 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AntiAction.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AntiAction.java @@ -3,14 +3,11 @@ package dev.zprestige.prestige.module.combat; import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.event.TickEvent7; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.event.DoAttackEvent; import dev.zprestige.prestige.inventory.InventoryUtil; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.BlockUtil; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -23,152 +20,74 @@ public class AntiAction extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private BoolSetting a; - private BoolSetting c; - private BoolSetting e; - private BoolSetting f; + private BoolSetting doubleGlowstone; + private BoolSetting openEChest; + private BoolSetting placeGlowstone; + private BoolSetting groundFirework; + private BoolSetting swordShield; @Subscribe - public void a(TickEvent5 var1) { - if ((Boolean)this.e.getValue() - && InventoryUtil.l(new Object[]{Items.FIREWORK_ROCKET, 65539821781598L}) - && !PositionUtil.a_boolean________________________________________________(new Object[]{120169006001489L}) - && !b.player.getOffHandStack().isOf(Items.CROSSBOW)) { - var1.a_void_____(new Object[0]); - } else if (b.crosshairTarget instanceof BlockHitResult var17) { - if (var17.getBlockPos() != null) { - boolean var21 = WorldUtil2.b(new Object[]{var17.getBlockPos(), Blocks.RESPAWN_ANCHOR, 91415361137757L}); - if (var21 && (Boolean)this.d.getValue() && !b.player.isSneaking() && InventoryUtil.l(new Object[]{Items.GLOWSTONE, 65539821781598L})) { - int var19 = WorldUtil2.a_int______________________________(new Object[]{var17.getBlockPos(), 86201794204623L}); - if (var19 != 0) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (this.groundFirework.getValue() + && InventoryUtil.isHolding(Items.FIREWORK_ROCKET) + && !PositionUtil.isPlayerGliding() + && !mc.player.getOffHandStack().isOf(Items.CROSSBOW)) { + event.cancel(); + } else if (mc.crosshairTarget instanceof BlockHitResult blockHit) { + if (blockHit.getBlockPos() != null) { + boolean targetingAnchor = BlockUtil.isOf(blockHit.getBlockPos(), Blocks.RESPAWN_ANCHOR); + if (targetingAnchor && this.doubleGlowstone.getValue() && !mc.player.isSneaking() && InventoryUtil.isHolding(Items.GLOWSTONE)) { + if (BlockUtil.getAnchorCharges(blockHit.getBlockPos()) != 0) { + event.cancel(); } } - boolean var22 = WorldUtil2.b(new Object[]{var17.getBlockPos(), Blocks.ENDER_CHEST, 91415361137757L}); - if (var22 - && (Boolean)this.a.getValue() - && !b.player.isSneaking() + if (BlockUtil.isOf(blockHit.getBlockPos(), Blocks.ENDER_CHEST) + && this.openEChest.getValue() + && !mc.player.isSneaking() && ( - this.a(new Object[]{b.player.getMainHandStack(), 123053009433525L}) - || this.a(new Object[]{b.player.getOffHandStack(), 123053009433525L}) + this.isCombatItem(mc.player.getMainHandStack()) + || this.isCombatItem(mc.player.getOffHandStack()) )) { - var1.a_void_____(new Object[0]); + event.cancel(); } - boolean var20 = InventoryUtil.l(new Object[]{Items.GLOWSTONE, 65539821781598L}); - if (var20 - && (!var21 || b.player.isSneaking()) - && (Boolean)this.c.getValue() - && WorldUtil2.e(new Object[]{var17.getBlockPos(), 100601689205754L})) { - var1.a_void_____(new Object[0]); + if (InventoryUtil.isHolding(Items.GLOWSTONE) + && (!targetingAnchor || mc.player.isSneaking()) + && this.placeGlowstone.getValue() + && BlockUtil.isClickableBlock(blockHit.getBlockPos())) { + event.cancel(); } } } } - private boolean a(Object[] var1) { - ItemStack var2 = (ItemStack)var1[0]; - long var3 = (Long)var1[1]; - var3 = 46972721282546L ^ var3; - long var5 = var3 ^ 54366661580408L; - long var7 = var3 ^ 38836746770986L; - long var9 = var3 ^ 66157415360379L; - if (var2.isEmpty()) { + private boolean isCombatItem(ItemStack stack) { + if (stack.isEmpty()) { return false; } else { - return !InventoryUtil.a(new Object[]{var2, var5}) && !InventoryUtil.b(new Object[]{var2, var7}) && !InventoryUtil.o(new Object[]{var2, var9}) - ? var2.isOf(Items.END_CRYSTAL) - || var2.isOf(Items.OBSIDIAN) - || var2.isOf(Items.CRYING_OBSIDIAN) - || var2.isOf(Items.TOTEM_OF_UNDYING) - || var2.isOf(Items.EXPERIENCE_BOTTLE) - || var2.isOf(Items.GLOWSTONE) + return !InventoryUtil.isSword(stack) && !InventoryUtil.isAxe(stack) && !InventoryUtil.isMace(stack) + ? stack.isOf(Items.END_CRYSTAL) + || stack.isOf(Items.OBSIDIAN) + || stack.isOf(Items.CRYING_OBSIDIAN) + || stack.isOf(Items.TOTEM_OF_UNDYING) + || stack.isOf(Items.EXPERIENCE_BOTTLE) + || stack.isOf(Items.GLOWSTONE) : true; } } @Subscribe - public void a(TickEvent7 var1) { - Event.b(); - if (b.crosshairTarget instanceof EntityHitResult var7) { - if (var7.getEntity() instanceof PlayerEntity var10) { - if ((Boolean)this.f.getValue() - && InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L}) - && var10.isUsingItem() - && var10.getActiveItem().isOf(Items.SHIELD)) { - var1.a_void_____(new Object[0]); + public void onDoAttack(DoAttackEvent event) { + if (mc.crosshairTarget instanceof EntityHitResult entityHit) { + if (entityHit.getEntity() instanceof PlayerEntity player) { + if (this.swordShield.getValue() + && InventoryUtil.isSword(mc.player.getMainHandStack()) + && player.isUsingItem() + && player.getActiveItem().isOf(Items.SHIELD)) { + event.cancel(); } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AntiBot.java b/src/main/java/dev/zprestige/prestige/module/combat/AntiBot.java index c112c5f..4430e0c 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AntiBot.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AntiBot.java @@ -5,14 +5,11 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.PlayerEvent; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.event.TickEvent6; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.BotCheckEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.event.AntiBotQueryEvent; import java.util.IdentityHashMap; import java.util.Map; import java.util.UUID; @@ -24,148 +21,78 @@ import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket; import net.minecraft.world.GameMode; public class AntiBot extends Module { - private MultiSetting a; - private IntSetting c; - private IntSetting d; - private IntSetting e; - private static final UUID f = new UUID(0L, 0L); - private Map g = new IdentityHashMap(); + private MultiSetting mode; + private IntSetting validationThreshold; + private IntSetting tabListGrace; + private IntSetting pingGrace; + private static final UUID NIL_UUID = new UUID(0L, 0L); + private Map positionPacketCounts = new IdentityHashMap(); public AntiBot() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.e.setVisibility_IntSetting(new Object[]{(Predicate)lpL55_0 -> this.a.isSelected(new Object[]{"Ping", 47850572908778L}), 98265949679296L}); - this.d - .setVisibility_IntSetting(new Object[]{(Predicate)lpL56_0 -> this.a.isSelected(new Object[]{"TabList", 47850572908778L}), 98265949679296L}); - this.c - .setVisibility_IntSetting(new Object[]{(Predicate)lpL57_0 -> this.a.isSelected(new Object[]{"Packet", 47850572908778L}), 98265949679296L}); + this.pingGrace.visibleWhen((Predicate)ignored -> this.mode.isSelected("Ping")); + this.tabListGrace + .visibleWhen((Predicate)ignored -> this.mode.isSelected("TabList")); + this.validationThreshold + .visibleWhen((Predicate)ignored -> this.mode.isSelected("Packet")); } @Subscribe - public void a(PacketEvent var1) { - if (this.a.isSelected(new Object[]{"Packet", 47850572908778L}) && var1.a(new Object[0]) instanceof EntityPositionS2CPacket && b.world != null) { - Entity var9 = b.world.getEntityById(((EntityPositionS2CPacket)var1.a(new Object[0])).entityId()); - if (var9 == null) { + public void onPacketReceive(PacketReceiveEvent event) { + if (this.mode.isSelected("Packet") && event.getPacket() instanceof EntityPositionS2CPacket && mc.world != null) { + Entity entity = mc.world.getEntityById(((EntityPositionS2CPacket)event.getPacket()).entityId()); + if (entity == null) { return; } - if (var9 instanceof PlayerEntity var10 && !Prestige.i.a_Set(new Object[0]).contains(var9)) { - int var11 = (Integer)this.c.getValue(); - int var12 = (Integer)this.g.getOrDefault(var10, 0) + 1; - if (var12 >= var11) { - Prestige.i.a(new Object[]{var10, 98777068804914L}); - this.g.remove(var10); + if (entity instanceof PlayerEntity player && !Prestige.botFilter.getValidatedPlayers().contains(entity)) { + int threshold = this.validationThreshold.getValue(); + int packetCount = (Integer)this.positionPacketCounts.getOrDefault(player, 0) + 1; + if (packetCount >= threshold) { + Prestige.botFilter.markValidated(player); + this.positionPacketCounts.remove(player); } else { - this.g.put(var10, var12); + this.positionPacketCounts.put(player, packetCount); } } } } @Subscribe - public void a(TickEvent3 var1) { - this.g.clear(); + public void onGameJoin(GameJoinEvent event) { + this.positionPacketCounts.clear(); } @Subscribe - public void a(TickEvent19 var1) { - if (!this.g.isEmpty()) { - this.g.keySet().removeIf(lpL54_0 -> !((net.minecraft.entity.player.PlayerEntity)lpL54_0).isAlive()); + public void onClientTick(ClientTickEvent event) { + if (!this.positionPacketCounts.isEmpty()) { + this.positionPacketCounts.keySet().removeIf(player -> !((net.minecraft.entity.player.PlayerEntity)player).isAlive()); } } @Subscribe - public void a(TickEvent6 var1) { - var1.a_void_____(new Object[0]); + public void onAntiBotQuery(AntiBotQueryEvent event) { + event.cancel(); } @Subscribe - public void a(PlayerEvent var1) { - PlayerEntity var7 = var1.a(new Object[0]); - Event.b(); - UUID var8 = var7.getUuid(); - if (!this.a.isSelected(new Object[]{"UUID", 47850572908778L}) || !var8.equals(f) && var8.version() == 4) { - PlayerListEntry var9 = b.getNetworkHandler() != null ? b.getNetworkHandler().getPlayerListEntry(var8) : null; - if (this.a.isSelected(new Object[]{"TabList", 47850572908778L}) && var7.age * 50L >= ((Integer)this.d.getValue()).intValue() && var9 == null) { - var1.a_void_____(new Object[0]); + public void onBotCheck(BotCheckEvent event) { + PlayerEntity player = event.getPlayer(); + UUID uuid = player.getUuid(); + if (!this.mode.isSelected("UUID") || !uuid.equals(NIL_UUID) && uuid.version() == 4) { + PlayerListEntry listEntry = mc.getNetworkHandler() != null ? mc.getNetworkHandler().getPlayerListEntry(uuid) : null; + if (this.mode.isSelected("TabList") && player.age * 50L >= this.tabListGrace.getValue().intValue() && listEntry == null) { + event.cancel(); } else { - if (this.a.isSelected(new Object[]{"Ping", 47850572908778L}) && var9 != null) { - GameMode var10 = var9.getGameMode(); - boolean var11 = var10 == GameMode.SURVIVAL || var10 == GameMode.ADVENTURE; - if (var11 && var9.getLatency() == 0 && var7.age * 50L >= ((Integer)this.e.getValue()).intValue()) { - var1.a_void_____(new Object[0]); + if (this.mode.isSelected("Ping") && listEntry != null) { + GameMode gameMode = listEntry.getGameMode(); + if ((gameMode == GameMode.SURVIVAL || gameMode == GameMode.ADVENTURE) && listEntry.getLatency() == 0 && player.age * 50L >= this.pingGrace.getValue().intValue()) { + event.cancel(); } } } } else { - var1.a_void_____(new Object[0]); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + event.cancel(); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AntiWeb.java b/src/main/java/dev/zprestige/prestige/module/combat/AntiWeb.java index 32fdd6e..bfaedaf 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AntiWeb.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AntiWeb.java @@ -7,21 +7,17 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.hud.ModuleNotificationsElement; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.Renderer2D; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.type.NotificationType; import dev.zprestige.prestige.type.ScoopState; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; import java.util.Set; import java.util.function.Predicate; import net.minecraft.block.Blocks; @@ -33,186 +29,145 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; -public class AntiWeb extends Module implements RenderContract3 { - private EnumSetting a; - private RangeSetting c; - private EnumSetting d; - private BoolSetting e; - private BoolSetting f; - private static final int g = 40; - private static final int h = 6; - private ScoopState i = ScoopState.IDLE; - private BlockPos j; - private BlockPos k; - private int l = -1; - private int m; - private int n; - private RenderHelper27 o = new RenderHelper27(26293358099357L); - private RenderHelper27 p = new RenderHelper27(26293358099357L); +public class AntiWeb extends Module implements RotationProvider { + private EnumSetting mode; + private RangeSetting delay; + private EnumSetting swap; + private BoolSetting swapBack; + private BoolSetting partialWebs; + private ScoopState state = ScoopState.IDLE; + private BlockPos topWebPos; + private BlockPos webPos; + private int previousSlot = -1; + private int waitTicks; + private int scoopAttempts; + private StopWatch actionTimer = new StopWatch(); + private StopWatch notifyTimer = new StopWatch(); public AntiWeb() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.e.setVisibility_BoolSetting(new Object[]{(Predicate)lpL58_0 -> ((String)this.d.getValue()).equals("Normal"), 73196168581295L}); + this.swapBack.visibleWhen((Predicate)ignored -> this.swap.getValue().equals("Normal")); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.UHC); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - long var6 = var2 ^ 120394196241246L; - this.j(new Object[]{var6}); - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + this.resetState(); + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 82893747353842L; - long var6 = var2 ^ 140372736859409L; - long var8 = var2 ^ 6195065515282L; - long var10 = var2 ^ 60456363807037L; - if ((Boolean)this.e.getValue() && this.l != -1) { - if (Prestige.o.d_boolean______(new Object[0])) { - Renderer2D var10000 = Prestige.o; - int var10001 = this.l; - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - var10000.i(var10004); + public void onDisable() { + if (this.swapBack.getValue() && this.previousSlot != -1) { + if (Prestige.silentRotationManager.hasActedThisTick()) { + Prestige.silentRotationManager.scheduleSlotSwitch(this.previousSlot); } else { - int var12 = this.l; - Object[] var10003 = new Object[]{null, var8}; - var10003[0] = var12; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(this.previousSlot); } - this.l = -1; + this.previousSlot = -1; } - this.j(new Object[]{var10}); - Prestige.o.f(new Object[]{this, var6}); + this.resetState(); + Prestige.silentRotationManager.removeRotationProvider(this); } @Subscribe - public void a(TickEvent3 var1) { - this.j(new Object[]{19088102123096L}); + public void onGameJoin(GameJoinEvent event) { + this.resetState(); } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 90137803451192L ^ var2; - long var4 = var2 ^ 23870112436989L; - long var6 = var2 ^ 126770868568961L; - this.i = ScoopState.IDLE; - this.j = null; - this.k = null; - this.m = 0; - this.n = 0; - this.o.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var6}); + private void resetState() { + this.state = ScoopState.IDLE; + this.topWebPos = null; + this.webPos = null; + this.waitTicks = 0; + this.scoopAttempts = 0; + this.actionTimer.reset(); + this.delay.reroll(); } - private void k(Object[] var1) { - String var4 = (String)var1[0]; - long var2 = (Long)var1[1]; - var2 = 90137803451192L ^ var2; - long var5 = var2 ^ 28750511922225L; - long var7 = var2 ^ 46345826032040L; - long var9 = var2 ^ 137932391866681L; - RenderHelper27 var10000 = this.p; - Object[] var10004 = new Object[]{null, var9}; - var10004[0] = 3000.0F; - if (var10000.a(var10004)) { - ModuleNotificationsElement.s(new Object[]{this, var4, NotificationType.INFO, var5}); - this.p.a_void_____________________(new Object[]{var7}); + private void notifyThrottled(String message) { + if (this.notifyTimer.hasElapsed(3000.0F)) { + ModuleNotificationsElement.postNotification(this, message, NotificationType.INFO); + this.notifyTimer.reset(); } } @Subscribe - public void a(TickEvent19 var1) { - if (b.player == null || b.world == null) { - this.j(new Object[]{19088102123096L}); - } else if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem()) { - if (!Prestige.o.d_boolean______(new Object[0])) { - switch (this.i) { + public void onClientTick(ClientTickEvent event) { + if (mc.player == null || mc.world == null) { + this.resetState(); + } else if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem()) { + if (!Prestige.silentRotationManager.hasActedThisTick()) { + switch (this.state) { case IDLE: - this.l(new Object[]{16015249410174L}); + this.detectWeb(); case PLACE: case SCOOP: default: break; case WAIT: - if (this.d(new Object[]{73911195020891L})) { - this.i = ScoopState.SCOOP; - this.o.a_void_____________________(new Object[]{93540861878173L}); - this.c.reroll(new Object[]{57083216809697L}); - } else if (++this.m > 40) { - this.k(new Object[]{"The water never cleared the web.", 51467673545997L}); - this.o(new Object[]{133214379963576L}); + if (this.isWebCleared()) { + this.state = ScoopState.SCOOP; + this.actionTimer.reset(); + this.delay.reroll(); + } else if (++this.waitTicks > 40) { + this.notifyThrottled("The water never cleared the web."); + this.abortEscape(); } break; case BACK: - if (!this.o.b(new Object[]{this.c, 89714527855213L})) { + if (!this.actionTimer.hasElapsedRandom(this.delay)) { return; } - if ((Boolean)this.e.getValue() && this.l != -1 && !Prestige.o.d_boolean______(new Object[0])) { - int var10000 = this.l; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - this.l = -1; + if (this.swapBack.getValue() && this.previousSlot != -1 && !Prestige.silentRotationManager.hasActedThisTick()) { + InventoryUtil.selectSlot(this.previousSlot); + this.previousSlot = -1; } - this.j(new Object[]{19088102123096L}); + this.resetState(); } - if (((String)this.a.getValue()).equalsIgnoreCase("Legit")) { - this.m(new Object[]{69227916348014L}); + if (this.mode.getValue().equalsIgnoreCase("Legit")) { + this.tickLegit(); } } } } - private void l(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 90137803451192L ^ var2; - long var4 = var2 ^ 11515568192731L; - long var6 = var2 ^ 112042532622928L; - long var8 = var2 ^ 124954572475979L; - long var10 = var2 ^ 119726196267602L; - long var12 = var2 ^ 119300104760743L; - Event.b(); - BlockPos var15 = b.player.getBlockPos(); - BlockPos var16 = null; - if (this.a_boolean_________(new Object[]{var15.down(), var10})) { - var16 = var15.down(); - } else if (this.a_boolean_________(new Object[]{var15, var10})) { - var16 = var15; - } else if (this.a_boolean_________(new Object[]{var15.up(), var10})) { - var16 = var15.up(); + private void detectWeb() { + BlockPos playerPos = mc.player.getBlockPos(); + BlockPos foundWeb = null; + if (this.isCobweb(playerPos.down())) { + foundWeb = playerPos.down(); + } else if (this.isCobweb(playerPos)) { + foundWeb = playerPos; + } else if (this.isCobweb(playerPos.up())) { + foundWeb = playerPos.up(); } - if (var16 == null && (Boolean)this.f.getValue()) { - Box var17 = b.player.getBoundingBox(); + if (foundWeb == null && this.partialWebs.getValue()) { + Box playerBox = mc.player.getBoundingBox(); - for (int var18 = 0; var18 <= 1 && var16 == null; var18++) { - for (int var19 = -1; var19 <= 1 && var16 == null; var19++) { - for (int var20 = -1; var20 <= 1; var20++) { - if (var19 != 0 || var20 != 0) { - BlockPos var21 = var15.add(var19, var18, var20); - if (this.a_boolean_________(new Object[]{var21, var10}) - && var17.maxX > var21.getX() - && var17.minX < var21.getX() + 1 - && var17.maxZ > var21.getZ() - && var17.minZ < var21.getZ() + 1 - && var17.maxY > var21.getY() - && var17.minY < var21.getY() + 1) { - var16 = var21; + for (int dy = 0; dy <= 1 && foundWeb == null; dy++) { + for (int dx = -1; dx <= 1 && foundWeb == null; dx++) { + for (int dz = -1; dz <= 1; dz++) { + if (dx != 0 || dz != 0) { + BlockPos candidate = playerPos.add(dx, dy, dz); + if (this.isCobweb(candidate) + && playerBox.maxX > candidate.getX() + && playerBox.minX < candidate.getX() + 1 + && playerBox.maxZ > candidate.getZ() + && playerBox.minZ < candidate.getZ() + 1 + && playerBox.maxY > candidate.getY() + && playerBox.minY < candidate.getY() + 1) { + foundWeb = candidate; break; } } @@ -221,44 +176,38 @@ public class AntiWeb extends Module implements RenderContract3 { } } - if (var16 != null) { - this.k = var16; - this.j = var16; + if (foundWeb != null) { + this.webPos = foundWeb; + this.topWebPos = foundWeb; - while (this.a_boolean_________(new Object[]{this.j.up(), var10})) { - this.j = this.j.up(); + while (this.isCobweb(this.topWebPos.up())) { + this.topWebPos = this.topWebPos.up(); } - if (((String)this.d.getValue()).equals("Normal") && InventoryUtil.a_Integer(new Object[]{Items.WATER_BUCKET, var6}) == null) { - this.k(new Object[]{"No water bucket in hotbar.", var8}); - } else if (b.world.getFluidState(this.j.up()).isStill()) { - this.i = ScoopState.WAIT; - this.m = 0; - } else if (!b.world.getBlockState(this.j.up()).isReplaceable()) { - this.k(new Object[]{"No room above the web for water.", var8}); + if (this.swap.getValue().equals("Normal") && InventoryUtil.findHotbarSlot(Items.WATER_BUCKET) == null) { + this.notifyThrottled("No water bucket in hotbar."); + } else if (mc.world.getFluidState(this.topWebPos.up()).isStill()) { + this.state = ScoopState.WAIT; + this.waitTicks = 0; + } else if (!mc.world.getBlockState(this.topWebPos.up()).isReplaceable()) { + this.notifyThrottled("No room above the web for water."); } else { - this.i = ScoopState.PLACE; - this.m = 0; - this.n = 0; - this.o.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var12}); + this.state = ScoopState.PLACE; + this.waitTicks = 0; + this.scoopAttempts = 0; + this.actionTimer.reset(); + this.delay.reroll(); } } } - private boolean a_boolean_________(Object[] var1) { - BlockPos var2 = (BlockPos)var1[0]; - return var2 != null && b.world.getBlockState(var2).getBlock() == Blocks.COBWEB; + private boolean isCobweb(BlockPos pos) { + return pos != null && mc.world.getBlockState(pos).getBlock() == Blocks.COBWEB; } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 90137803451192L ^ var2; - long var4 = var2 ^ 36610043329655L; - Event.b(); - - for (BlockPos var7 = this.k; !this.a_boolean_________(new Object[]{var7, var4}); var7 = var7.up()) { - if (var7.equals(this.j)) { + private boolean isWebCleared() { + for (BlockPos pos = this.webPos; !this.isCobweb(pos); pos = pos.up()) { + if (pos.equals(this.topWebPos)) { return true; } } @@ -266,166 +215,139 @@ public class AntiWeb extends Module implements RenderContract3 { return false; } - private Vec3d a_class_243___(Object[] var1) { - BlockPos var2 = (BlockPos)var1[0]; - float var5 = (float)Math.toRadians(b.player.getYaw()); - return var2.toCenterPos().add(-Math.sin(var5) * 0.25, 0.0, Math.cos(var5) * 0.25); + private Vec3d getAimPoint(BlockPos pos) { + float yawRadians = (float)Math.toRadians(mc.player.getYaw()); + return pos.toCenterPos().add(-Math.sin(yawRadians) * 0.25, 0.0, Math.cos(yawRadians) * 0.25); } - private void m(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 90137803451192L ^ var2; - long var4 = var2 ^ 63907423436491L; - long var6 = var2 ^ 58332818276040L; - long var8 = var2 ^ 72309918108763L; - long var10 = var2 ^ 68809604842299L; - long var12 = var2 ^ 101727835150402L; - long var14 = var2 ^ 137500873033332L; - long var16 = var2 ^ 102143151435703L; - long var18 = var2 ^ 98424680506063L; - long var20 = var2 ^ 478739912118L; - switch (this.i) { + private void tickLegit() { + switch (this.state) { case PLACE: - if (!this.o.b(new Object[]{this.c, var10})) { + if (!this.actionTimer.hasElapsedRandom(this.delay)) { return; } - if (!this.a_boolean_________(new Object[]{this.j, var12})) { - if (b.world.getFluidState(this.j.up()).isStill()) { - this.i = ScoopState.WAIT; - this.m = 0; - this.o.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var16}); + if (!this.isCobweb(this.topWebPos)) { + if (mc.world.getFluidState(this.topWebPos.up()).isStill()) { + this.state = ScoopState.WAIT; + this.waitTicks = 0; + this.actionTimer.reset(); + this.delay.reroll(); } else { - this.n(new Object[]{var20}); + this.startSwapBack(); } return; } - if (!this.g(new Object[]{Items.WATER_BUCKET, var18})) { + if (!this.ensureHolding(Items.WATER_BUCKET)) { return; } - if (!(b.crosshairTarget instanceof BlockHitResult var23) || !var23.getBlockPos().equals(this.j)) { + if (!(mc.crosshairTarget instanceof BlockHitResult blockHit) || !blockHit.getBlockPos().equals(this.topWebPos)) { return; } - if (InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var14})) { - this.i = ScoopState.WAIT; - this.m = 0; - this.o.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var16}); + if (PlayerInteractions.interactItem(Hand.MAIN_HAND)) { + this.state = ScoopState.WAIT; + this.waitTicks = 0; + this.actionTimer.reset(); + this.delay.reroll(); } break; case SCOOP: - if (!this.o.b(new Object[]{this.c, var10})) { + if (!this.actionTimer.hasElapsedRandom(this.delay)) { return; } - if (!this.g(new Object[]{Items.BUCKET, var18})) { + if (!this.ensureHolding(Items.BUCKET)) { return; } - if (!b.world.getFluidState(this.j.up()).isStill()) { - this.n(new Object[]{var20}); + if (!mc.world.getFluidState(this.topWebPos.up()).isStill()) { + this.startSwapBack(); return; } - if (this.e(new Object[]{this.j.up().toCenterPos(), var6})) { - this.n(new Object[]{var20}); - } else if (++this.n > 6) { - this.k(new Object[]{"Couldn't scoop the water.", var8}); - this.n(new Object[]{var20}); + if (this.useItemFacing(this.topWebPos.up().toCenterPos())) { + this.startSwapBack(); + } else if (++this.scoopAttempts > 6) { + this.notifyThrottled("Couldn't scoop the water."); + this.startSwapBack(); } } } - private boolean e(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - long var2 = (Long)var1[1]; - var2 = 90137803451192L ^ var2; - long var5 = var2 ^ 116578936745903L; - long var7 = var2 ^ 28557633491844L; - RenderBatch var9 = WorldUtil.f_RenderBatch(new Object[]{b.player, var4, var5}); - float var10 = b.player.getYaw(); - float var11 = b.player.getPitch(); - b.player.setYaw(var9.a(new Object[0])); - b.player.setPitch(var9.b(new Object[0])); + private boolean useItemFacing(Vec3d point) { + Rotation rotation = RotationUtil.getEntityRotationTo(mc.player, point); + float savedYaw = mc.player.getYaw(); + float savedPitch = mc.player.getPitch(); + mc.player.setYaw(rotation.getYaw()); + mc.player.setPitch(rotation.getPitch()); - boolean var12; + boolean used; try { - var12 = InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var7}); + used = PlayerInteractions.interactItem(Hand.MAIN_HAND); } finally { - b.player.setYaw(var10); - b.player.setPitch(var11); + mc.player.setYaw(savedYaw); + mc.player.setPitch(savedPitch); } - return var12; + return used; } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 29247161167908L; - long var6 = var2 ^ 106952455144116L; - long var8 = var2 ^ 33065978990036L; - long var10 = var2 ^ 108292967674203L; - long var12 = var2 ^ 101816702374277L; - long var14 = var2 ^ 136752692109656L; - long var16 = var2 ^ 133051409312800L; - long var18 = var2 ^ 13258986938553L; - long var20 = var2 ^ 36186424613721L; - if (!((String)this.a.getValue()).equalsIgnoreCase("Blatant")) { + public Rotation provideRotation() { + if (!this.mode.getValue().equalsIgnoreCase("Blatant")) { return null; - } else if (b.player == null || b.world == null) { + } else if (mc.player == null || mc.world == null) { return null; - } else if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem()) { - if (Prestige.o.d_boolean______(new Object[0])) { + } else if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem()) { + if (Prestige.silentRotationManager.hasActedThisTick()) { return null; } else { - ScoopState var23 = this.i; - if (var23 != ScoopState.PLACE && var23 != ScoopState.SCOOP) { + ScoopState currentState = this.state; + if (currentState != ScoopState.PLACE && currentState != ScoopState.SCOOP) { return null; - } else if (!this.o.b(new Object[]{this.c, var8})) { + } else if (!this.actionTimer.hasElapsedRandom(this.delay)) { return null; } else { - Vec3d var24 = this.a_class_243___(new Object[]{var23 == ScoopState.PLACE ? this.j : this.j.up(), var10}); - RenderBatch var25 = Prestige.o.a_RenderBatch(new Object[]{var24, var12}); - if (var25.a_boolean________________________________________(new Object[0])) { - return var25; + Vec3d aimPoint = this.getAimPoint((BlockPos)(currentState == ScoopState.PLACE ? this.topWebPos : this.topWebPos.up())); + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + if (rotation.isClamped()) { + return rotation; } else { - Prestige.o.a(new Object[]{var25}); - if (var23 == ScoopState.PLACE) { - if (!this.g(new Object[]{Items.WATER_BUCKET, var16})) { + Prestige.silentRotationManager.setActiveRotation(rotation); + if (currentState == ScoopState.PLACE) { + if (!this.ensureHolding(Items.WATER_BUCKET)) { return null; } - if (this.f(new Object[]{var25, var18})) { - this.i = ScoopState.WAIT; - this.m = 0; - this.o.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var14}); + if (this.useItemWithRotation(rotation)) { + this.state = ScoopState.WAIT; + this.waitTicks = 0; + this.actionTimer.reset(); + this.delay.reroll(); } } else { - if (!this.g(new Object[]{Items.BUCKET, var16})) { + if (!this.ensureHolding(Items.BUCKET)) { return null; } - if (!b.world.getFluidState(this.j.up()).isStill()) { - this.n(new Object[]{var20}); + if (!mc.world.getFluidState(this.topWebPos.up()).isStill()) { + this.startSwapBack(); return null; } - if (this.f(new Object[]{var25, var18})) { - this.n(new Object[]{var20}); - } else if (++this.n > 6) { - this.k(new Object[]{"Couldn't scoop the water.", var6}); - this.n(new Object[]{var20}); + if (this.useItemWithRotation(rotation)) { + this.startSwapBack(); + } else if (++this.scoopAttempts > 6) { + this.notifyThrottled("Couldn't scoop the water."); + this.startSwapBack(); } } - return var25; + return rotation; } } } @@ -434,144 +356,53 @@ public class AntiWeb extends Module implements RenderContract3 { } } - private boolean f(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 90137803451192L ^ var2; - long var5 = var2 ^ 539515896602L; - float var7 = b.player.getYaw(); - float var8 = b.player.getPitch(); - b.player.setYaw(var4.a(new Object[0])); - b.player.setPitch(var4.b(new Object[0])); + private boolean useItemWithRotation(Rotation rotation) { + float savedYaw = mc.player.getYaw(); + float savedPitch = mc.player.getPitch(); + mc.player.setYaw(rotation.getYaw()); + mc.player.setPitch(rotation.getPitch()); - boolean var9; + boolean used; try { - var9 = InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var5}); + used = PlayerInteractions.interactItem(Hand.MAIN_HAND); } finally { - b.player.setYaw(var7); - b.player.setPitch(var8); + mc.player.setYaw(savedYaw); + mc.player.setPitch(savedPitch); } - return var9; + return used; } - private boolean g(Object[] var1) { - Item var4 = (Item)var1[0]; - long var2 = (Long)var1[1]; - var2 = 90137803451192L ^ var2; - long var5 = var2 ^ 103348834933175L; - long var7 = var2 ^ 32282188500741L; - long var9 = var2 ^ 102158020733695L; - long var11 = var2 ^ 33373146405913L; - long var13 = var2 ^ 93539481725278L; - if (InventoryUtil.l(new Object[]{var4, var9})) { + private boolean ensureHolding(Item item) { + if (InventoryUtil.isHolding(item)) { return true; - } else if (!((String)this.d.getValue()).equals("Normal")) { + } else if (!this.swap.getValue().equals("Normal")) { return false; - } else if (InventoryUtil.a_Integer(new Object[]{var4, var5}) == null) { - this.o(new Object[]{var11}); + } else if (InventoryUtil.findHotbarSlot(item) == null) { + this.abortEscape(); return false; } else { - if (this.l == -1) { - this.l = InventoryUtil.a_int_____(new Object[]{var7}); + if (this.previousSlot == -1) { + this.previousSlot = InventoryUtil.getSelectedSlot(); } - InventoryUtil.h(new Object[]{var4, var13}); + InventoryUtil.switchToItem(item); return false; } } - private void n(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 90137803451192L ^ var2; - long var4 = var2 ^ 118241449705541L; - long var6 = var2 ^ 14790502109497L; - this.i = ScoopState.BACK; - this.o.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var6}); + private void startSwapBack() { + this.state = ScoopState.BACK; + this.actionTimer.reset(); + this.delay.reroll(); } - private void o(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 90137803451192L ^ var2; - long var4 = var2 ^ 11890637555191L; - long var6 = var2 ^ 63286334814680L; - if ((Boolean)this.e.getValue() && this.l != -1 && !Prestige.o.d_boolean______(new Object[0])) { - int var10000 = this.l; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - this.l = -1; + private void abortEscape() { + if (this.swapBack.getValue() && this.previousSlot != -1 && !Prestige.silentRotationManager.hasActedThisTick()) { + InventoryUtil.selectSlot(this.previousSlot); + this.previousSlot = -1; } - this.j(new Object[]{var6}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + this.resetState(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoAnchor.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoAnchor.java index fbbed6b..c61a562 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoAnchor.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoAnchor.java @@ -9,41 +9,37 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.data.VecBoolData2; -import dev.zprestige.prestige.data.VecBoolIntData; -import dev.zprestige.prestige.data.VecData2; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.TickEvent10; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.event.TickEvent7; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.data.AutoAnchorPlan; +import dev.zprestige.prestige.data.AnchorCandidate; +import dev.zprestige.prestige.data.AutoAnchorPlaceTarget; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.HandleBlockBreakingEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.event.DoAttackEvent; import dev.zprestige.prestige.hud.ModuleNotificationsElement; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper5; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderUtil6; -import dev.zprestige.prestige.render.Renderer2D; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.ToggleAnimation; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.SwapBackTracker; import dev.zprestige.prestige.type.AutoAnchorState; import dev.zprestige.prestige.type.Easing; import dev.zprestige.prestige.type.EventPhase; import dev.zprestige.prestige.type.NotificationType; import dev.zprestige.prestige.world.PositionUtil; import dev.zprestige.prestige.world.RaycastUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -66,1016 +62,713 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.BlockPos.Mutable; -public class AutoAnchor extends Module implements RenderContract3 { - private FloatSetting a; - private FloatSetting c; - private FloatSetting d; - private BoolSetting e; - private BoolSetting f; - private EnumSetting g; - private BoolSetting h; - private BoolSetting i; - private RangeSetting j; - private RangeSetting k; - private RangeSetting l; - private BoolSetting m; - private BoolSetting n; - private ColorSetting o; - private ColorSetting p; - private ColorSetting q; - private static final float r = 12.0F; - private static final float s = 60.0F; - private static final float t = 200.0F; - private static final float u = 6.0F; - private static final float v = 3.0F; - private static final float w = 1.0F; - private static final float x = 3.0F; - private static final Direction[] z = Direction.values(); - private static final int[][] A = new int[][]{{-1, 0, 0}, {1, 0, 0}, {0, 0, -1}, {0, 0, 1}, {-1, 0, -1}, {-1, 0, 1}, {1, 0, -1}, {1, 0, 1}, {0, 1, 0}}; - public static boolean B; - private AutoAnchorState C = AutoAnchorState.IDLE; - private RenderHelper27 D = new RenderHelper27(26293358099357L); - private RenderHelper27 E = new RenderHelper27(26293358099357L); - private RenderHelper27 F = new RenderHelper27(26293358099357L); - private RenderHelper27 G = new RenderHelper27(26293358099357L); - private int H; - private static final int I = 3; - private HashMap J = new HashMap(); - private long K; - private long M; - private PlayerEntity N; - private BlockPos O; - private BlockPos P; - private Vec3d Q; - private Vec3d R; - private Vec3d S; - private float T; - private int U; - private volatile long V; - private long W; - private int X; - private PlayerEntity Y; - private BlockPos Z; - private BlockPos aa; - private Vec3d ab; - private BlockPos ac; - private BlockPos ad; - private Vec3d ae; - private BlockPos af; - private int ag = -1; - private Vec3d ah; - private List ai = new ArrayList(); - private static final float aj = 180.0F; - private static final double ak = 900.0; - private static final float al = 0.6F; - private static final float am = 0.4F; - private RenderHelper5 an = new RenderHelper5(180.0F, false, Easing.SINE_IN_OUT, 88790582046503L); - private RenderHelper5 ao = new RenderHelper5(180.0F, false, Easing.SINE_IN_OUT, 88790582046503L); - private RenderHelper5 ap = new RenderHelper5(180.0F, false, Easing.SINE_IN_OUT, 88790582046503L); - private BlockPos aq; - private BlockPos ar; - private BlockPos as; - private RenderHelper27 at = new RenderHelper27(26293358099357L); +public class AutoAnchor extends Module implements RotationProvider { + private FloatSetting targetRange; + private FloatSetting minDamage; + private FloatSetting maxSelfDamage; + private BoolSetting antiSuicide; + private BoolSetting safeAnchor; + private EnumSetting safeBlock; + private BoolSetting rotateSilently; + private BoolSetting swapBack; + private RangeSetting placeDelay; + private RangeSetting chargeDelay; + private RangeSetting detonateDelay; + private BoolSetting onlyExisting; + private BoolSetting render; + private ColorSetting anchorColor; + private ColorSetting safeColor; + private ColorSetting targetColor; + private static final Direction[] DIRECTIONS = Direction.values(); + private static final int[][] COVER_OFFSETS = new int[][]{{-1, 0, 0}, {1, 0, 0}, {0, 0, -1}, {0, 0, 1}, {-1, 0, -1}, {-1, 0, 1}, {1, 0, -1}, {1, 0, 1}, {0, 1, 0}}; + public static boolean sequenceActive; + private AutoAnchorState state = AutoAnchorState.IDLE; + private StopWatch placeDelayTimer = new StopWatch(); + private StopWatch chargeDelayTimer = new StopWatch(); + private StopWatch detonateDelayTimer = new StopWatch(); + private StopWatch stallTimer = new StopWatch(); + private int failedAttempts; + private HashMap blacklistedAnchors = new HashMap(); + private long tickCount; + private long cacheExpiryTick; + private PlayerEntity cachedTarget; + private BlockPos cachedPlayerBlockPos; + private BlockPos cachedTargetBlockPos; + private Vec3d cachedEyePos; + private Vec3d cachedTargetPos; + private Vec3d cachedTargetVelocity; + private float cachedYaw; + private int cachedStateHash; + private volatile long blockUpdateCount; + private long cachedBlockUpdateCount; + private int hurtWaitTicks; + private PlayerEntity target; + private BlockPos anchorPos; + private BlockPos anchorSupportPos; + private Vec3d anchorHitVec; + private BlockPos coverPos; + private BlockPos coverSupportPos; + private Vec3d coverHitVec; + private BlockPos plannedTargetPos; + private int originalSlot = -1; + private Vec3d lastSentEyePos; + private List placedAnchors = new ArrayList(); + private ToggleAnimation targetBoxFade = new ToggleAnimation(180.0F, false, Easing.SINE_IN_OUT); + private ToggleAnimation anchorBoxFade = new ToggleAnimation(180.0F, false, Easing.SINE_IN_OUT); + private ToggleAnimation coverBoxFade = new ToggleAnimation(180.0F, false, Easing.SINE_IN_OUT); + private BlockPos renderedTargetPos; + private BlockPos renderedAnchorPos; + private BlockPos renderedCoverPos; + private StopWatch errorNotifyTimer = new StopWatch(); public AutoAnchor() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.q.setVisibility_ColorSetting(new Object[]{(Predicate)lpL61_0 -> (Boolean)this.n.getValue(), 119980880492450L}); - this.p - .setVisibility_ColorSetting(new Object[]{(Predicate)lpL62_0 -> (Boolean)this.n.getValue() && (Boolean)this.f.getValue(), 119980880492450L}); - this.o.setVisibility_ColorSetting(new Object[]{(Predicate)lpL63_0 -> (Boolean)this.n.getValue(), 119980880492450L}); - this.g.setVisibility_EnumSetting(new Object[]{(Predicate)lpL64_0 -> (Boolean)this.f.getValue(), 90319707064974L}); + this.targetColor.visibleWhen((Predicate)ignored -> this.render.getValue()); + this.safeColor + .visibleWhen((Predicate)ignored -> this.render.getValue() && this.safeAnchor.getValue()); + this.anchorColor.visibleWhen((Predicate)ignored -> this.render.getValue()); + this.safeBlock.visibleWhen((Predicate)ignored -> this.safeAnchor.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 14673990835481L; - long var6 = var2 ^ 91082959635357L; - this.A(new Object[]{var4}); - Prestige.o.e(new Object[]{this, var6}); + public void onEnable() { + this.resetAll(); + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 51011343502304L; - long var6 = var2 ^ 82893747353842L; - long var8 = var2 ^ 140372736859409L; - long var10 = var2 ^ 95502412072826L; - long var12 = var2 ^ 23510651249799L; - if (this.ag != -1 && (Boolean)this.i.getValue() && Prestige.o.d_boolean______(new Object[0])) { - Renderer2D var10000 = Prestige.o; - int var10001 = this.ag; - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = var10001; - var10000.i(var10004); - RenderUtil6.a_void____________________________(new Object[]{this, var4}); - this.ag = -1; + public void onDisable() { + if (this.originalSlot != -1 && this.swapBack.getValue() && Prestige.silentRotationManager.hasActedThisTick()) { + Prestige.silentRotationManager.scheduleSlotSwitch(this.originalSlot); + SwapBackTracker.release(this); + this.originalSlot = -1; } - this.y(new Object[]{var12}); - this.A(new Object[]{var10}); - Prestige.o.f(new Object[]{this, var8}); + this.restoreOriginalSlot(); + this.resetAll(); + Prestige.silentRotationManager.removeRotationProvider(this); } @Override - public int a() { + public int getRotationPriority() { return 20; } @Subscribe - public void a(TickEvent3 var1) { - this.A(new Object[]{124776060678175L}); - this.ai.clear(); + public void onGameJoin(GameJoinEvent event) { + this.resetAll(); + this.placedAnchors.clear(); } @Subscribe - public void a(TickEvent7 var1) { - if (this.C != AutoAnchorState.IDLE) { - var1.a_void_____(new Object[0]); + public void onDoAttack(DoAttackEvent event) { + if (this.state != AutoAnchorState.IDLE) { + event.cancel(); } } @Subscribe - public void a(TickEvent10 var1) { - if (this.C != AutoAnchorState.IDLE) { - var1.a_void_____(new Object[0]); + public void onHandleBlockBreaking(HandleBlockBreakingEvent event) { + if (this.state != AutoAnchorState.IDLE) { + event.cancel(); } } @Subscribe - public void a(TickEvent5 var1) { - if (this.C != AutoAnchorState.IDLE) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (this.state != AutoAnchorState.IDLE) { + event.cancel(); } } @Subscribe - public void a(FloatEvent2 var1) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE && b.player != null) { - this.ah = b.player.getEyePos(); + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (event.getPhase() == EventPhase.PRE && mc.player != null) { + this.lastSentEyePos = mc.player.getEyePos(); } } @Subscribe - public void a(PacketEvent var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof BlockUpdateS2CPacket var5) { - this.V++; - if (var5.getState() != null && var5.getState().getBlock() != Blocks.RESPAWN_ANCHOR) { - this.ai.remove(var5.getPos()); + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof BlockUpdateS2CPacket blockUpdate) { + this.blockUpdateCount++; + if (blockUpdate.getState() != null && blockUpdate.getState().getBlock() != Blocks.RESPAWN_ANCHOR) { + this.placedAnchors.remove(blockUpdate.getPos()); } } } @Subscribe - public void a(TickEvent27 var1) { - if ((Boolean)this.n.getValue() && b.player != null && b.world != null) { - float var13 = b_float________(new Object[]{60036511093915L}); - boolean var14 = this.Y != null; - if (var14) { - this.aq = this.Y.getBlockPos(); + public void onRender3D(Render3DEvent event) { + if (this.render.getValue() && mc.player != null && mc.world != null) { + float pulse = getPulse(); + boolean hasTarget = this.target != null; + if (hasTarget) { + this.renderedTargetPos = this.target.getBlockPos(); } - RenderHelper5 var10000 = this.an; - Object[] var10004 = new Object[]{null, null, 80996539082704L}; - var10004[1] = var14; - var10004[0] = var10000; - float var15 = c(var10004); - if (var15 > 0.01F && this.aq != null) { - Color var23 = (Color)this.q.getValue(); - Object[] var10005 = new Object[]{null, null, null, 78311498633207L}; - var10005[2] = var13; - var10005[1] = var15; - var10005[0] = var23; - Color var16 = a_Color__(var10005); - if (var16.getAlpha() > 0) { - this.j(new Object[]{var1, this.aq, var16, 119087043519647L}); + float targetProgress = updateFade(this.targetBoxFade, hasTarget); + if (targetProgress > 0.01F && this.renderedTargetPos != null) { + Color targetBoxColor = fadeColor(this.targetColor.getValue(), targetProgress, pulse); + if (targetBoxColor.getAlpha() > 0) { + this.drawBlockOutline(event, this.renderedTargetPos, targetBoxColor); } } - boolean var21 = this.Z != null; - if (var21) { - this.ar = this.Z; + boolean hasAnchor = this.anchorPos != null; + if (hasAnchor) { + this.renderedAnchorPos = this.anchorPos; } - var10000 = this.ao; - var10004 = new Object[]{null, null, 80996539082704L}; - var10004[1] = var21; - var10004[0] = var10000; - float var17 = c(var10004); - if (var17 > 0.01F && this.ar != null) { - Color var25 = (Color)this.o.getValue(); - Object[] var30 = new Object[]{null, null, null, 78311498633207L}; - var30[2] = var13; - var30[1] = var17; - var30[0] = var25; - Color var18 = a_Color__(var30); - if (var18.getAlpha() > 0) { - this.j(new Object[]{var1, this.ar, var18, 119087043519647L}); + float anchorProgress = updateFade(this.anchorBoxFade, hasAnchor); + if (anchorProgress > 0.01F && this.renderedAnchorPos != null) { + Color anchorBoxColor = fadeColor(this.anchorColor.getValue(), anchorProgress, pulse); + if (anchorBoxColor.getAlpha() > 0) { + this.drawBlockOutline(event, this.renderedAnchorPos, anchorBoxColor); } } - boolean var22 = this.ac != null && this.C == AutoAnchorState.SAFE_COVER; - if (var22) { - this.as = this.ac; + boolean hasCover = this.coverPos != null && this.state == AutoAnchorState.SAFE_COVER; + if (hasCover) { + this.renderedCoverPos = this.coverPos; } - var10000 = this.ap; - var10004 = new Object[]{null, null, 80996539082704L}; - var10004[1] = var22; - var10004[0] = var10000; - float var19 = c(var10004); - if (var19 > 0.01F && this.as != null) { - Color var27 = (Color)this.p.getValue(); - Object[] var31 = new Object[]{null, null, null, 78311498633207L}; - var31[2] = var13; - var31[1] = var19; - var31[0] = var27; - Color var20 = a_Color__(var31); - if (var20.getAlpha() > 0) { - this.j(new Object[]{var1, this.as, var20, 119087043519647L}); + float coverProgress = updateFade(this.coverBoxFade, hasCover); + if (coverProgress > 0.01F && this.renderedCoverPos != null) { + Color coverBoxColor = fadeColor(this.safeColor.getValue(), coverProgress, pulse); + if (coverBoxColor.getAlpha() > 0) { + this.drawBlockOutline(event, this.renderedCoverPos, coverBoxColor); } } } } - private static float b_float________(Object[] var0) { + private static float getPulse() { return 0.5F + 0.5F * (float)Math.sin(System.currentTimeMillis() / 900.0 * (Math.PI * 2)); } - private static float c(Object[] var0) { - RenderHelper5 var1 = (RenderHelper5)var0[0]; - boolean var2 = (Boolean)var0[1]; - long var3 = (Long)var0[2]; - var3 = 105273939794480L ^ var3; - long var5 = var3 ^ 119037965226482L; - long var7 = var3 ^ 97423852277569L; - if (var1.a(new Object[0]) != var2) { - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var2; - var1.a_void_______________________(var10004); + private static float updateFade(ToggleAnimation animation, boolean visible) { + if (animation.getState() != visible) { + animation.setState(visible); } - return var1.a_float___________________(new Object[]{var7}); + return animation.getProgress(); } - private static int a_int________(Object[] var0) { - int var1 = (Integer)var0[0]; - float var2 = (Float)var0[1]; - float var3 = (Float)var0[2]; - int var6 = Math.round(var1 * var2 * (0.6F + 0.4F * var3)); - return Math.max(0, Math.min(255, var6)); + private static int scaleAlpha(int alpha, float progress, float pulse) { + return Math.max(0, Math.min(255, Math.round(alpha * progress * (0.6F + 0.4F * pulse)))); } - private static Color a_Color__(Object[] var0) { - Color var3 = (Color)var0[0]; - float var1 = (Float)var0[1]; - float var2 = (Float)var0[2]; - long var4 = (Long)var0[3]; - var4 = 105273939794480L ^ var4; - long var6 = var4 ^ 82951863138869L; - int var10002 = var3.getRed(); - int var10003 = var3.getGreen(); - int var10004 = var3.getBlue(); - int var10005 = var3.getAlpha(); - Object[] var10010 = new Object[]{null, null, null, var6}; - var10010[2] = var2; - var10010[1] = var1; - var10010[0] = var10005; - return new Color(var10002, var10003, var10004, a_int________(var10010)); + private static Color fadeColor(Color color, float progress, float pulse) { + return new Color(color.getRed(), color.getGreen(), color.getBlue(), scaleAlpha(color.getAlpha(), progress, pulse)); } - private void j(Object[] var1) { - TickEvent27 var6 = (TickEvent27)var1[0]; - BlockPos var4 = (BlockPos)var1[1]; - Color var5 = (Color)var1[2]; - long var2 = (Long)var1[3]; - var2 = 105273939794480L ^ var2; - long var7 = var2 ^ 105344602161953L; - MatrixCameraData var10000 = var6.b; - RenderHelper8 var10001 = var6.a; - float var10002 = var4.getX(); - float var10003 = var4.getY(); - float var10004 = var4.getZ(); - float var10005 = var4.getX() + 1.0F; - float var10006 = var4.getY() + 1.0F; - float var10007 = var4.getZ() + 1.0F; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var5, var7}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); + private void drawBlockOutline(Render3DEvent event, BlockPos pos, Color color) { + CameraMatrices matrices = event.context; + BufferSource bufferSource = event.renderer; + float minX = pos.getX(); + float minY = pos.getY(); + float minZ = pos.getZ(); + ShapeRenderer.drawBoxOutline(matrices, bufferSource, minX, minY, minZ, pos.getX() + 1.0F, pos.getY() + 1.0F, pos.getZ() + 1.0F, color); } @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - this.K++; - if (!this.J.isEmpty()) { - this.J.entrySet().removeIf(lpL60_0 -> this.K - (Long)((java.util.Map.Entry)lpL60_0).getValue() > 40L); + public void onClientTick(ClientTickEvent event) { + this.tickCount++; + if (!this.blacklistedAnchors.isEmpty()) { + this.blacklistedAnchors.entrySet().removeIf(entry -> this.tickCount - (Long)((java.util.Map.Entry)entry).getValue() > 40L); } - if (b.player == null || b.world == null || b.currentScreen != null || !b.isWindowFocused() || b.player.isUsingItem()) { - B = false; - } else if (!AutoObbyCrystal.R && !AnchorPearlCatch.C) { - if (this.C != AutoAnchorState.IDLE && (!this.h(new Object[]{25720726446400L}) || this.i(new Object[]{13353245394690L}))) { - this.z(new Object[]{57197509800820L}); + if (mc.player == null || mc.world == null || mc.currentScreen != null || !mc.isWindowFocused() || mc.player.isUsingItem()) { + sequenceActive = false; + } else if (!AutoObbyCrystal.sequenceActive && !AnchorPearlCatch.active) { + if (this.state != AutoAnchorState.IDLE && (!this.isTargetValid() || this.hasTargetMoved())) { + this.abortSequence(); } - if (this.C != AutoAnchorState.IDLE) { - RenderHelper27 var10000 = this.G; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 200.0F; - if (var10000.a(var10004)) { - this.z(new Object[]{57197509800820L}); + if (this.state != AutoAnchorState.IDLE) { + if (this.stallTimer.hasElapsed(200.0F)) { + this.abortSequence(); } } - if (this.C == AutoAnchorState.IDLE) { - this.y(new Object[]{55810207585250L}); - this.u(new Object[]{75289287165817L}); - } else if (!(Boolean)this.h.getValue()) { - if (Prestige.o.d_boolean______(new Object[0])) { + if (this.state == AutoAnchorState.IDLE) { + this.restoreOriginalSlot(); + this.tryStartSequence(); + } else if (!this.rotateSilently.getValue()) { + if (Prestige.silentRotationManager.hasActedThisTick()) { return; } - this.k(new Object[]{52894314514730L}); + this.executeStageWithCameraRotation(); } - B = this.C != AutoAnchorState.IDLE; + sequenceActive = this.state != AutoAnchorState.IDLE; } else { - if (this.C != AutoAnchorState.IDLE) { - this.z(new Object[]{57197509800820L}); + if (this.state != AutoAnchorState.IDLE) { + this.abortSequence(); } - this.y(new Object[]{55810207585250L}); - B = false; + this.restoreOriginalSlot(); + sequenceActive = false; } } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 116221305777013L; - long var6 = var2 ^ 7477342050734L; - long var8 = var2 ^ 15115887906165L; - long var10 = var2 ^ 51598816251400L; - long var12 = var2 ^ 135857772043469L; - long var14 = var2 ^ 101816702374277L; - long var16 = var2 ^ 19152179247881L; - long var18 = var2 ^ 60850652382606L; - long var20 = var2 ^ 36681481683100L; - if (!(Boolean)this.h.getValue()) { + public Rotation provideRotation() { + if (!this.rotateSilently.getValue()) { return null; - } else if (b.player == null || b.world == null || b.currentScreen != null || !b.isWindowFocused() || b.player.isUsingItem()) { + } else if (mc.player == null || mc.world == null || mc.currentScreen != null || !mc.isWindowFocused() || mc.player.isUsingItem()) { return null; - } else if (this.C == AutoAnchorState.IDLE || this.Z == null || this.Y == null) { + } else if (this.state == AutoAnchorState.IDLE || this.anchorPos == null || this.target == null) { return null; - } else if (AutoObbyCrystal.R) { + } else if (AutoObbyCrystal.sequenceActive) { return null; - } else if (Prestige.o.d_boolean______(new Object[0])) { + } else if (Prestige.silentRotationManager.hasActedThisTick()) { return null; - } else if (!this.d(new Object[]{var4})) { + } else if (!this.isStageReady()) { return null; } else { - Vec3d var23 = this.a_class_243____(new Object[]{var8}); - if (this.a_boolean__________(new Object[]{var23, var18})) { - this.z(new Object[]{var12}); + Vec3d aimPoint = this.getStageAimPoint(); + if (this.isOutOfReach(aimPoint)) { + this.abortSequence(); return null; - } else if (var23 == null) { - this.e(new Object[]{var20}); + } else if (aimPoint == null) { + this.registerFailure(); return null; } else { - RenderBatch var24 = Prestige.o.a_RenderBatch(new Object[]{var23, var14}); - var24 = WorldUtil.d_RenderBatch(new Object[]{var24, var23, var6}); - float var10000 = var24.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var10}; - var10003[0] = var10000; - if (Math.abs(WorldUtil.b_float_____________________(var10003)) >= 60.0F) { - this.z(new Object[]{var12}); + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + rotation = RotationUtil.addRandomJitter(rotation, aimPoint); + if (Math.abs(RotationUtil.wrapDegrees(rotation.getYaw() - mc.player.getYaw())) >= 60.0F) { + this.abortSequence(); return null; - } else if (var24.a_boolean________________________________________(new Object[0])) { - return var24; + } else if (rotation.isClamped()) { + return rotation; } else { - this.l(new Object[]{var24, var16}); - return this.C == AutoAnchorState.IDLE ? null : var24; + this.executeStage(rotation); + return this.state == AutoAnchorState.IDLE ? null : rotation; } } } } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 80938587477974L; - long var6 = var2 ^ 50098298237398L; - long var8 = var2 ^ 100745980026990L; - long var10 = var2 ^ 116949926292917L; - long var12 = var2 ^ 85572466657077L; - long var14 = var2 ^ 54168877467562L; - long var16 = var2 ^ 25808456464685L; - long var18 = var2 ^ 1595727920191L; - if (this.d(new Object[]{var4})) { - Vec3d var21 = this.a_class_243____(new Object[]{var6}); - if (this.a_boolean__________(new Object[]{var21, var16})) { - this.z(new Object[]{var8}); - } else if (var21 == null) { - this.e(new Object[]{var18}); + private void executeStageWithCameraRotation() { + if (this.isStageReady()) { + Vec3d aimPoint = this.getStageAimPoint(); + if (this.isOutOfReach(aimPoint)) { + this.abortSequence(); + } else if (aimPoint == null) { + this.registerFailure(); } else { - RenderBatch var22 = WorldUtil.a_RenderBatch_(new Object[]{var21, var10}); - WorldUtil.a_void________________________________(new Object[]{var22, var12}); - this.l(new Object[]{var22, var14}); + Rotation rotation = RotationUtil.getRotationTo(aimPoint); + RotationUtil.applyRotation(rotation); + this.executeStage(rotation); } } } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 44117291891857L; - - return switch (this.C) { + private boolean isStageReady() { + return switch (this.state) { case PLACE_ANCHOR -> true; - case SAFE_COVER -> this.D.b(new Object[]{this.j, var4}); - case CHARGE_ANCHOR -> this.E.b(new Object[]{this.k, var4}); - case DETONATE -> this.F.b(new Object[]{this.l, var4}); + case SAFE_COVER -> this.placeDelayTimer.hasElapsedRandom(this.placeDelay); + case CHARGE_ANCHOR -> this.chargeDelayTimer.hasElapsedRandom(this.chargeDelay); + case DETONATE -> this.detonateDelayTimer.hasElapsedRandom(this.detonateDelay); default -> false; }; } - private Vec3d a_class_243____(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 34543641538845L; - - return switch (this.C) { - case PLACE_ANCHOR -> this.ab; - case SAFE_COVER -> this.ae; - case CHARGE_ANCHOR, DETONATE -> RaycastUtil.b(new Object[]{this.Z, var4}); + private Vec3d getStageAimPoint() { + return switch (this.state) { + case PLACE_ANCHOR -> this.anchorHitVec; + case SAFE_COVER -> this.coverHitVec; + case CHARGE_ANCHOR, DETONATE -> RaycastUtil.getVisibleTopPoint(this.anchorPos); default -> null; }; } - private boolean a_boolean__________(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - return var2 == null ? false : b.player.getEyePos().distanceTo(var2) > 4.4 || this.ah != null && this.ah.distanceTo(var2) > 4.4; + private boolean isOutOfReach(Vec3d aimPoint) { + return aimPoint == null ? false : mc.player.getEyePos().distanceTo(aimPoint) > 4.4 || this.lastSentEyePos != null && this.lastSentEyePos.distanceTo(aimPoint) > 4.4; } - private boolean e(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 5968785606241L; - if (++this.H >= 3) { - this.z(new Object[]{var4}); + private boolean registerFailure() { + if (++this.failedAttempts >= 3) { + this.abortSequence(); return true; } else { return false; } } - private void l(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 105273939794480L ^ var2; - long var5 = var2 ^ 130344084500645L; - long var7 = var2 ^ 125922209398472L; - long var9 = var2 ^ 47219774531500L; - long var11 = var2 ^ 80455321689799L; - switch (this.C) { + private void executeStage(Rotation rotation) { + switch (this.state) { case PLACE_ANCHOR: - this.m(new Object[]{var4, var7}); + this.handlePlaceStage(rotation); break; case SAFE_COVER: - this.o(new Object[]{var4, var5}); + this.handleCoverStage(rotation); break; case CHARGE_ANCHOR: - this.q(new Object[]{var4, var11}); + this.handleChargeStage(rotation); break; case DETONATE: - this.s(new Object[]{var4, var9}); + this.handleDetonateStage(rotation); } } - private void m(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 105273939794480L ^ var2; - long var5 = var2 ^ 133539542513125L; - long var7 = var2 ^ 25202247080814L; - long var9 = var2 ^ 2433635833593L; - long var11 = var2 ^ 15826955956239L; - long var13 = var2 ^ 139927769974309L; - long var15 = var2 ^ 34692832879769L; - long var17 = var2 ^ 79223979126183L; - long var19 = var2 ^ 94872942202332L; - long var21 = var2 ^ 73328663971165L; - long var23 = var2 ^ 130945278820738L; - long var25 = var2 ^ 68849546613720L; - long var27 = var2 ^ 51007182803346L; - long var29 = var2 ^ 26810803181836L; - long var31 = var2 ^ 82178500287089L; - if (WorldUtil2.b(new Object[]{this.Z, Blocks.RESPAWN_ANCHOR, var13})) { - this.n(new Object[]{var17}); - } else if (WorldUtil2.e(new Object[]{this.Z, var23})) { - this.z(new Object[]{var29}); + private void handlePlaceStage(Rotation rotation) { + if (BlockUtil.isOf(this.anchorPos, Blocks.RESPAWN_ANCHOR)) { + this.advanceAfterPlace(); + } else if (BlockUtil.isClickableBlock(this.anchorPos)) { + this.abortSequence(); } else { - Integer var34 = InventoryUtil.a_Integer(new Object[]{Items.RESPAWN_ANCHOR, var7}); - if (var34 == null) { - this.x(new Object[]{"No respawn anchor in hotbar.", var27}); + Integer anchorSlot = InventoryUtil.findHotbarSlot(Items.RESPAWN_ANCHOR); + if (anchorSlot == null) { + this.abortWithError("No respawn anchor in hotbar."); } else { - BlockHitResult var35 = this.a_class_3965__(new Object[]{var4, var9}); - if (var35 != null && var35.getBlockPos().equals(this.aa) && var35.getBlockPos().offset(var35.getSide()).equals(this.Z)) { - this.H = 0; - if (this.ag == -1) { - this.ag = RenderUtil6.a(new Object[]{this, var31}); + BlockHitResult hitResult = this.raycastBlock(rotation); + if (hitResult != null && hitResult.getBlockPos().equals(this.anchorSupportPos) && hitResult.getBlockPos().offset(hitResult.getSide()).equals(this.anchorPos)) { + this.failedAttempts = 0; + if (this.originalSlot == -1) { + this.originalSlot = SwapBackTracker.claim(this); } - if (InventoryUtil.a_int_____(new Object[]{var19}) != var34) { - int var10000 = var34; - Object[] var10003 = new Object[]{null, var11}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); - this.G.a_void_____________________(new Object[]{var5}); + if (InventoryUtil.getSelectedSlot() != anchorSlot) { + InventoryUtil.selectSlot(anchorSlot); + Prestige.silentRotationManager.setActedThisTick(true); + this.stallTimer.reset(); } else { - this.t(new Object[]{var35, var25}); - this.ai.add(this.Z); - this.D.a_void_____________________(new Object[]{var5}); - this.j.reroll(new Object[]{var15}); - this.n(new Object[]{var17}); - this.G.a_void_____________________(new Object[]{var5}); + this.clickBlock(hitResult); + this.placedAnchors.add(this.anchorPos); + this.placeDelayTimer.reset(); + this.placeDelay.reroll(); + this.advanceAfterPlace(); + this.stallTimer.reset(); } } else { - this.e(new Object[]{var21}); + this.registerFailure(); } } } } - private void n(Object[] var1) { - if ((Boolean)this.f.getValue() && this.ac != null) { - this.C = AutoAnchorState.SAFE_COVER; + private void advanceAfterPlace() { + if (this.safeAnchor.getValue() && this.coverPos != null) { + this.state = AutoAnchorState.SAFE_COVER; } else { - this.C = AutoAnchorState.CHARGE_ANCHOR; + this.state = AutoAnchorState.CHARGE_ANCHOR; } - this.H = 0; + this.failedAttempts = 0; } - private void o(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - long var3 = (Long)var1[1]; - var3 = 105273939794480L ^ var3; - long var5 = var3 ^ 126523403259887L; - long var7 = var3 ^ 137982479383432L; - long var9 = var3 ^ 20758896678147L; - long var11 = var3 ^ 64411030085045L; - long var13 = var3 ^ 6854963517588L; - long var15 = var3 ^ 11474345131618L; - long var17 = var3 ^ 30267065461492L; - long var19 = var3 ^ 90450942837681L; - long var21 = var3 ^ 53629237344462L; - long var23 = var3 ^ 86548825822236L; - long var25 = var3 ^ 77772137581360L; - if (this.ac != null && this.ad != null && this.ae != null) { - if (WorldUtil2.e(new Object[]{this.ac, var5})) { - this.p(new Object[]{var21}); + private void handleCoverStage(Rotation rotation) { + if (this.coverPos != null && this.coverSupportPos != null && this.coverHitVec != null) { + if (BlockUtil.isClickableBlock(this.coverPos)) { + this.advanceToCharge(); } else { - Block var28 = ((String)this.g.getValue()).equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN; - Integer var29 = InventoryUtil.a_Integer(new Object[]{var28.asItem(), var9}); - if (var29 == null) { - this.p(new Object[]{var21}); + Integer coverSlot = InventoryUtil.findHotbarSlot((this.safeBlock.getValue().equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN).asItem()); + if (coverSlot == null) { + this.advanceToCharge(); } else { - BlockHitResult var30 = this.a_class_3965__(new Object[]{var2, var13}); - if (var30 != null && var30.getBlockPos().equals(this.ad) && var30.getBlockPos().offset(var30.getSide()).equals(this.ac)) { - this.H = 0; - if (this.ag == -1) { - this.ag = RenderUtil6.a(new Object[]{this, var23}); + BlockHitResult hitResult = this.raycastBlock(rotation); + if (hitResult != null && hitResult.getBlockPos().equals(this.coverSupportPos) && hitResult.getBlockPos().offset(hitResult.getSide()).equals(this.coverPos)) { + this.failedAttempts = 0; + if (this.originalSlot == -1) { + this.originalSlot = SwapBackTracker.claim(this); } - if (InventoryUtil.a_int_____(new Object[]{var19}) != var29) { - int var10000 = var29; - Object[] var10003 = new Object[]{null, var15}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); - this.G.a_void_____________________(new Object[]{var7}); + if (InventoryUtil.getSelectedSlot() != coverSlot) { + InventoryUtil.selectSlot(coverSlot); + Prestige.silentRotationManager.setActedThisTick(true); + this.stallTimer.reset(); } else { - this.t(new Object[]{var30, var11}); - this.E.a_void_____________________(new Object[]{var7}); - this.k.reroll(new Object[]{var17}); - this.C = AutoAnchorState.CHARGE_ANCHOR; - this.H = 0; - this.G.a_void_____________________(new Object[]{var7}); + this.clickBlock(hitResult); + this.chargeDelayTimer.reset(); + this.chargeDelay.reroll(); + this.state = AutoAnchorState.CHARGE_ANCHOR; + this.failedAttempts = 0; + this.stallTimer.reset(); } } else { - this.e(new Object[]{var25}); + this.registerFailure(); } } } } else { - this.p(new Object[]{var21}); + this.advanceToCharge(); } } - private void p(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 19821085727094L; - this.C = AutoAnchorState.CHARGE_ANCHOR; - this.H = 0; - this.G.a_void_____________________(new Object[]{var4}); + private void advanceToCharge() { + this.state = AutoAnchorState.CHARGE_ANCHOR; + this.failedAttempts = 0; + this.stallTimer.reset(); } - private void q(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 105273939794480L ^ var2; - long var5 = var2 ^ 47291063539242L; - long var7 = var2 ^ 73525053314538L; - long var9 = var2 ^ 49757744397153L; - long var11 = var2 ^ 63343883597558L; - long var13 = var2 ^ 59167373496320L; - long var15 = var2 ^ 75769721644586L; - long var17 = var2 ^ 83138824798388L; - long var19 = var2 ^ 39751930021014L; - long var21 = var2 ^ 120824649821651L; - long var23 = var2 ^ 133160405181778L; - long var25 = var2 ^ 5723892560855L; - long var27 = var2 ^ 23978589745565L; - long var29 = var2 ^ 124345041074814L; - if (!WorldUtil2.b(new Object[]{this.Z, Blocks.RESPAWN_ANCHOR, var15})) { - this.e(new Object[]{var23}); + private void handleChargeStage(Rotation rotation) { + if (!BlockUtil.isOf(this.anchorPos, Blocks.RESPAWN_ANCHOR)) { + this.registerFailure(); } else { - int var32 = this.c_int(new Object[]{this.Z, var5}); - if (var32 > 0) { - this.r(new Object[]{var17}); + if (this.getChargesAt(this.anchorPos) > 0) { + this.advanceToDetonate(); } else { - Integer var33 = InventoryUtil.a_Integer(new Object[]{Items.GLOWSTONE, var9}); - if (var33 == null) { - this.x(new Object[]{"No glowstone in hotbar.", var27}); + Integer glowstoneSlot = InventoryUtil.findHotbarSlot(Items.GLOWSTONE); + if (glowstoneSlot == null) { + this.abortWithError("No glowstone in hotbar."); } else { - BlockHitResult var34 = this.a_class_3965__(new Object[]{var4, var11}); - if (var34 != null && var34.getBlockPos().equals(this.Z)) { - this.H = 0; - if (this.ag == -1) { - this.ag = RenderUtil6.a(new Object[]{this, var29}); + BlockHitResult hitResult = this.raycastBlock(rotation); + if (hitResult != null && hitResult.getBlockPos().equals(this.anchorPos)) { + this.failedAttempts = 0; + if (this.originalSlot == -1) { + this.originalSlot = SwapBackTracker.claim(this); } - if (InventoryUtil.a_int_____(new Object[]{var21}) != var33) { - int var10000 = var33; - Object[] var10003 = new Object[]{null, var13}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); - this.G.a_void_____________________(new Object[]{var7}); + if (InventoryUtil.getSelectedSlot() != glowstoneSlot) { + InventoryUtil.selectSlot(glowstoneSlot); + Prestige.silentRotationManager.setActedThisTick(true); + this.stallTimer.reset(); } else { - this.t(new Object[]{var34, var25}); - this.F.a_void_____________________(new Object[]{var7}); - this.l.reroll(new Object[]{var19}); - this.r(new Object[]{var17}); + this.clickBlock(hitResult); + this.detonateDelayTimer.reset(); + this.detonateDelay.reroll(); + this.advanceToDetonate(); } } else { - this.e(new Object[]{var23}); + this.registerFailure(); } } } } } - private void r(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 95646127804270L; - this.C = AutoAnchorState.DETONATE; - this.H = 0; - this.G.a_void_____________________(new Object[]{var4}); + private void advanceToDetonate() { + this.state = AutoAnchorState.DETONATE; + this.failedAttempts = 0; + this.stallTimer.reset(); } - private void s(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 105273939794480L ^ var2; - long var5 = var2 ^ 80112082399041L; - long var7 = var2 ^ 36286594477185L; - long var9 = var2 ^ 94634126223723L; - long var11 = var2 ^ 99240161546141L; - long var13 = var2 ^ 43120404881217L; - long var15 = var2 ^ 26699103331243L; - long var17 = var2 ^ 87446096261442L; - long var19 = var2 ^ 29435853773881L; - long var21 = var2 ^ 84070775762545L; - long var23 = var2 ^ 113159262735036L; - long var25 = var2 ^ 129814051637494L; - long var27 = var2 ^ 70466874769512L; - long var29 = var2 ^ 119540392259527L; - if (!WorldUtil2.b(new Object[]{this.Z, Blocks.RESPAWN_ANCHOR, var13})) { - this.e(new Object[]{var19}); + private void handleDetonateStage(Rotation rotation) { + if (!BlockUtil.isOf(this.anchorPos, Blocks.RESPAWN_ANCHOR)) { + this.registerFailure(); } else { - int var32 = this.c_int(new Object[]{this.Z, var5}); - if (var32 <= 0) { - this.p(new Object[]{var29}); + if (this.getChargesAt(this.anchorPos) <= 0) { + this.advanceToCharge(); } else { - if (this.Y != null && this.Y.hurtTime > 2) { - this.G.a_void_____________________(new Object[]{var7}); - if (++this.X <= 12) { + if (this.target != null && this.target.hurtTime > 2) { + this.stallTimer.reset(); + if (++this.hurtWaitTicks <= 12) { return; } } - this.X = 0; - double var33 = Prestige.f.k(new Object[]{b.player, this.Z.toCenterPos(), var15}); - float var35 = b.player.getHealth() + b.player.getAbsorptionAmount(); - if (var33 > ((Float)this.d.getValue()).floatValue()) { - this.J.put(this.Z.toImmutable(), this.K); - this.z(new Object[]{var27}); - } else if ((Boolean)this.e.getValue() && var33 >= var35 - 1.0F) { - this.z(new Object[]{var27}); - } else if (InventoryUtil.l(new Object[]{Items.GLOWSTONE, var17})) { - int var38 = this.ag != -1 ? this.ag : this.d_int_(new Object[]{var21}); - if (var38 == -1) { - this.x(new Object[]{"No non-glowstone slot to detonate with.", var25}); + this.hurtWaitTicks = 0; + double selfDamage = Prestige.damageCalculator.getAnchorDamage(mc.player, this.anchorPos.toCenterPos()); + float health = mc.player.getHealth() + mc.player.getAbsorptionAmount(); + if (selfDamage > this.maxSelfDamage.getValue().floatValue()) { + this.blacklistedAnchors.put(this.anchorPos.toImmutable(), this.tickCount); + this.abortSequence(); + } else if (this.antiSuicide.getValue() && selfDamage >= health - 1.0F) { + this.abortSequence(); + } else if (InventoryUtil.isHolding(Items.GLOWSTONE)) { + int detonateSlot = this.originalSlot != -1 ? this.originalSlot : this.findNonGlowstoneSlot(); + if (detonateSlot == -1) { + this.abortWithError("No non-glowstone slot to detonate with."); } else { - Object[] var10003 = new Object[]{null, var9}; - var10003[0] = var38; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); - this.G.a_void_____________________(new Object[]{var7}); + InventoryUtil.selectSlot(detonateSlot); + Prestige.silentRotationManager.setActedThisTick(true); + this.stallTimer.reset(); } } else { - BlockHitResult var36 = this.a_class_3965__(new Object[]{var4, var11}); - if (var36 != null && var36.getBlockPos().equals(this.Z)) { - this.H = 0; - this.t(new Object[]{var36, var23}); - this.z(new Object[]{var27}); + BlockHitResult hitResult = this.raycastBlock(rotation); + if (hitResult != null && hitResult.getBlockPos().equals(this.anchorPos)) { + this.failedAttempts = 0; + this.clickBlock(hitResult); + this.abortSequence(); } else { - this.e(new Object[]{var19}); + this.registerFailure(); } } } } } - private int d_int_(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 < 9; var5++) { - if (b.player.getInventory().getStack(var5).getItem() != Items.GLOWSTONE) { - return var5; + private int findNonGlowstoneSlot() { + for (int slot = 0; slot < 9; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() != Items.GLOWSTONE) { + return slot; } } return -1; } - private void t(Object[] var1) { - BlockHitResult var4 = (BlockHitResult)var1[0]; - boolean var5 = b.interactionManager.interactBlock(b.player, Hand.MAIN_HAND, var4).isAccepted(); - Prestige.o.g(new Object[]{true}); - if (var5) { - b.player.swingHand(Hand.MAIN_HAND); + private void clickBlock(BlockHitResult hitResult) { + boolean accepted = mc.interactionManager.interactBlock(mc.player, Hand.MAIN_HAND, hitResult).isAccepted(); + Prestige.silentRotationManager.setActedThisTick(true); + if (accepted) { + mc.player.swingHand(Hand.MAIN_HAND); } } - private BlockHitResult a_class_3965__(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 105273939794480L ^ var2; - long var5 = var2 ^ 92715299821451L; - Event.b(); - return WorldUtil.a_class_239_(new Object[]{var4, var5}) instanceof BlockHitResult var9 ? var9 : null; + private BlockHitResult raycastBlock(Rotation rotation) { + return RotationUtil.raycastRotation(rotation) instanceof BlockHitResult blockHit ? blockHit : null; } - private void u(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 104741225612570L; - long var6 = var2 ^ 86121097354001L; - long var8 = var2 ^ 100004932027201L; - long var10 = var2 ^ 42916798185748L; - long var12 = var2 ^ 86674405491412L; - long var14 = var2 ^ 16112572092981L; - long var16 = var2 ^ 44177499018152L; - long var18 = var2 ^ 22741235671889L; - Event.b(); - PlayerEntity var21 = CombatUtil.a_class_1657(new Object[]{var18}); - if (var21 != null && var21.isAlive() && !(b.player.distanceTo(var21) > (Float)this.a.getValue())) { - if (!this.j_boolean(new Object[]{var21, var8})) { - this.Y = var21; - long var22 = this.V; - VecBoolData2 var24 = this.a_VecBoolData2(new Object[]{var4}); - if (var24 == null) { - if (var22 == this.V) { - Object[] var10005 = new Object[]{null, null, var14}; - var10005[1] = var22; - var10005[0] = var21; - this.v(var10005); + private void tryStartSequence() { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null && enemy.isAlive() && !(mc.player.distanceTo(enemy) > this.targetRange.getValue())) { + if (!this.isFailedPlanCached(enemy)) { + this.target = enemy; + long updateCountBefore = this.blockUpdateCount; + AutoAnchorPlan plan = this.findBestPlan(); + if (plan == null) { + if (updateCountBefore == this.blockUpdateCount) { + this.cacheFailedPlan(enemy, updateCountBefore); } - this.Y = null; + this.target = null; } else { - this.w(new Object[]{var6}); - this.Z = var24.l(); - this.aa = var24.m(); - this.ab = var24.n(); - this.ac = var24.p(); - this.ad = var24.q(); - this.ae = var24.r(); - this.af = this.Y.getBlockPos(); - if (var24.o()) { - int var25 = this.c_int(new Object[]{this.Z, var10}); - this.C = this.f.getValue() && this.ac != null + this.clearPlanCache(); + this.anchorPos = plan.anchorPos(); + this.anchorSupportPos = plan.anchorSupportPos(); + this.anchorHitVec = plan.anchorHitVec(); + this.coverPos = plan.blockerPos(); + this.coverSupportPos = plan.blockerSupportPos(); + this.coverHitVec = plan.blockerHitVec(); + this.plannedTargetPos = this.target.getBlockPos(); + if (plan.anchorExists()) { + int charges = this.getChargesAt(this.anchorPos); + this.state = this.safeAnchor.getValue() && this.coverPos != null ? AutoAnchorState.SAFE_COVER - : (var25 > 0 ? AutoAnchorState.DETONATE : AutoAnchorState.CHARGE_ANCHOR); + : (charges > 0 ? AutoAnchorState.DETONATE : AutoAnchorState.CHARGE_ANCHOR); } else { - this.C = AutoAnchorState.PLACE_ANCHOR; + this.state = AutoAnchorState.PLACE_ANCHOR; } - this.H = 0; - this.G.a_void_____________________(new Object[]{var12}); - this.D.a_void_____________________(new Object[]{var12}); - this.j.reroll(new Object[]{var16}); - this.E.a_void_____________________(new Object[]{var12}); - this.k.reroll(new Object[]{var16}); - this.F.a_void_____________________(new Object[]{var12}); - this.l.reroll(new Object[]{var16}); + this.failedAttempts = 0; + this.stallTimer.reset(); + this.placeDelayTimer.reset(); + this.placeDelay.reroll(); + this.chargeDelayTimer.reset(); + this.chargeDelay.reroll(); + this.detonateDelayTimer.reset(); + this.detonateDelay.reroll(); } } } else { - this.w(new Object[]{var6}); + this.clearPlanCache(); } } - private Vec3d b_class_243_(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 64524393394298L; - Event.b(); - Vec3d var7 = PositionUtil.a(new Object[]{this.Y, var4}); - Vec3d var8 = this.Y.getVelocity(); - if (var8.lengthSquared() < 1.0E-6) { - return var7; + private Vec3d predictTargetPos() { + Vec3d currentPos = PositionUtil.getEntityPos(this.target); + Vec3d velocity = this.target.getVelocity(); + if (velocity.lengthSquared() < 1.0E-6) { + return currentPos; } else { - int var9 = 0; - PlayerListEntry var10 = b.player.networkHandler.getPlayerListEntry(this.Y.getUuid()); - if (var10 != null) { - var9 = Math.max(0, var10.getLatency()); + int latency = 0; + PlayerListEntry listEntry = mc.player.networkHandler.getPlayerListEntry(this.target.getUuid()); + if (listEntry != null) { + latency = Math.max(0, listEntry.getLatency()); } - float var11 = MathHelper.clamp(3.0F + var9 / 50.0F * 1.0F, 0.0F, 20.0F); - Vec3d var12 = new Vec3d(var8.x * var11, 0.0, var8.z * var11); - double var13 = 3.0; - if (var12.lengthSquared() > var13 * var13) { - var12 = var12.lengthSquared() > 1.0E-6 ? var12.normalize().multiply(var13) : Vec3d.ZERO; + float predictTicks = MathHelper.clamp(3.0F + latency / 50.0F * 1.0F, 0.0F, 20.0F); + Vec3d offset = new Vec3d(velocity.x * predictTicks, 0.0, velocity.z * predictTicks); + double maxOffset = 3.0; + if (offset.lengthSquared() > maxOffset * maxOffset) { + offset = offset.lengthSquared() > 1.0E-6 ? offset.normalize().multiply(maxOffset) : Vec3d.ZERO; } - return var7.add(var12); + return currentPos.add(offset); } } - private VecBoolData2 a_VecBoolData2(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 134760382939301L; - long var6 = var2 ^ 28426246359938L; - long var8 = var2 ^ 42642442235004L; - long var10 = var2 ^ 112787538791506L; - long var12 = var2 ^ 42470544289551L; - long var14 = var2 ^ 37073073927029L; - long var16 = var2 ^ 33823999311052L; - long var18 = var2 ^ 131256388375252L; - long var20 = var2 ^ 21768429511699L; - long var22 = var2 ^ 70662803597721L; - long var24 = var2 ^ 92391049997117L; - long var26 = var2 ^ 78599337804183L; - long var28 = var2 ^ 134535939335122L; - long var30 = var2 ^ 74430976984389L; - long var32 = var2 ^ 27733170906009L; - long var34 = var2 ^ 81921558716813L; - Vec3d var37 = b.player.getEyePos(); - Vec3d var38 = PositionUtil.a(new Object[]{this.Y, var12}); - Event.b(); - Vec3d var39 = this.b_class_243_(new Object[]{var30}); - Vec3d var40 = var39.subtract(var38); - float var41 = b.player.getHealth() + b.player.getAbsorptionAmount(); - List var42 = this.b_List_(new Object[]{var37, var38, var39, var32}); - var42.sort((lpL59_0, lpL59_1) -> { - Event.b(); - int var5 = Double.compare(((dev.zprestige.prestige.data.VecBoolIntData)lpL59_1).ad(), ((dev.zprestige.prestige.data.VecBoolIntData)lpL59_0).ad()); - return var5 != 0 ? var5 : Integer.compare(((dev.zprestige.prestige.data.VecBoolIntData)lpL59_0).aa(), ((dev.zprestige.prestige.data.VecBoolIntData)lpL59_1).aa()); + private AutoAnchorPlan findBestPlan() { + Vec3d eyePos = mc.player.getEyePos(); + Vec3d targetPos = PositionUtil.getEntityPos(this.target); + Vec3d predictedPos = this.predictTargetPos(); + Vec3d predictionOffset = predictedPos.subtract(targetPos); + float health = mc.player.getHealth() + mc.player.getAbsorptionAmount(); + List candidates = this.collectCandidates(eyePos, targetPos, predictedPos); + candidates.sort((first, second) -> { + int scoreComparison = Double.compare(((dev.zprestige.prestige.data.AnchorCandidate)second).score(), ((dev.zprestige.prestige.data.AnchorCandidate)first).score()); + return scoreComparison != 0 ? scoreComparison : Integer.compare(((dev.zprestige.prestige.data.AnchorCandidate)first).scanIndex(), ((dev.zprestige.prestige.data.AnchorCandidate)second).scanIndex()); }); - VecBoolData2 var43 = null; - double var44 = -Double.MAX_VALUE; - int var46 = Integer.MAX_VALUE; - Block var47 = ((String)this.g.getValue()).equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN; - BlockState var48 = var47.getDefaultState(); - boolean var49 = InventoryUtil.a_Integer(new Object[]{var47.asItem(), var14}) != null; + AutoAnchorPlan bestPlan = null; + double bestScore = -Double.MAX_VALUE; + int bestScanIndex = Integer.MAX_VALUE; + Block coverBlock = this.safeBlock.getValue().equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN; + BlockState coverState = coverBlock.getDefaultState(); + boolean hasCoverBlock = InventoryUtil.findHotbarSlot(coverBlock.asItem()) != null; - for (VecBoolIntData var51 : (Iterable)(var42)) { - if (var43 != null) { - double var10000 = var51.ad(); - int var10001 = var51.aa(); - Object[] var10006 = new Object[]{null, null, null, null, var10}; - var10006[3] = var46; - var10006[2] = var44; - var10006[1] = var10001; - var10006[0] = var10000; - if (!f(var10006)) { + for (AnchorCandidate candidate : (Iterable)(candidates)) { + if (bestPlan != null) { + if (!couldBeatBest(candidate.score(), candidate.scanIndex(), bestScore, bestScanIndex)) { break; } } - Vec3d var52 = var51.s().toCenterPos(); - Vec3d var53 = RaycastUtil.b(new Object[]{var51.s(), var6}); - if (!var51.v() || var53 != null) { - Vec3d var54 = var53 != null ? var53 : var52.add(0.0, 0.5, 0.0); - if (!(var37.squaredDistanceTo(var54) > 19.360000000000003)) { - if ((Boolean)this.h.getValue()) { - RenderBatch var55 = WorldUtil.a_RenderBatch_(new Object[]{var54, var16}); - float var79 = var55.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var28}; - var10003[0] = var79; - if (Math.abs(WorldUtil.b_float_____________________(var10003)) >= 60.0F) { + Vec3d anchorCenter = candidate.anchorPos().toCenterPos(); + Vec3d visiblePoint = RaycastUtil.getVisibleTopPoint(candidate.anchorPos()); + if (!candidate.anchorExists() || visiblePoint != null) { + Vec3d aimPoint = visiblePoint != null ? visiblePoint : anchorCenter.add(0.0, 0.5, 0.0); + if (!(eyePos.squaredDistanceTo(aimPoint) > 19.360000000000003)) { + if (this.rotateSilently.getValue()) { + if (Math.abs(RotationUtil.wrapDegrees(RotationUtil.getRotationTo(aimPoint).getYaw() - mc.player.getYaw())) >= 60.0F) { continue; } } - double var77 = this.b_double__(new Object[]{var51, var52, var40, var20}); - if (!(var77 < ((Float)this.c.getValue()).floatValue())) { - Object[] var10005 = new Object[]{null, null, null, var8}; - var10005[2] = 0.0; - var10005[1] = var77; - var10005[0] = var51; - double var57 = c_double__(var10005); - if (var43 != null) { - int var80 = var51.aa(); - Object[] var83 = new Object[]{null, null, null, null, var10}; - var83[3] = var46; - var83[2] = var44; - var83[1] = var80; - var83[0] = var57; - if (!f(var83)) { + double targetDamage = this.computeTargetDamage(candidate, anchorCenter, predictionOffset); + if (!(targetDamage < this.minDamage.getValue().floatValue())) { + double maxPossibleScore = scoreCandidate(candidate, targetDamage, 0.0); + if (bestPlan != null) { + if (!couldBeatBest(maxPossibleScore, candidate.scanIndex(), bestScore, bestScanIndex)) { continue; } } - double var59 = Prestige.f.k(new Object[]{b.player, var52, var18}); - if (!(Boolean)this.e.getValue() || !(var59 >= var41 * 2.0F)) { - BlockPos var61 = null; - BlockPos var62 = null; - Vec3d var63 = null; - double var64 = var59; - if ((Boolean)this.f.getValue() && var49 && var59 > 6.0) { - double var66 = var59; + double selfDamage = Prestige.damageCalculator.getAnchorDamage(mc.player, anchorCenter); + if (!this.antiSuicide.getValue() || !(selfDamage >= health * 2.0F)) { + BlockPos bestCoverPos = null; + BlockPos bestCoverSupportPos = null; + Vec3d bestCoverHitVec = null; + double effectiveSelfDamage = selfDamage; + if (this.safeAnchor.getValue() && hasCoverBlock && selfDamage > 6.0) { + double lowestCoveredDamage = selfDamage; - for (int[] var71 : A) { - BlockPos var72 = var51.s().add(var71[0], var71[1], var71[2]); - if (!WorldUtil2.e(new Object[]{var72, var22}) && !WorldUtil2.g(new Object[]{var72, var24})) { - VecData2 var73 = this.a_VecData2(new Object[]{var72, var37, var4}); - if (var73 != null) { - double var74 = Prestige.f.l(new Object[]{b.player, var52, var72, var48, var34}); - if (!(var74 >= var66) && !(var59 - var74 < 2.0)) { - var66 = var74; - var61 = var72; - var62 = var73.ae(); - var63 = var73.af(); + for (int[] offset : COVER_OFFSETS) { + BlockPos coverCandidate = candidate.anchorPos().add(offset[0], offset[1], offset[2]); + if (!BlockUtil.isClickableBlock(coverCandidate) && !BlockUtil.hasEntityAt(coverCandidate)) { + AutoAnchorPlaceTarget coverPlaceTarget = this.findPlaceTarget(coverCandidate, eyePos); + if (coverPlaceTarget != null) { + double coverDamage = Prestige.damageCalculator.getAnchorDamage(mc.player, anchorCenter, coverCandidate, coverState); + if (!(coverDamage >= lowestCoveredDamage) && !(selfDamage - coverDamage < 2.0)) { + lowestCoveredDamage = coverDamage; + bestCoverPos = coverCandidate; + bestCoverSupportPos = coverPlaceTarget.supportPos(); + bestCoverHitVec = coverPlaceTarget.hitVec(); } } } } - if (var61 != null) { - var64 = var66; + if (bestCoverPos != null) { + effectiveSelfDamage = lowestCoveredDamage; } } - if (!(var64 > ((Float)this.d.getValue()).floatValue()) && (!(Boolean)this.e.getValue() || !(var64 >= var41 - 1.0F))) { - var10005 = new Object[]{null, null, null, var8}; - var10005[2] = var64; - var10005[1] = var77; - var10005[0] = var51; - double var78 = c_double__(var10005); - int var81 = var51.aa(); - Object[] var84 = new Object[]{null, null, null, null, var26}; - var84[3] = var46; - var84[2] = var44; - var84[1] = var81; - var84[0] = var78; - if (g(var84)) { - var44 = var78; - var46 = var51.aa(); - var43 = new VecBoolData2(var51.s(), var51.t(), var51.u(), var51.v(), var61, var62, var63); + if (!(effectiveSelfDamage > this.maxSelfDamage.getValue().floatValue()) && (!this.antiSuicide.getValue() || !(effectiveSelfDamage >= health - 1.0F))) { + double score = scoreCandidate(candidate, targetDamage, effectiveSelfDamage); + if (isBetterThanBest(score, candidate.scanIndex(), bestScore, bestScanIndex)) { + bestScore = score; + bestScanIndex = candidate.scanIndex(); + bestPlan = new AutoAnchorPlan(candidate.anchorPos(), candidate.supportPos(), candidate.hitVec(), candidate.anchorExists(), bestCoverPos, bestCoverSupportPos, bestCoverHitVec); } } } @@ -1084,269 +777,184 @@ public class AutoAnchor extends Module implements RenderContract3 { } } - return var43; + return bestPlan; } - private List b_List_(Object[] var1) { - Vec3d var5 = (Vec3d)var1[0]; - Vec3d var6 = (Vec3d)var1[1]; - Vec3d var2 = (Vec3d)var1[2]; - long var3 = (Long)var1[3]; - var3 = 105273939794480L ^ var3; - long var7 = var3 ^ 66071742953740L; - long var9 = var3 ^ 111983794513575L; - long var11 = var3 ^ 7437428674608L; - long var13 = var3 ^ 107148944467863L; - long var15 = var3 ^ 20343812182676L; - long var17 = var3 ^ 113457489971932L; - long var19 = var3 ^ 57914704996921L; - long var21 = var3 ^ 107173927651936L; - long var23 = var3 ^ 16049262630807L; - Event.b(); - ArrayList var26 = new ArrayList(); - BlockPos var27 = this.Y.getBlockPos(); - Mutable var28 = new Mutable(); - boolean var29 = InventoryUtil.a_Integer(new Object[]{Items.RESPAWN_ANCHOR, var17}) != null; - boolean var30 = InventoryUtil.a_Integer(new Object[]{Items.GLOWSTONE, var17}) != null; - int var31 = 0; - if (this.d_int_(new Object[]{var9}) == -1) { - return var26; + private List collectCandidates(Vec3d eyePos, Vec3d targetPos, Vec3d predictedPos) { + ArrayList candidates = new ArrayList(); + BlockPos targetBlockPos = this.target.getBlockPos(); + Mutable mutablePos = new Mutable(); + boolean hasAnchorItem = InventoryUtil.findHotbarSlot(Items.RESPAWN_ANCHOR) != null; + boolean hasGlowstone = InventoryUtil.findHotbarSlot(Items.GLOWSTONE) != null; + int scanIndex = 0; + if (this.findNonGlowstoneSlot() == -1) { + return candidates; } else { - for (int var32 = -5; var32 <= 5; var32++) { - for (int var33 = -1; var33 <= 1; var33++) { - for (int var34 = -5; var34 <= 5; var31++) { - var28.set(var27.getX() + var32, var27.getY() + var33, var27.getZ() + var34); - Vec3d var35 = new Vec3d(var28.getX() + 0.5, var28.getY() + 0.5, var28.getZ() + 0.5); - double var36 = var5.squaredDistanceTo(var35); + for (int dx = -5; dx <= 5; dx++) { + for (int dy = -1; dy <= 1; dy++) { + for (int dz = -5; dz <= 5; scanIndex++) { + mutablePos.set(targetBlockPos.getX() + dx, targetBlockPos.getY() + dy, targetBlockPos.getZ() + dz); + Vec3d center = new Vec3d(mutablePos.getX() + 0.5, mutablePos.getY() + 0.5, mutablePos.getZ() + 0.5); + double eyeDistanceSq = eyePos.squaredDistanceTo(center); label130: - if (!(var36 > 21.159999999999997) && (this.J.isEmpty() || !this.J.containsKey(var28))) { - boolean var38 = WorldUtil2.b(new Object[]{var28, Blocks.RESPAWN_ANCHOR, var23}); - BlockPos var40 = null; - Vec3d var41 = null; - BlockPos var39; - if (var38) { - var39 = var28.toImmutable(); + if (!(eyeDistanceSq > 21.159999999999997) && (this.blacklistedAnchors.isEmpty() || !this.blacklistedAnchors.containsKey(mutablePos))) { + boolean anchorExists = BlockUtil.isOf(mutablePos, Blocks.RESPAWN_ANCHOR); + BlockPos supportPos = null; + Vec3d hitVec = null; + BlockPos candidatePos; + if (anchorExists) { + candidatePos = mutablePos.toImmutable(); } else { - if (!var29 - || !var30 - || (Boolean)this.m.getValue() - || WorldUtil2.e(new Object[]{var28, var11}) - || WorldUtil2.g(new Object[]{var28, var15})) { + if (!hasAnchorItem + || !hasGlowstone + || this.onlyExisting.getValue() + || BlockUtil.isClickableBlock(mutablePos) + || BlockUtil.hasEntityAt(mutablePos)) { break label130; } - var39 = var28.toImmutable(); - VecData2 var42 = this.a_VecData2(new Object[]{var39, var5, var7}); - if (var42 == null) { + candidatePos = mutablePos.toImmutable(); + AutoAnchorPlaceTarget placeTarget = this.findPlaceTarget(candidatePos, eyePos); + if (placeTarget == null) { break label130; } - var40 = var42.ae(); - var41 = var42.af(); + supportPos = placeTarget.supportPos(); + hitVec = placeTarget.hitVec(); } - int var56 = var38 ? this.c_int(new Object[]{var39, var13}) : 0; - if (!var38 || var56 > 0 || var30) { - double var43 = a_double__(new Object[]{var6, var35, var19}); - double var45 = a_double__(new Object[]{var2, var35, var19}); - double var47 = Math.max(var43, var45); - if (!(var47 < ((Float)this.c.getValue()).floatValue())) { - double var49 = Math.sqrt(var36); - boolean var51 = var39.getY() == var27.getY(); - boolean var52 = var51 && Math.max(Math.abs(var39.getX() - var27.getX()), Math.abs(var39.getZ() - var27.getZ())) == 1; - Object[] var10009 = new Object[]{null, null, null, null, null, null, null, var21}; - var10009[6] = var56; - var10009[5] = var38; - var10009[4] = var52; - var10009[3] = var51; - var10009[2] = var49; - var10009[1] = 0.0; - var10009[0] = var47; - double var53 = d_double(var10009); - var26.add(new VecBoolIntData(var39, var40, var41, var38, var56, var49, var51, var52, var31, var43, var45, var53)); + int charges = anchorExists ? this.getChargesAt(candidatePos) : 0; + if (!anchorExists || charges > 0 || hasGlowstone) { + double currentDamageEstimate = estimateRawDamage(targetPos, center); + double predictedDamageEstimate = estimateRawDamage(predictedPos, center); + double maxDamageEstimate = Math.max(currentDamageEstimate, predictedDamageEstimate); + if (!(maxDamageEstimate < this.minDamage.getValue().floatValue())) { + double eyeDistance = Math.sqrt(eyeDistanceSq); + boolean sameLevel = candidatePos.getY() == targetBlockPos.getY(); + boolean adjacent = sameLevel && Math.max(Math.abs(candidatePos.getX() - targetBlockPos.getX()), Math.abs(candidatePos.getZ() - targetBlockPos.getZ())) == 1; + candidates.add(new AnchorCandidate(candidatePos, supportPos, hitVec, anchorExists, charges, eyeDistance, sameLevel, adjacent, scanIndex, currentDamageEstimate, predictedDamageEstimate, computeScore(maxDamageEstimate, 0.0, eyeDistance, sameLevel, adjacent, anchorExists, charges))); } } } - var34++; + dz++; } } } - return var26; + return candidates; } } - private VecData2 a_VecData2(Object[] var1) { - BlockPos var4 = (BlockPos)var1[0]; - Vec3d var5 = (Vec3d)var1[1]; - BlockPos var7 = null; - Vec3d var8 = null; - double var9 = Double.MAX_VALUE; - Direction[] var11 = z; - Event.b(); + private AutoAnchorPlaceTarget findPlaceTarget(BlockPos placePos, Vec3d eyePos) { + BlockPos bestSupportPos = null; + Vec3d bestHitVec = null; + double bestDistanceSq = Double.MAX_VALUE; + Direction[] directions = DIRECTIONS; - for (Direction var14 : var11) { - BlockPos var15 = var4.offset(var14); - if (!b.world.getBlockState(var15).isReplaceable()) { - Direction var16 = var14.getOpposite(); - Vec3d var17 = var15.toCenterPos().add(var16.getOffsetX() * 0.5, var16.getOffsetY() * 0.5, var16.getOffsetZ() * 0.5); - double var18 = var5.squaredDistanceTo(var17); - if (!(var18 > 18.0625) && !(var18 >= var9)) { - var9 = var18; - var7 = var15; - var8 = var17; + for (Direction direction : directions) { + BlockPos neighborPos = placePos.offset(direction); + if (!mc.world.getBlockState(neighborPos).isReplaceable()) { + Direction face = direction.getOpposite(); + Vec3d faceCenter = neighborPos.toCenterPos().add(face.getOffsetX() * 0.5, face.getOffsetY() * 0.5, face.getOffsetZ() * 0.5); + double distanceSq = eyePos.squaredDistanceTo(faceCenter); + if (!(distanceSq > 18.0625) && !(distanceSq >= bestDistanceSq)) { + bestDistanceSq = distanceSq; + bestSupportPos = neighborPos; + bestHitVec = faceCenter; } } } - return var7 == null ? null : new VecData2(var7, var8); + return bestSupportPos == null ? null : new AutoAnchorPlaceTarget(bestSupportPos, bestHitVec); } - private static double a_double__(Object[] var0) { - Vec3d var1 = (Vec3d)var0[0]; - Vec3d var2 = (Vec3d)var0[1]; - Event.b(); - double var6 = var1.distanceTo(var2); - if (var6 > 10.0) { + private static double estimateRawDamage(Vec3d entityPos, Vec3d explosionPos) { + double distance = entityPos.distanceTo(explosionPos); + if (distance > 10.0) { return 0.0; } else { - double var8 = 1.0 - var6 / 10.0; - double var10 = ((var8 * var8 + var8) * 0.5 * 7.0 * 10.0 + 1.0) * 1.5; - return Math.nextUp((float)var10); + double impact = 1.0 - distance / 10.0; + return Math.nextUp((float)(((impact * impact + impact) * 0.5 * 7.0 * 10.0 + 1.0) * 1.5)); } } - private double b_double__(Object[] var1) { - VecBoolIntData var4 = (VecBoolIntData)var1[0]; - Vec3d var5 = (Vec3d)var1[1]; - Vec3d var6 = (Vec3d)var1[2]; - long var2 = (Long)var1[3]; - var2 = 105273939794480L ^ var2; - long var7 = var2 ^ 64949135895799L; - if (var6.lengthSquared() < 1.0E-6) { - return Prestige.f.k(new Object[]{this.Y, var5, var7}); - } else if (var4.ac() > var4.ab()) { - double var13 = Prestige.f.k(new Object[]{this.Y, var5.subtract(var6), var7}); - return var4.ab() <= var13 ? var13 : Math.max(var13, Prestige.f.k(new Object[]{this.Y, var5, var7})); + private double computeTargetDamage(AnchorCandidate candidate, Vec3d anchorCenter, Vec3d predictionOffset) { + if (predictionOffset.lengthSquared() < 1.0E-6) { + return Prestige.damageCalculator.getAnchorDamage(this.target, anchorCenter); + } else if (candidate.predictedDamageEstimate() > candidate.targetDamageEstimate()) { + double predictedDamage = Prestige.damageCalculator.getAnchorDamage(this.target, anchorCenter.subtract(predictionOffset)); + return candidate.targetDamageEstimate() <= predictedDamage ? predictedDamage : Math.max(predictedDamage, Prestige.damageCalculator.getAnchorDamage(this.target, anchorCenter)); } else { - double var10 = Prestige.f.k(new Object[]{this.Y, var5, var7}); - return var4.ac() <= var10 ? var10 : Math.max(var10, Prestige.f.k(new Object[]{this.Y, var5.subtract(var6), var7})); + double currentDamage = Prestige.damageCalculator.getAnchorDamage(this.target, anchorCenter); + return candidate.predictedDamageEstimate() <= currentDamage ? currentDamage : Math.max(currentDamage, Prestige.damageCalculator.getAnchorDamage(this.target, anchorCenter.subtract(predictionOffset))); } } - private static double c_double__(Object[] var0) { - VecBoolIntData var1 = (VecBoolIntData)var0[0]; - double var2 = (Double)var0[1]; - double var4 = (Double)var0[2]; - long var6 = (Long)var0[3]; - var6 = 105273939794480L ^ var6; - long var8 = var6 ^ 103938371143045L; - double var10002 = var1.x(); - boolean var10003 = var1.y(); - boolean var10004 = var1.z(); - boolean var10005 = var1.v(); - int var10006 = var1.w(); - Object[] var10009 = new Object[]{null, null, null, null, null, null, null, var8}; - var10009[6] = var10006; - var10009[5] = var10005; - var10009[4] = var10004; - var10009[3] = var10003; - var10009[2] = var10002; - var10009[1] = var4; - var10009[0] = var2; - return d_double(var10009); + private static double scoreCandidate(AnchorCandidate candidate, double targetDamage, double selfDamage) { + return computeScore(targetDamage, selfDamage, candidate.distance(), candidate.sameLevel(), candidate.adjacent(), candidate.anchorExists(), candidate.charges()); } - private static double d_double(Object[] var0) { - double var2 = (Double)var0[0]; - double var4 = (Double)var0[1]; - double var6 = (Double)var0[2]; - boolean var1 = (Boolean)var0[3]; - boolean var10 = (Boolean)var0[4]; - boolean var11 = (Boolean)var0[5]; - int var12 = (Integer)var0[6]; - Event.b(); - double var14 = var2 - 0.6 * var4 - 0.15 * var6 - 0.15 * var6 * var6; - if (var1) { - var14 += 4.0; + private static double computeScore(double targetDamage, double selfDamage, double distance, boolean sameLevel, boolean adjacent, boolean anchorExists, int charges) { + double score = targetDamage - 0.6 * selfDamage - 0.15 * distance - 0.15 * distance * distance; + if (sameLevel) { + score += 4.0; } - if (var10) { - var14 += 3.5; + if (adjacent) { + score += 3.5; } - if (var11) { - double var16 = Math.max(0.0, 1.0 - var6 / 4.4); - var14 += 5.0 * var16; - if (var12 > 0) { - var14 += 6.0 * var16; + if (anchorExists) { + double closeness = Math.max(0.0, 1.0 - distance / 4.4); + score += 5.0 * closeness; + if (charges > 0) { + score += 6.0 * closeness; } } - return var14; + return score; } - private static boolean f(Object[] var0) { - double var6 = (Double)var0[0]; - int var8 = (Integer)var0[1]; - double var1 = (Double)var0[2]; - int var3 = (Integer)var0[3]; - return var6 > var1 || var6 == var1 && var8 < var3; + private static boolean couldBeatBest(double score, int scanIndex, double bestScore, int bestScanIndex) { + return score > bestScore || score == bestScore && scanIndex < bestScanIndex; } - private static boolean g(Object[] var0) { - double var5 = (Double)var0[0]; - int var8 = (Integer)var0[1]; - double var3 = (Double)var0[2]; - int var7 = (Integer)var0[3]; - return var5 > var3 || var5 == var3 && var8 < var7; + private static boolean isBetterThanBest(double score, int scanIndex, double bestScore, int bestScanIndex) { + return score > bestScore || score == bestScore && scanIndex < bestScanIndex; } - private int c_int(Object[] var1) { - BlockPos var4 = (BlockPos)var1[0]; - Event.b(); - BlockState var6 = b.world.getBlockState(var4); - return !var6.isOf(Blocks.RESPAWN_ANCHOR) ? 0 : var6.get(Properties.CHARGES); + private int getChargesAt(BlockPos pos) { + BlockState blockState = mc.world.getBlockState(pos); + return !blockState.isOf(Blocks.RESPAWN_ANCHOR) ? 0 : blockState.get(Properties.CHARGES); } - private boolean h(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 133779332337487L; - return this.Y != null && this.Y.isAlive() && b.player.distanceTo(this.Y) <= 12.0F && Prestige.i.a_boolean_(new Object[]{this.Y, var4}); + private boolean isTargetValid() { + return this.target != null && this.target.isAlive() && mc.player.distanceTo(this.target) <= 12.0F && Prestige.botFilter.isValidTarget(this.target); } - private boolean i(Object[] var1) { - if (this.af != null && this.Y != null) { - BlockPos var5 = this.Y.getBlockPos(); - int var6 = Math.abs(var5.getX() - this.af.getX()); - int var7 = Math.abs(var5.getY() - this.af.getY()); - int var8 = Math.abs(var5.getZ() - this.af.getZ()); - return Math.max(var6, Math.max(var7, var8)) > 1; + private boolean hasTargetMoved() { + if (this.plannedTargetPos != null && this.target != null) { + BlockPos currentPos = this.target.getBlockPos(); + return Math.max(Math.abs(currentPos.getX() - this.plannedTargetPos.getX()), Math.max(Math.abs(currentPos.getY() - this.plannedTargetPos.getY()), Math.abs(currentPos.getZ() - this.plannedTargetPos.getZ()))) > 1; } else { return false; } } - private boolean j_boolean(Object[] var1) { - PlayerEntity var4 = (PlayerEntity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 105273939794480L ^ var2; - long var5 = var2 ^ 38580354050388L; - long var7 = var2 ^ 74007614008979L; - if (this.V != this.W) { + private boolean isFailedPlanCached(PlayerEntity enemy) { + if (this.blockUpdateCount != this.cachedBlockUpdateCount) { return false; - } else if (this.K < this.M && this.N == var4) { - if (!b.player.getBlockPos().equals(this.O) || !var4.getBlockPos().equals(this.P)) { + } else if (this.tickCount < this.cacheExpiryTick && this.cachedTarget == enemy) { + if (!mc.player.getBlockPos().equals(this.cachedPlayerBlockPos) || !enemy.getBlockPos().equals(this.cachedTargetBlockPos)) { return false; - } else if (this.Q != null && b.player.getEyePos().equals(this.Q)) { - if (this.R == null || !PositionUtil.a(new Object[]{var4, var5}).equals(this.R)) { + } else if (this.cachedEyePos != null && mc.player.getEyePos().equals(this.cachedEyePos)) { + if (this.cachedTargetPos == null || !PositionUtil.getEntityPos(enemy).equals(this.cachedTargetPos)) { return false; - } else if (this.S == null || !var4.getVelocity().equals(this.S)) { + } else if (this.cachedTargetVelocity == null || !enemy.getVelocity().equals(this.cachedTargetVelocity)) { return false; } else { - return Float.compare(b.player.getYaw(), this.T) != 0 ? false : this.U == this.e_int_(new Object[]{var7}); + return Float.compare(mc.player.getYaw(), this.cachedYaw) != 0 ? false : this.cachedStateHash == this.computeStateHash(); } } else { return false; @@ -1356,221 +964,120 @@ public class AutoAnchor extends Module implements RenderContract3 { } } - private void v(Object[] var1) { - PlayerEntity var2 = (PlayerEntity)var1[0]; - long var3 = (Long)var1[1]; - long var5 = (Long)var1[2]; - var5 = 105273939794480L ^ var5; - long var7 = var5 ^ 131138339059744L; - long var9 = var5 ^ 25411372908519L; - this.N = var2; - this.O = b.player.getBlockPos().toImmutable(); - this.P = var2.getBlockPos().toImmutable(); - this.Q = b.player.getEyePos(); - this.R = PositionUtil.a(new Object[]{var2, var7}); - this.S = var2.getVelocity(); - this.T = b.player.getYaw(); - this.U = this.e_int_(new Object[]{var9}); - this.W = var3; - this.M = this.K + 3L; + private void cacheFailedPlan(PlayerEntity enemy, long updateCount) { + this.cachedTarget = enemy; + this.cachedPlayerBlockPos = mc.player.getBlockPos().toImmutable(); + this.cachedTargetBlockPos = enemy.getBlockPos().toImmutable(); + this.cachedEyePos = mc.player.getEyePos(); + this.cachedTargetPos = PositionUtil.getEntityPos(enemy); + this.cachedTargetVelocity = enemy.getVelocity(); + this.cachedYaw = mc.player.getYaw(); + this.cachedStateHash = this.computeStateHash(); + this.cachedBlockUpdateCount = updateCount; + this.cacheExpiryTick = this.tickCount + 3L; } - private int e_int_(Object[] var1) { - int var5 = Float.floatToIntBits((Float)this.a.getValue()); - var5 = 31 * var5 + Float.floatToIntBits((Float)this.c.getValue()); - var5 = 31 * var5 + Float.floatToIntBits((Float)this.d.getValue()); - var5 = 31 * var5 + Boolean.hashCode((Boolean)this.e.getValue()); - var5 = 31 * var5 + Boolean.hashCode((Boolean)this.f.getValue()); - var5 = 31 * var5 + ((String)this.g.getValue()).hashCode(); - var5 = 31 * var5 + Boolean.hashCode((Boolean)this.h.getValue()); - var5 = 31 * var5 + Boolean.hashCode((Boolean)this.m.getValue()); - Event.b(); - var5 = 31 * var5 + Float.floatToIntBits(b.player.getHealth() + b.player.getAbsorptionAmount()); + private int computeStateHash() { + int hash = Float.floatToIntBits(this.targetRange.getValue()); + hash = 31 * hash + Float.floatToIntBits(this.minDamage.getValue()); + hash = 31 * hash + Float.floatToIntBits(this.maxSelfDamage.getValue()); + hash = 31 * hash + Boolean.hashCode(this.antiSuicide.getValue()); + hash = 31 * hash + Boolean.hashCode(this.safeAnchor.getValue()); + hash = 31 * hash + this.safeBlock.getValue().hashCode(); + hash = 31 * hash + Boolean.hashCode(this.rotateSilently.getValue()); + hash = 31 * hash + Boolean.hashCode(this.onlyExisting.getValue()); + hash = 31 * hash + Float.floatToIntBits(mc.player.getHealth() + mc.player.getAbsorptionAmount()); - for (int var6 = 0; var6 < 9; var6++) { - ItemStack var7 = b.player.getInventory().getStack(var6); - var5 = 31 * var5 + var7.getItem().hashCode(); - var5 = 31 * var5 + var7.getCount(); + for (int slot = 0; slot < 9; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + hash = 31 * hash + stack.getItem().hashCode(); + hash = 31 * hash + stack.getCount(); } - return var5; + return hash; } - private void w(Object[] var1) { - this.M = 0L; - this.N = null; - this.O = null; - this.P = null; - this.Q = null; - this.R = null; - this.S = null; - this.T = 0.0F; - this.U = 0; - this.W = this.V; + private void clearPlanCache() { + this.cacheExpiryTick = 0L; + this.cachedTarget = null; + this.cachedPlayerBlockPos = null; + this.cachedTargetBlockPos = null; + this.cachedEyePos = null; + this.cachedTargetPos = null; + this.cachedTargetVelocity = null; + this.cachedYaw = 0.0F; + this.cachedStateHash = 0; + this.cachedBlockUpdateCount = this.blockUpdateCount; } - private void x(Object[] var1) { - String var2 = (String)var1[0]; - long var3 = (Long)var1[1]; - var3 = 105273939794480L ^ var3; - long var5 = var3 ^ 62321389419486L; - long var7 = var3 ^ 9547413765703L; - long var9 = var3 ^ 105530424264406L; - long var11 = var3 ^ 116241522774702L; - RenderHelper27 var10000 = this.at; - Object[] var10004 = new Object[]{null, var9}; - var10004[0] = 3000.0F; - if (var10000.a(var10004)) { - ModuleNotificationsElement.s(new Object[]{this, var2, NotificationType.ERROR, var5}); - this.at.a_void_____________________(new Object[]{var7}); + private void abortWithError(String message) { + if (this.errorNotifyTimer.hasElapsed(3000.0F)) { + ModuleNotificationsElement.postNotification(this, message, NotificationType.ERROR); + this.errorNotifyTimer.reset(); } - this.z(new Object[]{var11}); + this.abortSequence(); } - private void y(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 110750006736215L; - long var6 = var2 ^ 87405157733285L; - if (this.ag != -1) { - if (b.player == null) { - RenderUtil6.a_void____________________________(new Object[]{this, var4}); - this.ag = -1; - } else if (!RenderUtil6.a_boolean____________________________________________(new Object[]{this})) { - this.ag = -1; - } else if (!Prestige.o.d_boolean______(new Object[0])) { - if ((Boolean)this.i.getValue()) { - int var10000 = this.ag; - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); + private void restoreOriginalSlot() { + if (this.originalSlot != -1) { + if (mc.player == null) { + SwapBackTracker.release(this); + this.originalSlot = -1; + } else if (!SwapBackTracker.isOwner(this)) { + this.originalSlot = -1; + } else if (!Prestige.silentRotationManager.hasActedThisTick()) { + if (this.swapBack.getValue()) { + InventoryUtil.selectSlot(this.originalSlot); + Prestige.silentRotationManager.setActedThisTick(true); } - RenderUtil6.a_void____________________________(new Object[]{this, var4}); - this.ag = -1; + SwapBackTracker.release(this); + this.originalSlot = -1; } } } - private void z(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 68372978806556L; - long var6 = var2 ^ 98380404554406L; - this.y(new Object[]{var6}); - this.w(new Object[]{var4}); - this.C = AutoAnchorState.IDLE; - this.Y = null; - this.Z = null; - this.aa = null; - this.ab = null; - this.ac = null; - this.ad = null; - this.ae = null; - this.af = null; - this.H = 0; - this.X = 0; - B = false; + private void abortSequence() { + this.restoreOriginalSlot(); + this.clearPlanCache(); + this.state = AutoAnchorState.IDLE; + this.target = null; + this.anchorPos = null; + this.anchorSupportPos = null; + this.anchorHitVec = null; + this.coverPos = null; + this.coverSupportPos = null; + this.coverHitVec = null; + this.plannedTargetPos = null; + this.failedAttempts = 0; + this.hurtWaitTicks = 0; + sequenceActive = false; } - private void A(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 105273939794480L ^ var2; - long var4 = var2 ^ 135590885993591L; - long var6 = var2 ^ 136160711341490L; - long var8 = var2 ^ 42513662119453L; - this.w(new Object[]{var4}); - this.C = AutoAnchorState.IDLE; - this.Y = null; - this.Z = null; - this.aa = null; - this.ab = null; - this.ac = null; - this.ad = null; - this.ae = null; - this.af = null; - this.ag = -1; - this.H = 0; - this.D.a_void_____________________(new Object[]{var6}); - this.E.a_void_____________________(new Object[]{var6}); - this.F.a_void_____________________(new Object[]{var6}); - this.G.a_void_____________________(new Object[]{var6}); - B = false; - this.an.b(new Object[]{var8}); - this.ao.b(new Object[]{var8}); - this.ap.b(new Object[]{var8}); - this.aq = null; - this.ar = null; - this.as = null; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private void resetAll() { + this.clearPlanCache(); + this.state = AutoAnchorState.IDLE; + this.target = null; + this.anchorPos = null; + this.anchorSupportPos = null; + this.anchorHitVec = null; + this.coverPos = null; + this.coverSupportPos = null; + this.coverHitVec = null; + this.plannedTargetPos = null; + this.originalSlot = -1; + this.failedAttempts = 0; + this.placeDelayTimer.reset(); + this.chargeDelayTimer.reset(); + this.detonateDelayTimer.reset(); + this.stallTimer.reset(); + sequenceActive = false; + this.targetBoxFade.reset(); + this.anchorBoxFade.reset(); + this.coverBoxFade.reset(); + this.renderedTargetPos = null; + this.renderedAnchorPos = null; + this.renderedCoverPos = null; } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoCart.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoCart.java index 15b67d5..a0a0b94 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoCart.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoCart.java @@ -11,26 +11,21 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent27; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render3DEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper35; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.type.BowMode; -import dev.zprestige.prestige.type.RailState; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.KeyBindingAccessor; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.type.CartIgnitionMode; +import dev.zprestige.prestige.type.AutoCartState; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; +import dev.zprestige.prestige.world.RotationUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Set; import java.util.function.Predicate; @@ -59,90 +54,88 @@ import net.minecraft.world.RaycastContext.FluidHandling; import net.minecraft.world.RaycastContext.ShapeType; import org.lwjgl.glfw.GLFW; -public class AutoCart extends Module implements RenderContract3 { - private IntSetting a; - private IntSetting c; - private IntSetting d; - private IntSetting e; - private KeybindSetting f; - private IntSetting g; - private KeybindSetting h; - private RangeSetting i; - private BoolSetting j; - private EnumSetting k; - private BoolSetting l; - private BoolSetting m; - private FloatSetting n; - private IntSetting o; - private BoolSetting p; - private BoolSetting q; - private BoolSetting r; - private FloatSetting s; - private BoolSetting t; - private ColorSetting u; - private static final Item[] v = new Item[]{Items.RAIL, Items.POWERED_RAIL, Items.DETECTOR_RAIL, Items.ACTIVATOR_RAIL}; - private static final Block[] w = new Block[]{Blocks.RAIL, Blocks.POWERED_RAIL, Blocks.DETECTOR_RAIL, Blocks.ACTIVATOR_RAIL}; - private static final Set x = Set.of( +public class AutoCart extends Module implements RotationProvider { + private IntSetting switchDelay; + private IntSetting bowBackDelay; + private IntSetting minCharge; + private IntSetting arc; + private KeybindSetting triggerBind; + private IntSetting overload; + private KeybindSetting overloadBind; + private RangeSetting overloadDelay; + private BoolSetting overloadHotbarOnly; + private EnumSetting placeMode; + private BoolSetting onBowShot; + private BoolSetting autoHitPlaced; + private FloatSetting autoHitRange; + private IntSetting autoHitMinCharge; + private BoolSetting switchBackToBow; + private BoolSetting safeBlocks; + private BoolSetting silentAim; + private FloatSetting silentAimFov; + private BoolSetting renderPath; + private ColorSetting renderColor; + private static final Item[] RAIL_ITEMS = new Item[]{Items.RAIL, Items.POWERED_RAIL, Items.DETECTOR_RAIL, Items.ACTIVATOR_RAIL}; + private static final Block[] RAIL_BLOCKS = new Block[]{Blocks.RAIL, Blocks.POWERED_RAIL, Blocks.DETECTOR_RAIL, Blocks.ACTIVATOR_RAIL}; + private static final Set SAFE_BLOCK_ITEMS = Set.of( Items.OBSIDIAN, Items.CRYING_OBSIDIAN, Items.NETHERITE_BLOCK, Items.DEEPSLATE, Items.COBBLED_DEEPSLATE, Items.ENDER_CHEST, Items.RESPAWN_ANCHOR ); - private RailState y = RailState.IDLE; - private BowMode z = BowMode.PASSIVE; - private int A; - private int B; - private int C; - private BlockPos D; - private boolean E; - private int F = -1; - private int G = 0; - private int H = 0; - private boolean I = false; - private boolean J = false; - private boolean K = false; - private boolean L = false; - private int M = 0; - private boolean N = false; - private RenderHelper27 O = new RenderHelper27(26293358099357L); - private int P = 0; - private boolean Q = false; - private BlockPos R = null; - private boolean S = false; - private TntMinecartEntity T; - private boolean U = false; - private RenderBatch V; - private boolean W = false; - private int X = -1; + private AutoCartState state = AutoCartState.IDLE; + private CartIgnitionMode ignitionMode = CartIgnitionMode.PASSIVE; + private int railX; + private int railY; + private int railZ; + private BlockPos landingBlock; + private boolean useLandingBlock; + private int previousSlot = -1; + private int delayTicks = 0; + private int railRetryTicks = 0; + private boolean usingCrossbow = false; + private boolean triggerWasPressed = false; + private boolean overloadWasPressed = false; + private boolean overloadActive = false; + private int cartsPlaced = 0; + private boolean waitingOverloadDelay = false; + private StopWatch overloadTimer = new StopWatch(); + private int releaseWaitTicks = 0; + private boolean shootFirst = false; + private BlockPos shootTarget = null; + private boolean skipNextPacket = false; + private TntMinecartEntity autoHitTarget; + private boolean autoHitReady = false; + private Rotation weaponAim; + private boolean ignoreOwnShot = false; + private int pulledCartSlot = -1; public AutoCart() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.h.setVisibility_KeybindSetting(new Object[]{(Predicate)lpL115_0 -> (Integer)this.g.getValue() > 1, 112715924896781L}); - this.j.setVisibility_BoolSetting(new Object[]{(Predicate)lpL113_0 -> (Integer)this.g.getValue() > 1, 73196168581295L}); - this.i.setVisibility_RangeSetting(new Object[]{(Predicate)lpL114_0 -> (Integer)this.g.getValue() > 1, 37043306203287L}); - this.r.setVisibility_BoolSetting(new Object[]{(Predicate)lpL110_0 -> ((String)this.k.getValue()).equals("Trajectory"), 73196168581295L}); - this.s - .setVisibility_FloatSetting( - new Object[]{(Predicate)lpL109_0 -> ((String)this.k.getValue()).equals("Trajectory") && (Boolean)this.r.getValue(), 35046756052036L} + this.overloadBind.visibleWhen((Predicate)ignored -> this.overload.getValue() > 1); + this.overloadHotbarOnly.visibleWhen((Predicate)ignored -> this.overload.getValue() > 1); + this.overloadDelay.visibleWhen((Predicate)ignored -> this.overload.getValue() > 1); + this.silentAim.visibleWhen((Predicate)ignored -> this.placeMode.getValue().equals("Trajectory")); + this.silentAimFov + .visibleWhen( + (Predicate)ignored -> this.placeMode.getValue().equals("Trajectory") && this.silentAim.getValue() ); - this.t.setVisibility_BoolSetting(new Object[]{(Predicate)lpL108_0 -> ((String)this.k.getValue()).equals("Trajectory"), 73196168581295L}); - this.n.setVisibility_FloatSetting(new Object[]{(Predicate)lpL112_0 -> (Boolean)this.m.getValue(), 35046756052036L}); - this.o.setVisibility_IntSetting(new Object[]{(Predicate)lpL111_0 -> (Boolean)this.m.getValue(), 98265949679296L}); - this.u - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL107_0 -> ((String)this.k.getValue()).equals("Trajectory") && (Boolean)this.t.getValue(), 119980880492450L} + this.renderPath.visibleWhen((Predicate)ignored -> this.placeMode.getValue().equals("Trajectory")); + this.autoHitRange.visibleWhen((Predicate)ignored -> this.autoHitPlaced.getValue()); + this.autoHitMinCharge.visibleWhen((Predicate)ignored -> this.autoHitPlaced.getValue()); + this.renderColor + .visibleWhen( + (Predicate)ignored -> this.placeMode.getValue().equals("Trajectory") && this.renderPath.getValue() ); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Cart); } - private boolean a_boolean___________(Object[] var1) { - Item var4 = (Item)var1[0]; - Item[] var6 = v; - Event.b(); + private boolean isRailItem(Item item) { + Item[] rails = RAIL_ITEMS; - for (Item var9 : var6) { - if (var4 == var9) { + for (Item rail : rails) { + if (item == rail) { return true; } } @@ -150,13 +143,11 @@ public class AutoCart extends Module implements RenderContract3 { return false; } - private boolean d(Object[] var1) { - BlockPos var4 = (BlockPos)var1[0]; - Block var6 = b.world.getBlockState(var4).getBlock(); - Event.b(); + private boolean isRailBlock(BlockPos pos) { + Block block = mc.world.getBlockState(pos).getBlock(); - for (Block var10 : w) { - if (var6 == var10) { + for (Block rail : RAIL_BLOCKS) { + if (block == rail) { return true; } } @@ -164,275 +155,216 @@ public class AutoCart extends Module implements RenderContract3 { return false; } - private int d_int__(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 2151103034484L ^ var2; - long var4 = var2 ^ 75533614966463L; - Event.b(); - - for (int var7 = 0; var7 < 9; var7++) { - if (this.a_boolean___________(new Object[]{b.player.getInventory().getStack(var7).getItem(), var4})) { - return var7; + private int findRailSlot() { + for (int slot = 0; slot < 9; slot++) { + if (this.isRailItem(mc.player.getInventory().getStack(slot).getItem())) { + return slot; } } return -1; } - private int e(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 < 9; var5++) { - ItemStack var6 = b.player.getInventory().getStack(var5); - if (x.contains(var6.getItem())) { - return var5; + private int findSafeBlockSlot() { + for (int slot = 0; slot < 9; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (SAFE_BLOCK_ITEMS.contains(stack.getItem())) { + return slot; } } return -1; } - private Integer a_Integer_(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 2151103034484L ^ var2; - long var4 = var2 ^ 113928845082917L; - long var6 = var2 ^ 43141582264215L; - long var8 = var2 ^ 13999251216337L; - long var10 = var2 ^ 39877035164204L; - Event.b(); - Integer var13 = InventoryUtil.a_Integer(new Object[]{Items.TNT_MINECART, var4}); - if (var13 != null) { - this.X = -1; - return var13; + private Integer findOrPullCartSlot() { + Integer hotbarCartSlot = InventoryUtil.findHotbarSlot(Items.TNT_MINECART); + if (hotbarCartSlot != null) { + this.pulledCartSlot = -1; + return hotbarCartSlot; } else { - int var14 = -1; + int inventoryCartSlot = -1; - for (int var15 = 9; var15 < 36; var15++) { - if (b.player.getInventory().getStack(var15).getItem() == Items.TNT_MINECART) { - var14 = var15; + for (int inventoryIndex = 9; inventoryIndex < 36; inventoryIndex++) { + if (mc.player.getInventory().getStack(inventoryIndex).getItem() == Items.TNT_MINECART) { + inventoryCartSlot = inventoryIndex; break; } } - if (var14 == -1) { + if (inventoryCartSlot == -1) { return null; } else { - int var19 = InventoryUtil.a_int_____(new Object[]{var6}); - int var16 = -1; + int selectedSlot = InventoryUtil.getSelectedSlot(); + int emptyHotbarSlot = -1; - for (int var17 = 0; var17 < 9; var17++) { - if (var17 != var19 && b.player.getInventory().getStack(var17).isEmpty()) { - var16 = var17; + for (int hotbarIndex = 0; hotbarIndex < 9; hotbarIndex++) { + if (hotbarIndex != selectedSlot && mc.player.getInventory().getStack(hotbarIndex).isEmpty()) { + emptyHotbarSlot = hotbarIndex; break; } } - if (var16 == -1) { + if (emptyHotbarSlot == -1) { return null; } else { - if (this.X != -1) { - if (Prestige.u != null && Prestige.u.a_boolean____________________________________(new Object[]{var8})) { - return this.X; + if (this.pulledCartSlot != -1) { + if (Prestige.inventorySwapQueue != null && Prestige.inventorySwapQueue.hasPendingSwaps()) { + return this.pulledCartSlot; } - this.X = -1; + this.pulledCartSlot = -1; } - Object[] var10004 = new Object[]{null, null, var10}; - var10004[1] = var16; - var10004[0] = var14; - InventoryUtil.f(var10004); - this.X = var16; - return var16; + InventoryUtil.swapSlot(inventoryCartSlot, emptyHotbarSlot); + this.pulledCartSlot = emptyHotbarSlot; + return emptyHotbarSlot; } } } } - private int f(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 < 9; var5++) { - ItemStack var6 = b.player.getInventory().getStack(var5); - if (var6.getItem() == Items.CROSSBOW && var6.get(DataComponentTypes.CHARGED_PROJECTILES) != null) { - return var5; + private int findChargedCrossbowSlot() { + for (int slot = 0; slot < 9; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack.getItem() == Items.CROSSBOW && stack.get(DataComponentTypes.CHARGED_PROJECTILES) != null) { + return slot; } } return -1; } - private boolean e_boolean_(Object[] var1) { - ItemStack var4 = (ItemStack)var1[0]; - return var4.getItem() == Items.CROSSBOW && var4.get(DataComponentTypes.CHARGED_PROJECTILES) != null; + private boolean isChargedCrossbow(ItemStack stack) { + return stack.getItem() == Items.CROSSBOW && stack.get(DataComponentTypes.CHARGED_PROJECTILES) != null; } - private void j(Object[] var1) { - this.y = RailState.IDLE; - this.z = BowMode.PASSIVE; - this.F = -1; - this.G = 0; - this.H = 0; - this.I = false; - this.D = null; - this.E = false; - this.V = null; - this.L = false; - this.M = 0; - this.N = false; - this.P = 0; - this.Q = false; - this.R = null; + private void resetSequence() { + this.state = AutoCartState.IDLE; + this.ignitionMode = CartIgnitionMode.PASSIVE; + this.previousSlot = -1; + this.delayTicks = 0; + this.railRetryTicks = 0; + this.usingCrossbow = false; + this.landingBlock = null; + this.useLandingBlock = false; + this.weaponAim = null; + this.overloadActive = false; + this.cartsPlaced = 0; + this.waitingOverloadDelay = false; + this.releaseWaitTicks = 0; + this.shootFirst = false; + this.shootTarget = null; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 112256863134219L; - long var6 = var2 ^ 91082959635357L; - Event.b(); - this.j(new Object[0]); - this.J = (Integer)this.f.getValue() != -1 && this.f.isPressed(new Object[]{var4}); - this.K = (Integer)this.h.getValue() != -1 && this.h.isPressed(new Object[]{var4}); - this.T = null; - this.U = false; - this.S = false; - this.W = false; - Prestige.o.e(new Object[]{this, var6}); + public void onEnable() { + this.resetSequence(); + this.triggerWasPressed = this.triggerBind.getValue() != -1 && this.triggerBind.isPressed(); + this.overloadWasPressed = this.overloadBind.getValue() != -1 && this.overloadBind.isPressed(); + this.autoHitTarget = null; + this.autoHitReady = false; + this.skipNextPacket = false; + this.ignoreOwnShot = false; + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - long var6 = var2 ^ 120046844036687L; - this.k(new Object[]{var6}); - this.j(new Object[0]); - this.T = null; - this.U = false; - Prestige.o.f(new Object[]{this, var4}); + public void onDisable() { + this.restoreUseKeyState(); + this.resetSequence(); + this.autoHitTarget = null; + this.autoHitReady = false; + Prestige.silentRotationManager.removeRotationProvider(this); } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 2151103034484L ^ var2; - long var4 = var2 ^ 60332513002826L; - Event.b(); - int var7 = new RenderHelper35(b.options.useKey).a(new Object[]{var4}).getCode(); - boolean var8; - if (var7 < 8) { - var8 = GLFW.glfwGetMouseButton(b.getWindow().getHandle(), var7) == 1; + private void restoreUseKeyState() { + int keyCode = new KeyBindingAccessor(mc.options.useKey).getBoundKey().getCode(); + boolean physicallyPressed; + if (keyCode < 8) { + physicallyPressed = GLFW.glfwGetMouseButton(mc.getWindow().getHandle(), keyCode) == 1; } else { - var8 = GLFW.glfwGetKey(b.getWindow().getHandle(), var7) == 1; + physicallyPressed = GLFW.glfwGetKey(mc.getWindow().getHandle(), keyCode) == 1; } - b.options.useKey.setPressed(var8); + mc.options.useKey.setPressed(physicallyPressed); } - private void l(Object[] var1) { - Event.b(); - this.N = false; - if (this.z == BowMode.BOW && !this.Q) { - this.G = (Integer)this.a.getValue(); - this.y = RailState.SWITCH_WEAPON; + private void finishPlacement() { + this.waitingOverloadDelay = false; + if (this.ignitionMode == CartIgnitionMode.BOW && !this.shootFirst) { + this.delayTicks = this.switchDelay.getValue(); + this.state = AutoCartState.SWITCH_WEAPON; } else { - this.G = (Integer)this.c.getValue(); - this.y = RailState.WAIT_BACK; + this.delayTicks = this.bowBackDelay.getValue(); + this.state = AutoCartState.WAIT_BACK; } } - private void m(Object[] var1) { - float var2 = (Float)var1[0]; - float var6 = (Float)var1[1]; - float var3 = (Float)var1[2]; - long var4 = (Long)var1[3]; - var4 = 2151103034484L ^ var4; - long var7 = var4 ^ 137025550456991L; - long var9 = var4 ^ 94787562211903L; - long var11 = var4 ^ 58116189383383L; - Event.b(); - Object[] var10007 = new Object[]{null, null, null, var9}; - var10007[2] = var2; - var10007[1] = var3; - var10007[0] = var6; - BlockPos var14 = this.a_class_2338_(var10007); - if (var14 != null - && !this.h(new Object[]{var14.up(), var11}) - && !this.h(new Object[]{var14, var11}) - && b.world.getBlockState(var14.up()).isReplaceable() - && this.f_boolean(new Object[]{var14, var7})) { - this.D = var14; - this.E = true; - this.y = RailState.SWITCH_RAIL; - this.G = 0; + private void placeAtPredictedLanding(float power, float yaw, float pitch) { + BlockPos landing = this.predictArrowLanding(yaw, pitch, power); + if (landing != null + && !this.hasTntCartAt(landing.up()) + && !this.hasTntCartAt(landing) + && mc.world.getBlockState(landing.up()).isReplaceable() + && this.isTopFaceInReach(landing)) { + this.landingBlock = landing; + this.useLandingBlock = true; + this.state = AutoCartState.SWITCH_RAIL; + this.delayTicks = 0; } else { - this.j(new Object[0]); + this.resetSequence(); } } - private void n(Object[] var1) { - float var2 = (Float)var1[0]; - long var3 = (Long)var1[1]; - var3 = 2151103034484L ^ var3; - long var5 = var3 ^ 23871919113384L; - Event.b(); - RenderBatch var8 = Prestige.o.b_RenderBatch____________(new Object[0]); - float var10002 = var8 != null ? var8.a(new Object[0]) : b.player.getYaw(); - float var10003 = var8 != null ? var8.b(new Object[0]) : b.player.getPitch(); - Object[] var10006 = new Object[]{null, null, null, var5}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var2; - this.m(var10006); + private void placeAtServerAimLanding(float power) { + Rotation serverRotation = Prestige.silentRotationManager.getServerRotation(); + this.placeAtPredictedLanding(power, serverRotation != null ? serverRotation.getYaw() : mc.player.getYaw(), serverRotation != null ? serverRotation.getPitch() : mc.player.getPitch()); } - private BlockPos a_class_2338_(Object[] var1) { - float var4 = (Float)var1[0]; - float var2 = (Float)var1[1]; - float var3 = (Float)var1[2]; - if (b.player != null && b.world != null) { - Vec3d var8 = b.player.getEyePos(); - double var9 = var8.x; - double var11 = var8.y - 0.1; - double var13 = var8.z; - double var15 = Math.toRadians(var4); - double var17 = Math.toRadians(var2); - double var19 = -MathHelper.sin((float)var15) * MathHelper.cos((float)var17); - double var21 = -MathHelper.sin((float)var17); - double var23 = MathHelper.cos((float)var15) * MathHelper.cos((float)var17); - double var25 = Math.sqrt(var19 * var19 + var21 * var21 + var23 * var23); - if (var25 == 0.0) { + private BlockPos predictArrowLanding(float yaw, float pitch, float power) { + if (mc.player != null && mc.world != null) { + Vec3d eyePos = mc.player.getEyePos(); + double posX = eyePos.x; + double posY = eyePos.y - 0.1; + double posZ = eyePos.z; + double yawRad = Math.toRadians(yaw); + double pitchRad = Math.toRadians(pitch); + double motionX = -MathHelper.sin((float)yawRad) * MathHelper.cos((float)pitchRad); + double motionY = -MathHelper.sin((float)pitchRad); + double motionZ = MathHelper.cos((float)yawRad) * MathHelper.cos((float)pitchRad); + double length = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); + if (length == 0.0) { return null; } else { - var19 /= var25; - var21 /= var25; - var23 /= var25; - float var27 = MathHelper.clamp(var3, 0.0F, 1.05F) * 3.0F; - var19 *= var27; - var21 *= var27; - var23 *= var27; - var19 += b.player.getVelocity().x; - var23 += b.player.getVelocity().z; - if (!b.player.isOnGround()) { - var21 += b.player.getVelocity().y; + motionX /= length; + motionY /= length; + motionZ /= length; + float speed = MathHelper.clamp(power, 0.0F, 1.05F) * 3.0F; + motionX *= speed; + motionY *= speed; + motionZ *= speed; + motionX += mc.player.getVelocity().x; + motionZ += mc.player.getVelocity().z; + if (!mc.player.isOnGround()) { + motionY += mc.player.getVelocity().y; } - for (int var28 = 0; var28 < 300; var28++) { - Vec3d var29 = new Vec3d(var9, var11, var13); - var9 += var19; - var11 += var21; - var13 += var23; - var19 *= 0.99; - var21 *= 0.99; - var23 *= 0.99; - var21 -= 0.05; - Vec3d var30 = new Vec3d(var9, var11, var13); - BlockHitResult var31 = b.world.raycast(new RaycastContext(var29, var30, ShapeType.OUTLINE, FluidHandling.NONE, b.player)); - if (var31 != null && var31.getType() == Type.BLOCK) { - return var31.getBlockPos(); + for (int step = 0; step < 300; step++) { + Vec3d segmentStart = new Vec3d(posX, posY, posZ); + posX += motionX; + posY += motionY; + posZ += motionZ; + motionX *= 0.99; + motionY *= 0.99; + motionZ *= 0.99; + motionY -= 0.05; + Vec3d segmentEnd = new Vec3d(posX, posY, posZ); + BlockHitResult hit = mc.world.raycast(new RaycastContext(segmentStart, segmentEnd, ShapeType.OUTLINE, FluidHandling.NONE, mc.player)); + if (hit != null && hit.getType() == Type.BLOCK) { + return hit.getBlockPos(); } - if (var11 < -65.0) { + if (posY < -65.0) { break; } } @@ -444,115 +376,83 @@ public class AutoCart extends Module implements RenderContract3 { } } - private RenderBatch b_RenderBatch(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - float var3 = (Float)var1[1]; - long var4 = (Long)var1[2]; - var4 = 2151103034484L ^ var4; - long var6 = var4 ^ 23701897999716L; - long var8 = var4 ^ 94611187447668L; - Event.b(); - Vec3d var11 = b.player.getEyePos(); - double var12 = var2.x - var11.x; - double var14 = var2.z - var11.z; - float var16 = (float)Math.toDegrees(Math.atan2(var14, var12)) - 90.0F; - ArrayList var17 = new ArrayList(); - double var18 = Double.MAX_VALUE; + private Rotation computeBowAim(Vec3d target, float power) { + Vec3d eyePos = mc.player.getEyePos(); + float yaw = (float)Math.toDegrees(Math.atan2(target.z - eyePos.z, target.x - eyePos.x)) - 90.0F; + ArrayList candidates = new ArrayList(); + double bestDistSq = Double.MAX_VALUE; - for (float var20 = -89.0F; var20 <= 60.0F; var20 += 0.5F) { - Object[] var10006 = new Object[]{null, null, null, var8}; - var10006[2] = var3; - var10006[1] = var20; - var10006[0] = var16; - BlockPos var21 = this.a_class_2338_(var10006); - if (var21 != null) { - double var22 = var21.toCenterPos().squaredDistanceTo(var2); - var17.add(new float[]{var20, (float)var22}); - if (var22 < var18) { - var18 = var22; + for (float pitch = -89.0F; pitch <= 60.0F; pitch += 0.5F) { + BlockPos landing = this.predictArrowLanding(yaw, pitch, power); + if (landing != null) { + double distSq = landing.toCenterPos().squaredDistanceTo(target); + candidates.add(new float[]{pitch, (float)distSq}); + if (distSq < bestDistSq) { + bestDistSq = distSq; } } } - if (var18 > 4.0) { + if (bestDistSq > 4.0) { return null; } else { - double var29 = var18 + 0.25; - var17.removeIf(lpL106_0 -> ((float[])lpL106_0)[1] > var29); - int var30 = Math.min((int)Math.round(((Integer)this.e.getValue()).intValue() / 100.0 * (var17.size() - 1)), var17.size() - 1); - float var23 = ((float[])var17.get(var30))[0]; + double maxDistSq = bestDistSq + 0.25; + candidates.removeIf(candidate -> ((float[])candidate)[1] > maxDistSq); + float chosenPitch = ((float[])candidates.get(Math.min((int)Math.round(this.arc.getValue().intValue() / 100.0 * (candidates.size() - 1)), candidates.size() - 1)))[0]; - for (float var24 = var23 - 0.5F; var24 <= var23 + 0.5F; var24 += 0.05F) { - Object[] var33 = new Object[]{null, null, null, var8}; - var33[2] = var3; - var33[1] = var24; - var33[0] = var16; - BlockPos var25 = this.a_class_2338_(var33); - if (var25 != null) { - double var26 = var25.toCenterPos().squaredDistanceTo(var2); - if (var26 < var18) { - var18 = var26; - var23 = var24; + for (float finePitch = chosenPitch - 0.5F; finePitch <= chosenPitch + 0.5F; finePitch += 0.05F) { + BlockPos fineLanding = this.predictArrowLanding(yaw, finePitch, power); + if (fineLanding != null) { + double fineDistSq = fineLanding.toCenterPos().squaredDistanceTo(target); + if (fineDistSq < bestDistSq) { + bestDistSq = fineDistSq; + chosenPitch = finePitch; } } } - RenderBatch var31 = Prestige.o.a_RenderBatch(new Object[]{var2, var6}); - if (var31 == null) { - return new RenderBatch(var16, var23); + Rotation limitedRotation = Prestige.silentRotationManager.getRotationTowards(target); + if (limitedRotation == null) { + return new Rotation(yaw, chosenPitch); } else { - RenderBatch var32 = new RenderBatch(var31.a(new Object[0]), var23); - var32.c(new Object[]{var31.a_boolean________________________________________(new Object[0])}); - return var32; + Rotation aim = new Rotation(limitedRotation.getYaw(), chosenPitch); + aim.setClamped(limitedRotation.isClamped()); + return aim; } } } - private void o(Object[] var1) { - BlockHitResult var2 = (BlockHitResult)var1[0]; - if (b.interactionManager.interactBlock(b.player, Hand.MAIN_HAND, var2).isAccepted()) { - b.player.swingHand(Hand.MAIN_HAND); - Prestige.o.g(new Object[]{true}); + private void interactBlockAndSwing(BlockHitResult hitResult) { + if (mc.interactionManager.interactBlock(mc.player, Hand.MAIN_HAND, hitResult).isAccepted()) { + mc.player.swingHand(Hand.MAIN_HAND); + Prestige.silentRotationManager.setActedThisTick(true); } } - private boolean f_boolean(Object[] var1) { - BlockPos var2 = (BlockPos)var1[0]; - long var3 = (Long)var1[1]; - var3 = 2151103034484L ^ var3; - long var5 = var3 ^ 117445088717950L; - Vec3d var8 = b.player.getEyePos(); - Event.b(); - double var9 = InventoryUtil2.b_float_____(new Object[]{var5}); - double var11 = var2.getX() + 0.5 - var8.x; - double var13 = var2.getY() + 1.0 - var8.y; - double var15 = var2.getZ() + 0.5 - var8.z; - return var11 * var11 + var13 * var13 + var15 * var15 <= var9 * var9; + private boolean isTopFaceInReach(BlockPos pos) { + Vec3d eyePos = mc.player.getEyePos(); + double reach = PlayerInteractions.getReachDistance(); + double dx = pos.getX() + 0.5 - eyePos.x; + double dy = pos.getY() + 1.0 - eyePos.y; + double dz = pos.getZ() + 0.5 - eyePos.z; + return dx * dx + dy * dy + dz * dz <= reach * reach; } - private boolean g(Object[] var1) { - double var2 = (Double)var1[0]; - double var4 = (Double)var1[1]; - double var6 = (Double)var1[2]; - long var8 = (Long)var1[3]; - var8 = 2151103034484L ^ var8; - long var10 = var8 ^ 124137653274303L; - Event.b(); - Vec3d var13 = b.player.getEyePos(); - double var14 = InventoryUtil2.b_float_____(new Object[]{var10}); - double var16 = var2 - var13.x; - double var18 = var4 - var13.y; - double var20 = var6 - var13.z; - return var16 * var16 + var18 * var18 + var20 * var20 <= var14 * var14; + private boolean isInReach(double targetX, double targetY, double targetZ) { + Vec3d eyePos = mc.player.getEyePos(); + double reach = PlayerInteractions.getReachDistance(); + double dx = targetX - eyePos.x; + double dy = targetY - eyePos.y; + double dz = targetZ - eyePos.z; + return dx * dx + dy * dy + dz * dz <= reach * reach; } - private boolean h(Object[] var1) { - BlockPos var4 = (BlockPos)var1[0]; - if (b.world == null) { + private boolean hasTntCartAt(BlockPos pos) { + if (mc.world == null) { return false; } else { - for (Entity var7 : b.world.getOtherEntities(null, new Box(var4))) { - if (var7 instanceof TntMinecartEntity) { + for (Entity entity : mc.world.getOtherEntities(null, new Box(pos))) { + if (entity instanceof TntMinecartEntity) { return true; } } @@ -561,152 +461,128 @@ public class AutoCart extends Module implements RenderContract3 { } } - private TntMinecartEntity a_class_1701(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 2151103034484L ^ var2; - long var4 = var2 ^ 126914937642381L; - if (b.world != null && b.player != null) { - Vec3d var7 = b.player.getEyePos(); - float var8 = (Float)this.n.getValue(); - TntMinecartEntity var9 = null; - double var10 = Double.MAX_VALUE; - Vec3d var12 = b.player.getRotationVec(1.0F); + private TntMinecartEntity findAutoHitCart() { + if (mc.world != null && mc.player != null) { + Vec3d eyePos = mc.player.getEyePos(); + float maxRange = this.autoHitRange.getValue(); + TntMinecartEntity bestCart = null; + double bestScore = Double.MAX_VALUE; + Vec3d lookVec = mc.player.getRotationVec(1.0F); - for (Entity var14 : b.world.getEntities()) { - if (var14 instanceof TntMinecartEntity var15) { - double var16 = var7.distanceTo(PositionUtil.a(new Object[]{var15, var4})); - if (!(var16 > var8)) { - Vec3d var18 = PositionUtil.a(new Object[]{var15, var4}).subtract(var7); - double var19 = Math.sqrt(var18.x * var18.x + var18.z * var18.z); - if (!(var19 < 1.0E-6)) { - Vec3d var21 = var18.normalize(); - double var22 = var12.dotProduct(var21); - double var24 = Math.acos(MathHelper.clamp((float)var22, -1.0F, 1.0F)); - double var26 = var24 * 8.0 + var16 * 0.05; - if (var26 < var10) { - var10 = var26; - var9 = var15; + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof TntMinecartEntity cart) { + double distance = eyePos.distanceTo(PositionUtil.getEntityPos(cart)); + if (!(distance > maxRange)) { + Vec3d toCart = PositionUtil.getEntityPos(cart).subtract(eyePos); + if (!(Math.sqrt(toCart.x * toCart.x + toCart.z * toCart.z) < 1.0E-6)) { + double score = Math.acos(MathHelper.clamp((float)lookVec.dotProduct(toCart.normalize()), -1.0F, 1.0F)) * 8.0 + distance * 0.05; + if (score < bestScore) { + bestScore = score; + bestCart = cart; } } } } } - return var9; + return bestCart; } else { return null; } } - private boolean i(Object[] var1) { - if (b.player == null) { + private boolean isDrawingBow() { + if (mc.player == null) { return false; } else { - return !b.player.isUsingItem() ? false : b.player.getActiveItem().getItem() == Items.BOW; + return !mc.player.isUsingItem() ? false : mc.player.getActiveItem().getItem() == Items.BOW; } } - private int g_int(Object[] var1) { - return Math.max((Integer)this.d.getValue(), 3); + private int getChargeTicks() { + return Math.max(this.minCharge.getValue(), 3); } - private boolean j_boolean_(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 2151103034484L ^ var2; - long var4 = var2 ^ 116821631026682L; - return (Integer)this.g.getValue() > 1 && (Integer)this.h.getValue() != -1 && this.h.isPressed(new Object[]{var4}); + private boolean isOverloadHeld() { + return this.overload.getValue() > 1 && this.overloadBind.getValue() != -1 && this.overloadBind.isPressed(); } - private float b_float_________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 2151103034484L ^ var2; - long var4 = var2 ^ 16964792086561L; - long var6 = var2 ^ 66307203495936L; - long var8 = var2 ^ 102275328517213L; - if (this.f(new Object[]{var6}) != -1) { + private float getShotPower() { + if (this.findChargedCrossbowSlot() != -1) { return 1.0500001F; } else { - return InventoryUtil.a_Integer(new Object[]{Items.BOW, var4}) != null ? BowItem.getPullProgress(this.g_int(new Object[]{var8})) : -1.0F; + return InventoryUtil.findHotbarSlot(Items.BOW) != null ? BowItem.getPullProgress(this.getChargeTicks()) : -1.0F; } } - private boolean k_boolean(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 2151103034484L ^ var2; - long var4 = var2 ^ 687027227435L; - if (b.player == null) { + private boolean isHoldingBowOrCrossbow() { + if (mc.player == null) { return false; } else { - ItemStack var7 = b.player.getMainHandStack(); - return var7.getItem() == Items.BOW ? true : this.e_boolean_(new Object[]{var7, var4}); + ItemStack heldStack = mc.player.getMainHandStack(); + return heldStack.getItem() == Items.BOW ? true : this.isChargedCrossbow(heldStack); } } @Subscribe - public void a(PacketEvent2 var1) { - if (this.S) { - this.S = false; - } else if ((Boolean)this.l.getValue()) { - if (this.y == RailState.IDLE) { - if (!this.W) { - if (b.player != null && b.world != null) { - ItemStack var21 = b.player.getMainHandStack(); - Item var22 = var21.getItem(); - boolean var23 = false; - float var24 = 1.0F; - if (var1.a(new Object[0]) instanceof PlayerActionC2SPacket var25 && var25.getAction() == Action.RELEASE_USE_ITEM && var22 == Items.BOW) { - int var28 = b.player.getItemUseTime(); - if (var28 < 4) { + public void onPacketSend(PacketSendEvent event) { + if (this.skipNextPacket) { + this.skipNextPacket = false; + } else if (this.onBowShot.getValue()) { + if (this.state == AutoCartState.IDLE) { + if (!this.ignoreOwnShot) { + if (mc.player != null && mc.world != null) { + ItemStack heldStack = mc.player.getMainHandStack(); + Item heldItem = heldStack.getItem(); + boolean shotFired = false; + float shotPower = 1.0F; + if (event.getPacket() instanceof PlayerActionC2SPacket actionPacket && actionPacket.getAction() == Action.RELEASE_USE_ITEM && heldItem == Items.BOW) { + int useTicks = mc.player.getItemUseTime(); + if (useTicks < 4) { return; } - var23 = true; - var24 = BowItem.getPullProgress(var28); - } else if (var1.a(new Object[0]) instanceof PlayerInteractItemC2SPacket && this.e_boolean_(new Object[]{var21, 7371155366939L})) { - var23 = true; - var24 = 1.0500001F; + shotFired = true; + shotPower = BowItem.getPullProgress(useTicks); + } else if (event.getPacket() instanceof PlayerInteractItemC2SPacket && this.isChargedCrossbow(heldStack)) { + shotFired = true; + shotPower = 1.0500001F; } - if (var23) { - if (this.d_int__(new Object[]{43758232836049L}) != -1) { - if (this.a_Integer_(new Object[]{102143318459463L}) != null) { - BlockPos var27 = null; - if (((String)this.k.getValue()).equals("Trajectory")) { - float var10001 = b.player.getYaw(); - float var10002 = b.player.getPitch(); - Object[] var10006 = new Object[]{null, null, null, 88589708016684L}; - var10006[2] = var24; - var10006[1] = var10002; - var10006[0] = var10001; - var27 = this.a_class_2338_(var10006); - if (var27 == null) { + if (shotFired) { + if (this.findRailSlot() != -1) { + if (this.findOrPullCartSlot() != null) { + BlockPos landing = null; + if (this.placeMode.getValue().equals("Trajectory")) { + landing = this.predictArrowLanding(mc.player.getYaw(), mc.player.getPitch(), shotPower); + if (landing == null) { return; } - if (this.h(new Object[]{var27.up(), 55508932811972L}) || this.h(new Object[]{var27, 55508932811972L})) { + if (this.hasTntCartAt(landing.up()) || this.hasTntCartAt(landing)) { return; } - if (!b.world.getBlockState(var27.up()).isReplaceable()) { + if (!mc.world.getBlockState(landing.up()).isReplaceable()) { return; } - if (!this.f_boolean(new Object[]{var27, 134383816715916L})) { + if (!this.isTopFaceInReach(landing)) { return; } } - this.F = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - this.z = BowMode.PASSIVE; - if (var27 != null) { - this.D = var27; - this.E = true; + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.ignitionMode = CartIgnitionMode.PASSIVE; + if (landing != null) { + this.landingBlock = landing; + this.useLandingBlock = true; } - this.L = this.j_boolean_(new Object[]{125278170840707L}); - this.M = 0; - this.y = RailState.SWITCH_RAIL; - this.G = 0; + this.overloadActive = this.isOverloadHeld(); + this.cartsPlaced = 0; + this.state = AutoCartState.SWITCH_RAIL; + this.delayTicks = 0; } } } @@ -717,345 +593,297 @@ public class AutoCart extends Module implements RenderContract3 { } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null && b.player != null) { - boolean var57 = (Integer)this.f.getValue() != -1 && this.f.isPressed(new Object[]{28844609523469L}); - boolean var58 = var57 && !this.J; - this.J = var57; - boolean var59 = (Integer)this.h.getValue() != -1 && this.h.isPressed(new Object[]{28844609523469L}); - boolean var60 = var59 && !this.K; - this.K = var59; - if (!b.options.useKey.isPressed()) { - this.W = false; + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { + boolean triggerPressed = this.triggerBind.getValue() != -1 && this.triggerBind.isPressed(); + boolean triggerJustPressed = triggerPressed && !this.triggerWasPressed; + this.triggerWasPressed = triggerPressed; + boolean overloadPressed = this.overloadBind.getValue() != -1 && this.overloadBind.isPressed(); + boolean overloadJustPressed = overloadPressed && !this.overloadWasPressed; + this.overloadWasPressed = overloadPressed; + if (!mc.options.useKey.isPressed()) { + this.ignoreOwnShot = false; } - if (this.y == RailState.IDLE && (var58 || var60)) { - boolean var61 = this.j_boolean_(new Object[]{125278170840707L}); - boolean var62 = this.f(new Object[]{10648749750583L}) != -1 || InventoryUtil.a_Integer(new Object[]{Items.BOW, 64376993919254L}) != null; - if (this.d_int__(new Object[]{43758232836049L}) != -1 && this.a_Integer_(new Object[]{102143318459463L}) != null && (!var61 || var62)) { - this.F = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - this.z = BowMode.BOW; - this.Q = var61; - this.R = var61 && b.crosshairTarget instanceof BlockHitResult var63 ? var63.getBlockPos() : null; - this.D = null; - this.E = false; - this.W = true; - this.L = this.j_boolean_(new Object[]{125278170840707L}); - this.M = 0; - this.y = var61 ? RailState.SWITCH_WEAPON : RailState.SWITCH_RAIL; - this.G = 0; + if (this.state == AutoCartState.IDLE && (triggerJustPressed || overloadJustPressed)) { + boolean overloadHeld = this.isOverloadHeld(); + boolean hasWeapon = this.findChargedCrossbowSlot() != -1 || InventoryUtil.findHotbarSlot(Items.BOW) != null; + if (this.findRailSlot() != -1 && this.findOrPullCartSlot() != null && (!overloadHeld || hasWeapon)) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.ignitionMode = CartIgnitionMode.BOW; + this.shootFirst = overloadHeld; + this.shootTarget = overloadHeld && mc.crosshairTarget instanceof BlockHitResult aimedBlockHit ? aimedBlockHit.getBlockPos() : null; + this.landingBlock = null; + this.useLandingBlock = false; + this.ignoreOwnShot = true; + this.overloadActive = this.isOverloadHeld(); + this.cartsPlaced = 0; + this.state = overloadHeld ? AutoCartState.SWITCH_WEAPON : AutoCartState.SWITCH_RAIL; + this.delayTicks = 0; } } - if (this.U && this.y == RailState.IDLE && this.i(new Object[]{131561801410531L})) { - this.S = true; - b.options.useKey.setPressed(false); - if (b.player.isUsingItem()) { - b.interactionManager.stopUsingItem(b.player); + if (this.autoHitReady && this.state == AutoCartState.IDLE && this.isDrawingBow()) { + this.skipNextPacket = true; + mc.options.useKey.setPressed(false); + if (mc.player.isUsingItem()) { + mc.interactionManager.stopUsingItem(mc.player); } - this.U = false; - this.T = null; + this.autoHitReady = false; + this.autoHitTarget = null; } else { - if ((Boolean)this.m.getValue() && this.y == RailState.IDLE && this.i(new Object[]{131561801410531L})) { - TntMinecartEntity var71 = this.a_class_1701(new Object[]{86871509419157L}); - this.T = var71; - if (var71 != null && b.player.getItemUseTime() >= (Integer)this.o.getValue()) { - RenderBatch var77 = Prestige.o.c(new Object[0]); - if (var77 != null && !var77.a_boolean________________________________________(new Object[0])) { - this.U = true; + if (this.autoHitPlaced.getValue() && this.state == AutoCartState.IDLE && this.isDrawingBow()) { + TntMinecartEntity nearestCart = this.findAutoHitCart(); + this.autoHitTarget = nearestCart; + if (nearestCart != null && mc.player.getItemUseTime() >= this.autoHitMinCharge.getValue()) { + Rotation autoHitRotation = Prestige.silentRotationManager.getActiveRotation(); + if (autoHitRotation != null && !autoHitRotation.isClamped()) { + this.autoHitReady = true; } } } else { - this.T = null; - this.U = false; + this.autoHitTarget = null; + this.autoHitReady = false; } - if (this.y != RailState.IDLE) { - switch (this.y) { + if (this.state != AutoCartState.IDLE) { + switch (this.state) { case SWITCH_RAIL: - int var76 = this.d_int__(new Object[]{43758232836049L}); - if (var76 == -1) { - this.j(new Object[0]); + int railSlot = this.findRailSlot(); + if (railSlot == -1) { + this.resetSequence(); return; } - BlockHitResult var82 = this.a_class_3965___(new Object[]{74719101328524L}); - if (var82 == null) { - if (++this.H > 10) { - this.j(new Object[0]); + BlockHitResult railHit = this.getRailPlaceHit(); + if (railHit == null) { + if (++this.railRetryTicks > 10) { + this.resetSequence(); } return; } - double var96 = this.A + 0.5; - double var98 = this.B + 0.5; - double var105 = this.C + 0.5; - Object[] var109 = new Object[]{null, null, null, 105619551519821L}; - var109[2] = var105; - var109[1] = var98; - var109[0] = var96; - if (!this.g(var109)) { - this.j(new Object[0]); + if (!this.isInReach(this.railX + 0.5, this.railY + 0.5, this.railZ + 0.5)) { + this.resetSequence(); return; } - Object[] var106 = new Object[]{null, 37392877673079L}; - var106[0] = var76; - InventoryUtil.a_void________(var106); - this.o(new Object[]{var82, 133610651008650L}); - this.G = (Integer)this.a.getValue(); - this.y = RailState.SWITCH_CART; + InventoryUtil.selectSlot(railSlot); + this.interactBlockAndSwing(railHit); + this.delayTicks = this.switchDelay.getValue(); + this.state = AutoCartState.SWITCH_CART; break; case SWITCH_CART: - if (this.G > 0) { - this.G--; + if (this.delayTicks > 0) { + this.delayTicks--; return; } - if (this.N) { - if (!this.O.b(new Object[]{this.i, 89714527855213L})) { + if (this.waitingOverloadDelay) { + if (!this.overloadTimer.hasElapsedRandom(this.overloadDelay)) { return; } - this.N = false; + this.waitingOverloadDelay = false; } - Integer var75 = this.j.getValue() && this.M > 0 - ? InventoryUtil.a_Integer(new Object[]{Items.TNT_MINECART, 64376993919254L}) - : this.a_Integer_(new Object[]{102143318459463L}); - if (var75 == null) { - if (this.M > 0) { - this.l(new Object[]{136470461279916L}); + Integer cartSlot = this.overloadHotbarOnly.getValue() && this.cartsPlaced > 0 + ? InventoryUtil.findHotbarSlot(Items.TNT_MINECART) + : this.findOrPullCartSlot(); + if (cartSlot == null) { + if (this.cartsPlaced > 0) { + this.finishPlacement(); } else { - this.j(new Object[0]); + this.resetSequence(); } return; } - if (b.player.getInventory().getStack(var75).getItem() != Items.TNT_MINECART) { + if (mc.player.getInventory().getStack(cartSlot).getItem() != Items.TNT_MINECART) { return; } - double var94 = this.A + 0.5; - double var97 = this.B + 0.5; - double var103 = this.C + 0.5; - Object[] var108 = new Object[]{null, null, null, 105619551519821L}; - var108[2] = var103; - var108[1] = var97; - var108[0] = var94; - if (!this.g(var108)) { - this.j(new Object[0]); + if (!this.isInReach(this.railX + 0.5, this.railY + 0.5, this.railZ + 0.5)) { + this.resetSequence(); return; } - BlockHitResult var81 = new BlockHitResult( - new Vec3d(this.A + 0.5, this.B + 0.125, this.C + 0.5), Direction.UP, new BlockPos(this.A, this.B, this.C), false + BlockHitResult cartHit = new BlockHitResult( + new Vec3d(this.railX + 0.5, this.railY + 0.125, this.railZ + 0.5), Direction.UP, new BlockPos(this.railX, this.railY, this.railZ), false ); - if (this.M >= 1) { - int var91 = var75; - Runnable var95 = () -> this.o(new Object[]{var81, 133610651008650L}); - Object[] var10005 = new Object[]{null, null, null, 53805837885570L}; - var10005[2] = true; - var10005[1] = var95; - var10005[0] = var91; - InventoryUtil.b_void__(var10005); + if (this.cartsPlaced >= 1) { + InventoryUtil.runWithSlot(cartSlot, () -> this.interactBlockAndSwing(cartHit), true); } else { - int var92 = var75; - Object[] var104 = new Object[]{null, 37392877673079L}; - var104[0] = var92; - InventoryUtil.a_void________(var104); - InventoryUtil2.a(new Object[]{var81, 96519249476482L}); + InventoryUtil.selectSlot(cartSlot); + PlayerInteractions.interactBlock(cartHit); } - this.M++; - if ((this.L || this.j_boolean_(new Object[]{125278170840707L})) && this.M < (Integer)this.g.getValue()) { - this.O.a_void_____________________(new Object[]{93540861878173L}); - this.i.reroll(new Object[]{57083216809697L}); - this.N = true; + this.cartsPlaced++; + if ((this.overloadActive || this.isOverloadHeld()) && this.cartsPlaced < this.overload.getValue()) { + this.overloadTimer.reset(); + this.overloadDelay.reroll(); + this.waitingOverloadDelay = true; return; } - if ((Boolean)this.q.getValue()) { - this.y = RailState.SWITCH_SAFE; - this.G = (Integer)this.c.getValue(); + if (this.safeBlocks.getValue()) { + this.state = AutoCartState.SWITCH_SAFE; + this.delayTicks = this.bowBackDelay.getValue(); } else { - this.l(new Object[]{136470461279916L}); + this.finishPlacement(); } break; case SWITCH_SAFE: - if (this.G > 0) { - this.G--; + if (this.delayTicks > 0) { + this.delayTicks--; return; } - int var74 = this.e(new Object[]{103960202223449L}); - if (var74 == -1) { - this.l(new Object[]{136470461279916L}); + int safeBlockSlot = this.findSafeBlockSlot(); + if (safeBlockSlot == -1) { + this.finishPlacement(); return; } - if (b.crosshairTarget instanceof BlockHitResult var80 && var80.getSide() == Direction.UP) { - BlockPos var85 = var80.getBlockPos(); - Vec3d var87 = PositionUtil.b(new Object[]{118247215910525L}); - Vec3d var88 = new Vec3d(this.A + 0.5, this.B + 0.5, this.C + 0.5); - Vec3d var66 = new Vec3d(var85.getX() + 0.5, var85.getY() + 0.5, var85.getZ() + 0.5); - double var67 = var87.distanceTo(var88); - double var69 = var87.distanceTo(var66); - if (var85.getY() <= (int)Math.floor(var87.y) - && var69 < var67 - && !this.d(new Object[]{var85, 1171863229319L}) - && !b.world.getBlockState(var85).isReplaceable()) { - double var93 = var85.getX() + 0.5; - double var10002 = var85.getY() + 1.0; - double var101 = var85.getZ() + 0.5; - Object[] var107 = new Object[]{null, null, null, 105619551519821L}; - var107[2] = var101; - var107[1] = var10002; - var107[0] = var93; - if (this.g(var107)) { - Object[] var102 = new Object[]{null, 37392877673079L}; - var102[0] = var74; - InventoryUtil.a_void________(var102); - this.o(new Object[]{var80, 133610651008650L}); + if (mc.crosshairTarget instanceof BlockHitResult safeBlockHit && safeBlockHit.getSide() == Direction.UP) { + BlockPos safeBlockPos = safeBlockHit.getBlockPos(); + Vec3d playerPos = PositionUtil.getPlayerPos(); + Vec3d cartCenter = new Vec3d(this.railX + 0.5, this.railY + 0.5, this.railZ + 0.5); + Vec3d safeBlockCenter = new Vec3d(safeBlockPos.getX() + 0.5, safeBlockPos.getY() + 0.5, safeBlockPos.getZ() + 0.5); + double cartDistance = playerPos.distanceTo(cartCenter); + double safeBlockDistance = playerPos.distanceTo(safeBlockCenter); + if (safeBlockPos.getY() <= (int)Math.floor(playerPos.y) + && safeBlockDistance < cartDistance + && !this.isRailBlock(safeBlockPos) + && !mc.world.getBlockState(safeBlockPos).isReplaceable()) { + if (this.isInReach(safeBlockPos.getX() + 0.5, safeBlockPos.getY() + 1.0, safeBlockPos.getZ() + 0.5)) { + InventoryUtil.selectSlot(safeBlockSlot); + this.interactBlockAndSwing(safeBlockHit); } } } - this.l(new Object[]{136470461279916L}); + this.finishPlacement(); break; case WAIT_BACK: - if (!(Boolean)this.p.getValue()) { - this.j(new Object[0]); + if (!this.switchBackToBow.getValue()) { + this.resetSequence(); return; } - if (this.G > 0) { - this.G--; + if (this.delayTicks > 0) { + this.delayTicks--; return; } - if (this.F != -1) { - int var90 = this.F; - Object[] var100 = new Object[]{null, 37392877673079L}; - var100[0] = var90; - InventoryUtil.a_void________(var100); + if (this.previousSlot != -1) { + InventoryUtil.selectSlot(this.previousSlot); } - this.j(new Object[0]); + this.resetSequence(); break; case SWITCH_WEAPON: - if (this.G > 0) { - this.G--; + if (this.delayTicks > 0) { + this.delayTicks--; return; } - int var73 = this.f(new Object[]{10648749750583L}); - Integer var79 = InventoryUtil.a_Integer(new Object[]{Items.BOW, 64376993919254L}); - if (var73 != -1) { - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var73; - InventoryUtil.a_void________(var10003); - this.I = true; + int crossbowSlot = this.findChargedCrossbowSlot(); + Integer bowSlot = InventoryUtil.findHotbarSlot(Items.BOW); + if (crossbowSlot != -1) { + InventoryUtil.selectSlot(crossbowSlot); + this.usingCrossbow = true; } else { - if (var79 == null) { - this.j(new Object[0]); + if (bowSlot == null) { + this.resetSequence(); return; } - int var89 = var79; - Object[] var99 = new Object[]{null, 37392877673079L}; - var99[0] = var89; - InventoryUtil.a_void________(var99); - this.I = false; + InventoryUtil.selectSlot(bowSlot); + this.usingCrossbow = false; } - this.y = RailState.USE_WEAPON; + this.state = AutoCartState.USE_WEAPON; break; case USE_WEAPON: - if (this.I) { - this.W = true; - b.interactionManager.interactItem(b.player, Hand.MAIN_HAND); - if (this.Q) { - Object[] var10004 = new Object[]{null, 20963897406139L}; - var10004[0] = 1.0500001F; - this.n(var10004); + if (this.usingCrossbow) { + this.ignoreOwnShot = true; + mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND); + if (this.shootFirst) { + this.placeAtServerAimLanding(1.0500001F); } else { - this.j(new Object[0]); + this.resetSequence(); } } else { - b.options.useKey.setPressed(true); - b.interactionManager.interactItem(b.player, Hand.MAIN_HAND); - this.G = (Integer)this.d.getValue(); - this.y = RailState.CHARGE_BOW; + mc.options.useKey.setPressed(true); + mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND); + this.delayTicks = this.minCharge.getValue(); + this.state = AutoCartState.CHARGE_BOW; } break; case CHARGE_BOW: - if (!b.options.useKey.isPressed()) { - b.options.useKey.setPressed(true); + if (!mc.options.useKey.isPressed()) { + mc.options.useKey.setPressed(true); } - if (b.player.getItemUseTime() < this.g_int(new Object[]{115336365827434L})) { + if (mc.player.getItemUseTime() < this.getChargeTicks()) { return; } - this.P = 0; - this.y = RailState.RELEASE_BOW; + this.releaseWaitTicks = 0; + this.state = AutoCartState.RELEASE_BOW; break; case RELEASE_BOW: - RenderBatch var72 = Prestige.o.c(new Object[0]); - if (this.V != null && var72 != null && var72.a_boolean________________________________________(new Object[0]) && this.P++ < 10) { - if (!b.options.useKey.isPressed()) { - b.options.useKey.setPressed(true); + Rotation currentRotation = Prestige.silentRotationManager.getActiveRotation(); + if (this.weaponAim != null && currentRotation != null && currentRotation.isClamped() && this.releaseWaitTicks++ < 10) { + if (!mc.options.useKey.isPressed()) { + mc.options.useKey.setPressed(true); } return; } - float var78 = BowItem.getPullProgress(b.player.getItemUseTime()); - RenderBatch var83 = Prestige.o.b_RenderBatch____________(new Object[0]); - float var86 = var83 != null ? var83.a(new Object[0]) : b.player.getYaw(); - float var65 = var83 != null ? var83.b(new Object[0]) : b.player.getPitch(); - this.k(new Object[]{81977082638634L}); - if (b.player.isUsingItem()) { - this.W = true; - b.interactionManager.stopUsingItem(b.player); + float pullProgress = BowItem.getPullProgress(mc.player.getItemUseTime()); + Rotation serverRotation = Prestige.silentRotationManager.getServerRotation(); + float shotYaw = serverRotation != null ? serverRotation.getYaw() : mc.player.getYaw(); + float shotPitch = serverRotation != null ? serverRotation.getPitch() : mc.player.getPitch(); + this.restoreUseKeyState(); + if (mc.player.isUsingItem()) { + this.ignoreOwnShot = true; + mc.interactionManager.stopUsingItem(mc.player); } - if (this.Q) { - Object[] var10006 = new Object[]{null, null, null, 8056340562535L}; - var10006[2] = var65; - var10006[1] = var86; - var10006[0] = var78; - this.m(var10006); + if (this.shootFirst) { + this.placeAtPredictedLanding(pullProgress, shotYaw, shotPitch); } else { - this.j(new Object[0]); + this.resetSequence(); } } } } } else { - this.j(new Object[0]); + this.resetSequence(); } } - private BlockHitResult a_class_3965___(Object[] var1) { - if (this.E && this.D != null) { - this.A = this.D.getX(); - this.B = this.D.getY() + 1; - this.C = this.D.getZ(); - return new BlockHitResult(new Vec3d(this.A + 0.5, this.D.getY() + 1.0, this.C + 0.5), Direction.UP, this.D, false); - } else if (b.crosshairTarget instanceof BlockHitResult var5) { - if (var5.getSide() != Direction.UP) { + private BlockHitResult getRailPlaceHit() { + if (this.useLandingBlock && this.landingBlock != null) { + this.railX = this.landingBlock.getX(); + this.railY = this.landingBlock.getY() + 1; + this.railZ = this.landingBlock.getZ(); + return new BlockHitResult(new Vec3d(this.railX + 0.5, this.landingBlock.getY() + 1.0, this.railZ + 0.5), Direction.UP, this.landingBlock, false); + } else if (mc.crosshairTarget instanceof BlockHitResult crosshairHit) { + if (crosshairHit.getSide() != Direction.UP) { return null; } else { - BlockPos var7 = var5.getBlockPos(); - this.A = var7.getX(); - this.B = var7.getY() + 1; - this.C = var7.getZ(); - return var5; + BlockPos hitPos = crosshairHit.getBlockPos(); + this.railX = hitPos.getX(); + this.railY = hitPos.getY() + 1; + this.railZ = hitPos.getZ(); + return crosshairHit; } } else { return null; @@ -1063,114 +891,79 @@ public class AutoCart extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 587706608428L; - long var6 = var2 ^ 125420266980053L; - long var8 = var2 ^ 51598816251400L; - long var10 = var2 ^ 61766210848858L; - long var12 = var2 ^ 135924364663546L; - long var14 = var2 ^ 101816702374277L; - long var16 = var2 ^ 80128468979861L; - if (b.player != null && b.world != null) { - if ((Boolean)this.m.getValue() && this.y == RailState.IDLE && this.i(new Object[]{var10})) { - TntMinecartEntity var19 = this.T != null ? this.T : this.a_class_1701(new Object[]{var4}); - if (var19 != null) { - Vec3d var20 = PositionUtil.a(new Object[]{var19, var6}).add(0.0, 0.25, 0.0); - Object[] var10005 = new Object[]{null, null, var16}; - var10005[1] = 1.0F; - var10005[0] = var20; - RenderBatch var21 = this.b_RenderBatch(var10005); - if (var21 != null) { - float var10000 = var21.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var8}; - var10003[0] = var10000; - float var22 = Math.abs(WorldUtil.b_float_____________________(var10003)); - if (var22 <= (Float)this.s.getValue()) { - return var21; + public Rotation provideRotation() { + if (mc.player != null && mc.world != null) { + if (this.autoHitPlaced.getValue() && this.state == AutoCartState.IDLE && this.isDrawingBow()) { + TntMinecartEntity targetCart = this.autoHitTarget != null ? this.autoHitTarget : this.findAutoHitCart(); + if (targetCart != null) { + Rotation autoHitAim = this.computeBowAim(PositionUtil.getEntityPos(targetCart).add(0.0, 0.25, 0.0), 1.0F); + if (autoHitAim != null) { + if (Math.abs(RotationUtil.wrapDegrees(autoHitAim.getYaw() - mc.player.getYaw())) <= this.silentAimFov.getValue()) { + return autoHitAim; } } } } - if (this.z == BowMode.BOW - && this.Q - && this.R != null - && (this.y == RailState.USE_WEAPON || this.y == RailState.CHARGE_BOW || this.y == RailState.RELEASE_BOW)) { - float var23 = this.b_float_________(new Object[]{var12}); - RenderBatch var34; - if (var23 > 0.0F) { - Vec3d var10001 = this.R.toCenterPos(); - Object[] var42 = new Object[]{null, null, var16}; - var42[1] = var23; - var42[0] = var10001; - var34 = this.b_RenderBatch(var42); + if (this.ignitionMode == CartIgnitionMode.BOW + && this.shootFirst + && this.shootTarget != null + && (this.state == AutoCartState.USE_WEAPON || this.state == AutoCartState.CHARGE_BOW || this.state == AutoCartState.RELEASE_BOW)) { + float shotPower = this.getShotPower(); + Rotation computedShotAim; + if (shotPower > 0.0F) { + computedShotAim = this.computeBowAim(this.shootTarget.toCenterPos(), shotPower); } else { - var34 = null; + computedShotAim = null; } - RenderBatch var26 = var34; - this.V = var26; - if (var26 != null) { - float var35 = var26.a(new Object[0]) - b.player.getYaw(); - Object[] var39 = new Object[]{null, var8}; - var39[0] = var35; - float var29 = Math.abs(WorldUtil.b_float_____________________(var39)); - if (var29 <= (Float)this.s.getValue()) { - return var26; + Rotation shotAim = computedShotAim; + this.weaponAim = shotAim; + if (shotAim != null) { + if (Math.abs(RotationUtil.wrapDegrees(shotAim.getYaw() - mc.player.getYaw())) <= this.silentAimFov.getValue()) { + return shotAim; } } } - if (this.z == BowMode.BOW - && !this.Q + if (this.ignitionMode == CartIgnitionMode.BOW + && !this.shootFirst && ( - this.y == RailState.SWITCH_SAFE - || this.y == RailState.SWITCH_WEAPON - || this.y == RailState.USE_WEAPON - || this.y == RailState.CHARGE_BOW - || this.y == RailState.RELEASE_BOW + this.state == AutoCartState.SWITCH_SAFE + || this.state == AutoCartState.SWITCH_WEAPON + || this.state == AutoCartState.USE_WEAPON + || this.state == AutoCartState.CHARGE_BOW + || this.state == AutoCartState.RELEASE_BOW )) { - Vec3d var24 = new Vec3d(this.A + 0.5, this.B + 0.5, this.C + 0.5); - float var27 = this.b_float_________(new Object[]{var12}); - RenderBatch var36; - if (var27 > 0.0F) { - Object[] var43 = new Object[]{null, null, var16}; - var43[1] = var27; - var43[0] = var24; - var36 = this.b_RenderBatch(var43); + Vec3d cartCenter = new Vec3d(this.railX + 0.5, this.railY + 0.5, this.railZ + 0.5); + float ignitePower = this.getShotPower(); + Rotation computedIgniteAim; + if (ignitePower > 0.0F) { + computedIgniteAim = this.computeBowAim(cartCenter, ignitePower); } else { - var36 = null; + computedIgniteAim = null; } - RenderBatch var30 = var36; - this.V = var30; - if (var30 != null) { - float var37 = var30.a(new Object[0]) - b.player.getYaw(); - Object[] var40 = new Object[]{null, var8}; - var40[0] = var37; - float var32 = Math.abs(WorldUtil.b_float_____________________(var40)); - if (var32 <= (Float)this.s.getValue()) { - return var30; + Rotation igniteAim = computedIgniteAim; + this.weaponAim = igniteAim; + if (igniteAim != null) { + if (Math.abs(RotationUtil.wrapDegrees(igniteAim.getYaw() - mc.player.getYaw())) <= this.silentAimFov.getValue()) { + return igniteAim; } } } - if ((Boolean)this.r.getValue() - && ((String)this.k.getValue()).equals("Trajectory") - && this.E - && this.D != null - && (this.y == RailState.SWITCH_RAIL || this.y == RailState.SWITCH_CART)) { - BlockPos var25 = this.D.up(); - Vec3d var28 = new Vec3d(var25.getX() + 0.5, var25.getY() + 0.5, var25.getZ() + 0.5); - RenderBatch var31 = Prestige.o.a_RenderBatch(new Object[]{var28, var14}); - if (var31 != null) { - float var38 = var31.a(new Object[0]) - b.player.getYaw(); - Object[] var41 = new Object[]{null, var8}; - var41[0] = var38; - float var33 = Math.abs(WorldUtil.b_float_____________________(var41)); - if (var33 <= (Float)this.s.getValue()) { - return var31; + if (this.silentAim.getValue() + && this.placeMode.getValue().equals("Trajectory") + && this.useLandingBlock + && this.landingBlock != null + && (this.state == AutoCartState.SWITCH_RAIL || this.state == AutoCartState.SWITCH_CART)) { + BlockPos railPos = this.landingBlock.up(); + Vec3d railCenter = new Vec3d(railPos.getX() + 0.5, railPos.getY() + 0.5, railPos.getZ() + 0.5); + Rotation railAim = Prestige.silentRotationManager.getRotationTowards(railCenter); + if (railAim != null) { + if (Math.abs(RotationUtil.wrapDegrees(railAim.getYaw() - mc.player.getYaw())) <= this.silentAimFov.getValue()) { + return railAim; } } } @@ -1182,144 +975,50 @@ public class AutoCart extends Module implements RenderContract3 { } @Subscribe - public void a(TickEvent27 var1) { - if ((Boolean)this.t.getValue()) { - if (((String)this.k.getValue()).equals("Trajectory")) { - if (b.player != null && b.world != null) { - if (this.k_boolean(new Object[]{8654805801796L})) { - RenderBatch var15 = Prestige.o.b_RenderBatch____________(new Object[0]); - float var16 = var15 != null ? var15.a(new Object[0]) : b.player.getYaw(); - float var17 = var15 != null ? var15.b(new Object[0]) : b.player.getPitch(); - ItemStack var19 = b.player.getMainHandStack(); - float var18; - if (var19.getItem() == Items.BOW) { - if (!b.player.isUsingItem()) { + public void onRender3D(Render3DEvent event) { + if (this.renderPath.getValue()) { + if (this.placeMode.getValue().equals("Trajectory")) { + if (mc.player != null && mc.world != null) { + if (this.isHoldingBowOrCrossbow()) { + Rotation serverRotation = Prestige.silentRotationManager.getServerRotation(); + float yaw = serverRotation != null ? serverRotation.getYaw() : mc.player.getYaw(); + float pitch = serverRotation != null ? serverRotation.getPitch() : mc.player.getPitch(); + ItemStack heldStack = mc.player.getMainHandStack(); + float power; + if (heldStack.getItem() == Items.BOW) { + if (!mc.player.isUsingItem()) { return; } - var18 = BowItem.getPullProgress(b.player.getItemUseTime()); - if (var18 < 0.05F) { + power = BowItem.getPullProgress(mc.player.getItemUseTime()); + if (power < 0.05F) { return; } } else { - if (!this.e_boolean_(new Object[]{var19, 7371155366939L})) { + if (!this.isChargedCrossbow(heldStack)) { return; } - var18 = 1.0500001F; + power = 1.0500001F; } - Object[] var10006 = new Object[]{null, null, null, 88589708016684L}; - var10006[2] = var18; - var10006[1] = var17; - var10006[0] = var16; - BlockPos var20 = this.a_class_2338_(var10006); - if (var20 != null) { - BlockPos var21 = var20.up(); - float var22 = var21.getX(); - float var23 = var21.getY(); - float var24 = var21.getZ(); - float var25 = var22 + 1.0F; - float var26 = var23 + 1.0F; - float var27 = var24 + 1.0F; - Color var28 = (Color)this.u.getValue(); - Color var29 = new Color(var28.getRed(), var28.getGreen(), var28.getBlue(), Math.min(255, var28.getAlpha() + 100)); - MatrixCameraData var10000 = var1.b; - RenderHelper8 var10001 = var1.a; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var28, 108390846498585L}; - var10011[7] = var27; - var10011[6] = var26; - var10011[5] = var25; - var10011[4] = var24; - var10011[3] = var23; - var10011[2] = var22; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.h(var10011); - var10000 = var1.b; - var10001 = var1.a; - var10011 = new Object[]{null, null, null, null, null, null, null, null, var29, 119015971454350L}; - var10011[7] = var27; - var10011[6] = var26; - var10011[5] = var25; - var10011[4] = var24; - var10011[3] = var23; - var10011[2] = var22; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); + BlockPos landing = this.predictArrowLanding(yaw, pitch, power); + if (landing != null) { + BlockPos railPos = landing.up(); + float minX = railPos.getX(); + float minY = railPos.getY(); + float minZ = railPos.getZ(); + float maxX = minX + 1.0F; + float maxY = minY + 1.0F; + float maxZ = minZ + 1.0F; + Color fillColor = this.renderColor.getValue(); + Color outlineColor = new Color(fillColor.getRed(), fillColor.getGreen(), fillColor.getBlue(), Math.min(255, fillColor.getAlpha() + 100)); + ShapeRenderer.drawFilledBox(event.context, event.renderer, minX, minY, minZ, maxX, maxY, maxZ, fillColor); + ShapeRenderer.drawBoxOutline(event.context, event.renderer, minX, minY, minZ, maxX, maxY, maxZ, outlineColor); } } } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoCrystal.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoCrystal.java index 80c48d8..5908b0e 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoCrystal.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoCrystal.java @@ -7,25 +7,21 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.data.FloatData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent5; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.data.QueuedCrystalAttack; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.inventory.InventoryUtil3; -import dev.zprestige.prestige.math.AutoCrystalHelper; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.inventory.DeathLootDetector; +import dev.zprestige.prestige.math.AutoCrystalRenderer; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.type.EventPhase; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayDeque; import java.util.Optional; import java.util.Set; @@ -46,300 +42,229 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; public class AutoCrystal extends Module { - public static boolean a = false; - private BoolSetting d; - private BoolSetting c; - private BoolSetting e; - private RangeSetting f; - private BoolSetting g; - private BoolSetting h; - public BoolSetting i; - public ColorSetting j; - private BoolSetting k; - private RenderHelper27 l = new RenderHelper27(26293358099357L); - private BlockPos m = null; - private ArrayDeque n = new ArrayDeque(); - private boolean o; - private float p = 0.0F; - private AutoCrystalHelper q = new AutoCrystalHelper(this, 108339993044693L); - private boolean r = false; - private int s = 0; - private static final int t = 20; - private static final boolean u = false; - private static final boolean v = true; - private static final boolean w = true; - private static final boolean x = true; - private static final float y = 0.0F; - private static final float z = 200.0F; + public static boolean active = false; + private BoolSetting inAir; + private BoolSetting damageTick; + private BoolSetting pauseOnKill; + private RangeSetting delay; + private BoolSetting autoSwitch; + private BoolSetting headBob; + public BoolSetting render; + public ColorSetting color; + private BoolSetting alwaysBreakLast; + private StopWatch delayTimer = new StopWatch(); + private BlockPos lastPlacePos = null; + private ArrayDeque queuedAttacks = new ArrayDeque(); + private boolean wasSprinting; + private float lastCrystalDamage = 0.0F; + private AutoCrystalRenderer crystalRenderer = new AutoCrystalRenderer(this); + private boolean pendingDisable = false; + private int pendingDisableTicks = 0; public AutoCrystal() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.j.setVisibility_ColorSetting(new Object[]{(Predicate)lpL221_0 -> (Boolean)this.i.getValue(), 119980880492450L}); + this.color.visibleWhen((Predicate)ignored -> this.render.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 29562578854912L; - long var6 = var2 ^ 116279078700412L; - a = true; - this.r = false; - this.s = 0; - this.q.b(new Object[]{var6}); - Prestige.eventBus.register(new Object[]{this.q, var4}); + public void onEnable() { + active = true; + this.pendingDisable = false; + this.pendingDisableTicks = 0; + this.crystalRenderer.reset(); + Prestige.eventBus.register(this.crystalRenderer); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 138449290691138L; - long var6 = var2 ^ 55259996380959L; - a = false; - this.r = false; - this.n.clear(); - this.o = false; - Prestige.eventBus.unregister(new Object[]{this.q, var4}); - this.q.b(new Object[]{var6}); - this.m = null; + public void onDisable() { + active = false; + this.pendingDisable = false; + this.queuedAttacks.clear(); + this.wasSprinting = false; + Prestige.eventBus.unregister(this.crystalRenderer); + this.crystalRenderer.reset(); + this.lastPlacePos = null; } @Override - public void toggle(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 0L; - long var6 = var2 ^ 26233901175331L; + public void toggle() { if (this.isEnabled()) { - if (!this.r && (Boolean)this.k.getValue() && this.a(new Object[]{var6}) != null) { - this.r = true; - this.s = 0; + if (!this.pendingDisable && this.alwaysBreakLast.getValue() && this.getCrosshairCrystal() != null) { + this.pendingDisable = true; + this.pendingDisableTicks = 0; return; } - this.r = false; + this.pendingDisable = false; } - super.toggle(new Object[]{var4}); + super.toggle(); } - private Entity a(Object[] var1) { - if (b.crosshairTarget != null && b.crosshairTarget.getType() == Type.ENTITY) { - Entity var5 = ((EntityHitResult)b.crosshairTarget).getEntity(); - if (!(var5 instanceof EndCrystalEntity) && !(var5 instanceof SlimeEntity) && !(var5 instanceof MagmaCubeEntity)) { + private Entity getCrosshairCrystal() { + if (mc.crosshairTarget != null && mc.crosshairTarget.getType() == Type.ENTITY) { + Entity entity = ((EntityHitResult)mc.crosshairTarget).getEntity(); + if (!(entity instanceof EndCrystalEntity) && !(entity instanceof SlimeEntity) && !(entity instanceof MagmaCubeEntity)) { return null; } else { - return !var5.isAlive() ? null : var5; + return !entity.isAlive() ? null : entity; } } else { return null; } } - private void j(Object[] var1) { - FloatEvent2 var2 = (FloatEvent2)var1[0]; - long var3 = (Long)var1[1]; - var3 = 14307627693533L ^ var3; - long var5 = var3 ^ 68331528291220L; - long var7 = var3 ^ 12760787266702L; - long var9 = var3 ^ 31091610975917L; - if (var2.a_EventPhase(new Object[0]) != EventPhase.POST) { - Entity var12 = this.a(new Object[]{var9}); - if (var12 == null || ++this.s > 20) { - this.r = false; - super.toggle(new Object[]{var7}); - } else if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem() && !Prestige.o.d_boolean______(new Object[0])) { - var2.a_void_____(new Object[0]); - float var10002 = var2.a(new Object[0]); - float var10003 = var2.b_float__(new Object[0]); - Object[] var10006 = new Object[]{null, null, null, var5}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var12; - this.k(var10006); - this.m = null; - this.q.a(new Object[]{var12.getBlockPos().down()}); + private void breakLastCrystal(SendMovementPacketsEvent event) { + if (event.getPhase() != EventPhase.POST) { + Entity crystal = this.getCrosshairCrystal(); + if (crystal == null || ++this.pendingDisableTicks > 20) { + this.pendingDisable = false; + super.toggle(); + } else if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem() && !Prestige.silentRotationManager.hasActedThisTick()) { + event.cancel(); + this.attackCrystal(crystal, event.getYaw(), event.getPitch()); + this.lastPlacePos = null; + this.crystalRenderer.setTargetPos(crystal.getBlockPos().down()); } } } @Subscribe - public void a(TickEvent5 var1) { - if (this.getKey(new Object[]{13012393635966L}) == 9998 && b.player.getMainHandStack().getItem().equals(Items.END_CRYSTAL)) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (this.getKey() == 9998 && mc.player.getMainHandStack().getItem().equals(Items.END_CRYSTAL)) { + event.cancel(); } } - private void k(Object[] var1) { - Entity var5 = (Entity)var1[0]; - float var6 = (Float)var1[1]; - float var2 = (Float)var1[2]; - long var3 = (Long)var1[3]; - var3 = 14307627693533L ^ var3; - long var7 = var3 ^ 84218717352013L; - if (this.o) { - if (this.n.size() < 4 && this.n.stream().noneMatch(lpL220_0 -> ((dev.zprestige.prestige.data.FloatData)lpL220_0).ag() == var5)) { - this.n.add(new FloatData(var5, var6, var2)); + private void attackCrystal(Entity crystal, float yaw, float pitch) { + if (this.wasSprinting) { + if (this.queuedAttacks.size() < 4 && this.queuedAttacks.stream().noneMatch(queuedAttack -> ((dev.zprestige.prestige.data.QueuedCrystalAttack)queuedAttack).entity() == crystal)) { + this.queuedAttacks.add(new QueuedCrystalAttack(crystal, yaw, pitch)); } } else { - InventoryUtil2.a_void_________(new Object[]{var5, var7}); + PlayerInteractions.attackEntity(crystal); } } @Subscribe - public void a(TickEvent19 var1) { - if (!this.n.isEmpty()) { - if (!Prestige.o.d_boolean______(new Object[0])) { - FloatData var7 = (FloatData)this.n.poll(); - if (var7 != null && var7.ag().isAlive()) { - Vec3d var8 = b.player.getEyePos(); - Box var9 = var7.ag().getBoundingBox().expand(0.1); - Vec3d var10 = Vec3d.fromPolar(var7.ai(), var7.ah()); - Optional var11 = var9.raycast(var8, var8.add(var10.multiply(3.0))); - if (!var11.isEmpty() && !(var8.distanceTo((Vec3d)var11.get()) > 2.9)) { - InventoryUtil2.a_void_________(new Object[]{var7.ag(), 31382773185830L}); + public void onClientTick(ClientTickEvent event) { + if (!this.queuedAttacks.isEmpty()) { + if (!Prestige.silentRotationManager.hasActedThisTick()) { + QueuedCrystalAttack attack = (QueuedCrystalAttack)this.queuedAttacks.poll(); + if (attack != null && attack.entity().isAlive()) { + Vec3d eyePos = mc.player.getEyePos(); + Optional hitPoint = attack.entity().getBoundingBox().expand(0.1).raycast(eyePos, eyePos.add(Vec3d.fromPolar(attack.pitch(), attack.yaw()).multiply(3.0))); + if (!hitPoint.isEmpty() && !(eyePos.distanceTo((Vec3d)hitPoint.get()) > 2.9)) { + PlayerInteractions.attackEntity(attack.entity()); } } } } } - private static Vec3d a_class_243_____(Object[] var0) { - Box var1 = (Box)var0[0]; - Vec3d var4 = (Vec3d)var0[1]; - Event.b(); - double var6 = MathHelper.clamp(var4.x, var1.minX, var1.maxX); - double var8 = MathHelper.clamp(var4.y, var1.minY, var1.maxY); - double var10 = MathHelper.clamp(var4.z, var1.minZ, var1.maxZ); - Vec3d var12 = new Vec3d(var6, var8, var10); - return var12.equals(var4) ? var1.getCenter() : var12; + private static Vec3d getClosestPoint(Box box, Vec3d point) { + Vec3d clamped = new Vec3d(MathHelper.clamp(point.x, box.minX, box.maxX), MathHelper.clamp(point.y, box.minY, box.maxY), MathHelper.clamp(point.z, box.minZ, box.maxZ)); + return clamped.equals(point) ? box.getCenter() : clamped; } @Subscribe - public void k(FloatEvent2 var1) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.POST) { - this.o = b.player != null && b.player.isSprinting(); - } else if (this.r) { - this.j(new Object[]{var1, 121185753861887L}); + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (event.getPhase() == EventPhase.POST) { + this.wasSprinting = mc.player != null && mc.player.isSprinting(); + } else if (this.pendingDisable) { + this.breakLastCrystal(event); } else { - if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem() && (b.player.isOnGround() || (Boolean)this.d.getValue())) { - RenderHelper27 var10000 = this.l; - float var10001 = (Float)this.f.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004) && !AutoHitCrystal.a && !AutoObbyCrystal.R && var1.a_EventPhase(new Object[0]) != EventPhase.POST) { - if (Prestige.o.d_boolean______(new Object[0])) { + if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem() && (mc.player.isOnGround() || this.inAir.getValue())) { + if (this.delayTimer.hasElapsed(this.delay.getValue()) && !AutoHitCrystal.active && !AutoObbyCrystal.sequenceActive && event.getPhase() != EventPhase.POST) { + if (Prestige.silentRotationManager.hasActedThisTick()) { return; } - if (b.crosshairTarget == null) { + if (mc.crosshairTarget == null) { return; } - var1.a_void_____(new Object[0]); - if (!InventoryUtil.l(new Object[]{Items.END_CRYSTAL, 65539821781598L})) { - if ((Boolean)this.g.getValue()) { - Integer var67 = InventoryUtil.a_Integer(new Object[]{Items.END_CRYSTAL, 64376993919254L}); - if (var67 == null) { + event.cancel(); + if (!InventoryUtil.isHolding(Items.END_CRYSTAL)) { + if (this.autoSwitch.getValue()) { + Integer crystalSlot = InventoryUtil.findHotbarSlot(Items.END_CRYSTAL); + if (crystalSlot == null) { return; } - int var71 = var67; - Object[] var76 = new Object[]{null, 37392877673079L}; - var76[0] = var71; - InventoryUtil.a_void________(var76); - this.l.a_void_____________________(new Object[]{93540861878173L}); + InventoryUtil.selectSlot(crystalSlot); + this.delayTimer.reset(); return; } return; } - if (!this.l.b(new Object[]{this.f, 89714527855213L})) { + if (!this.delayTimer.hasElapsedRandom(this.delay)) { return; } - this.l(new Object[]{125280375797500L}); - PlayerEntity var45 = CombatUtil.a_class_1657(new Object[]{16945855905304L}); - boolean var46 = this.a_boolean____________(new Object[]{var45, 60785806299468L}); - if (var46) { - if (b.crosshairTarget.getType() == Type.ENTITY) { - EntityHitResult var47 = (EntityHitResult)b.crosshairTarget; - if (var47.getEntity() instanceof EndCrystalEntity - || var47.getEntity() instanceof SlimeEntity - || var47.getEntity() instanceof MagmaCubeEntity) { - if ((Boolean)this.e.getValue() && InventoryUtil3.a(new Object[]{var47.getEntity().getBlockPos(), 64853648109405L})) { + this.resetDelay(); + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (this.passesDamageTick(enemy)) { + if (mc.crosshairTarget.getType() == Type.ENTITY) { + EntityHitResult entityHit = (EntityHitResult)mc.crosshairTarget; + if (entityHit.getEntity() instanceof EndCrystalEntity + || entityHit.getEntity() instanceof SlimeEntity + || entityHit.getEntity() instanceof MagmaCubeEntity) { + if (this.pauseOnKill.getValue() && DeathLootDetector.isLootNearby(entityHit.getEntity().getBlockPos())) { return; } - Entity var72 = var47.getEntity(); - float var10002 = var1.a(new Object[0]); - float var10003 = var1.b_float__(new Object[0]); - Object[] var10006 = new Object[]{null, null, null, 102328345032886L}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var72; - this.k(var10006); - if (var45 != null) { - this.p = (float)Prestige.f - .a(new Object[]{var45, PositionUtil.a(new Object[]{var47.getEntity(), 67736483458412L}), 81281073066560L}); + this.attackCrystal(entityHit.getEntity(), event.getYaw(), event.getPitch()); + if (enemy != null) { + this.lastCrystalDamage = (float)Prestige.damageCalculator + .getCrystalDamage(enemy, PositionUtil.getEntityPos(entityHit.getEntity())); } - this.m = null; - this.q.a(new Object[]{var47.getEntity().getBlockPos().down()}); + this.lastPlacePos = null; + this.crystalRenderer.setTargetPos(entityHit.getEntity().getBlockPos().down()); } - } else if ((Boolean)this.h.getValue()) { - BlockPos var68 = this.m; - if (var68 == null && b.crosshairTarget.getType() == Type.BLOCK) { - var68 = ((BlockHitResult)b.crosshairTarget).getBlockPos(); + } else if (this.headBob.getValue()) { + BlockPos basePos = this.lastPlacePos; + if (basePos == null && mc.crosshairTarget.getType() == Type.BLOCK) { + basePos = ((BlockHitResult)mc.crosshairTarget).getBlockPos(); } - if (var68 == null) { + if (basePos == null) { return; } - for (Entity var49 : b.world.getEntities()) { - if (var49 instanceof EndCrystalEntity) { - Vec3d var50 = PositionUtil.a(new Object[]{var49, 67736483458412L}); - if (var50.distanceTo(var68.up().toCenterPos()) < 1.0) { - Box var51 = var49.getBoundingBox(); - Vec3d var52 = b.player.getEyePos(); - double var53 = Math.max(var51.minX - var52.x, Math.max(0.0, var52.x - var51.maxX)); - double var55 = Math.max(var51.minY - var52.y, Math.max(0.0, var52.y - var51.maxY)); - double var57 = Math.max(var51.minZ - var52.z, Math.max(0.0, var52.z - var51.maxZ)); - double var59 = Math.sqrt(var53 * var53 + var55 * var55 + var57 * var57); - if (var59 <= 2.7F - && (!(Boolean)this.e.getValue() || !InventoryUtil3.a(new Object[]{var49.getBlockPos(), 64853648109405L}))) { - Vec3d var61 = a_class_243_____(new Object[]{var51, var52, 19656243019732L}); - Vec3d var62 = var61.add(var51.getCenter().subtract(var61).multiply(0.3)); - float var70 = (float)var62.x; - var10001 = (float)var62.y; - float var74 = (float)var62.z; - Object[] var10005 = new Object[]{null, null, null, 5229932684601L}; - var10005[2] = var74; - var10005[1] = var10001; - var10005[0] = var70; - RenderBatch var63 = WorldUtil.b_RenderBatch_____________(var10005); - float var64 = MathHelper.clamp(var63.b(new Object[0]), -89.9F, 89.9F); - Vec3d var65 = Vec3d.fromPolar(var64, var1.a(new Object[0])); - Optional var66 = var51.expand(0.1).raycast(var52, var52.add(var65.multiply(3.0))); - if (!var66.isEmpty() && !(var52.distanceTo((Vec3d)var66.get()) > 2.9)) { - var1.c(new Object[]{var64}); - var74 = var1.a(new Object[0]); - Object[] var77 = new Object[]{null, null, null, 102328345032886L}; - var77[2] = var64; - var77[1] = var74; - var77[0] = var49; - this.k(var77); - if (var45 != null) { - this.p = (float)Prestige.f.a(new Object[]{var45, var50, 81281073066560L}); + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EndCrystalEntity) { + Vec3d crystalPos = PositionUtil.getEntityPos(entity); + if (crystalPos.distanceTo(basePos.up().toCenterPos()) < 1.0) { + Box box = entity.getBoundingBox(); + Vec3d eyePos = mc.player.getEyePos(); + double dx = Math.max(box.minX - eyePos.x, Math.max(0.0, eyePos.x - box.maxX)); + double dy = Math.max(box.minY - eyePos.y, Math.max(0.0, eyePos.y - box.maxY)); + double dz = Math.max(box.minZ - eyePos.z, Math.max(0.0, eyePos.z - box.maxZ)); + if (Math.sqrt(dx * dx + dy * dy + dz * dz) <= 2.7F + && (!this.pauseOnKill.getValue() || !DeathLootDetector.isLootNearby(entity.getBlockPos()))) { + Vec3d closestPoint = getClosestPoint(box, eyePos); + Vec3d aimPoint = closestPoint.add(box.getCenter().subtract(closestPoint).multiply(0.3)); + float pitch = MathHelper.clamp(RotationUtil.getRotationToPoint((float)aimPoint.x, (float)aimPoint.y, (float)aimPoint.z).getPitch(), -89.9F, 89.9F); + Vec3d lookVec = Vec3d.fromPolar(pitch, event.getYaw()); + Optional hitPoint = box.expand(0.1).raycast(eyePos, eyePos.add(lookVec.multiply(3.0))); + if (!hitPoint.isEmpty() && !(eyePos.distanceTo((Vec3d)hitPoint.get()) > 2.9)) { + event.setPitch(pitch); + this.attackCrystal(entity, event.getYaw(), pitch); + if (enemy != null) { + this.lastCrystalDamage = (float)Prestige.damageCalculator.getCrystalDamage(enemy, crystalPos); } - this.m = null; - this.q.a(new Object[]{var49.getBlockPos().down()}); + this.lastPlacePos = null; + this.crystalRenderer.setTargetPos(entity.getBlockPos().down()); return; } } @@ -349,25 +274,25 @@ public class AutoCrystal extends Module { } } - if (b.crosshairTarget.getType() == Type.BLOCK) { - BlockHitResult var69 = (BlockHitResult)b.crosshairTarget; - if (!WorldUtil2.k(new Object[]{var69.getBlockPos(), Blocks.BEDROCK, 137239425566158L}) - && !WorldUtil2.k(new Object[]{var69.getBlockPos(), Blocks.OBSIDIAN, 137239425566158L})) { + if (mc.crosshairTarget.getType() == Type.BLOCK) { + BlockHitResult blockHit = (BlockHitResult)mc.crosshairTarget; + if (!BlockUtil.isBlock(blockHit.getBlockPos(), Blocks.BEDROCK) + && !BlockUtil.isBlock(blockHit.getBlockPos(), Blocks.OBSIDIAN)) { return; } - if (WorldUtil2.g(new Object[]{var69.getBlockPos().up(), 87119771691358L}) - || !WorldUtil2.f(new Object[]{var69.getBlockPos(), 42392007623963L})) { + if (BlockUtil.hasEntityAt(blockHit.getBlockPos().up()) + || !BlockUtil.canPlaceCrystal(blockHit.getBlockPos())) { return; } - if (!InventoryUtil.l(new Object[]{Items.END_CRYSTAL, 65539821781598L})) { + if (!InventoryUtil.isHolding(Items.END_CRYSTAL)) { return; } - InventoryUtil2.a(new Object[]{var69, 96519249476482L}); - this.m = var69.getBlockPos(); - this.q.a(new Object[]{var69.getBlockPos()}); + PlayerInteractions.interactBlock(blockHit); + this.lastPlacePos = blockHit.getBlockPos(); + this.crystalRenderer.setTargetPos(blockHit.getBlockPos()); } return; @@ -376,105 +301,27 @@ public class AutoCrystal extends Module { } } - private void l(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 14307627693533L ^ var2; - long var4 = var2 ^ 46048232021180L; - long var6 = var2 ^ 86968348659136L; - this.f.reroll(new Object[]{var6}); - this.l.a_void_____________________(new Object[]{var4}); + private void resetDelay() { + this.delay.reroll(); + this.delayTimer.reset(); } - private boolean a_boolean____________(Object[] var1) { - PlayerEntity var2 = (PlayerEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 14307627693533L ^ var3; - long var5 = var3 ^ 8592828418557L; - long var7 = var3 ^ 127161969678033L; - if ((Boolean)this.c.getValue() && var2 != null) { - if (var2.hurtTime == 0) { - this.p = 0.0F; + private boolean passesDamageTick(PlayerEntity target) { + if (this.damageTick.getValue() && target != null) { + if (target.hurtTime == 0) { + this.lastCrystalDamage = 0.0F; } - Vec3d var10 = Vec3d.ZERO; - if (b.crosshairTarget instanceof BlockHitResult) { - var10 = b.crosshairTarget.getPos().add(0.0, 1.0, 0.0); - } else if (b.crosshairTarget instanceof EntityHitResult) { - var10 = PositionUtil.a(new Object[]{((EntityHitResult)b.crosshairTarget).getEntity(), var5}); + Vec3d crystalPos = Vec3d.ZERO; + if (mc.crosshairTarget instanceof BlockHitResult) { + crystalPos = mc.crosshairTarget.getPos().add(0.0, 1.0, 0.0); + } else if (mc.crosshairTarget instanceof EntityHitResult) { + crystalPos = PositionUtil.getEntityPos(((EntityHitResult)mc.crosshairTarget).getEntity()); } - float var11 = (float)Prestige.f.a(new Object[]{var2, var10, var7}); - return !(var11 < this.p); + return !(((float)Prestige.damageCalculator.getCrystalDamage(target, crystalPos)) < this.lastCrystalDamage); } else { return true; } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoDrain.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoDrain.java index 7e4ebe1..5e9407d 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoDrain.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoDrain.java @@ -9,21 +9,17 @@ import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.Renderer2D; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; import java.util.ArrayList; import java.util.Set; import java.util.function.Predicate; @@ -45,117 +41,99 @@ import net.minecraft.world.RaycastContext; import net.minecraft.world.RaycastContext.FluidHandling; import net.minecraft.world.RaycastContext.ShapeType; -public class AutoDrain extends Module implements RenderContract3 { - private EnumSetting a; - private MultiSetting c; - private RangeSetting d; - private EnumSetting e; - private BoolSetting f; - private BoolSetting g; - private BoolSetting h; - private FloatSetting i; - private ArrayList j = new ArrayList(); - private ArrayList k = new ArrayList(); - private int l = -1; - private boolean m = false; - private RenderHelper27 n = new RenderHelper27(26293358099357L); +public class AutoDrain extends Module implements RotationProvider { + private EnumSetting mode; + private MultiSetting liquid; + private RangeSetting delay; + private EnumSetting swap; + private BoolSetting fallbackToCobweb; + private BoolSetting interact; + private BoolSetting swapBack; + private FloatSetting silentAimFov; + private ArrayList ownPlacedLiquids = new ArrayList(); + private ArrayList drainedPositions = new ArrayList(); + private int previousSlot = -1; + private boolean awaitingSwapBack = false; + private StopWatch actionTimer = new StopWatch(); public AutoDrain() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.h - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL225_0 -> ((String)this.e.getValue()).equals("Normal") && (Boolean)this.g.getValue(), 73196168581295L} + this.swapBack + .visibleWhen( + (Predicate)ignored -> this.swap.getValue().equals("Normal") && this.interact.getValue() ); - this.i.setVisibility_FloatSetting(new Object[]{(Predicate)lpL224_0 -> ((String)this.a.getValue()).equals("Silent Aim"), 35046756052036L}); + this.silentAimFov.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Silent Aim")); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 45286455980699L; - long var6 = var2 ^ 91082959635357L; - this.l = -1; - this.m = false; - this.n.a_void_____________________(new Object[]{var4}); - Prestige.o.e(new Object[]{this, var6}); + public void onEnable() { + this.previousSlot = -1; + this.awaitingSwapBack = false; + this.actionTimer.reset(); + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 82893747353842L; - long var6 = var2 ^ 140372736859409L; - long var8 = var2 ^ 6195065515282L; - if ((Boolean)this.h.getValue() && this.l != -1) { - if (Prestige.o.d_boolean______(new Object[0])) { - Renderer2D var10000 = Prestige.o; - int var10001 = this.l; - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - var10000.i(var10004); + public void onDisable() { + if (this.swapBack.getValue() && this.previousSlot != -1) { + if (Prestige.silentRotationManager.hasActedThisTick()) { + Prestige.silentRotationManager.scheduleSlotSwitch(this.previousSlot); } else { - int var10 = this.l; - Object[] var10003 = new Object[]{null, var8}; - var10003[0] = var10; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(this.previousSlot); } - this.l = -1; + this.previousSlot = -1; } - this.k.clear(); - this.m = false; - Prestige.o.f(new Object[]{this, var6}); + this.drainedPositions.clear(); + this.awaitingSwapBack = false; + Prestige.silentRotationManager.removeRotationProvider(this); } @Subscribe - public void a(TickEvent3 var1) { - this.j.clear(); - this.k.clear(); - this.l = -1; - this.m = false; + public void onGameJoin(GameJoinEvent event) { + this.ownPlacedLiquids.clear(); + this.drainedPositions.clear(); + this.previousSlot = -1; + this.awaitingSwapBack = false; } @Subscribe - public void a(TickEvent19 var1) { - this.j.removeIf(lpL223_0 -> !this.g(new Object[]{b.world.getBlockState(((net.minecraft.util.math.BlockPos)lpL223_0)).getBlock(), 12889581833764L})); - Event.b(); - this.k.removeIf(lpL222_0 -> !this.g(new Object[]{b.world.getBlockState(((net.minecraft.util.math.BlockPos)lpL222_0)).getBlock(), 12889581833764L})); - if (((String)this.a.getValue()).equals("Legit")) { - if (!b.player.isUsingItem()) { - if (!Prestige.o.d_boolean______(new Object[0])) { - if (this.m && this.l != -1) { - if (this.n.b(new Object[]{this.d, 89714527855213L})) { - if ((Boolean)this.h.getValue() && (Boolean)this.g.getValue()) { - int var10000 = this.l; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + public void onClientTick(ClientTickEvent event) { + this.ownPlacedLiquids.removeIf(pos -> !this.isLiquid(mc.world.getBlockState(((net.minecraft.util.math.BlockPos)pos)).getBlock())); + this.drainedPositions.removeIf(pos -> !this.isLiquid(mc.world.getBlockState(((net.minecraft.util.math.BlockPos)pos)).getBlock())); + if (this.mode.getValue().equals("Legit")) { + if (!mc.player.isUsingItem()) { + if (!Prestige.silentRotationManager.hasActedThisTick()) { + if (this.awaitingSwapBack && this.previousSlot != -1) { + if (this.actionTimer.hasElapsedRandom(this.delay)) { + if (this.swapBack.getValue() && this.interact.getValue()) { + InventoryUtil.selectSlot(this.previousSlot); } - this.l = -1; - this.m = false; - this.n.a_void_____________________(new Object[]{93540861878173L}); - this.d.reroll(new Object[]{57083216809697L}); + this.previousSlot = -1; + this.awaitingSwapBack = false; + this.actionTimer.reset(); + this.delay.reroll(); } - } else if (this.n.b(new Object[]{this.d, 89714527855213L})) { - if (InventoryUtil.a_Integer(new Object[]{Items.BUCKET, 64376993919254L}) != null - || (Boolean)this.f.getValue() && InventoryUtil.a_Integer(new Object[]{Items.COBWEB, 64376993919254L}) != null) { - PlayerEntity var27 = CombatUtil.a_class_1657(new Object[]{16945855905304L}); - if (var27 != null - && !(PositionUtil.a(new Object[]{var27, 67736483458412L}).distanceTo(PositionUtil.b(new Object[]{118247215910525L})) > 10.0)) { - BlockHitResult var28 = this.a_class_3965____(new Object[]{25296333506079L}); - if (var28 != null) { - BlockPos var29 = var28.getBlockPos(); - if (this.e(new Object[]{var29, 3019936591966L})) { - if (this.a_boolean_____________(new Object[]{var29, var28, 43510323930796L})) { - this.n.a_void_____________________(new Object[]{93540861878173L}); - this.d.reroll(new Object[]{57083216809697L}); + } else if (this.actionTimer.hasElapsedRandom(this.delay)) { + if (InventoryUtil.findHotbarSlot(Items.BUCKET) != null + || this.fallbackToCobweb.getValue() && InventoryUtil.findHotbarSlot(Items.COBWEB) != null) { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null + && !(PositionUtil.getEntityPos(enemy).distanceTo(PositionUtil.getPlayerPos()) > 10.0)) { + BlockHitResult hitResult = this.raycastCrosshairLiquid(); + if (hitResult != null) { + BlockPos liquidPos = hitResult.getBlockPos(); + if (this.isDrainable(liquidPos)) { + if (this.tryDrain(liquidPos, hitResult)) { + this.actionTimer.reset(); + this.delay.reroll(); } } } @@ -168,83 +146,65 @@ public class AutoDrain extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 116785209433731L; - long var6 = var2 ^ 114452390742293L; - long var8 = var2 ^ 29247161167908L; - long var10 = var2 ^ 128670251638447L; - long var12 = var2 ^ 125420266980053L; - long var14 = var2 ^ 33065978990036L; - long var16 = var2 ^ 120434008667598L; - long var18 = var2 ^ 136752692109656L; - long var20 = var2 ^ 101816702374277L; - long var22 = var2 ^ 102846228487495L; - long var24 = var2 ^ 71343916077473L; - long var26 = var2 ^ 39587186614724L; - if (Prestige.o.d_boolean______(new Object[0])) { + public Rotation provideRotation() { + if (Prestige.silentRotationManager.hasActedThisTick()) { return null; - } else if (!((String)this.a.getValue()).equalsIgnoreCase("Silent Aim")) { + } else if (!this.mode.getValue().equalsIgnoreCase("Silent Aim")) { return null; - } else if (b.player.isUsingItem()) { + } else if (mc.player.isUsingItem()) { return null; - } else if (this.m && this.l != -1) { - if (!this.n.b(new Object[]{this.d, var14})) { + } else if (this.awaitingSwapBack && this.previousSlot != -1) { + if (!this.actionTimer.hasElapsedRandom(this.delay)) { return null; } else { - if ((Boolean)this.h.getValue() && (Boolean)this.g.getValue()) { - int var10000 = this.l; - Object[] var10003 = new Object[]{null, var16}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + if (this.swapBack.getValue() && this.interact.getValue()) { + InventoryUtil.selectSlot(this.previousSlot); } - this.l = -1; - this.m = false; - this.n.a_void_____________________(new Object[]{var8}); - this.d.reroll(new Object[]{var18}); + this.previousSlot = -1; + this.awaitingSwapBack = false; + this.actionTimer.reset(); + this.delay.reroll(); return null; } - } else if (!this.n.b(new Object[]{this.d, var14})) { + } else if (!this.actionTimer.hasElapsedRandom(this.delay)) { return null; - } else if (InventoryUtil.a_Integer(new Object[]{Items.BUCKET, var10}) != null - || (Boolean)this.f.getValue() && InventoryUtil.a_Integer(new Object[]{Items.COBWEB, var10}) != null) { - PlayerEntity var29 = CombatUtil.a_class_1657(new Object[]{var24}); - if (var29 != null && !(PositionUtil.a(new Object[]{var29, var12}).distanceTo(PositionUtil.b(new Object[]{var26})) > 10.0)) { - BlockHitResult var30 = this.b_class_3965(new Object[]{var22}); - if (var30 == null) { + } else if (InventoryUtil.findHotbarSlot(Items.BUCKET) != null + || this.fallbackToCobweb.getValue() && InventoryUtil.findHotbarSlot(Items.COBWEB) != null) { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null && !(PositionUtil.getEntityPos(enemy).distanceTo(PositionUtil.getPlayerPos()) > 10.0)) { + BlockHitResult hitResult = this.findReachableLiquidHit(); + if (hitResult == null) { return null; } else { - BlockPos var31 = var30.getBlockPos(); - boolean var32 = InventoryUtil.a_Integer(new Object[]{Items.BUCKET, var10}) != null; - boolean var33 = !var32 && (Boolean)this.f.getValue(); - RenderBatch var34; - if (var33) { - BlockPos var35 = var31.down(); - Vec3d var36 = Vec3d.ofCenter(var35).add(0.0, 0.5, 0.0); - var34 = Prestige.o.a_RenderBatch(new Object[]{var36, var20}); - HitResult var37 = WorldUtil.a_class_239_(new Object[]{var34, var4}); - if (var37 == null || var37.getType() != Type.BLOCK || !(var37 instanceof BlockHitResult var38)) { + BlockPos liquidPos = hitResult.getBlockPos(); + boolean useCobweb = !(InventoryUtil.findHotbarSlot(Items.BUCKET) != null) && this.fallbackToCobweb.getValue(); + Rotation rotation; + if (useCobweb) { + Vec3d aimPoint = Vec3d.ofCenter(liquidPos.down()).add(0.0, 0.5, 0.0); + rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + HitResult cobwebHit = RotationUtil.raycastRotation(rotation); + if (cobwebHit == null || cobwebHit.getType() != Type.BLOCK || !(cobwebHit instanceof BlockHitResult cobwebBlockHit)) { return null; } - var30 = var38; + hitResult = cobwebBlockHit; } else { - var34 = Prestige.o.a_RenderBatch(new Object[]{var30.getPos(), var20}); + rotation = Prestige.silentRotationManager.getRotationTowards(hitResult.getPos()); } - if (Math.abs(var34.a(new Object[0]) - b.player.getYaw()) > (Float)this.i.getValue()) { + if (Math.abs(rotation.getYaw() - mc.player.getYaw()) > this.silentAimFov.getValue()) { return null; - } else if (var34.a_boolean________________________________________(new Object[0])) { - return var34; + } else if (rotation.isClamped()) { + return rotation; } else { - Prestige.o.a(new Object[]{var34}); - if (this.a_boolean_____________(new Object[]{var31, var30, var6})) { - this.n.a_void_____________________(new Object[]{var8}); - this.d.reroll(new Object[]{var18}); + Prestige.silentRotationManager.setActiveRotation(rotation); + if (this.tryDrain(liquidPos, hitResult)) { + this.actionTimer.reset(); + this.delay.reroll(); } - return var34; + return rotation; } } } else { @@ -256,135 +216,103 @@ public class AutoDrain extends Module implements RenderContract3 { } @Subscribe - public void a(PacketEvent2 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket var5) { - ItemStack var8 = var5.getHand() == Hand.MAIN_HAND ? b.player.getMainHandStack() : b.player.getOffHandStack(); - if (var8.getItem() == Items.WATER_BUCKET || var8.getItem() == Items.LAVA_BUCKET) { - BlockHitResult var7 = var5.getBlockHitResult(); - this.j.add(var7.getBlockPos().add(var7.getSide().getOffsetX(), var7.getSide().getOffsetY(), var7.getSide().getOffsetZ())); + public void onPacketSend(PacketSendEvent event) { + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket interactPacket) { + ItemStack usedStack = interactPacket.getHand() == Hand.MAIN_HAND ? mc.player.getMainHandStack() : mc.player.getOffHandStack(); + if (usedStack.getItem() == Items.WATER_BUCKET || usedStack.getItem() == Items.LAVA_BUCKET) { + BlockHitResult hitResult = interactPacket.getBlockHitResult(); + this.ownPlacedLiquids.add(hitResult.getBlockPos().add(hitResult.getSide().getOffsetX(), hitResult.getSide().getOffsetY(), hitResult.getSide().getOffsetZ())); } } } - private boolean a_boolean_____________(Object[] var1) { - BlockPos var5 = (BlockPos)var1[0]; - BlockHitResult var2 = (BlockHitResult)var1[1]; - long var3 = (Long)var1[2]; - var3 = 63790212518096L ^ var3; - long var6 = var3 ^ 42993533405034L; - long var8 = var3 ^ 443127019328L; - long var10 = var3 ^ 17128426033502L; - long var12 = var3 ^ 114043070288344L; - long var14 = var3 ^ 41839228367906L; - long var16 = var3 ^ 52734334465923L; - if (this.k.contains(var5)) { + private boolean tryDrain(BlockPos liquidPos, BlockHitResult hitResult) { + if (this.drainedPositions.contains(liquidPos)) { return false; } else { - boolean var19 = InventoryUtil.a_Integer(new Object[]{Items.BUCKET, var6}) != null; - if (var19) { - if (!InventoryUtil.l(new Object[]{Items.BUCKET, var14})) { - if (((String)this.e.getValue()).equals("None")) { + if (InventoryUtil.findHotbarSlot(Items.BUCKET) != null) { + if (!InventoryUtil.isHolding(Items.BUCKET)) { + if (this.swap.getValue().equals("None")) { return false; } else { - if (this.l == -1) { - this.l = InventoryUtil.a_int_____(new Object[]{var12}); + if (this.previousSlot == -1) { + this.previousSlot = InventoryUtil.getSelectedSlot(); } - InventoryUtil.h(new Object[]{Items.BUCKET, var16}); + InventoryUtil.switchToItem(Items.BUCKET); return true; } } else { - if ((Boolean)this.g.getValue()) { - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var10}); - this.m = true; + if (this.interact.getValue()) { + PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.awaitingSwapBack = true; } - this.k.add(var5); + this.drainedPositions.add(liquidPos); return true; } } else { - return (Boolean)this.f.getValue() && this.d(new Object[]{var5, var2, var8}); + return this.fallbackToCobweb.getValue() && this.tryPlaceCobweb(liquidPos, hitResult); } } } - private boolean d(Object[] var1) { - BlockPos var2 = (BlockPos)var1[0]; - BlockHitResult var3 = (BlockHitResult)var1[1]; - long var4 = (Long)var1[2]; - var4 = 63790212518096L ^ var4; - long var6 = var4 ^ 123407406426734L; - long var8 = var4 ^ 32406783516922L; - long var10 = var4 ^ 103198470256200L; - long var12 = var4 ^ 31258918818738L; - long var14 = var4 ^ 23731168432147L; - if (!(Boolean)this.g.getValue()) { + private boolean tryPlaceCobweb(BlockPos liquidPos, BlockHitResult hitResult) { + if (!this.interact.getValue()) { return false; - } else if (!InventoryUtil.l(new Object[]{Items.COBWEB, var12})) { - if (((String)this.e.getValue()).equals("None")) { + } else if (!InventoryUtil.isHolding(Items.COBWEB)) { + if (this.swap.getValue().equals("None")) { return false; - } else if (InventoryUtil.a_Integer(new Object[]{Items.COBWEB, var8}) == null) { + } else if (InventoryUtil.findHotbarSlot(Items.COBWEB) == null) { return false; } else { - if (this.l == -1) { - this.l = InventoryUtil.a_int_____(new Object[]{var10}); + if (this.previousSlot == -1) { + this.previousSlot = InventoryUtil.getSelectedSlot(); } - InventoryUtil.h(new Object[]{Items.COBWEB, var14}); + InventoryUtil.switchToItem(Items.COBWEB); return true; } } else { - if (!((String)this.a.getValue()).equals("Silent Aim")) { - if (!(b.crosshairTarget instanceof BlockHitResult)) { + if (!this.mode.getValue().equals("Silent Aim")) { + if (!(mc.crosshairTarget instanceof BlockHitResult)) { return false; } - var3 = (BlockHitResult)b.crosshairTarget; + hitResult = (BlockHitResult)mc.crosshairTarget; } - InventoryUtil2.a(new Object[]{var3, var6}); - this.k.add(var2); - this.m = this.l != -1; + PlayerInteractions.interactBlock(hitResult); + this.drainedPositions.add(liquidPos); + this.awaitingSwapBack = this.previousSlot != -1; return true; } } - private BlockHitResult a_class_3965____(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 63790212518096L ^ var2; - long var4 = var2 ^ 66079125987401L; - Vec3d var7 = b.player.getEyePos(); - Vec3d var8 = b.player.getRotationVec(1.0F); - Event.b(); - BlockHitResult var9 = b.world + private BlockHitResult raycastCrosshairLiquid() { + Vec3d eyePos = mc.player.getEyePos(); + Vec3d lookVec = mc.player.getRotationVec(1.0F); + BlockHitResult hitResult = mc.world .raycast( new RaycastContext( - var7, var7.add(var8.multiply(InventoryUtil2.b_float_____(new Object[]{var4}))), ShapeType.OUTLINE, FluidHandling.SOURCE_ONLY, b.player + eyePos, eyePos.add(lookVec.multiply(PlayerInteractions.getReachDistance())), ShapeType.OUTLINE, FluidHandling.SOURCE_ONLY, mc.player ) ); - return var9 != null && var9.getType() == Type.BLOCK ? var9 : null; + return hitResult != null && hitResult.getType() == Type.BLOCK ? hitResult : null; } - private BlockHitResult b_class_3965(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 63790212518096L ^ var2; - long var4 = var2 ^ 35669101079288L; - long var6 = var2 ^ 62791142167720L; - long var8 = var2 ^ 46970791973488L; - long var10 = var2 ^ 74270926269523L; - Event.b(); - Vec3d var13 = b.player.getEyePos(); + private BlockHitResult findReachableLiquidHit() { + Vec3d eyePos = mc.player.getEyePos(); - for (BlockPos var15 : BlockPos.iterateOutwards(b.player.getBlockPos(), 5, 5, 5)) { - if (!(PositionUtil.b(new Object[]{var10}).distanceTo(var15.toCenterPos()) > InventoryUtil2.b_float_____(new Object[]{var6})) - && this.e(new Object[]{var15, var8})) { - Box var16 = new Box(var15.getX(), var15.getY(), var15.getZ(), var15.getX() + 1, var15.getY() + 1, var15.getZ() + 1); - if (!(var13.distanceTo(this.a_class_243______(new Object[]{var13, var16, var4})) > InventoryUtil2.b_float_____(new Object[]{var6}))) { - BlockHitResult var17 = b.world - .raycast(new RaycastContext(var13, var16.getCenter(), ShapeType.OUTLINE, FluidHandling.SOURCE_ONLY, b.player)); - if (var17.getType() != Type.MISS && var17.getBlockPos().getManhattanDistance(var15) == 0) { - return var17; + for (BlockPos pos : BlockPos.iterateOutwards(mc.player.getBlockPos(), 5, 5, 5)) { + if (!(PositionUtil.getPlayerPos().distanceTo(pos.toCenterPos()) > PlayerInteractions.getReachDistance()) + && this.isDrainable(pos)) { + Box blockBox = new Box(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1); + if (!(eyePos.distanceTo(this.getClosestPointInBox(eyePos, blockBox)) > PlayerInteractions.getReachDistance())) { + BlockHitResult hitResult = mc.world + .raycast(new RaycastContext(eyePos, blockBox.getCenter(), ShapeType.OUTLINE, FluidHandling.SOURCE_ONLY, mc.player)); + if (hitResult.getType() != Type.MISS && hitResult.getBlockPos().getManhattanDistance(pos) == 0) { + return hitResult; } } } @@ -393,52 +321,37 @@ public class AutoDrain extends Module implements RenderContract3 { return null; } - private boolean e(Object[] var1) { - BlockPos var2 = (BlockPos)var1[0]; - long var3 = (Long)var1[1]; - var3 = 63790212518096L ^ var3; - long var5 = var3 ^ 37664249976644L; - long var7 = var3 ^ 56085364354730L; - if (!this.g(new Object[]{b.world.getBlockState(var2).getBlock(), var7})) { + private boolean isDrainable(BlockPos pos) { + if (!this.isLiquid(mc.world.getBlockState(pos).getBlock())) { return false; - } else if (!b.world.getFluidState(var2).isStill()) { + } else if (!mc.world.getFluidState(pos).isStill()) { return false; - } else if (this.k.contains(var2)) { + } else if (this.drainedPositions.contains(pos)) { return false; } else { - return this.j.contains(var2) ? false : this.f(new Object[]{b.world.getBlockState(var2).getBlock(), var2, var5}); + return this.ownPlacedLiquids.contains(pos) ? false : this.isSelectedLiquid(mc.world.getBlockState(pos).getBlock(), pos); } } - private boolean f(Object[] var1) { - Block var2 = (Block)var1[0]; - BlockPos var5 = (BlockPos)var1[1]; - long var3 = (Long)var1[2]; - var3 = 63790212518096L ^ var3; - long var6 = var3 ^ 12624291196912L; - long var8 = var3 ^ 76361982620965L; - if (this.c.isSelected(new Object[]{"Water", var6}) && var2 == Blocks.WATER) { + private boolean isSelectedLiquid(Block block, BlockPos pos) { + if (this.liquid.isSelected("Water") && block == Blocks.WATER) { return true; - } else if (this.c.isSelected(new Object[]{"Lava", var6}) && var2 == Blocks.LAVA) { + } else if (this.liquid.isSelected("Lava") && block == Blocks.LAVA) { return true; } else { - return this.c.isSelected(new Object[]{"Water On Web", var6}) && var2 == Blocks.WATER && this.h(new Object[]{var5, var8}) + return this.liquid.isSelected("Water On Web") && block == Blocks.WATER && this.isNextToCobweb(pos) ? true - : this.c.isSelected(new Object[]{"Lava On Web", var6}) && var2 == Blocks.LAVA && this.h(new Object[]{var5, var8}); + : this.liquid.isSelected("Lava On Web") && block == Blocks.LAVA && this.isNextToCobweb(pos); } } - private boolean g(Object[] var1) { - Block var4 = (Block)var1[0]; - return var4 == Blocks.WATER || var4 == Blocks.LAVA; + private boolean isLiquid(Block block) { + return block == Blocks.WATER || block == Blocks.LAVA; } - private boolean h(Object[] var1) { - BlockPos var4 = (BlockPos)var1[0]; - Event.b(); - - for (Direction var9 : Direction.values()) { - if (b.world.getBlockState(var4.offset(var9)).getBlock() == Blocks.COBWEB) { + private boolean isNextToCobweb(BlockPos pos) { + for (Direction direction : Direction.values()) { + if (mc.world.getBlockState(pos.offset(direction)).getBlock() == Blocks.COBWEB) { return true; } } @@ -446,81 +359,11 @@ public class AutoDrain extends Module implements RenderContract3 { return false; } - private Vec3d a_class_243______(Object[] var1) { - Vec3d var5 = (Vec3d)var1[0]; - Box var4 = (Box)var1[1]; + private Vec3d getClosestPointInBox(Vec3d point, Box box) { return new Vec3d( - Math.max(var4.minX, Math.min(var5.x, var4.maxX)), - Math.max(var4.minY, Math.min(var5.y, var4.maxY)), - Math.max(var4.minZ, Math.min(var5.z, var4.maxZ)) + Math.max(box.minX, Math.min(point.x, box.maxX)), + Math.max(box.minY, Math.min(point.y, box.maxY)), + Math.max(box.minZ, Math.min(point.z, box.maxZ)) ); } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoElytra.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoElytra.java index d90f9dc..757d1a5 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoElytra.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoElytra.java @@ -7,22 +7,19 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.IntEvent2; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.KeyEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil2; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.JumpKeyPresser; import dev.zprestige.prestige.world.PositionUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.List; import java.util.Set; import java.util.function.Predicate; import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.entity.EquipmentSlot; -import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket; import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket.Mode; @@ -30,349 +27,306 @@ import net.minecraft.screen.slot.SlotActionType; import net.minecraft.util.Hand; public class AutoElytra extends Module { - private BoolSetting d; - private RangeSetting a; - private BoolSetting c; - private BoolSetting e; - private FloatSetting f; - private BoolSetting g; - private BoolSetting h; - private BoolSetting i; - private RangeSetting j; - private RenderHelper27 k = new RenderHelper27(26293358099357L); - private RenderHelper27 l = new RenderHelper27(26293358099357L); - private RenderHelper27 m = new RenderHelper27(26293358099357L); - private boolean n; - private boolean o; - private boolean p; - private boolean q; - private int r = 0; - private int s = -1; - private int t = -1; - public static boolean u; - public static AutoElytra v; + private BoolSetting requireLand; + private RangeSetting delay; + private BoolSetting firework; + private BoolSetting autoDisable; + private FloatSetting flyTime; + private BoolSetting silentInventory; + private BoolSetting autoJump; + private BoolSetting fireworkOnSpace; + private RangeSetting spaceCooldown; + private StopWatch actionTimer = new StopWatch(); + private StopWatch flightTimer = new StopWatch(); + private StopWatch spaceTimer = new StopWatch(); + private boolean glideStarted; + private boolean restoring; + private boolean hasLanded; + private boolean skipInventoryScreen; + private int stage = 0; + private int fireworkSlot = -1; + private int restoreSlot = -1; + public static boolean active; + public static AutoElytra instance; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal, Gamemode.Mace); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } public AutoElytra() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - v = this; - this.f.setVisibility_FloatSetting(new Object[]{(Predicate)lpL228_0 -> (Boolean)this.e.getValue(), 35046756052036L}); - this.j.setVisibility_RangeSetting(new Object[]{(Predicate)lpL227_0 -> (Boolean)this.i.getValue(), 37043306203287L}); + instance = this; + this.flyTime.visibleWhen((Predicate)ignored -> this.autoDisable.getValue()); + this.spaceCooldown.visibleWhen((Predicate)ignored -> this.fireworkOnSpace.getValue()); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 86929222885577L; - if (!(Boolean)this.e.getValue()) { - if (this.o) { - this.o = false; + public void onDisable() { + if (!this.autoDisable.getValue()) { + if (this.restoring) { + this.restoring = false; return; } - this.o = true; - this.toggle(new Object[]{var4}); + this.restoring = true; + this.toggle(); } - if (!this.o && b.player.getEquippedStack(EquipmentSlot.CHEST).getItem() == Items.ELYTRA) { - this.o = true; + if (!this.restoring && mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() == Items.ELYTRA) { + this.restoring = true; } - u = false; + active = false; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 45286455980699L; - long var6 = var2 ^ 87726956962791L; - if (!this.o) { - this.n = false; - this.r = 0; - this.k.a_void_____________________(new Object[]{var4}); - this.a.reroll(new Object[]{var6}); - this.l.a_void_____________________(new Object[]{var4}); - this.s = -1; - this.t = -1; - this.p = false; - u = true; - this.q = false; + public void onEnable() { + if (!this.restoring) { + this.glideStarted = false; + this.stage = 0; + this.actionTimer.reset(); + this.delay.reroll(); + this.flightTimer.reset(); + this.fireworkSlot = -1; + this.restoreSlot = -1; + this.hasLanded = false; + active = true; + this.skipInventoryScreen = false; } } @Subscribe - public void a(TickEvent19 var1) { - if (b.isWindowFocused() && (b.currentScreen == null || b.currentScreen instanceof InventoryScreen)) { - if (b.player.isOnGround() && !this.o) { - if ((Boolean)this.h.getValue() && this.r == 0) { - RenderUtil2.a(new Object[]{134150376721510L}); + public void onClientTick(ClientTickEvent event) { + if (mc.isWindowFocused() && (mc.currentScreen == null || mc.currentScreen instanceof InventoryScreen)) { + if (mc.player.isOnGround() && !this.restoring) { + if (this.autoJump.getValue() && this.stage == 0) { + JumpKeyPresser.pressJump(); } - this.n = false; - this.l.a_void_____________________(new Object[]{93540861878173L}); - this.p = true; - if (this.r >= 3) { + this.glideStarted = false; + this.flightTimer.reset(); + this.hasLanded = true; + if (this.stage >= 3) { return; } } - if (this.k.b(new Object[]{this.a, 89714527855213L}) && (this.p || !(Boolean)this.d.getValue())) { - Item var10000 = Items.ELYTRA; - Object[] var10004 = new Object[]{null, null, 77736144221765L}; - var10004[1] = true; - var10004[0] = var10000; - List var27 = InventoryUtil.a_List(var10004); - var10000 = Items.FIREWORK_ROCKET; - var10004 = new Object[]{null, null, 77736144221765L}; - var10004[1] = true; - var10004[0] = var10000; - List var28 = InventoryUtil.a_List(var10004); - boolean var29 = false; - if (this.r == 0 && b.player.getEquippedStack(EquipmentSlot.CHEST).getItem() == Items.ELYTRA) { - this.r = 1; - var29 = true; + if (this.actionTimer.hasElapsedRandom(this.delay) && (this.hasLanded || !this.requireLand.getValue())) { + List elytraSlots = InventoryUtil.findInventorySlots(Items.ELYTRA, true); + List fireworkSlots = InventoryUtil.findInventorySlots(Items.FIREWORK_ROCKET, true); + boolean alreadyWearing = false; + if (this.stage == 0 && mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() == Items.ELYTRA) { + this.stage = 1; + alreadyWearing = true; } - if (this.r < 2) { - if (!var29 && var27.isEmpty()) { - this.toggle(new Object[]{115103427876780L}); + if (this.stage < 2) { + if (!alreadyWearing && elytraSlots.isEmpty()) { + this.toggle(); return; } - if ((Boolean)this.c.getValue() && var28.isEmpty()) { - this.toggle(new Object[]{115103427876780L}); + if (this.firework.getValue() && fireworkSlots.isEmpty()) { + this.toggle(); return; } - int var30 = var29 ? 0 : (Integer)var27.getFirst(); - int var31 = !this.c.getValue() ? 0 : (Integer)var28.getFirst(); - this.q = (Boolean)this.g.getValue() || var30 < 9 && var31 < 9; + int firstElytraSlot = alreadyWearing ? 0 : (Integer)elytraSlots.getFirst(); + int firstFireworkSlot = !this.firework.getValue() ? 0 : (Integer)fireworkSlots.getFirst(); + this.skipInventoryScreen = this.silentInventory.getValue() || firstElytraSlot < 9 && firstFireworkSlot < 9; } - if (this.r == 8 && b.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { - this.toggle(new Object[]{115103427876780L}); + if (this.stage == 8 && mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { + this.toggle(); } else { - switch (this.r) { + switch (this.stage) { case 0: case 5: - if (!this.q) { - b.setScreen(new InventoryScreen(b.player)); + if (!this.skipInventoryScreen) { + mc.setScreen(new InventoryScreen(mc.player)); } - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); - this.r++; + this.actionTimer.reset(); + this.delay.reroll(); + this.stage++; break; case 1: - if (b.currentScreen == null && !this.q) { - this.r = 0; + if (mc.currentScreen == null && !this.skipInventoryScreen) { + this.stage = 0; } else { - int var36 = b.player.currentScreenHandler.syncId; - if (!var27.isEmpty()) { - int var37 = (Integer)var27.getFirst(); - if (var37 < 9) { - Object[] var49 = new Object[]{null, 37392877673079L}; - var49[0] = var37; - InventoryUtil.a_void________(var49); + int syncId = mc.player.currentScreenHandler.syncId; + if (!elytraSlots.isEmpty()) { + int elytraSlot = (Integer)elytraSlots.getFirst(); + if (elytraSlot < 9) { + InventoryUtil.selectSlot(elytraSlot); } else { - b.interactionManager.clickSlot(var36, var37, 0, SlotActionType.PICKUP, b.player); - b.interactionManager.clickSlot(var36, 6, 0, SlotActionType.PICKUP, b.player); - b.interactionManager.clickSlot(var36, var37, 0, SlotActionType.PICKUP, b.player); + mc.interactionManager.clickSlot(syncId, elytraSlot, 0, SlotActionType.PICKUP, mc.player); + mc.interactionManager.clickSlot(syncId, 6, 0, SlotActionType.PICKUP, mc.player); + mc.interactionManager.clickSlot(syncId, elytraSlot, 0, SlotActionType.PICKUP, mc.player); } - this.t = var37; + this.restoreSlot = elytraSlot; } else { - var10000 = Items.NETHERITE_CHESTPLATE; - var10004 = new Object[]{null, null, 77736144221765L}; - var10004[1] = true; - var10004[0] = var10000; - List var38 = InventoryUtil.a_List(var10004); - if (var38.isEmpty()) { - var10000 = Items.DIAMOND_CHESTPLATE; - var10004 = new Object[]{null, null, 77736144221765L}; - var10004[1] = true; - var10004[0] = var10000; - var38 = InventoryUtil.a_List(var10004); + List chestplateSlots = InventoryUtil.findInventorySlots(Items.NETHERITE_CHESTPLATE, true); + if (chestplateSlots.isEmpty()) { + chestplateSlots = InventoryUtil.findInventorySlots(Items.DIAMOND_CHESTPLATE, true); } - if (!var38.isEmpty()) { - this.t = (Integer)var38.getFirst(); + if (!chestplateSlots.isEmpty()) { + this.restoreSlot = (Integer)chestplateSlots.getFirst(); } } - if ((Boolean)this.c.getValue()) { - int var39 = (Integer)var28.getFirst(); - if (var39 < 9) { - if (!var27.isEmpty() && (Integer)var27.getFirst() > 9) { - Object[] var50 = new Object[]{null, 37392877673079L}; - var50[0] = var39; - InventoryUtil.a_void________(var50); + if (this.firework.getValue()) { + int rocketSlot = (Integer)fireworkSlots.getFirst(); + if (rocketSlot < 9) { + if (!elytraSlots.isEmpty() && (Integer)elytraSlots.getFirst() > 9) { + InventoryUtil.selectSlot(rocketSlot); } } else { - b.interactionManager - .clickSlot(var36, var39, InventoryUtil.a_int_____(new Object[]{134339616728996L}), SlotActionType.SWAP, b.player); + mc.interactionManager + .clickSlot(syncId, rocketSlot, InventoryUtil.getSelectedSlot(), SlotActionType.SWAP, mc.player); } - this.s = var39; + this.fireworkSlot = rocketSlot; } - this.r++; - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + this.stage++; + this.actionTimer.reset(); + this.delay.reroll(); } break; case 2: case 7: - b.setScreen(null); - this.r++; - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + mc.setScreen(null); + this.stage++; + this.actionTimer.reset(); + this.delay.reroll(); break; case 3: - if (b.currentScreen != null) { + if (mc.currentScreen != null) { return; } - if (b.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { - if (b.player.getMainHandStack().isOf(Items.ELYTRA)) { - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); + if (mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { + if (mc.player.getMainHandStack().isOf(Items.ELYTRA)) { + PlayerInteractions.interactItem(Hand.MAIN_HAND); } - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + this.actionTimer.reset(); + this.delay.reroll(); return; } - if (b.player.isOnGround()) { + if (mc.player.isOnGround()) { return; } - b.player.networkHandler.sendPacket(new ClientCommandC2SPacket(b.player, Mode.START_FALL_FLYING)); - InventoryUtil2.b_void___(new Object[]{42886172512782L}); - this.n = true; - this.l.a_void_____________________(new Object[]{93540861878173L}); - this.r++; - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, Mode.START_FALL_FLYING)); + PlayerInteractions.startGliding(); + this.glideStarted = true; + this.flightTimer.reset(); + this.stage++; + this.actionTimer.reset(); + this.delay.reroll(); break; case 4: - if ((Boolean)this.c.getValue()) { - if (!b.player.getMainHandStack().isOf(Items.FIREWORK_ROCKET)) { - if (var28.isEmpty()) { + if (this.firework.getValue()) { + if (!mc.player.getMainHandStack().isOf(Items.FIREWORK_ROCKET)) { + if (fireworkSlots.isEmpty()) { return; } - int var35 = (Integer)var28.getFirst(); - Object[] var48 = new Object[]{null, 37392877673079L}; - var48[0] = var35; - InventoryUtil.a_void________(var48); - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + InventoryUtil.selectSlot((Integer)fireworkSlots.getFirst()); + this.actionTimer.reset(); + this.delay.reroll(); return; } - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.actionTimer.reset(); + this.delay.reroll(); } - this.r++; + this.stage++; break; case 6: - if (b.currentScreen == null && !this.q) { - this.r = 5; + if (mc.currentScreen == null && !this.skipInventoryScreen) { + this.stage = 5; } else { - if ((Boolean)this.c.getValue()) { - if (this.s < 9) { - int var44 = this.s; - Object[] var47 = new Object[]{null, 37392877673079L}; - var47[0] = var44; - InventoryUtil.a_void________(var47); + if (this.firework.getValue()) { + if (this.fireworkSlot < 9) { + InventoryUtil.selectSlot(this.fireworkSlot); } else { - int var34 = b.player.currentScreenHandler.syncId; - b.interactionManager - .clickSlot(var34, this.s, InventoryUtil.a_int_____(new Object[]{134339616728996L}), SlotActionType.SWAP, b.player); + mc.interactionManager + .clickSlot(mc.player.currentScreenHandler.syncId, this.fireworkSlot, InventoryUtil.getSelectedSlot(), SlotActionType.SWAP, mc.player); } - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + this.actionTimer.reset(); + this.delay.reroll(); } - this.r++; + this.stage++; } break; case 8: - if ((Boolean)this.e.getValue()) { - RenderHelper27 var43 = this.l; - float var10001 = (Float)this.f.getValue(); - var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (!var43.a(var10004)) { + if (this.autoDisable.getValue()) { + if (!this.flightTimer.hasElapsed(this.flyTime.getValue())) { return; } - } else if (!this.o) { + } else if (!this.restoring) { return; } - if (!this.q) { - b.setScreen(new InventoryScreen(b.player)); + if (!this.skipInventoryScreen) { + mc.setScreen(new InventoryScreen(mc.player)); } - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); - this.r++; + this.actionTimer.reset(); + this.delay.reroll(); + this.stage++; break; case 9: - if (b.currentScreen == null && !this.q) { - this.r = 8; + if (mc.currentScreen == null && !this.skipInventoryScreen) { + this.stage = 8; } else { - if (this.t == -1) { - var10000 = Items.AIR; - var10004 = new Object[]{null, null, 77736144221765L}; - var10004[1] = false; - var10004[0] = var10000; - List var32 = InventoryUtil.a_List(var10004); - if (var32.isEmpty()) { - this.r++; - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + if (this.restoreSlot == -1) { + List emptySlots = InventoryUtil.findInventorySlots(Items.AIR, false); + if (emptySlots.isEmpty()) { + this.stage++; + this.actionTimer.reset(); + this.delay.reroll(); break; } - this.t = (Integer)var32.getFirst(); + this.restoreSlot = (Integer)emptySlots.getFirst(); } - if (this.t < 9) { - int var42 = this.t; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var42; - InventoryUtil.a_void________(var10003); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); + if (this.restoreSlot < 9) { + InventoryUtil.selectSlot(this.restoreSlot); + PlayerInteractions.interactItem(Hand.MAIN_HAND); } else { - int var33 = b.player.currentScreenHandler.syncId; - b.interactionManager.clickSlot(var33, this.t, 0, SlotActionType.PICKUP, b.player); - b.interactionManager.clickSlot(var33, 6, 0, SlotActionType.PICKUP, b.player); - b.interactionManager.clickSlot(var33, this.t, 0, SlotActionType.PICKUP, b.player); + int screenSyncId = mc.player.currentScreenHandler.syncId; + mc.interactionManager.clickSlot(screenSyncId, this.restoreSlot, 0, SlotActionType.PICKUP, mc.player); + mc.interactionManager.clickSlot(screenSyncId, 6, 0, SlotActionType.PICKUP, mc.player); + mc.interactionManager.clickSlot(screenSyncId, this.restoreSlot, 0, SlotActionType.PICKUP, mc.player); } - this.r++; - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + this.stage++; + this.actionTimer.reset(); + this.delay.reroll(); } break; case 10: - b.setScreen(null); - if (b.currentScreen == null) { - this.toggle(new Object[]{115103427876780L}); + mc.setScreen(null); + if (mc.currentScreen == null) { + this.toggle(); } } } @@ -381,49 +335,43 @@ public class AutoElytra extends Module { } @Subscribe - public void a(PacketEvent2 var1) { - if (this.n) { - if (var1.a(new Object[0]) instanceof ClientCommandC2SPacket var5 && var5.getMode() == Mode.START_FALL_FLYING) { - var1.a_void_____(new Object[0]); + public void onPacketSend(PacketSendEvent event) { + if (this.glideStarted) { + if (event.getPacket() instanceof ClientCommandC2SPacket packet && packet.getMode() == Mode.START_FALL_FLYING) { + event.cancel(); } } } @Subscribe - public void a(IntEvent2 var1) { - if ((Boolean)this.i.getValue()) { - if (var1.b(new Object[0]) == 1) { - if (var1.a(new Object[0]) == 32) { - if (b.player != null && b.world != null) { - if (b.currentScreen == null) { - if (b.isWindowFocused()) { - if (PositionUtil.a_boolean________________________________________________(new Object[]{120169006001489L})) { - if (!u || this.r >= 4 && this.r <= 8) { - if (this.m.b(new Object[]{this.j, 89714527855213L})) { - if (!Prestige.o.d_boolean______(new Object[0])) { - if (InventoryUtil.l(new Object[]{Items.FIREWORK_ROCKET, 65539821781598L})) { - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - Prestige.o.g(new Object[]{true}); - this.m.a_void_____________________(new Object[]{93540861878173L}); - this.j.reroll(new Object[]{57083216809697L}); + public void onKey(KeyEvent event) { + if (this.fireworkOnSpace.getValue()) { + if (event.getAction() == 1) { + if (event.getKey() == 32) { + if (mc.player != null && mc.world != null) { + if (mc.currentScreen == null) { + if (mc.isWindowFocused()) { + if (PositionUtil.isPlayerGliding()) { + if (!active || this.stage >= 4 && this.stage <= 8) { + if (this.spaceTimer.hasElapsedRandom(this.spaceCooldown)) { + if (!Prestige.silentRotationManager.hasActedThisTick()) { + if (InventoryUtil.isHolding(Items.FIREWORK_ROCKET)) { + PlayerInteractions.interactItem(Hand.MAIN_HAND); + Prestige.silentRotationManager.setActedThisTick(true); + this.spaceTimer.reset(); + this.spaceCooldown.reroll(); } else { - boolean[] var19 = new boolean[]{false}; - Item var10000 = Items.FIREWORK_ROCKET; - Runnable var10001 = () -> { - if (b.player.getMainHandStack().isOf(Items.FIREWORK_ROCKET)) { - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - Prestige.o.g(new Object[]{true}); - var19[0] = true; + boolean[] rocketUsed = new boolean[]{false}; + InventoryUtil.runWithItem(Items.FIREWORK_ROCKET, () -> { + if (mc.player.getMainHandStack().isOf(Items.FIREWORK_ROCKET)) { + PlayerInteractions.interactItem(Hand.MAIN_HAND); + Prestige.silentRotationManager.setActedThisTick(true); + rocketUsed[0] = true; } - }; - Object[] var10005 = new Object[]{null, null, null, 114857082072684L}; - var10005[2] = true; - var10005[1] = var10001; - var10005[0] = var10000; - InventoryUtil.j(var10005); - if (var19[0]) { - this.m.a_void_____________________(new Object[]{93540861878173L}); - this.j.reroll(new Object[]{57083216809697L}); + }, true); + if (rocketUsed[0]) { + this.spaceTimer.reset(); + this.spaceCooldown.reroll(); } } } @@ -437,72 +385,4 @@ public class AutoElytra extends Module { } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoHitCrystal.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoHitCrystal.java index 9686738..6ca759a 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoHitCrystal.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoHitCrystal.java @@ -7,28 +7,22 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.TickEvent5; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.inventory.InventoryUtil3; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.inventory.DeathLootDetector; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.util.Set; import java.util.function.Predicate; -import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.entity.Entity; import net.minecraft.entity.decoration.EndCrystalEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.EntityHitResult; @@ -39,272 +33,252 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; public class AutoHitCrystal extends Module { - public static boolean a = false; - private BoolSetting d; - private BoolSetting c; - private BoolSetting e; - private RangeSetting f; - private BoolSetting g; - private EnumSetting h; - private RangeSetting i; - private BoolSetting j; - private RenderHelper27 k = new RenderHelper27(26293358099357L); - private int l = 0; + public static boolean active = false; + private BoolSetting stopInAir; + private BoolSetting swordOnly; + private BoolSetting pauseOnKill; + private RangeSetting delay; + private BoolSetting perfectTiming; + private EnumSetting crystalMode; + private RangeSetting crystalDelay; + private BoolSetting silentRotations; + private StopWatch delayTimer = new StopWatch(); + private int stage = 0; public AutoHitCrystal() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.i - .setVisibility_RangeSetting( - new Object[]{ - (Predicate)lpL231_0 -> ((String)this.h.getValue()).equals("Double Tap") || ((String)this.h.getValue()).equals("Infinite"), - 37043306203287L - } + this.crystalDelay + .visibleWhen( + (Predicate)ignored -> this.crystalMode.getValue().equals("Double Tap") || this.crystalMode.getValue().equals("Infinite") ); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public boolean b(Object[] var1) { - return "Infinite".equals(this.h.getValue()); + public boolean isPersistent() { + return "Infinite".equals(this.crystalMode.getValue()); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 22594282158762L; - long var6 = var2 ^ 131900892945784L; - long var8 = var2 ^ 127375248225769L; - if (this.getKey(new Object[]{var6}) == 9998 && InventoryUtil2.e(new Object[]{var8})) { - this.toggle(new Object[]{var4}); + public void onEnable() { + if (this.getKey() == 9998 && PlayerInteractions.isHoldingUsableItem()) { + this.toggle(); } else { - if (!((String)this.h.getValue()).equals("None")) { - a = true; + if (!this.crystalMode.getValue().equals("None")) { + active = true; } } } @Override - public void onDisable(Object[] var1) { - a = false; - this.l = 0; + public void onDisable() { + active = false; + this.stage = 0; } @Subscribe - public void a(TickEvent5 var1) { - if (this.getKey(new Object[]{13012393635966L}) == 9998 - && (b.player.getMainHandStack().getItem().equals(Items.END_CRYSTAL) || b.player.getMainHandStack().getItem().equals(Blocks.OBSIDIAN.asItem()))) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (this.getKey() == 9998 + && (mc.player.getMainHandStack().getItem().equals(Items.END_CRYSTAL) || mc.player.getMainHandStack().getItem().equals(Blocks.OBSIDIAN.asItem()))) { + event.cancel(); } } @Subscribe - public void a(FloatEvent2 var1) { - if (b.currentScreen == null - && b.isWindowFocused() - && this.k.b(new Object[]{this.f, 89714527855213L}) - && (!(Boolean)this.d.getValue() || b.player.isOnGround()) - && !b.player.isUsingItem()) { - if (this.getKey(new Object[]{13012393635966L}) == 9998 && InventoryUtil2.e(new Object[]{17574514088175L})) { - a = false; - } else if (!InventoryUtil.l(new Object[]{Items.NETHERITE_SPEAR, 65539821781598L})) { - if (!Prestige.o.d_boolean______(new Object[0])) { - PlayerEntity var43 = CombatUtil.a_class_1657(new Object[]{16945855905304L}); - if (var43 != null && var43.distanceTo(b.player) > 10.0F) { - var43 = null; + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (mc.currentScreen == null + && mc.isWindowFocused() + && this.delayTimer.hasElapsedRandom(this.delay) + && (!this.stopInAir.getValue() || mc.player.isOnGround()) + && !mc.player.isUsingItem()) { + if (this.getKey() == 9998 && PlayerInteractions.isHoldingUsableItem()) { + active = false; + } else if (!InventoryUtil.isHolding(Items.NETHERITE_SPEAR)) { + if (!Prestige.silentRotationManager.hasActedThisTick()) { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null && enemy.distanceTo(mc.player) > 10.0F) { + enemy = null; } - if (this.l == 0 && (Boolean)this.c.getValue() && !InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L})) { - this.toggle(new Object[]{115103427876780L}); + if (this.stage == 0 && this.swordOnly.getValue() && !InventoryUtil.isSword(mc.player.getMainHandStack())) { + this.toggle(); } else { - HitResult var44 = b.crosshairTarget; - if (var44 != null) { - if (!((String)this.h.getValue()).equals("None")) { - a = true; + HitResult hitResult = mc.crosshairTarget; + if (hitResult != null) { + if (!this.crystalMode.getValue().equals("None")) { + active = true; } - switch (this.l) { + switch (this.stage) { case 0: - if (var44 instanceof EntityHitResult var47 && var47.getEntity() instanceof EndCrystalEntity) { - if (((String)this.h.getValue()).equals("None")) { - a = false; + if (hitResult instanceof EntityHitResult entityHit && entityHit.getEntity() instanceof EndCrystalEntity) { + if (this.crystalMode.getValue().equals("None")) { + active = false; return; } - if ((Boolean)this.e.getValue() && InventoryUtil3.a(new Object[]{var47.getEntity().getBlockPos(), 64853648109405L})) { - a = false; + if (this.pauseOnKill.getValue() && DeathLootDetector.isLootNearby(entityHit.getEntity().getBlockPos())) { + active = false; return; } - if ((Boolean)this.g.getValue() && var43 != null && var43.hurtTime != 0) { + if (this.perfectTiming.getValue() && enemy != null && enemy.hurtTime != 0) { return; } - InventoryUtil2.a_void_________(new Object[]{var47.getEntity(), 31382773185830L}); - this.f.reroll(new Object[]{57083216809697L}); - this.k.a_void_____________________(new Object[]{93540861878173L}); - a = false; + PlayerInteractions.attackEntity(entityHit.getEntity()); + this.delay.reroll(); + this.delayTimer.reset(); + active = false; return; } - if (!(var44 instanceof BlockHitResult) || !WorldUtil2.c(new Object[]{var44, 112619528716805L})) { - a = false; + if (!(hitResult instanceof BlockHitResult) || !BlockUtil.isClickableHit(hitResult)) { + active = false; return; } - if (b.world.getBlockState(((BlockHitResult)var44).getBlockPos()).getBlock() == Blocks.OBSIDIAN) { - this.l = 2; + if (mc.world.getBlockState(((BlockHitResult)hitResult).getBlockPos()).getBlock() == Blocks.OBSIDIAN) { + this.stage = 2; return; } - if (!InventoryUtil.i(new Object[]{Blocks.OBSIDIAN, 33415164545344L})) { - a = false; + if (!InventoryUtil.switchToBlock(Blocks.OBSIDIAN)) { + active = false; return; } - this.k(new Object[]{94042533868345L}); + this.nextStage(); break; case 1: - if (!(var44 instanceof BlockHitResult)) { - a = false; + if (!(hitResult instanceof BlockHitResult)) { + active = false; return; } - if (!WorldUtil2.c(new Object[]{var44, 112619528716805L})) { - a = false; + if (!BlockUtil.isClickableHit(hitResult)) { + active = false; return; } - BlockPos var46 = ((BlockHitResult)var44).getBlockPos().offset(((BlockHitResult)var44).getSide()); - if (WorldUtil2.g(new Object[]{var46, 87119771691358L})) { - a = false; + if (BlockUtil.hasEntityAt(((BlockHitResult)hitResult).getBlockPos().offset(((BlockHitResult)hitResult).getSide()))) { + active = false; return; } - if (b.world.getBlockState(((BlockHitResult)var44).getBlockPos()).getBlock() == Blocks.OBSIDIAN) { - a = false; - this.k(new Object[]{94042533868345L}); + if (mc.world.getBlockState(((BlockHitResult)hitResult).getBlockPos()).getBlock() == Blocks.OBSIDIAN) { + active = false; + this.nextStage(); return; } - if (WorldUtil2.g(new Object[]{((BlockHitResult)var44).getBlockPos(), 87119771691358L})) { - a = false; + if (BlockUtil.hasEntityAt(((BlockHitResult)hitResult).getBlockPos())) { + active = false; return; } - Block var48 = Blocks.OBSIDIAN; - Runnable var49 = () -> InventoryUtil2.a(new Object[]{(BlockHitResult)var44, 96519249476482L}); - Object[] var50 = new Object[]{null, null, null, 135286962703597L}; - var50[2] = false; - var50[1] = var49; - var50[0] = var48; - if (!InventoryUtil.k(var50)) { + if (!InventoryUtil.runWithBlock(Blocks.OBSIDIAN, () -> PlayerInteractions.interactBlock((BlockHitResult)hitResult), false)) { return; } - this.k(new Object[]{94042533868345L}); + this.nextStage(); break; case 2: - if (!InventoryUtil.h(new Object[]{Items.END_CRYSTAL, 55391972360703L})) { + if (!InventoryUtil.switchToItem(Items.END_CRYSTAL)) { return; } - this.k(new Object[]{94042533868345L}); + this.nextStage(); break; case 3: case 5: - if (((String)this.h.getValue()).equals("None")) { - this.toggle(new Object[]{115103427876780L}); + if (this.crystalMode.getValue().equals("None")) { + this.toggle(); return; } - if (this.l == 5 && !this.k.b(new Object[]{this.i, 89714527855213L})) { + if (this.stage == 5 && !this.delayTimer.hasElapsedRandom(this.crystalDelay)) { return; } - if (!(var44 instanceof BlockHitResult)) { + if (!(hitResult instanceof BlockHitResult)) { return; } - BlockPos var45 = ((BlockHitResult)var44).getBlockPos(); - if (b.world.getBlockState(var45).getBlock() != Blocks.OBSIDIAN) { + BlockPos blockPos = ((BlockHitResult)hitResult).getBlockPos(); + if (mc.world.getBlockState(blockPos).getBlock() != Blocks.OBSIDIAN) { return; } - if (WorldUtil2.g(new Object[]{var45, 87119771691358L})) { + if (BlockUtil.hasEntityAt(blockPos)) { return; } - Item var10000 = Items.END_CRYSTAL; - Runnable var10001 = () -> InventoryUtil2.a(new Object[]{(BlockHitResult)var44, 96519249476482L}); - Object[] var10005 = new Object[]{null, null, null, 114857082072684L}; - var10005[2] = false; - var10005[1] = var10001; - var10005[0] = var10000; - if (!InventoryUtil.j(var10005)) { + if (!InventoryUtil.runWithItem(Items.END_CRYSTAL, () -> PlayerInteractions.interactBlock((BlockHitResult)hitResult), false)) { return; } - this.k(new Object[]{94042533868345L}); + this.nextStage(); break; case 4: - if ((Boolean)this.g.getValue() && var43 != null && var43.hurtTime != 0) { + if (this.perfectTiming.getValue() && enemy != null && enemy.hurtTime != 0) { return; } - if (b.crosshairTarget.getType() == Type.ENTITY && ((EntityHitResult)var44).getEntity() instanceof EndCrystalEntity) { - if ((Boolean)this.e.getValue() - && InventoryUtil3.a(new Object[]{((EntityHitResult)var44).getEntity().getBlockPos(), 64853648109405L})) { + if (mc.crosshairTarget.getType() == Type.ENTITY && ((EntityHitResult)hitResult).getEntity() instanceof EndCrystalEntity) { + if (this.pauseOnKill.getValue() + && DeathLootDetector.isLootNearby(((EntityHitResult)hitResult).getEntity().getBlockPos())) { return; } - InventoryUtil2.a_void_________(new Object[]{((EntityHitResult)var44).getEntity(), 31382773185830L}); - if (!((String)this.h.getValue()).equals("Double Tap") && !((String)this.h.getValue()).equals("Infinite")) { - this.toggle(new Object[]{115103427876780L}); + PlayerInteractions.attackEntity(((EntityHitResult)hitResult).getEntity()); + if (!this.crystalMode.getValue().equals("Double Tap") && !this.crystalMode.getValue().equals("Infinite")) { + this.toggle(); } else { - this.k(new Object[]{94042533868345L}); + this.nextStage(); } return; } - if ((Boolean)this.j.getValue()) { - this.j(new Object[]{var1, 125788999008501L}); + if (this.silentRotations.getValue()) { + this.breakCrystalSilently(event); } break; case 6: - if (!this.k.b(new Object[]{this.i, 89714527855213L})) { + if (!this.delayTimer.hasElapsedRandom(this.crystalDelay)) { return; } - if ((Boolean)this.g.getValue() && var43 != null && var43.hurtTime != 0) { + if (this.perfectTiming.getValue() && enemy != null && enemy.hurtTime != 0) { return; } - if (b.crosshairTarget.getType() == Type.ENTITY && ((EntityHitResult)var44).getEntity() instanceof EndCrystalEntity) { - if ((Boolean)this.e.getValue() - && InventoryUtil3.a(new Object[]{((EntityHitResult)var44).getEntity().getBlockPos(), 64853648109405L})) { + if (mc.crosshairTarget.getType() == Type.ENTITY && ((EntityHitResult)hitResult).getEntity() instanceof EndCrystalEntity) { + if (this.pauseOnKill.getValue() + && DeathLootDetector.isLootNearby(((EntityHitResult)hitResult).getEntity().getBlockPos())) { return; } - InventoryUtil2.a_void_________(new Object[]{((EntityHitResult)var44).getEntity(), 31382773185830L}); - if (((String)this.h.getValue()).equals("Infinite")) { - this.l = 5; - this.f.reroll(new Object[]{57083216809697L}); - this.i.reroll(new Object[]{57083216809697L}); - this.k.a_void_____________________(new Object[]{93540861878173L}); + PlayerInteractions.attackEntity(((EntityHitResult)hitResult).getEntity()); + if (this.crystalMode.getValue().equals("Infinite")) { + this.stage = 5; + this.delay.reroll(); + this.crystalDelay.reroll(); + this.delayTimer.reset(); } else { - this.toggle(new Object[]{115103427876780L}); + this.toggle(); } return; } - if ((Boolean)this.j.getValue()) { - this.j(new Object[]{var1, 125788999008501L}); + if (this.silentRotations.getValue()) { + this.breakCrystalSilently(event); } } } @@ -314,56 +288,35 @@ public class AutoHitCrystal extends Module { } } - private void j(Object[] var1) { - FloatEvent2 var4 = (FloatEvent2)var1[0]; - long var2 = (Long)var1[1]; - var2 = 64315854250383L ^ var2; - long var5 = var2 ^ 35968770995926L; - long var7 = var2 ^ 92994165480540L; - long var9 = var2 ^ 31929171132135L; - long var11 = var2 ^ 129201646062614L; - long var13 = var2 ^ 136285819989915L; - long var15 = var2 ^ 84492936578115L; - long var17 = var2 ^ 32567678734915L; - long var19 = var2 ^ 126318504529447L; - Event.b(); - BlockPos var22 = null; - if (b.crosshairTarget.getType() == Type.BLOCK) { - var22 = ((BlockHitResult)b.crosshairTarget).getBlockPos(); + private void breakCrystalSilently(SendMovementPacketsEvent event) { + BlockPos obsidianPos = null; + if (mc.crosshairTarget.getType() == Type.BLOCK) { + obsidianPos = ((BlockHitResult)mc.crosshairTarget).getBlockPos(); } - if (var22 != null && b.world.getBlockState(var22).getBlock() == Blocks.OBSIDIAN) { - for (Entity var24 : b.world.getEntities()) { - if (var24 instanceof EndCrystalEntity) { - Vec3d var25 = PositionUtil.a(new Object[]{var24, var11}); - if (var25.distanceTo(var22.up().toCenterPos()) < 1.0) { - Box var26 = var24.getBoundingBox(); - Vec3d var27 = b.player.getEyePos(); - double var28 = Math.max(var26.minX - var27.x, Math.max(0.0, var27.x - var26.maxX)); - double var30 = Math.max(var26.minY - var27.y, Math.max(0.0, var27.y - var26.maxY)); - double var32 = Math.max(var26.minZ - var27.z, Math.max(0.0, var27.z - var26.maxZ)); - double var34 = Math.sqrt(var28 * var28 + var30 * var30 + var32 * var32); - if (var34 <= 2.7F && (!(Boolean)this.e.getValue() || !InventoryUtil3.a(new Object[]{var24.getBlockPos(), var19}))) { - float var10000 = (float)var25.x; - float var10001 = (float)(var25.y + 0.45F); - float var10002 = (float)var25.z; - Object[] var10005 = new Object[]{null, null, null, var15}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var10000; - RenderBatch var36 = WorldUtil.b_RenderBatch_____________(var10005); - var4.c(new Object[]{var36.b(new Object[0])}); - InventoryUtil2.a_void_________(new Object[]{var24, var7}); - if (((String)this.h.getValue()).equals("Infinite")) { - this.l = 5; - this.f.reroll(new Object[]{var13}); - this.k.a_void_____________________(new Object[]{var9}); + if (obsidianPos != null && mc.world.getBlockState(obsidianPos).getBlock() == Blocks.OBSIDIAN) { + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EndCrystalEntity) { + Vec3d crystalPos = PositionUtil.getEntityPos(entity); + if (crystalPos.distanceTo(obsidianPos.up().toCenterPos()) < 1.0) { + Box box = entity.getBoundingBox(); + Vec3d eyePos = mc.player.getEyePos(); + double dx = Math.max(box.minX - eyePos.x, Math.max(0.0, eyePos.x - box.maxX)); + double dy = Math.max(box.minY - eyePos.y, Math.max(0.0, eyePos.y - box.maxY)); + double dz = Math.max(box.minZ - eyePos.z, Math.max(0.0, eyePos.z - box.maxZ)); + if (Math.sqrt(dx * dx + dy * dy + dz * dz) <= 2.7F && (!this.pauseOnKill.getValue() || !DeathLootDetector.isLootNearby(entity.getBlockPos()))) { + event.setPitch(RotationUtil.getRotationToPoint((float)crystalPos.x, (float)(crystalPos.y + 0.45F), (float)crystalPos.z).getPitch()); + PlayerInteractions.attackEntity(entity); + if (this.crystalMode.getValue().equals("Infinite")) { + this.stage = 5; + this.delay.reroll(); + this.delayTimer.reset(); return; } else { - if (this.l != 6 && ((String)this.h.getValue()).equals("Double Tap")) { - this.k(new Object[]{var17}); + if (this.stage != 6 && this.crystalMode.getValue().equals("Double Tap")) { + this.nextStage(); } else { - this.toggle(new Object[]{var5}); + this.toggle(); } return; @@ -373,86 +326,14 @@ public class AutoHitCrystal extends Module { } } } else { - this.toggle(new Object[]{var5}); + this.toggle(); } } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 64315854250383L ^ var2; - long var4 = var2 ^ 64778402680107L; - long var6 = var2 ^ 101240711814231L; - this.i.reroll(new Object[]{var6}); - this.f.reroll(new Object[]{var6}); - this.l++; - this.k.a_void_____________________(new Object[]{var4}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private void nextStage() { + this.crystalDelay.reroll(); + this.delay.reroll(); + this.stage++; + this.delayTimer.reset(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoObbyCrystal.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoObbyCrystal.java index 3c5f670..9dd3219 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoObbyCrystal.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoObbyCrystal.java @@ -10,39 +10,34 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.combat.DamageUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.TickEvent10; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.event.TickEvent7; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.HandleBlockBreakingEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.event.DoAttackEvent; import dev.zprestige.prestige.hud.ModuleNotificationsElement; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.math.AutoObbyCrystalHelper; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper5; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderUtil6; -import dev.zprestige.prestige.render.Renderer2D; -import dev.zprestige.prestige.type.CrystalState; +import dev.zprestige.prestige.math.ObbyCrystalCandidate; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.ToggleAnimation; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.SwapBackTracker; +import dev.zprestige.prestige.type.ObbyCrystalState; import dev.zprestige.prestige.type.Easing; import dev.zprestige.prestige.type.EventPhase; import dev.zprestige.prestige.type.NotificationType; import dev.zprestige.prestige.world.PositionUtil; import dev.zprestige.prestige.world.RaycastUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Comparator; import java.util.HashSet; @@ -53,7 +48,6 @@ import java.util.Set; import java.util.Map.Entry; import java.util.function.Predicate; import net.minecraft.block.Blocks; -import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.PlayerListEntry; import net.minecraft.entity.Entity; import net.minecraft.entity.ItemEntity; @@ -71,373 +65,286 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.BlockPos.Mutable; -public class AutoObbyCrystal extends Module implements RenderContract3 { - private FloatSetting a; - private FloatSetting c; - private FloatSetting d; - private BoolSetting e; - private EnumSetting f; - private BoolSetting g; - private BoolSetting h; - private BoolSetting i; - private BoolSetting j; - private FloatSetting k; - private RangeSetting l; - private RangeSetting m; - private RangeSetting n; - private IntSetting o; - private FloatSetting p; - private BoolSetting q; - private BoolSetting r; - private FloatSetting s; - private EnumSetting t; - private FloatSetting u; - private FloatSetting v; - private FloatSetting w; - private BoolSetting x; - private BoolSetting y; - private BoolSetting z; - private IntSetting A; - private BoolSetting B; - private FloatSetting C; - private FloatSetting D; - private FloatSetting E; - private BoolSetting F; - private FloatSetting G; - private FloatSetting H; - private FloatSetting I; - private BoolSetting J; - private BoolSetting K; - private BoolSetting L; - private IntSetting M; - private ColorSetting N; - private ColorSetting O; - private ColorSetting P; - private ColorSetting Q; - public static boolean R; - private CrystalState S = CrystalState.IDLE; - private RenderHelper27 T = new RenderHelper27(26293358099357L); - private RenderHelper27 U = new RenderHelper27(26293358099357L); - private RenderHelper27 V = new RenderHelper27(26293358099357L); - private RenderHelper27 W = new RenderHelper27(26293358099357L); - private boolean X; - private boolean Y; - private PlayerEntity Z; - private BlockPos aa; - private BlockPos ab; - private Direction ac; - private Vec3d ad; - private BlockPos ae; - private int af = -1; - private boolean ag; - private boolean ah; - private int ai = -1; - private List aj = new ArrayList(); - private Vec3d ak; - private Entity al; - private Vec3d am; - private Vec3d an = Vec3d.ZERO; - private long ao = Long.MIN_VALUE; - private static final double ap = 0.5; - private static final double aq = 0.02; - private static final double ar = 27.5625; - private static final float as = 180.0F; - private static final double at = 900.0; - private static final float au = 0.6F; - private static final float av = 0.4F; - private static final float aw = 0.02F; - private RenderHelper5 ax = new RenderHelper5(180.0F, false, Easing.SINE_IN_OUT, 88790582046503L); - private RenderHelper5 ay = new RenderHelper5(180.0F, false, Easing.SINE_IN_OUT, 88790582046503L); - private LinkedHashMap az = new LinkedHashMap(); - private HashSet aA = new HashSet(); - private BlockPos aB; - private BlockPos aC; - private int aD; - private RenderHelper27 aE = new RenderHelper27(26293358099357L); +public class AutoObbyCrystal extends Module implements RotationProvider { + private FloatSetting targetRange; + private FloatSetting minDamage; + private FloatSetting maxSelfDamage; + private BoolSetting antiSuicide; + private EnumSetting breakMode; + private BoolSetting rotateSilently; + private BoolSetting swapBack; + private BoolSetting render; + private BoolSetting advanced; + private FloatSetting maxTargetDistance; + private RangeSetting placeDelay; + private RangeSetting breakDelay; + private RangeSetting firstActionDelay; + private IntSetting midSequenceMovementTolerance; + private FloatSetting midSequenceDamageTolerance; + private BoolSetting debugAborts; + private BoolSetting fastSwap; + private FloatSetting silentAimFov; + private EnumSetting momentumMode; + private FloatSetting momentumWeight; + private FloatSetting yawChangeWeight; + private FloatSetting yawChangeCap; + private BoolSetting prefer1x1; + private BoolSetting preferExistingObby; + private BoolSetting onlyExistingObby; + private IntSetting pathLookahead; + private BoolSetting predictTarget; + private FloatSetting predictTicks; + private FloatSetting predictPingBonus; + private FloatSetting predictMaxOffset; + private BoolSetting predictSelf; + private FloatSetting selfPredictTicks; + private FloatSetting selfPredictMaxOffset; + private FloatSetting reach; + private BoolSetting renderTarget; + private BoolSetting renderPlacement; + private BoolSetting renderCandidates; + private IntSetting maxCandidates; + private ColorSetting obsidianColor; + private ColorSetting crystalColor; + private ColorSetting targetColor; + private ColorSetting candidateColor; + public static boolean sequenceActive; + private ObbyCrystalState state = ObbyCrystalState.IDLE; + private StopWatch placeTimer = new StopWatch(); + private StopWatch breakTimer = new StopWatch(); + private StopWatch stageTimer = new StopWatch(); + private StopWatch firstActionTimer = new StopWatch(); + private boolean actedThisSequence; + private boolean obsidianJustPlaced; + private PlayerEntity target; + private BlockPos basePos; + private BlockPos supportPos; + private Direction placeSide; + private Vec3d hitVec; + private BlockPos targetStartPos; + private int swapBackSlot = -1; + private boolean breakTimeoutRetried; + private boolean crystalOutOfReach; + private int lastAttackedCrystalId = -1; + private List candidates = new ArrayList(); + private Vec3d serverEyePos; + private Entity trackedEntity; + private Vec3d trackedLastPos; + private Vec3d trackedVelocity = Vec3d.ZERO; + private long trackedLastTime = Long.MIN_VALUE; + private ToggleAnimation targetFade = new ToggleAnimation(180.0F, false, Easing.SINE_IN_OUT); + private ToggleAnimation placementFade = new ToggleAnimation(180.0F, false, Easing.SINE_IN_OUT); + private LinkedHashMap candidateFades = new LinkedHashMap(); + private HashSet renderedCandidates = new HashSet(); + private BlockPos lastTargetPos; + private BlockPos lastBasePos; + private int targetDrift; + private StopWatch errorNotifyTimer = new StopWatch(); public AutoObbyCrystal() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.k.setVisibility_FloatSetting(new Object[]{(Predicate)lpL280_0 -> (Boolean)this.j.getValue(), 35046756052036L}); - this.s - .setVisibility_FloatSetting(new Object[]{(Predicate)lpL272_0 -> (Boolean)this.j.getValue() && (Boolean)this.g.getValue(), 35046756052036L}); - this.n.setVisibility_RangeSetting(new Object[]{(Predicate)lpL277_0 -> (Boolean)this.j.getValue(), 37043306203287L}); - this.B.setVisibility_BoolSetting(new Object[]{(Predicate)lpL263_0 -> (Boolean)this.j.getValue(), 73196168581295L}); - this.D - .setVisibility_FloatSetting(new Object[]{(Predicate)lpL261_0 -> (Boolean)this.j.getValue() && (Boolean)this.B.getValue(), 35046756052036L}); - this.J - .setVisibility_BoolSetting(new Object[]{(Predicate)lpL255_0 -> (Boolean)this.j.getValue() && (Boolean)this.i.getValue(), 73196168581295L}); - this.I.setVisibility_FloatSetting(new Object[]{(Predicate)lpL256_0 -> (Boolean)this.j.getValue(), 35046756052036L}); - this.C - .setVisibility_FloatSetting(new Object[]{(Predicate)lpL262_0 -> (Boolean)this.j.getValue() && (Boolean)this.B.getValue(), 35046756052036L}); - this.p.setVisibility_FloatSetting(new Object[]{(Predicate)lpL275_0 -> (Boolean)this.j.getValue(), 35046756052036L}); - this.q.setVisibility_BoolSetting(new Object[]{(Predicate)lpL274_0 -> (Boolean)this.j.getValue(), 73196168581295L}); - this.Q - .setVisibility_ColorSetting( - new Object[]{ - (Predicate)lpL248_0 -> (Boolean)this.j.getValue() && (Boolean)this.i.getValue() && (Boolean)this.L.getValue(), 119980880492450L - } + this.maxTargetDistance.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.silentAimFov + .visibleWhen((Predicate)ignored -> this.advanced.getValue() && this.rotateSilently.getValue()); + this.firstActionDelay.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.predictTarget.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.predictPingBonus + .visibleWhen((Predicate)ignored -> this.advanced.getValue() && this.predictTarget.getValue()); + this.renderTarget + .visibleWhen((Predicate)ignored -> this.advanced.getValue() && this.render.getValue()); + this.reach.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.predictTicks + .visibleWhen((Predicate)ignored -> this.advanced.getValue() && this.predictTarget.getValue()); + this.midSequenceDamageTolerance.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.debugAborts.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.candidateColor + .visibleWhen( + (Predicate)ignored -> this.advanced.getValue() && this.render.getValue() && this.renderCandidates.getValue() ); - this.O - .setVisibility_ColorSetting( - new Object[]{ - (Predicate)lpL250_0 -> (Boolean)this.j.getValue() && (Boolean)this.i.getValue() && (Boolean)this.K.getValue(), 119980880492450L - } + this.crystalColor + .visibleWhen( + (Predicate)ignored -> this.advanced.getValue() && this.render.getValue() && this.renderPlacement.getValue() ); - this.P - .setVisibility_ColorSetting( - new Object[]{ - (Predicate)lpL249_0 -> (Boolean)this.j.getValue() && (Boolean)this.i.getValue() && (Boolean)this.J.getValue(), 119980880492450L - } + this.targetColor + .visibleWhen( + (Predicate)ignored -> this.advanced.getValue() && this.render.getValue() && this.renderTarget.getValue() ); - this.v.setVisibility_FloatSetting(new Object[]{(Predicate)lpL269_0 -> (Boolean)this.j.getValue(), 35046756052036L}); - this.E - .setVisibility_FloatSetting(new Object[]{(Predicate)lpL260_0 -> (Boolean)this.j.getValue() && (Boolean)this.B.getValue(), 35046756052036L}); - this.G - .setVisibility_FloatSetting(new Object[]{(Predicate)lpL258_0 -> (Boolean)this.j.getValue() && (Boolean)this.F.getValue(), 35046756052036L}); - this.m.setVisibility_RangeSetting(new Object[]{(Predicate)lpL278_0 -> (Boolean)this.j.getValue(), 37043306203287L}); - this.w - .setVisibility_FloatSetting( - new Object[]{(Predicate)lpL268_0 -> (Boolean)this.j.getValue() && (Float)this.v.getValue() > 0.0F, 35046756052036L} + this.yawChangeWeight.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.predictMaxOffset + .visibleWhen((Predicate)ignored -> this.advanced.getValue() && this.predictTarget.getValue()); + this.selfPredictTicks + .visibleWhen((Predicate)ignored -> this.advanced.getValue() && this.predictSelf.getValue()); + this.breakDelay.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.yawChangeCap + .visibleWhen( + (Predicate)ignored -> this.advanced.getValue() && this.yawChangeWeight.getValue() > 0.0F ); - this.H - .setVisibility_FloatSetting(new Object[]{(Predicate)lpL257_0 -> (Boolean)this.j.getValue() && (Boolean)this.F.getValue(), 35046756052036L}); - this.o.setVisibility_IntSetting(new Object[]{(Predicate)lpL276_0 -> (Boolean)this.j.getValue(), 98265949679296L}); - this.r.setVisibility_BoolSetting(new Object[]{(Predicate)lpL273_0 -> (Boolean)this.j.getValue(), 73196168581295L}); - this.t.setVisibility_EnumSetting(new Object[]{(Predicate)lpL271_0 -> (Boolean)this.j.getValue(), 90319707064974L}); - this.z.setVisibility_BoolSetting(new Object[]{(Predicate)lpL265_0 -> (Boolean)this.j.getValue(), 73196168581295L}); - this.L - .setVisibility_BoolSetting(new Object[]{(Predicate)lpL253_0 -> (Boolean)this.j.getValue() && (Boolean)this.i.getValue(), 73196168581295L}); - this.u - .setVisibility_FloatSetting( - new Object[]{(Predicate)lpL270_0 -> (Boolean)this.j.getValue() && !((String)this.t.getValue()).equals("None"), 35046756052036L} + this.selfPredictMaxOffset + .visibleWhen((Predicate)ignored -> this.advanced.getValue() && this.predictSelf.getValue()); + this.midSequenceMovementTolerance.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.fastSwap.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.momentumMode.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.onlyExistingObby.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.renderCandidates + .visibleWhen((Predicate)ignored -> this.advanced.getValue() && this.render.getValue()); + this.momentumWeight + .visibleWhen( + (Predicate)ignored -> this.advanced.getValue() && !this.momentumMode.getValue().equals("None") ); - this.N - .setVisibility_ColorSetting( - new Object[]{ - (Predicate)lpL251_0 -> (Boolean)this.j.getValue() && (Boolean)this.i.getValue() && (Boolean)this.K.getValue(), 119980880492450L - } + this.obsidianColor + .visibleWhen( + (Predicate)ignored -> this.advanced.getValue() && this.render.getValue() && this.renderPlacement.getValue() ); - this.l.setVisibility_RangeSetting(new Object[]{(Predicate)lpL279_0 -> (Boolean)this.j.getValue(), 37043306203287L}); - this.M - .setVisibility_IntSetting( - new Object[]{ - (Predicate)lpL252_0 -> (Boolean)this.j.getValue() && (Boolean)this.i.getValue() && (Boolean)this.L.getValue(), 98265949679296L - } + this.placeDelay.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.maxCandidates + .visibleWhen( + (Predicate)ignored -> this.advanced.getValue() && this.render.getValue() && this.renderCandidates.getValue() ); - this.y.setVisibility_BoolSetting(new Object[]{(Predicate)lpL266_0 -> (Boolean)this.j.getValue(), 73196168581295L}); - this.A.setVisibility_IntSetting(new Object[]{(Predicate)lpL264_0 -> (Boolean)this.j.getValue(), 98265949679296L}); - this.x.setVisibility_BoolSetting(new Object[]{(Predicate)lpL267_0 -> (Boolean)this.j.getValue(), 73196168581295L}); - this.K - .setVisibility_BoolSetting(new Object[]{(Predicate)lpL254_0 -> (Boolean)this.j.getValue() && (Boolean)this.i.getValue(), 73196168581295L}); - this.F.setVisibility_BoolSetting(new Object[]{(Predicate)lpL259_0 -> (Boolean)this.j.getValue(), 73196168581295L}); + this.preferExistingObby.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.pathLookahead.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.prefer1x1.visibleWhen((Predicate)ignored -> this.advanced.getValue()); + this.renderPlacement + .visibleWhen((Predicate)ignored -> this.advanced.getValue() && this.render.getValue()); + this.predictSelf.visibleWhen((Predicate)ignored -> this.advanced.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 83517202222702L; - long var6 = var2 ^ 91082959635357L; - this.y(new Object[]{var4}); - Prestige.o.e(new Object[]{this, var6}); + public void onEnable() { + this.resetState(); + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 51011343502304L; - long var6 = var2 ^ 18099804951565L; - long var8 = var2 ^ 82893747353842L; - long var10 = var2 ^ 140372736859409L; - long var12 = var2 ^ 64021474395393L; - if (this.af != -1 && (Boolean)this.h.getValue() && Prestige.o.d_boolean______(new Object[0])) { - Renderer2D var10000 = Prestige.o; - int var10001 = this.af; - Object[] var10004 = new Object[]{null, var8}; - var10004[0] = var10001; - var10000.i(var10004); - RenderUtil6.a_void____________________________(new Object[]{this, var4}); - this.af = -1; + public void onDisable() { + if (this.swapBackSlot != -1 && this.swapBack.getValue() && Prestige.silentRotationManager.hasActedThisTick()) { + Prestige.silentRotationManager.scheduleSlotSwitch(this.swapBackSlot); + SwapBackTracker.release(this); + this.swapBackSlot = -1; } - this.w(new Object[]{var12}); - this.y(new Object[]{var6}); - Prestige.o.f(new Object[]{this, var10}); + this.restoreSwapSlot(); + this.resetState(); + Prestige.silentRotationManager.removeRotationProvider(this); } @Override - public int a() { + public int getRotationPriority() { return 30; } @Subscribe - public void a(TickEvent3 var1) { - this.y(new Object[]{61393938998120L}); + public void onGameJoin(GameJoinEvent event) { + this.resetState(); } @Subscribe - public void a(TickEvent7 var1) { - if (this.S != CrystalState.IDLE) { - if (!((String)this.f.getValue()).equals("Manual") - || this.S != CrystalState.BREAK_CRYSTAL - || !(b.crosshairTarget instanceof EntityHitResult var5 && var5.getEntity() instanceof EndCrystalEntity)) { - var1.a_void_____(new Object[0]); + public void onDoAttack(DoAttackEvent event) { + if (this.state != ObbyCrystalState.IDLE) { + if (!this.breakMode.getValue().equals("Manual") + || this.state != ObbyCrystalState.BREAK_CRYSTAL + || !(mc.crosshairTarget instanceof EntityHitResult entityHit && entityHit.getEntity() instanceof EndCrystalEntity)) { + event.cancel(); } } } @Subscribe - public void a(TickEvent10 var1) { - if (this.S != CrystalState.IDLE) { - var1.a_void_____(new Object[0]); + public void onHandleBlockBreaking(HandleBlockBreakingEvent event) { + if (this.state != ObbyCrystalState.IDLE) { + event.cancel(); } } @Subscribe - public void a(TickEvent5 var1) { - if (this.S != CrystalState.IDLE) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (this.state != ObbyCrystalState.IDLE) { + event.cancel(); } } @Subscribe - public void a(FloatEvent2 var1) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE && b.player != null) { - this.ak = b.player.getEyePos(); + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (event.getPhase() == EventPhase.PRE && mc.player != null) { + this.serverEyePos = mc.player.getEyePos(); } } @Subscribe - public void a(TickEvent27 var1) { - if ((Boolean)this.i.getValue() && b.player != null && b.world != null) { - float var23 = b_float__________(new Object[]{136649849765492L}); - boolean var24 = (Boolean)this.J.getValue() && this.Z != null; - if (var24) { - this.aB = this.Z.getBlockPos(); + public void onRender3D(Render3DEvent event) { + if (this.render.getValue() && mc.player != null && mc.world != null) { + float pulse = getPulse(); + boolean showTarget = this.renderTarget.getValue() && this.target != null; + if (showTarget) { + this.lastTargetPos = this.target.getBlockPos(); } - RenderHelper5 var10000 = this.ax; - Object[] var10004 = new Object[]{null, null, 26288240986585L}; - var10004[1] = var24; - var10004[0] = var10000; - float var25 = c(var10004); - if ((Boolean)this.J.getValue() && var25 > 0.01F && this.aB != null) { - Color var44 = (Color)this.P.getValue(); - Object[] var10005 = new Object[]{null, null, null, 108485859613149L}; - var10005[2] = var23; - var10005[1] = var25; - var10005[0] = var44; - Color var26 = a_Color___(var10005); - if (var26.getAlpha() > 0) { - this.j(new Object[]{var1, this.aB, var26, 33469782502931L}); - this.j(new Object[]{var1, this.aB.up(), var26, 33469782502931L}); + float targetProgress = updateFade(this.targetFade, showTarget); + if (this.renderTarget.getValue() && targetProgress > 0.01F && this.lastTargetPos != null) { + Color targetBoxColor = fadeColor(this.targetColor.getValue(), targetProgress, pulse); + if (targetBoxColor.getAlpha() > 0) { + this.drawOutline(event, this.lastTargetPos, targetBoxColor); + this.drawOutline(event, this.lastTargetPos.up(), targetBoxColor); } } - boolean var36 = (Boolean)this.K.getValue() && this.aa != null; - if (var36) { - this.aC = this.aa; + boolean showPlacement = this.renderPlacement.getValue() && this.basePos != null; + if (showPlacement) { + this.lastBasePos = this.basePos; } - var10000 = this.ay; - var10004 = new Object[]{null, null, 26288240986585L}; - var10004[1] = var36; - var10004[0] = var10000; - float var27 = c(var10004); - if ((Boolean)this.K.getValue() && var27 > 0.01F && this.aC != null) { - boolean var28 = WorldUtil2.b(new Object[]{this.aC, Blocks.OBSIDIAN, 91415361137757L}) - || WorldUtil2.b(new Object[]{this.aC, Blocks.BEDROCK, 91415361137757L}); - BlockPos var10002 = this.aC; - Color var10003 = (Color)this.N.getValue(); - Object[] var10008 = new Object[]{null, null, null, 108485859613149L}; - var10008[2] = var23; - var10008[1] = var27; - var10008[0] = var10003; - var10003 = a_Color___(var10008); - boolean var51 = !var28; - var10008 = new Object[]{null, null, null, null, null, 40399733295326L}; - var10008[4] = var23; - var10008[3] = var51; - var10008[2] = var10003; - var10008[1] = var10002; - var10008[0] = var1; - this.k(var10008); - var10002 = this.aC.up(); - var10003 = (Color)this.O.getValue(); - var10008 = new Object[]{null, null, null, 108485859613149L}; - var10008[2] = var23; - var10008[1] = var27; - var10008[0] = var10003; - var10003 = a_Color___(var10008); - var10008 = new Object[]{null, null, null, null, null, 40399733295326L}; - var10008[4] = var23; - var10008[3] = true; - var10008[2] = var10003; - var10008[1] = var10002; - var10008[0] = var1; - this.k(var10008); + float placementProgress = updateFade(this.placementFade, showPlacement); + if (this.renderPlacement.getValue() && placementProgress > 0.01F && this.lastBasePos != null) { + boolean hasBase = BlockUtil.isOf(this.lastBasePos, Blocks.OBSIDIAN) + || BlockUtil.isOf(this.lastBasePos, Blocks.BEDROCK); + this.drawBox(event, this.lastBasePos, fadeColor(this.obsidianColor.getValue(), placementProgress, pulse), !hasBase, pulse); + this.drawBox(event, this.lastBasePos.up(), fadeColor(this.crystalColor.getValue(), placementProgress, pulse), true, pulse); } - this.aA.clear(); - boolean var37 = (Boolean)this.L.getValue(); - if (var37 && this.S == CrystalState.IDLE && !this.aj.isEmpty()) { - int var29 = Math.min(this.aj.size(), (Integer)this.M.getValue()); - Color var30 = (Color)this.Q.getValue(); + this.renderedCandidates.clear(); + boolean showCandidates = this.renderCandidates.getValue(); + if (showCandidates && this.state == ObbyCrystalState.IDLE && !this.candidates.isEmpty()) { + int count = Math.min(this.candidates.size(), this.maxCandidates.getValue()); + Color color = this.candidateColor.getValue(); - for (int var31 = 0; var31 < var29; var31++) { - BlockPos var32 = ((AutoObbyCrystalHelper)this.aj.get(var31)).a.up(); - this.aA.add(var32); - RenderHelper5 var33 = (RenderHelper5)this.az.computeIfAbsent(var32, lpL247_0 -> new RenderHelper5(180.0F, false, Easing.SINE_IN_OUT, 88790582046503L)); - if (!var33.a(new Object[0])) { - var10004 = new Object[]{null, 134514778598418L}; - var10004[0] = true; - var33.a_void_______________________(var10004); + for (int index = 0; index < count; index++) { + BlockPos candidatePos = ((ObbyCrystalCandidate)this.candidates.get(index)).basePos.up(); + this.renderedCandidates.add(candidatePos); + ToggleAnimation fade = (ToggleAnimation)this.candidateFades.computeIfAbsent(candidatePos, ignored -> new ToggleAnimation(180.0F, false, Easing.SINE_IN_OUT)); + if (!fade.getState()) { + fade.setState(true); } - int var34 = Math.max(30, var30.getAlpha() - var30.getAlpha() * var31 / Math.max(1, var29)); - float var10001 = var33.a_float___________________(new Object[]{86379377865377L}); - Object[] var54 = new Object[]{null, null, null, 98172499446587L}; - var54[2] = var23; - var54[1] = var10001; - var54[0] = var34; - int var35 = a_int_________(var54); - if (var35 > 0) { - this.j(new Object[]{var1, var32, new Color(var30.getRed(), var30.getGreen(), var30.getBlue(), var35), 33469782502931L}); + int alpha = scaleAlpha(Math.max(30, color.getAlpha() - color.getAlpha() * index / Math.max(1, count)), fade.getProgress(), pulse); + if (alpha > 0) { + this.drawOutline(event, candidatePos, new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha)); } } } - Iterator var38 = this.az.entrySet().iterator(); + Iterator iterator = this.candidateFades.entrySet().iterator(); - while (var38.hasNext()) { - Entry var39 = (Entry)var38.next(); - if (!this.aA.contains(var39.getKey())) { - RenderHelper5 var40 = (RenderHelper5)var39.getValue(); - if (var40.a(new Object[0])) { - var10004 = new Object[]{null, 134514778598418L}; - var10004[0] = false; - var40.a_void_______________________(var10004); + while (iterator.hasNext()) { + Entry entry = (Entry)iterator.next(); + if (!this.renderedCandidates.contains(entry.getKey())) { + ToggleAnimation staleFade = (ToggleAnimation)entry.getValue(); + if (staleFade.getState()) { + staleFade.setState(false); } - float var41 = var40.a_float___________________(new Object[]{86379377865377L}); - if (var41 < 0.01F) { - var38.remove(); - } else if (var37) { - Color var42 = (Color)this.Q.getValue(); - Object[] var55 = new Object[]{null, null, null, 98172499446587L}; - var55[2] = var23; - var55[1] = var41; - var55[0] = 30; - int var43 = a_int_________(var55); - if (var43 > 0) { - this.j( - new Object[]{ - var1, (BlockPos)var39.getKey(), new Color(var42.getRed(), var42.getGreen(), var42.getBlue(), var43), 33469782502931L - } + float progress = staleFade.getProgress(); + if (progress < 0.01F) { + iterator.remove(); + } else if (showCandidates) { + Color staleColor = this.candidateColor.getValue(); + int staleAlpha = scaleAlpha(30, progress, pulse); + if (staleAlpha > 0) { + this.drawOutline( + event, (BlockPos)entry.getKey(), new Color(staleColor.getRed(), staleColor.getGreen(), staleColor.getBlue(), staleAlpha) ); } } @@ -446,439 +353,283 @@ public class AutoObbyCrystal extends Module implements RenderContract3 { } } - private static float b_float__________(Object[] var0) { + private static float getPulse() { return 0.5F + 0.5F * (float)Math.sin(System.currentTimeMillis() / 900.0 * (Math.PI * 2)); } - private static float c(Object[] var0) { - RenderHelper5 var4 = (RenderHelper5)var0[0]; - boolean var3 = (Boolean)var0[1]; - long var1 = (Long)var0[2]; - var1 = 45124953315131L ^ var1; - long var5 = var1 ^ 75548005790448L; - long var7 = var1 ^ 123613616680003L; - if (var4.a(new Object[0]) != var3) { - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var3; - var4.a_void_______________________(var10004); + private static float updateFade(ToggleAnimation animation, boolean visible) { + if (animation.getState() != visible) { + animation.setState(visible); } - return var4.a_float___________________(new Object[]{var7}); + return animation.getProgress(); } - private static int a_int_________(Object[] var0) { - int var1 = (Integer)var0[0]; - float var5 = (Float)var0[1]; - float var2 = (Float)var0[2]; - int var6 = Math.round(var1 * var5 * (0.6F + 0.4F * var2)); - return Math.max(0, Math.min(255, var6)); + private static int scaleAlpha(int alpha, float progress, float pulse) { + return Math.max(0, Math.min(255, Math.round(alpha * progress * (0.6F + 0.4F * pulse)))); } - private static Color a_Color___(Object[] var0) { - Color var3 = (Color)var0[0]; - float var1 = (Float)var0[1]; - float var2 = (Float)var0[2]; - long var4 = (Long)var0[3]; - var4 = 45124953315131L ^ var4; - long var6 = var4 ^ 20792960402909L; - int var10002 = var3.getRed(); - int var10003 = var3.getGreen(); - int var10004 = var3.getBlue(); - int var10005 = var3.getAlpha(); - Object[] var10010 = new Object[]{null, null, null, var6}; - var10010[2] = var2; - var10010[1] = var1; - var10010[0] = var10005; - return new Color(var10002, var10003, var10004, a_int_________(var10010)); + private static Color fadeColor(Color color, float progress, float pulse) { + return new Color(color.getRed(), color.getGreen(), color.getBlue(), scaleAlpha(color.getAlpha(), progress, pulse)); } - private void j(Object[] var1) { - TickEvent27 var4 = (TickEvent27)var1[0]; - BlockPos var2 = (BlockPos)var1[1]; - Color var3 = (Color)var1[2]; - long var5 = (Long)var1[3]; - var5 = 45124953315131L ^ var5; - long var7 = var5 ^ 100348188181670L; - MatrixCameraData var10000 = var4.b; - RenderHelper8 var10001 = var4.a; - float var10002 = var2.getX(); - float var10003 = var2.getY(); - float var10004 = var2.getZ(); - float var10005 = var2.getX() + 1.0F; - float var10006 = var2.getY() + 1.0F; - float var10007 = var2.getZ() + 1.0F; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var3, var7}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); + private void drawOutline(Render3DEvent event, BlockPos pos, Color color) { + CameraMatrices matrices = event.context; + BufferSource buffers = event.renderer; + float minX = pos.getX(); + float minY = pos.getY(); + float minZ = pos.getZ(); + ShapeRenderer.drawBoxOutline(matrices, buffers, minX, minY, minZ, pos.getX() + 1.0F, pos.getY() + 1.0F, pos.getZ() + 1.0F, color); } - private void k(Object[] var1) { - TickEvent27 var8 = (TickEvent27)var1[0]; - BlockPos var7 = (BlockPos)var1[1]; - Color var2 = (Color)var1[2]; - boolean var3 = (Boolean)var1[3]; - float var6 = (Float)var1[4]; - long var4 = (Long)var1[5]; - var4 = 45124953315131L ^ var4; - long var9 = var4 ^ 122185494010108L; - long var11 = var4 ^ 21736719364598L; - if (var3) { - Color var14 = new Color(var2.getRed(), var2.getGreen(), var2.getBlue(), Math.max(1, var2.getAlpha() / 4)); - float var15 = 0.01F * var6; - MatrixCameraData var10000 = var8.b; - RenderHelper8 var10001 = var8.a; - float var10002 = var7.getX() - var15; - float var10003 = var7.getY() - var15; - float var10004 = var7.getZ() - var15; - float var10005 = var7.getX() + 1.0F + var15; - float var10006 = var7.getY() + 1.0F + var15; - float var10007 = var7.getZ() + 1.0F + var15; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var14, var9}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.h(var10011); + private void drawBox(Render3DEvent event, BlockPos pos, Color color, boolean filled, float pulse) { + if (filled) { + Color fillColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), Math.max(1, color.getAlpha() / 4)); + float inflate = 0.01F * pulse; + ShapeRenderer.drawFilledBox(event.context, event.renderer, pos.getX() - inflate, pos.getY() - inflate, pos.getZ() - inflate, pos.getX() + 1.0F + inflate, pos.getY() + 1.0F + inflate, pos.getZ() + 1.0F + inflate, fillColor); } - this.j(new Object[]{var8, var7, var2, var11}); + this.drawOutline(event, pos, color); } @Subscribe - public void a(TickEvent19 var1) { - if (b.player == null || b.world == null || b.currentScreen != null || !b.isWindowFocused() || b.player.isUsingItem()) { - R = false; - } else if (AutoHitCrystal.a) { - if (this.S != CrystalState.IDLE) { - this.v(new Object[]{"AutoHitCrystal enabled", 52124688770449L}); + public void onClientTick(ClientTickEvent event) { + if (mc.player == null || mc.world == null || mc.currentScreen != null || !mc.isWindowFocused() || mc.player.isUsingItem()) { + sequenceActive = false; + } else if (AutoHitCrystal.active) { + if (this.state != ObbyCrystalState.IDLE) { + this.abort("AutoHitCrystal enabled"); } - this.w(new Object[]{32549319504484L}); - R = false; + this.restoreSwapSlot(); + sequenceActive = false; } else { - this.l(new Object[]{this.Z != null ? this.Z : CombatUtil.a_class_1657(new Object[]{16945855905304L}), 11132492658288L}); - if (this.S != CrystalState.IDLE && !this.m_boolean(new Object[]{109563178542307L})) { - this.v(new Object[]{"invalid target", 52124688770449L}); + this.trackVelocity((Entity)(this.target != null ? this.target : TargetSelector.getClosestEnemy())); + if (this.state != ObbyCrystalState.IDLE && !this.isTargetValid()) { + this.abort("invalid target"); } - if (this.S != CrystalState.IDLE && this.n_boolean(new Object[]{79048407270062L})) { - this.v(new Object[]{"targetMoved d=" + this.aD, 52124688770449L}); + if (this.state != ObbyCrystalState.IDLE && this.hasTargetMoved()) { + this.abort("targetMoved d=" + this.targetDrift); } - if (this.S != CrystalState.IDLE) { - RenderHelper27 var10000 = this.V; - float var10001 = this.d_float_(new Object[]{28418962328853L}); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - if (this.S == CrystalState.BREAK_CRYSTAL && !this.ag) { - this.ag = true; - this.S = CrystalState.PLACE_CRYSTAL; - this.V.a_void_____________________(new Object[]{93540861878173L}); + if (this.state != ObbyCrystalState.IDLE) { + if (this.stageTimer.hasElapsed(this.getStageTimeout())) { + if (this.state == ObbyCrystalState.BREAK_CRYSTAL && !this.breakTimeoutRetried) { + this.breakTimeoutRetried = true; + this.state = ObbyCrystalState.PLACE_CRYSTAL; + this.stageTimer.reset(); } else { - this.v(new Object[]{"stageTimeout " + (int)this.d_float_(new Object[]{28418962328853L}) + "ms", 52124688770449L}); + this.abort("stageTimeout " + (int)this.getStageTimeout() + "ms"); } } } - if (this.S == CrystalState.IDLE) { - this.w(new Object[]{32549319504484L}); - this.t(new Object[]{31110594063981L}); - } else if (this.S == CrystalState.BREAK_CRYSTAL && ((String)this.f.getValue()).equals("Manual")) { - if (this.aa != null && !this.g(new Object[]{this.aa.up(), 102069325938248L}) && this.U.b(new Object[]{this.m, 89714527855213L})) { - this.S = CrystalState.PLACE_CRYSTAL; - this.V.a_void_____________________(new Object[]{93540861878173L}); + if (this.state == ObbyCrystalState.IDLE) { + this.restoreSwapSlot(); + this.startSequence(); + } else if (this.state == ObbyCrystalState.BREAK_CRYSTAL && this.breakMode.getValue().equals("Manual")) { + if (this.basePos != null && !this.hasCrystalAt(this.basePos.up()) && this.breakTimer.hasElapsedRandom(this.breakDelay)) { + this.state = ObbyCrystalState.PLACE_CRYSTAL; + this.stageTimer.reset(); } - } else if (!(Boolean)this.g.getValue()) { - if (Prestige.o.d_boolean______(new Object[0])) { + } else if (!this.rotateSilently.getValue()) { + if (Prestige.silentRotationManager.hasActedThisTick()) { return; } - this.m(new Object[]{67308089662998L}); + this.rotateAndAct(); } - R = this.S != CrystalState.IDLE; + sequenceActive = this.state != ObbyCrystalState.IDLE; } } - private void l(Object[] var1) { - Entity var4 = (Entity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 45124953315131L ^ var2; - long var5 = var2 ^ 33598012771367L; - Event.b(); - long var8 = b.world.getTime(); - if (var4 == null) { - this.al = null; - this.am = null; - this.an = Vec3d.ZERO; - this.ao = var8; + private void trackVelocity(Entity entity) { + long worldTime = mc.world.getTime(); + if (entity == null) { + this.trackedEntity = null; + this.trackedLastPos = null; + this.trackedVelocity = Vec3d.ZERO; + this.trackedLastTime = worldTime; } else { - Vec3d var10 = PositionUtil.a(new Object[]{var4, var5}); - if (var4 == this.al && this.am != null && var8 - this.ao == 1L) { - this.an = this.an.multiply(0.5).add(var10.subtract(this.am).multiply(0.5)); - this.am = var10; - this.ao = var8; + Vec3d pos = PositionUtil.getEntityPos(entity); + if (entity == this.trackedEntity && this.trackedLastPos != null && worldTime - this.trackedLastTime == 1L) { + this.trackedVelocity = this.trackedVelocity.multiply(0.5).add(pos.subtract(this.trackedLastPos).multiply(0.5)); + this.trackedLastPos = pos; + this.trackedLastTime = worldTime; } else { - this.al = var4; - this.am = var10; - this.ao = var8; - this.an = Vec3d.ZERO; + this.trackedEntity = entity; + this.trackedLastPos = pos; + this.trackedLastTime = worldTime; + this.trackedVelocity = Vec3d.ZERO; } } } - private Vec3d a_class_243_______(Object[] var1) { - return this.Z != null && this.al == this.Z ? this.an : Vec3d.ZERO; + private Vec3d getTargetVelocity() { + return this.target != null && this.trackedEntity == this.target ? this.trackedVelocity : Vec3d.ZERO; } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 46474961780868L; - Event.b(); - Vec3d var7 = this.a_class_243_______(new Object[]{var4}); - return var7.x * var7.x + var7.z * var7.z > 4.0E-4; + private boolean isTargetMoving() { + Vec3d velocity = this.getTargetVelocity(); + return velocity.x * velocity.x + velocity.z * velocity.z > 4.0E-4; } - private double a_double___(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - Vec3d var2 = (Vec3d)var1[1]; - BlockPos var3 = (BlockPos)var1[2]; - long var7 = (Long)var1[4]; - var7 = 45124953315131L ^ var7; - long var9 = var7 ^ 112391609462524L; - return Prestige.f.d(new Object[]{this.Z, var4, var2, var3, var9}); + private double getPredictedDamage(Vec3d crystalPos, Vec3d predictedPos, BlockPos crystalBase, double ignoredDamage) { + return Prestige.damageCalculator.getCrystalDamageAt(this.target, crystalPos, predictedPos, crystalBase); } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 7477342050734L; - long var6 = var2 ^ 8737832352967L; - long var8 = var2 ^ 106526848059944L; - long var10 = var2 ^ 51598816251400L; - long var12 = var2 ^ 46249515484311L; - long var14 = var2 ^ 101816702374277L; - long var16 = var2 ^ 79748765915392L; - long var18 = var2 ^ 46342348534105L; - if (!(Boolean)this.g.getValue()) { + public Rotation provideRotation() { + if (!this.rotateSilently.getValue()) { return null; - } else if (b.player == null || b.world == null || b.currentScreen != null || !b.isWindowFocused() || b.player.isUsingItem()) { + } else if (mc.player == null || mc.world == null || mc.currentScreen != null || !mc.isWindowFocused() || mc.player.isUsingItem()) { return null; - } else if (this.S == CrystalState.IDLE || this.aa == null || this.Z == null) { + } else if (this.state == ObbyCrystalState.IDLE || this.basePos == null || this.target == null) { return null; - } else if (AutoHitCrystal.a) { + } else if (AutoHitCrystal.active) { return null; - } else if (Prestige.o.d_boolean______(new Object[0])) { + } else if (Prestige.silentRotationManager.hasActedThisTick()) { return null; - } else if (!this.e(new Object[]{var18})) { + } else if (!this.isActionReady()) { return null; } else { - Vec3d var21 = this.b_class_243__(new Object[]{var6}); - if (this.a_boolean______________(new Object[]{var21, var16})) { - this.v(new Object[]{"unreachable", var8}); + Vec3d aimPoint = this.getAimPoint(); + if (this.isOutOfReach(aimPoint)) { + this.abort("unreachable"); return null; - } else if (var21 == null) { + } else if (aimPoint == null) { return null; } else { - RenderBatch var22 = Prestige.o.a_RenderBatch(new Object[]{var21, var14}); - var22 = WorldUtil.d_RenderBatch(new Object[]{var22, var21, var4}); - float var10000 = var22.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var10}; - var10003[0] = var10000; - if (Math.abs(WorldUtil.b_float_____________________(var10003)) > (Float)this.s.getValue()) { - this.v(new Object[]{"silentAimFov", var8}); + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + rotation = RotationUtil.addRandomJitter(rotation, aimPoint); + if (Math.abs(RotationUtil.wrapDegrees(rotation.getYaw() - mc.player.getYaw())) > this.silentAimFov.getValue()) { + this.abort("silentAimFov"); return null; - } else if (var22.a_boolean________________________________________(new Object[0])) { - return var22; + } else if (rotation.isClamped()) { + return rotation; } else { - this.n(new Object[]{var22, var12}); - return this.S == CrystalState.IDLE ? null : var22; + this.executeStage(rotation); + return this.state == ObbyCrystalState.IDLE ? null : rotation; } } } } - private void m(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 101455617595987L; - long var6 = var2 ^ 65236855467196L; - long var8 = var2 ^ 124965707424259L; - long var10 = var2 ^ 19537971689346L; - long var12 = var2 ^ 59697553399042L; - long var14 = var2 ^ 21098518658964L; - long var16 = var2 ^ 124873998358477L; - if (this.e(new Object[]{var16})) { - Vec3d var19 = this.b_class_243__(new Object[]{var4}); - if (this.a_boolean______________(new Object[]{var19, var14})) { - this.v(new Object[]{"unreachable", var6}); - } else if (var19 != null) { - RenderBatch var20 = WorldUtil.a_RenderBatch_(new Object[]{var19, var10}); - WorldUtil.a_void________________________________(new Object[]{var20, var12}); - this.n(new Object[]{var20, var8}); + private void rotateAndAct() { + if (this.isActionReady()) { + Vec3d aimPoint = this.getAimPoint(); + if (this.isOutOfReach(aimPoint)) { + this.abort("unreachable"); + } else if (aimPoint != null) { + Rotation rotation = RotationUtil.getRotationTo(aimPoint); + RotationUtil.applyRotation(rotation); + this.executeStage(rotation); } } } - private boolean e(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 32149273471926L; - if (!this.X) { - return this.S == CrystalState.BREAK_CRYSTAL && ((String)this.f.getValue()).equals("Manual") + private boolean isActionReady() { + if (!this.actedThisSequence) { + return this.state == ObbyCrystalState.BREAK_CRYSTAL && this.breakMode.getValue().equals("Manual") ? false - : this.S != CrystalState.IDLE && this.W.b(new Object[]{this.n, var4}); + : this.state != ObbyCrystalState.IDLE && this.firstActionTimer.hasElapsedRandom(this.firstActionDelay); } else { - return switch (this.S) { + return switch (this.state) { case PLACE_OBSIDIAN -> true; - case PLACE_CRYSTAL -> this.Y || this.T.b(new Object[]{this.l, var4}); - case BREAK_CRYSTAL -> !((String)this.f.getValue()).equals("Manual") && this.U.b(new Object[]{this.m, var4}); + case PLACE_CRYSTAL -> this.obsidianJustPlaced || this.placeTimer.hasElapsedRandom(this.placeDelay); + case BREAK_CRYSTAL -> !this.breakMode.getValue().equals("Manual") && this.breakTimer.hasElapsedRandom(this.breakDelay); default -> false; }; } } - private Vec3d b_class_243__(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 6165857182196L; - long var6 = var2 ^ 8546064216336L; - long var8 = var2 ^ 52627988679278L; - switch (this.S) { + private Vec3d getAimPoint() { + switch (this.state) { case PLACE_OBSIDIAN: - return this.ad; + return this.hitVec; case PLACE_CRYSTAL: - return RaycastUtil.a(new Object[]{this.aa, var4}); + return RaycastUtil.getVisiblePoint(this.basePos); case BREAK_CRYSTAL: - EndCrystalEntity var11 = this.a_class_1511(new Object[]{var6}); - return var11 == null ? null : this.c_class_243(new Object[]{var11, var8}); + EndCrystalEntity crystal = this.findBreakableCrystal(); + return crystal == null ? null : this.getCrystalAimPoint(crystal); default: return null; } } - private boolean a_boolean______________(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - if (this.S == CrystalState.BREAK_CRYSTAL) { - return this.ah; + private boolean isOutOfReach(Vec3d aimPoint) { + if (this.state == ObbyCrystalState.BREAK_CRYSTAL) { + return this.crystalOutOfReach; } else { - return var2 == null ? false : b.player.getEyePos().distanceTo(var2) > 4.4 || this.ak != null && this.ak.distanceTo(var2) > 4.4; + return aimPoint == null ? false : mc.player.getEyePos().distanceTo(aimPoint) > 4.4 || this.serverEyePos != null && this.serverEyePos.distanceTo(aimPoint) > 4.4; } } - private void n(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - long var3 = (Long)var1[1]; - var3 = 45124953315131L ^ var3; - long var5 = var3 ^ 106168605865956L; - long var7 = var3 ^ 37748955130043L; - long var9 = var3 ^ 90980105776041L; - switch (this.S) { + private void executeStage(Rotation rotation) { + switch (this.state) { case PLACE_OBSIDIAN: - this.o(new Object[]{var2, var5}); + this.placeObsidian(rotation); break; case PLACE_CRYSTAL: - this.p(new Object[]{var2, var7}); + this.placeCrystal(rotation); break; case BREAK_CRYSTAL: - this.q(new Object[]{var2, var9}); + this.breakCrystal(rotation); } } - private Vec3d c_class_243(Object[] var1) { - EndCrystalEntity var4 = (EndCrystalEntity)var1[0]; - Vec3d var6 = b.player.getEyePos(); - Event.b(); - Box var7 = var4.getBoundingBox(); - Vec3d var8 = new Vec3d( - MathHelper.clamp(var6.x, var7.minX, var7.maxX), MathHelper.clamp(var6.y, var7.minY, var7.maxY), MathHelper.clamp(var6.z, var7.minZ, var7.maxZ) + private Vec3d getCrystalAimPoint(EndCrystalEntity crystal) { + Vec3d eyePos = mc.player.getEyePos(); + Box box = crystal.getBoundingBox(); + Vec3d closest = new Vec3d( + MathHelper.clamp(eyePos.x, box.minX, box.maxX), MathHelper.clamp(eyePos.y, box.minY, box.maxY), MathHelper.clamp(eyePos.z, box.minZ, box.maxZ) ); - Vec3d var9 = var7.getCenter().subtract(var8); - return var9.lengthSquared() > 1.0E-6 ? var8.add(var9.normalize().multiply(0.15)) : var8; + Vec3d toCenter = box.getCenter().subtract(closest); + return toCenter.lengthSquared() > 1.0E-6 ? closest.add(toCenter.normalize().multiply(0.15)) : closest; } - private boolean f(Object[] var1) { - int var2 = (Integer)var1[0]; - long var3 = (Long)var1[1]; - var3 = 45124953315131L ^ var3; - long var5 = var3 ^ 107529132927439L; - long var7 = var3 ^ 25138631126053L; - long var9 = var3 ^ 86798592053750L; - if (InventoryUtil.a_int_____(new Object[]{var9}) == var2) { + private boolean ensureSlotSelected(int slot) { + if (InventoryUtil.getSelectedSlot() == slot) { return true; } else { - Object[] var10003 = new Object[]{null, var7}; - var10003[0] = var2; - InventoryUtil.a_void________(var10003); - if ((Boolean)this.r.getValue()) { + InventoryUtil.selectSlot(slot); + if (this.fastSwap.getValue()) { return true; } else { - Prestige.o.g(new Object[]{true}); - this.V.a_void_____________________(new Object[]{var5}); + Prestige.silentRotationManager.setActedThisTick(true); + this.stageTimer.reset(); return false; } } } - private void o(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 45124953315131L ^ var2; - long var5 = var2 ^ 73268923291484L; - long var7 = var2 ^ 35906716478960L; - long var9 = var2 ^ 87989407318871L; - long var11 = var2 ^ 103812236113712L; - long var13 = var2 ^ 69928029564380L; - long var15 = var2 ^ 46719396542811L; - long var17 = var2 ^ 94771685535895L; - long var19 = var2 ^ 28498724937012L; - long var21 = var2 ^ 109741077556419L; - long var23 = var2 ^ 27216306732451L; - long var25 = var2 ^ 100779821467807L; - if (!WorldUtil2.b(new Object[]{this.aa, Blocks.OBSIDIAN, var17}) && !WorldUtil2.b(new Object[]{this.aa, Blocks.BEDROCK, var17})) { - if (!WorldUtil2.e(new Object[]{this.aa, var11})) { - BlockPos var10001 = this.aa; - Object[] var10005 = new Object[]{null, null, var19}; - var10005[1] = 1; - var10005[0] = var10001; - if (!this.h(var10005)) { - Integer var28 = InventoryUtil.a_Integer(new Object[]{Items.OBSIDIAN, var13}); - if (var28 == null) { - this.u(new Object[]{"No obsidian in hotbar.", var5}); + private void placeObsidian(Rotation rotation) { + if (!BlockUtil.isOf(this.basePos, Blocks.OBSIDIAN) && !BlockUtil.isOf(this.basePos, Blocks.BEDROCK)) { + if (!BlockUtil.isClickableBlock(this.basePos)) { + if (!this.hasBlockingEntity(this.basePos, 1)) { + Integer obsidianSlot = InventoryUtil.findHotbarSlot(Items.OBSIDIAN); + if (obsidianSlot == null) { + this.failWithError("No obsidian in hotbar."); return; } - if (WorldUtil.a_class_239_(new Object[]{var4, var7}) instanceof BlockHitResult var30 - && var30.getBlockPos().equals(this.ab) - && var30.getBlockPos().offset(var30.getSide()).equals(this.aa)) { - if (this.af == -1) { - this.af = RenderUtil6.a(new Object[]{this, var21}); + if (RotationUtil.raycastRotation(rotation) instanceof BlockHitResult blockHit + && blockHit.getBlockPos().equals(this.supportPos) + && blockHit.getBlockPos().offset(blockHit.getSide()).equals(this.basePos)) { + if (this.swapBackSlot == -1) { + this.swapBackSlot = SwapBackTracker.claim(this); } - int var32 = var28; - Object[] var10004 = new Object[]{null, var23}; - var10004[0] = var32; - if (!this.f(var10004)) { + if (!this.ensureSlotSelected(obsidianSlot)) { return; } - this.r(new Object[]{var30, var25}); - this.Y = true; - this.S = CrystalState.PLACE_CRYSTAL; - this.V.a_void_____________________(new Object[]{var9}); + this.clickBlock(blockHit); + this.obsidianJustPlaced = true; + this.state = ObbyCrystalState.PLACE_CRYSTAL; + this.stageTimer.reset(); return; } @@ -886,174 +637,100 @@ public class AutoObbyCrystal extends Module implements RenderContract3 { } } - this.v(new Object[]{"base blocked", var15}); + this.abort("base blocked"); } else { - this.S = CrystalState.PLACE_CRYSTAL; - this.V.a_void_____________________(new Object[]{var9}); + this.state = ObbyCrystalState.PLACE_CRYSTAL; + this.stageTimer.reset(); } } - private void p(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - long var3 = (Long)var1[1]; - var3 = 45124953315131L ^ var3; - long var5 = var3 ^ 520012105731L; - long var7 = var3 ^ 29802818600413L; - long var9 = var3 ^ 20740167982088L; - long var11 = var3 ^ 137727527547523L; - long var13 = var3 ^ 115070328546820L; - long var15 = var3 ^ 23002026667976L; - long var17 = var3 ^ 95554552046236L; - long var19 = var3 ^ 127703996697972L; - long var21 = var3 ^ 100266873848427L; - long var23 = var3 ^ 42873406710726L; - long var25 = var3 ^ 99070287618812L; - long var27 = var3 ^ 108243847410351L; - long var29 = var3 ^ 7849217716794L; - long var31 = var3 ^ 59580166537323L; - long var33 = var3 ^ 36375268668316L; - long var35 = var3 ^ 27981484644288L; - if (WorldUtil2.b(new Object[]{this.aa, Blocks.OBSIDIAN, var15}) || WorldUtil2.b(new Object[]{this.aa, Blocks.BEDROCK, var15})) { - BlockPos var38 = this.aa.up(); - if (this.g(new Object[]{var38, var7})) { - this.S = CrystalState.BREAK_CRYSTAL; - this.V.a_void_____________________(new Object[]{var9}); + private void placeCrystal(Rotation rotation) { + if (BlockUtil.isOf(this.basePos, Blocks.OBSIDIAN) || BlockUtil.isOf(this.basePos, Blocks.BEDROCK)) { + BlockPos spawnPos = this.basePos.up(); + if (this.hasCrystalAt(spawnPos)) { + this.state = ObbyCrystalState.BREAK_CRYSTAL; + this.stageTimer.reset(); } else { - if (b.world.getBlockState(var38).isAir()) { - Object[] var10005 = new Object[]{null, null, var21}; - var10005[1] = 2; - var10005[0] = var38; - if (!this.h(var10005)) { - Vec3d var39 = new Vec3d(this.aa.getX() + 0.5, this.aa.getY() + 1.0, this.aa.getZ() + 0.5); - DamageUtil var10000 = Prestige.f; - PlayerEntity var10001 = this.Z; - BlockPos var10004 = this.aa; - Object[] var10008 = new Object[]{null, null, null, null, null, var23}; - var10008[4] = false; - var10008[3] = var10004; - var10008[2] = false; - var10008[1] = var39; - var10008[0] = var10001; - double var40 = var10000.b(var10008); - double var50; - if ((Boolean)this.B.getValue() && this.d(new Object[]{var31})) { - Vec3d var10003 = this.d_class_243(new Object[]{var17}); - var10004 = this.aa; - var10008 = new Object[]{null, null, null, null, var29}; - var10008[3] = var40; - var10008[2] = var10004; - var10008[1] = var10003; - var10008[0] = var39; - var50 = Math.max(var40, this.a_double___(var10008)); + if (mc.world.getBlockState(spawnPos).isAir()) { + if (!this.hasBlockingEntity(spawnPos, 2)) { + Vec3d crystalPos = new Vec3d(this.basePos.getX() + 0.5, this.basePos.getY() + 1.0, this.basePos.getZ() + 0.5); + double rawDamage = Prestige.damageCalculator.getCrystalDamage(this.target, crystalPos, false, this.basePos, false); + double bestDamage; + if (this.predictTarget.getValue() && this.isTargetMoving()) { + bestDamage = Math.max(rawDamage, this.getPredictedDamage(crystalPos, this.predictTargetPos(), this.basePos, rawDamage)); } else { - var50 = var40; + bestDamage = rawDamage; } - double var42 = var50; - var10000 = Prestige.f; - ClientPlayerEntity var52 = b.player; - var10004 = this.aa; - var10008 = new Object[]{null, null, null, null, null, var23}; - var10008[4] = false; - var10008[3] = var10004; - var10008[2] = false; - var10008[1] = var39; - var10008[0] = var52; - double var44 = var10000.b(var10008); - if (var42 < (Float)this.c.getValue() * (Float)this.p.getValue()) { - this.v(new Object[]{"re-gate targetDamage " + String.format("%.1f", var42), var13}); + double targetDamage = bestDamage; + double selfDamage = Prestige.damageCalculator.getCrystalDamage(mc.player, crystalPos, false, this.basePos, false); + if (targetDamage < this.minDamage.getValue() * this.midSequenceDamageTolerance.getValue()) { + this.abort("re-gate targetDamage " + String.format("%.1f", targetDamage)); return; } - if (!(var44 > ((Float)this.d.getValue()).floatValue()) - && (!(Boolean)this.e.getValue() || !(var44 >= b.player.getHealth() + b.player.getAbsorptionAmount() - 1.0F))) { - Integer var46 = InventoryUtil.a_Integer(new Object[]{Items.END_CRYSTAL, var11}); - if (var46 == null) { - this.u(new Object[]{"No end crystals in hotbar.", var5}); + if (!(selfDamage > this.maxSelfDamage.getValue().floatValue()) + && (!this.antiSuicide.getValue() || !(selfDamage >= mc.player.getHealth() + mc.player.getAbsorptionAmount() - 1.0F))) { + Integer crystalSlot = InventoryUtil.findHotbarSlot(Items.END_CRYSTAL); + if (crystalSlot == null) { + this.failWithError("No end crystals in hotbar."); return; } - if (WorldUtil.a_class_239_(new Object[]{var2, var27}) instanceof BlockHitResult var48 && var48.getBlockPos().equals(this.aa)) { - if (this.af == -1) { - this.af = RenderUtil6.a(new Object[]{this, var33}); + if (RotationUtil.raycastRotation(rotation) instanceof BlockHitResult blockHit && blockHit.getBlockPos().equals(this.basePos)) { + if (this.swapBackSlot == -1) { + this.swapBackSlot = SwapBackTracker.claim(this); } - int var53 = var46; - Object[] var56 = new Object[]{null, var25}; - var56[0] = var53; - if (!this.f(var56)) { + if (!this.ensureSlotSelected(crystalSlot)) { return; } - this.r(new Object[]{var48, var35}); - this.U.a_void_____________________(new Object[]{var9}); - this.m.reroll(new Object[]{var19}); - this.Y = false; - this.S = CrystalState.BREAK_CRYSTAL; - this.V.a_void_____________________(new Object[]{var9}); + this.clickBlock(blockHit); + this.breakTimer.reset(); + this.breakDelay.reroll(); + this.obsidianJustPlaced = false; + this.state = ObbyCrystalState.BREAK_CRYSTAL; + this.stageTimer.reset(); return; } return; } - this.v(new Object[]{"re-gate selfDamage " + String.format("%.1f", var44), var13}); + this.abort("re-gate selfDamage " + String.format("%.1f", selfDamage)); return; } } - this.v(new Object[]{"crystal spawn blocked", var13}); + this.abort("crystal spawn blocked"); } } } - private void q(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 45124953315131L ^ var2; - long var5 = var2 ^ 129842414531422L; - long var7 = var2 ^ 107988827578138L; - long var9 = var2 ^ 89693542184402L; - long var11 = var2 ^ 23253009423088L; - long var13 = var2 ^ 5285203758694L; - long var15 = var2 ^ 94651813994708L; - long var17 = var2 ^ 84706809833251L; - long var19 = var2 ^ 17183915777967L; - Event.b(); - EndCrystalEntity var22 = this.a_class_1511(new Object[]{var9}); - if (var22 != null) { - Box var23 = var22.getBoundingBox(); - if (this.l_boolean(new Object[]{var23, b.player.getEyePos(), var4, var5}) - && (this.ak == null || this.l_boolean(new Object[]{var23, this.ak, var4, var5}))) { - Vec3d var24 = new Vec3d(this.aa.getX() + 0.5, this.aa.getY() + 1.0, this.aa.getZ() + 0.5); - DamageUtil var10000 = Prestige.f; - ClientPlayerEntity var10001 = b.player; - BlockPos var10004 = this.aa; - Object[] var10008 = new Object[]{null, null, null, null, null, var15}; - var10008[4] = false; - var10008[3] = var10004; - var10008[2] = false; - var10008[1] = var24; - var10008[0] = var10001; - double var25 = var10000.b(var10008); - if (!(var25 > ((Float)this.d.getValue()).floatValue()) - && (!(Boolean)this.e.getValue() || !(var25 >= b.player.getHealth() + b.player.getAbsorptionAmount() - 1.0F))) { - if (!AutoCrystal.a || !(b.crosshairTarget instanceof EntityHitResult var27 && var27.getEntity() == var22)) { - if (((String)this.f.getValue()).equals("SwapAttack") && this.af != -1 && InventoryUtil.a_int_____(new Object[]{var17}) != this.af) { - int var30 = this.af; - Object[] var10003 = new Object[]{null, var11}; - var10003[0] = var30; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); - this.V.a_void_____________________(new Object[]{var7}); + private void breakCrystal(Rotation rotation) { + EndCrystalEntity crystal = this.findBreakableCrystal(); + if (crystal != null) { + Box box = crystal.getBoundingBox(); + if (this.canRayHitBox(box, mc.player.getEyePos(), rotation) + && (this.serverEyePos == null || this.canRayHitBox(box, this.serverEyePos, rotation))) { + Vec3d crystalPos = new Vec3d(this.basePos.getX() + 0.5, this.basePos.getY() + 1.0, this.basePos.getZ() + 0.5); + double selfDamage = Prestige.damageCalculator.getCrystalDamage(mc.player, crystalPos, false, this.basePos, false); + if (!(selfDamage > this.maxSelfDamage.getValue().floatValue()) + && (!this.antiSuicide.getValue() || !(selfDamage >= mc.player.getHealth() + mc.player.getAbsorptionAmount() - 1.0F))) { + if (!AutoCrystal.active || !(mc.crosshairTarget instanceof EntityHitResult entityHit && entityHit.getEntity() == crystal)) { + if (this.breakMode.getValue().equals("SwapAttack") && this.swapBackSlot != -1 && InventoryUtil.getSelectedSlot() != this.swapBackSlot) { + InventoryUtil.selectSlot(this.swapBackSlot); + Prestige.silentRotationManager.setActedThisTick(true); + this.stageTimer.reset(); } else { - this.s(new Object[]{var22, var19}); - this.ai = var22.getId(); - this.T.a_void_____________________(new Object[]{var7}); - this.l.reroll(new Object[]{var13}); - this.ag = false; - this.S = CrystalState.PLACE_CRYSTAL; - this.V.a_void_____________________(new Object[]{var7}); + this.attackCrystal(crystal); + this.lastAttackedCrystalId = crystal.getId(); + this.placeTimer.reset(); + this.placeDelay.reroll(); + this.breakTimeoutRetried = false; + this.state = ObbyCrystalState.PLACE_CRYSTAL; + this.stageTimer.reset(); } } } @@ -1061,85 +738,70 @@ public class AutoObbyCrystal extends Module implements RenderContract3 { } } - private void r(Object[] var1) { - BlockHitResult var2 = (BlockHitResult)var1[0]; - boolean var5 = b.interactionManager.interactBlock(b.player, Hand.MAIN_HAND, var2).isAccepted(); - Prestige.o.g(new Object[]{true}); - this.X = true; - if (var5) { - b.player.swingHand(Hand.MAIN_HAND); + private void clickBlock(BlockHitResult blockHit) { + boolean accepted = mc.interactionManager.interactBlock(mc.player, Hand.MAIN_HAND, blockHit).isAccepted(); + Prestige.silentRotationManager.setActedThisTick(true); + this.actedThisSequence = true; + if (accepted) { + mc.player.swingHand(Hand.MAIN_HAND); } } - private void s(Object[] var1) { - Entity var2 = (Entity)var1[0]; - b.getNetworkHandler().sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND)); - b.interactionManager.attackEntity(b.player, var2); - b.player.swingHand(Hand.MAIN_HAND); - b.getNetworkHandler().sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND)); - Prestige.o.g(new Object[]{true}); - this.X = true; + private void attackCrystal(Entity crystal) { + mc.getNetworkHandler().sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND)); + mc.interactionManager.attackEntity(mc.player, crystal); + mc.player.swingHand(Hand.MAIN_HAND); + mc.getNetworkHandler().sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND)); + Prestige.silentRotationManager.setActedThisTick(true); + this.actedThisSequence = true; } - private boolean g(Object[] var1) { - BlockPos var4 = (BlockPos)var1[0]; - if (this.ai != -1 && b.world.getEntityById(this.ai) == null) { - this.ai = -1; + private boolean hasCrystalAt(BlockPos pos) { + if (this.lastAttackedCrystalId != -1 && mc.world.getEntityById(this.lastAttackedCrystalId) == null) { + this.lastAttackedCrystalId = -1; } - Box var6 = new Box(var4.getX(), var4.getY(), var4.getZ(), var4.getX() + 1.0, var4.getY() + 1.0, var4.getZ() + 1.0); - return !b.world.getOtherEntities(null, var6, lpL246_0 -> ((net.minecraft.entity.Entity)lpL246_0) instanceof EndCrystalEntity && ((net.minecraft.entity.Entity)lpL246_0).getId() != this.ai).isEmpty(); + Box box = new Box(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1.0, pos.getY() + 1.0, pos.getZ() + 1.0); + return !mc.world.getOtherEntities(null, box, entity -> entity instanceof EndCrystalEntity && entity.getId() != this.lastAttackedCrystalId).isEmpty(); } - private boolean h(Object[] var1) { - BlockPos var3 = (BlockPos)var1[0]; - int var2 = (Integer)var1[1]; - Event.b(); - Box var7 = new Box(var3.getX(), var3.getY(), var3.getZ(), var3.getX() + 1.0, var3.getY() + var2, var3.getZ() + 1.0); - return !b.world + private boolean hasBlockingEntity(BlockPos pos, int height) { + Box box = new Box(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1.0, pos.getY() + height, pos.getZ() + 1.0); + return !mc.world .getOtherEntities( - null, var7, lpL245_0 -> ((net.minecraft.entity.Entity)lpL245_0) instanceof ItemEntity ? false : !(((net.minecraft.entity.Entity)lpL245_0) instanceof EndCrystalEntity) || ((net.minecraft.entity.Entity)lpL245_0).getId() != this.ai + null, box, entity -> entity instanceof ItemEntity ? false : !(entity instanceof EndCrystalEntity) || entity.getId() != this.lastAttackedCrystalId ) .isEmpty(); } - private boolean i(Object[] var1) { - BlockPos var2 = (BlockPos)var1[0]; - int var3 = (Integer)var1[1]; - long var4 = (Long)var1[2]; - var4 = 45124953315131L ^ var4; - long var6 = var4 ^ 23829242195720L; - long var8 = var4 ^ 136218025999031L; - Object[] var10005 = new Object[]{null, null, var6}; - var10005[1] = var3; - var10005[0] = var2; - if (this.h(var10005)) { + private boolean isBlockedOrInPath(BlockPos pos, int height) { + if (this.hasBlockingEntity(pos, height)) { return true; } else { - Box var11 = new Box(var2.getX(), var2.getY(), var2.getZ(), var2.getX() + 1.0, var2.getY() + var3, var2.getZ() + 1.0); - int var12 = (Integer)this.A.getValue(); - if (var12 <= 0) { + Box box = new Box(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1.0, pos.getY() + height, pos.getZ() + 1.0); + int lookahead = this.pathLookahead.getValue(); + if (lookahead <= 0) { return false; } else { - if (this.Z != null) { - Vec3d var13 = this.a_class_243_______(new Object[]{var8}); - if (var13.lengthSquared() > 1.0E-6) { - Box var14 = this.Z.getBoundingBox(); + if (this.target != null) { + Vec3d targetVelocity = this.getTargetVelocity(); + if (targetVelocity.lengthSquared() > 1.0E-6) { + Box targetBox = this.target.getBoundingBox(); - for (int var15 = 1; var15 <= var12; var15++) { - if (var14.offset(var13.multiply(var15)).intersects(var11)) { + for (int step = 1; step <= lookahead; step++) { + if (targetBox.offset(targetVelocity.multiply(step)).intersects(box)) { return true; } } } } - Vec3d var17 = b.player.getVelocity(); - if (var17.lengthSquared() > 1.0E-6) { - Box var18 = b.player.getBoundingBox(); + Vec3d selfVelocity = mc.player.getVelocity(); + if (selfVelocity.lengthSquared() > 1.0E-6) { + Box selfBox = mc.player.getBoundingBox(); - for (int var19 = 1; var19 <= var12; var19++) { - if (var18.offset(var17.multiply(var19)).intersects(var11)) { + for (int selfStep = 1; selfStep <= lookahead; selfStep++) { + if (selfBox.offset(selfVelocity.multiply(selfStep)).intersects(box)) { return true; } } @@ -1150,305 +812,232 @@ public class AutoObbyCrystal extends Module implements RenderContract3 { } } - private void t(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 105906022934219L; - long var6 = var2 ^ 81798887209688L; - long var8 = var2 ^ 7334728578999L; - long var10 = var2 ^ 63945696134990L; - Event.b(); - PlayerEntity var13 = CombatUtil.a_class_1657(new Object[]{var10}); - if (var13 != null && var13.isAlive() && !(b.player.distanceTo(var13) > (Float)this.a.getValue())) { - this.Z = var13; - AutoObbyCrystalHelper var14 = this.a_AutoObbyCrystalHelper(new Object[]{var6}); - if (var14 == null) { - this.Z = null; + private void startSequence() { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null && enemy.isAlive() && !(mc.player.distanceTo(enemy) > this.targetRange.getValue())) { + this.target = enemy; + ObbyCrystalCandidate candidate = this.findBestCandidate(); + if (candidate == null) { + this.target = null; } else { - this.aa = var14.a; - this.ab = var14.b; - this.ac = var14.c; - this.ad = var14.d; - this.ae = this.Z.getBlockPos(); - this.ag = false; - this.S = var14.f ? CrystalState.BREAK_CRYSTAL : (var14.e ? CrystalState.PLACE_OBSIDIAN : CrystalState.PLACE_CRYSTAL); - this.V.a_void_____________________(new Object[]{var4}); - this.X = false; - this.Y = false; - this.W.a_void_____________________(new Object[]{var4}); - this.n.reroll(new Object[]{var8}); - this.T.a_void_____________________(new Object[]{var4}); - this.U.a_void_____________________(new Object[]{var4}); - this.l.reroll(new Object[]{var8}); - this.m.reroll(new Object[]{var8}); + this.basePos = candidate.basePos; + this.supportPos = candidate.supportPos; + this.placeSide = candidate.placeSide; + this.hitVec = candidate.hitVec; + this.targetStartPos = this.target.getBlockPos(); + this.breakTimeoutRetried = false; + this.state = candidate.hasCrystal ? ObbyCrystalState.BREAK_CRYSTAL : (candidate.needsObsidian ? ObbyCrystalState.PLACE_OBSIDIAN : ObbyCrystalState.PLACE_CRYSTAL); + this.stageTimer.reset(); + this.actedThisSequence = false; + this.obsidianJustPlaced = false; + this.firstActionTimer.reset(); + this.firstActionDelay.reroll(); + this.placeTimer.reset(); + this.breakTimer.reset(); + this.placeDelay.reroll(); + this.breakDelay.reroll(); } } } - private Vec3d d_class_243(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 6281414384478L; - long var6 = var2 ^ 82037534794355L; - Event.b(); - Vec3d var9 = PositionUtil.a(new Object[]{this.Z, var4}); - if (!(Boolean)this.B.getValue()) { - return var9; + private Vec3d predictTargetPos() { + Vec3d targetPos = PositionUtil.getEntityPos(this.target); + if (!this.predictTarget.getValue()) { + return targetPos; } else { - Vec3d var10 = this.a_class_243_______(new Object[]{var6}); - if (var10.lengthSquared() < 1.0E-6) { - return var9; + Vec3d velocity = this.getTargetVelocity(); + if (velocity.lengthSquared() < 1.0E-6) { + return targetPos; } else { - int var11 = 0; - PlayerListEntry var12 = b.player.networkHandler.getPlayerListEntry(this.Z.getUuid()); - if (var12 != null) { - var11 = Math.max(0, var12.getLatency()); + int ping = 0; + PlayerListEntry entry = mc.player.networkHandler.getPlayerListEntry(this.target.getUuid()); + if (entry != null) { + ping = Math.max(0, entry.getLatency()); } - float var13 = MathHelper.clamp((Float)this.C.getValue() + var11 / 50.0F * (Float)this.D.getValue(), 0.0F, 20.0F); - Vec3d var14 = new Vec3d(var10.x * var13, 0.0, var10.z * var13); - double var15 = ((Float)this.E.getValue()).floatValue(); - if (var14.lengthSquared() > var15 * var15) { - var14 = var14.lengthSquared() > 1.0E-6 ? var14.normalize().multiply(var15) : Vec3d.ZERO; + float leadTicks = MathHelper.clamp(this.predictTicks.getValue() + ping / 50.0F * this.predictPingBonus.getValue(), 0.0F, 20.0F); + Vec3d offset = new Vec3d(velocity.x * leadTicks, 0.0, velocity.z * leadTicks); + double maxOffset = this.predictMaxOffset.getValue().floatValue(); + if (offset.lengthSquared() > maxOffset * maxOffset) { + offset = offset.lengthSquared() > 1.0E-6 ? offset.normalize().multiply(maxOffset) : Vec3d.ZERO; } - return var9.add(var14); + return targetPos.add(offset); } } } - private Vec3d e_class_243(Object[] var1) { - Event.b(); - Vec3d var5 = b.player.getEyePos(); - if (!(Boolean)this.F.getValue()) { - return var5; + private Vec3d predictEyePos() { + Vec3d eyePos = mc.player.getEyePos(); + if (!this.predictSelf.getValue()) { + return eyePos; } else { - Vec3d var6 = b.player.getVelocity(); - if (var6.lengthSquared() < 1.0E-6) { - return var5; + Vec3d velocity = mc.player.getVelocity(); + if (velocity.lengthSquared() < 1.0E-6) { + return eyePos; } else { - Vec3d var7 = new Vec3d(var6.x * ((Float)this.G.getValue()).floatValue(), 0.0, var6.z * ((Float)this.G.getValue()).floatValue()); - double var8 = ((Float)this.H.getValue()).floatValue(); - if (var7.lengthSquared() > var8 * var8) { - var7 = var7.lengthSquared() > 1.0E-6 ? var7.normalize().multiply(var8) : Vec3d.ZERO; + Vec3d offset = new Vec3d(velocity.x * this.selfPredictTicks.getValue().floatValue(), 0.0, velocity.z * this.selfPredictTicks.getValue().floatValue()); + double maxOffset = this.selfPredictMaxOffset.getValue().floatValue(); + if (offset.lengthSquared() > maxOffset * maxOffset) { + offset = offset.lengthSquared() > 1.0E-6 ? offset.normalize().multiply(maxOffset) : Vec3d.ZERO; } - return var5.add(var7); + return eyePos.add(offset); } } } - private double b_double___(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - long var2 = (Long)var1[1]; - var2 = 45124953315131L ^ var2; - long var5 = var2 ^ 4591434114501L; - long var7 = var2 ^ 130132202306120L; - Event.b(); - RenderBatch var10 = Prestige.o.a_RenderBatch(new Object[]{var4, var7}); - if (var10 == null) { + private double getYawChange(Vec3d point) { + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(point); + if (rotation == null) { return -1.0; } else { - float var10000 = var10.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var5}; - var10003[0] = var10000; - return Math.abs(WorldUtil.b_float_____________________(var10003)); + return Math.abs(RotationUtil.wrapDegrees(rotation.getYaw() - mc.player.getYaw())); } } - private AutoObbyCrystalHelper a_AutoObbyCrystalHelper(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 12072811178749L; - long var6 = var2 ^ 55831202984196L; - long var8 = var2 ^ 81357791168497L; - long var10 = var2 ^ 78107987211708L; - long var12 = var2 ^ 18288312931347L; - long var14 = var2 ^ 5542560250088L; - long var16 = var2 ^ 130251590430072L; - long var18 = var2 ^ 57452831495421L; - long var20 = var2 ^ 60609904784614L; - long var22 = var2 ^ 25024092185882L; - long var24 = var2 ^ 122208771214737L; - long var26 = var2 ^ 43782885922635L; - long var28 = var2 ^ 14641837637455L; - long var30 = var2 ^ 29059984279546L; - long var32 = var2 ^ 60788552692996L; - long var34 = var2 ^ 76135634004617L; - Event.b(); - BlockPos var37 = this.Z.getBlockPos(); - Vec3d var38 = this.d_class_243(new Object[]{var10}); - Vec3d var39 = b.player.getEyePos(); - Vec3d var40 = this.e_class_243(new Object[]{var12}); - Vec3d var41 = this.f_class_243(new Object[]{var38, var18}); - float var42 = b.player.getHealth() + b.player.getAbsorptionAmount(); - boolean var43 = (Boolean)this.B.getValue() && this.d(new Object[]{var26}); - short var10000 = 3116; - AutoObbyCrystalHelper var44 = null; - long var10001 = 6079205640999221001L ^ var2; - this.aj.clear(); - Mutable var45 = new Mutable(); + private ObbyCrystalCandidate findBestCandidate() { + BlockPos targetFeet = this.target.getBlockPos(); + Vec3d predictedTargetPos = this.predictTargetPos(); + Vec3d eyePos = mc.player.getEyePos(); + Vec3d predictedEyePos = this.predictEyePos(); + Vec3d momentumDir = this.getMomentumDirection(predictedTargetPos); + float selfHealth = mc.player.getHealth() + mc.player.getAbsorptionAmount(); + boolean usePrediction = this.predictTarget.getValue() && this.isTargetMoving(); + ObbyCrystalCandidate best = null; + this.candidates.clear(); + Mutable scanPos = new Mutable(); - for (int var46 = -4; var46 <= 4; var46++) { - for (int var47 = -4; var47 <= 4; var47++) { - for (int var48 = -2; var48 <= 2; var48++) { - var45.set(var37.getX() + var46, var37.getY() + var48, var37.getZ() + var47); - double var49 = var45.getX() + 0.5; - double var51 = var45.getY() + 0.5; - double var53 = var45.getZ() + 0.5; - if (!(var39.squaredDistanceTo(var49, var51, var53) > 27.5625) || !(var40.squaredDistanceTo(var49, var51, var53) > 27.5625)) { - BlockPos var55 = var45.up(); - boolean var56 = WorldUtil2.b(new Object[]{var45, Blocks.OBSIDIAN, var14}) || WorldUtil2.b(new Object[]{var45, Blocks.BEDROCK, var14}); - boolean var57 = var56 && this.g(new Object[]{var55, var4}); - if (!var57) { - if (!b.world.getBlockState(var55).isAir()) { + for (int offsetX = -4; offsetX <= 4; offsetX++) { + for (int offsetZ = -4; offsetZ <= 4; offsetZ++) { + for (int offsetY = -2; offsetY <= 2; offsetY++) { + scanPos.set(targetFeet.getX() + offsetX, targetFeet.getY() + offsetY, targetFeet.getZ() + offsetZ); + double centerX = scanPos.getX() + 0.5; + double centerY = scanPos.getY() + 0.5; + double centerZ = scanPos.getZ() + 0.5; + if (!(eyePos.squaredDistanceTo(centerX, centerY, centerZ) > 27.5625) || !(predictedEyePos.squaredDistanceTo(centerX, centerY, centerZ) > 27.5625)) { + BlockPos spawnPos = scanPos.up(); + boolean existingBase = BlockUtil.isOf(scanPos, Blocks.OBSIDIAN) || BlockUtil.isOf(scanPos, Blocks.BEDROCK); + boolean crystalPresent = existingBase && this.hasCrystalAt(spawnPos); + if (!crystalPresent) { + if (!mc.world.getBlockState(spawnPos).isAir()) { continue; } - Object[] var10005 = new Object[]{null, null, var16}; - var10005[1] = 2; - var10005[0] = var55; - if (this.i(var10005)) { + if (this.isBlockedOrInPath(spawnPos, 2)) { continue; } } - BlockPos var58 = var45.toImmutable(); - BlockPos var59 = null; - Direction var60 = null; - Vec3d var61; - if (var56) { - if (var57) { - Vec3d var62 = new Vec3d(var58.getX() + 0.5, var58.getY() + 1.5, var58.getZ() + 0.5); - if (var39.distanceTo(var62) > ((Float)this.I.getValue()).floatValue() + 0.5 - && var40.distanceTo(var62) > ((Float)this.I.getValue()).floatValue() + 0.5) { + BlockPos base = scanPos.toImmutable(); + BlockPos support = null; + Direction side = null; + Vec3d aimPoint; + if (existingBase) { + if (crystalPresent) { + Vec3d crystalCenter = new Vec3d(base.getX() + 0.5, base.getY() + 1.5, base.getZ() + 0.5); + if (eyePos.distanceTo(crystalCenter) > this.reach.getValue().floatValue() + 0.5 + && predictedEyePos.distanceTo(crystalCenter) > this.reach.getValue().floatValue() + 0.5) { continue; } - if ((Boolean)this.g.getValue()) { - RenderBatch var63 = Prestige.o.a_RenderBatch(new Object[]{var62, var34}); - if (var63 == null) { + if (this.rotateSilently.getValue()) { + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(crystalCenter); + if (rotation == null) { continue; } - float var85 = var63.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var32}; - var10003[0] = var85; - if (Math.abs(WorldUtil.b_float_____________________(var10003)) > (Float)this.s.getValue()) { + if (Math.abs(RotationUtil.wrapDegrees(rotation.getYaw() - mc.player.getYaw())) > this.silentAimFov.getValue()) { continue; } } - var61 = var62; + aimPoint = crystalCenter; } else { - var61 = RaycastUtil.a(new Object[]{var58, var6}); - if (var61 == null || (Boolean)this.g.getValue() && !this.j_boolean__(new Object[]{var61, var58, var8})) { + aimPoint = RaycastUtil.getVisiblePoint(base); + if (aimPoint == null || this.rotateSilently.getValue() && !this.canHitSilently(aimPoint, base)) { continue; } } } else { - if ((Boolean)this.z.getValue() || WorldUtil2.e(new Object[]{var58, var28})) { + if (this.onlyExistingObby.getValue() || BlockUtil.isClickableBlock(base)) { continue; } - Object[] var90 = new Object[]{null, null, var16}; - var90[1] = 1; - var90[0] = var58; - if (this.i(var90)) { + if (this.isBlockedOrInPath(base, 1)) { continue; } - var61 = null; - double var74 = Double.MAX_VALUE; + aimPoint = null; + double bestSupportDist = Double.MAX_VALUE; - for (Direction var67 : Direction.values()) { - BlockPos var68 = var58.offset(var67); - if (!b.world.getBlockState(var68).isReplaceable()) { - Direction var69 = var67.getOpposite(); - Vec3d var70 = var68.toCenterPos().add(var69.getOffsetX() * 0.5, var69.getOffsetY() * 0.5, var69.getOffsetZ() * 0.5); - double var71 = var39.distanceTo(var70); - if ((!(var71 > 4.25) || !(var40.distanceTo(var70) > 4.25)) - && (!(Boolean)this.g.getValue() || this.j_boolean__(new Object[]{var70, var68, var8})) - && var71 < var74) { - var74 = var71; - var59 = var68; - var60 = var69; - var61 = var70; + for (Direction direction : Direction.values()) { + BlockPos neighbor = base.offset(direction); + if (!mc.world.getBlockState(neighbor).isReplaceable()) { + Direction opposite = direction.getOpposite(); + Vec3d faceCenter = neighbor.toCenterPos().add(opposite.getOffsetX() * 0.5, opposite.getOffsetY() * 0.5, opposite.getOffsetZ() * 0.5); + double faceDist = eyePos.distanceTo(faceCenter); + if ((!(faceDist > 4.25) || !(predictedEyePos.distanceTo(faceCenter) > 4.25)) + && (!this.rotateSilently.getValue() || this.canHitSilently(faceCenter, neighbor)) + && faceDist < bestSupportDist) { + bestSupportDist = faceDist; + support = neighbor; + side = opposite; + aimPoint = faceCenter; } } } - if (var59 == null - || var39.distanceTo(var58.toCenterPos().add(0.0, 0.5, 0.0)) > 4.25 - && var40.distanceTo(var58.toCenterPos().add(0.0, 0.5, 0.0)) > 4.25) { + if (support == null + || eyePos.distanceTo(base.toCenterPos().add(0.0, 0.5, 0.0)) > 4.25 + && predictedEyePos.distanceTo(base.toCenterPos().add(0.0, 0.5, 0.0)) > 4.25) { continue; } } - Vec3d var75 = new Vec3d(var58.getX() + 0.5, var58.getY() + 1.0, var58.getZ() + 0.5); - DamageUtil var86 = Prestige.f; - PlayerEntity var88 = this.Z; - Object[] var10008 = new Object[]{null, null, null, null, null, var20}; - var10008[4] = false; - var10008[3] = var58; - var10008[2] = false; - var10008[1] = var75; - var10008[0] = var88; - double var76 = var86.b(var10008); - double var77 = var76; - if (var43 && var76 < ((Float)this.c.getValue()).floatValue()) { - var10008 = new Object[]{null, null, null, null, var22}; - var10008[3] = var76; - var10008[2] = var58; - var10008[1] = var38; - var10008[0] = var75; - var77 = Math.max(var76, this.a_double___(var10008)); + Vec3d crystalPos = new Vec3d(base.getX() + 0.5, base.getY() + 1.0, base.getZ() + 0.5); + double rawDamage = Prestige.damageCalculator.getCrystalDamage(this.target, crystalPos, false, base, false); + double damage = rawDamage; + if (usePrediction && rawDamage < this.minDamage.getValue().floatValue()) { + damage = Math.max(rawDamage, this.getPredictedDamage(crystalPos, predictedTargetPos, base, rawDamage)); } - if (!(var77 < ((Float)this.c.getValue()).floatValue())) { - DamageUtil var87 = Prestige.f; - ClientPlayerEntity var89 = b.player; - var10008 = new Object[]{null, null, null, null, null, var20}; - var10008[4] = false; - var10008[3] = var58; - var10008[2] = false; - var10008[1] = var75; - var10008[0] = var89; - double var78 = var87.b(var10008); - if (!(var78 > ((Float)this.d.getValue()).floatValue()) && (!(Boolean)this.e.getValue() || !(var78 >= var42 - 1.0F))) { - double var79 = var77; - if (var77 >= this.Z.getHealth() + this.Z.getAbsorptionAmount()) { - var79 = var77 + 50.0; + if (!(damage < this.minDamage.getValue().floatValue())) { + double selfDamage = Prestige.damageCalculator.getCrystalDamage(mc.player, crystalPos, false, base, false); + if (!(selfDamage > this.maxSelfDamage.getValue().floatValue()) && (!this.antiSuicide.getValue() || !(selfDamage >= selfHealth - 1.0F))) { + double score = damage; + if (damage >= this.target.getHealth() + this.target.getAbsorptionAmount()) { + score = damage + 50.0; } - if (var41 != null) { - Vec3d var81 = var38.subtract(var75); - var81 = new Vec3d(var81.x, 0.0, var81.z); - if (var81.lengthSquared() > 1.0E-4) { - var79 += ((Float)this.u.getValue()).floatValue() * 8.0 * Math.max(0.0, var81.normalize().dotProduct(var41)); + if (momentumDir != null) { + Vec3d pushDir = predictedTargetPos.subtract(crystalPos); + pushDir = new Vec3d(pushDir.x, 0.0, pushDir.z); + if (pushDir.lengthSquared() > 1.0E-4) { + score += this.momentumWeight.getValue().floatValue() * 8.0 * Math.max(0.0, pushDir.normalize().dotProduct(momentumDir)); } } - if ((Boolean)this.x.getValue() && this.k_boolean_(new Object[]{var58, var37, var24})) { - var79 += 3.0; + if (this.prefer1x1.getValue() && this.isAdjacentToFeet(base, targetFeet)) { + score += 3.0; } - if (var56 && (Boolean)this.y.getValue()) { - var79 += var57 ? 8.0 : 4.0; + if (existingBase && this.preferExistingObby.getValue()) { + score += crystalPresent ? 8.0 : 4.0; } - if ((Float)this.v.getValue() > 0.0F) { - double var83 = this.b_double___(new Object[]{var61, var30}); - if (var83 >= 0.0) { - var79 -= ((Float)this.v.getValue()).floatValue() * Math.min(var83, (double)((Float)this.w.getValue()).floatValue()); + if (this.yawChangeWeight.getValue() > 0.0F) { + double yawChange = this.getYawChange(aimPoint); + if (yawChange >= 0.0) { + score -= this.yawChangeWeight.getValue().floatValue() * Math.min(yawChange, (double)this.yawChangeCap.getValue().floatValue()); } } - var79 -= 0.2 * var39.distanceTo(var61); - AutoObbyCrystalHelper var84 = new AutoObbyCrystalHelper(var58, var59, var60, var61, !var56, var57, var79); - this.aj.add(var84); - if (var44 == null || var79 > var44.g) { - var44 = var84; + score -= 0.2 * eyePos.distanceTo(aimPoint); + ObbyCrystalCandidate candidate = new ObbyCrystalCandidate(base, support, side, aimPoint, !existingBase, crystalPresent, score); + this.candidates.add(candidate); + if (best == null || score > best.score) { + best = candidate; } } } @@ -1457,143 +1046,114 @@ public class AutoObbyCrystal extends Module implements RenderContract3 { } } - this.aj.sort(Comparator.comparingDouble(lpL244_0 -> ((dev.zprestige.prestige.math.AutoObbyCrystalHelper)lpL244_0).g).reversed()); - return var44; + this.candidates.sort(Comparator.comparingDouble(entry -> entry.score).reversed()); + return best; } - private boolean j_boolean__(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - BlockPos var3 = (BlockPos)var1[1]; - long var4 = (Long)var1[2]; - var4 = 45124953315131L ^ var4; - long var6 = var4 ^ 21335166793029L; - long var8 = var4 ^ 96471927547342L; - long var10 = var4 ^ 41551049095747L; - Event.b(); - RenderBatch var13 = Prestige.o.a_RenderBatch(new Object[]{var2, var10}); - if (var13 == null) { + private boolean canHitSilently(Vec3d point, BlockPos pos) { + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(point); + if (rotation == null) { return false; } else { - float var10000 = var13.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var8}; - var10003[0] = var10000; - if (Math.abs(WorldUtil.b_float_____________________(var10003)) > (Float)this.s.getValue()) { + if (Math.abs(RotationUtil.wrapDegrees(rotation.getYaw() - mc.player.getYaw())) > this.silentAimFov.getValue()) { return false; } else { - return var13.a_boolean________________________________________(new Object[0]) + return rotation.isClamped() ? true - : WorldUtil.a_class_239_(new Object[]{var13, var6}) instanceof BlockHitResult var15 && var15.getBlockPos().equals(var3); + : RotationUtil.raycastRotation(rotation) instanceof BlockHitResult blockHit && blockHit.getBlockPos().equals(pos); } } } - private Vec3d f_class_243(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - long var2 = (Long)var1[1]; - var2 = 45124953315131L ^ var2; - long var5 = var2 ^ 49157113108411L; - long var7 = var2 ^ 36211313154318L; - Event.b(); - String var10 = (String)this.t.getValue(); - if (var10.equals("None")) { + private Vec3d getMomentumDirection(Vec3d targetPos) { + String mode = this.momentumMode.getValue(); + if (mode.equals("None")) { return null; } else { - switch (var10) { + switch (mode) { case "Away From Self": - Vec3d var17 = var4.subtract(PositionUtil.b(new Object[]{var7})); - var17 = new Vec3d(var17.x, 0.0, var17.z); - return var17.lengthSquared() > 1.0E-4 ? var17.normalize() : null; + Vec3d awayFromSelf = targetPos.subtract(PositionUtil.getPlayerPos()); + awayFromSelf = new Vec3d(awayFromSelf.x, 0.0, awayFromSelf.z); + return awayFromSelf.lengthSquared() > 1.0E-4 ? awayFromSelf.normalize() : null; case "Toward Center": - Vec3d var16 = new Vec3d(-var4.x, 0.0, -var4.z); - return var16.lengthSquared() > 1.0E-4 ? var16.normalize() : null; + Vec3d towardCenter = new Vec3d(-targetPos.x, 0.0, -targetPos.z); + return towardCenter.lengthSquared() > 1.0E-4 ? towardCenter.normalize() : null; case "Toward Hole": - BlockPos var13 = this.a_class_2338__(new Object[]{var5}); - if (var13 == null) { + BlockPos hole = this.findNearestHole(); + if (hole == null) { return null; } - Vec3d var14 = var13.toCenterPos().subtract(var4); - var14 = new Vec3d(var14.x, 0.0, var14.z); - return var14.lengthSquared() > 1.0E-4 ? var14.normalize() : null; + Vec3d towardHole = hole.toCenterPos().subtract(targetPos); + towardHole = new Vec3d(towardHole.x, 0.0, towardHole.z); + return towardHole.lengthSquared() > 1.0E-4 ? towardHole.normalize() : null; default: return null; } } } - private BlockPos a_class_2338__(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 23796775451657L; - Event.b(); - BlockPos var7 = this.Z.getBlockPos(); - BlockPos var8 = null; - double var9 = Double.MAX_VALUE; - Mutable var11 = new Mutable(); + private BlockPos findNearestHole() { + BlockPos targetFeet = this.target.getBlockPos(); + BlockPos nearest = null; + double nearestDistSq = Double.MAX_VALUE; + Mutable scanPos = new Mutable(); - for (int var12 = -6; var12 <= 6; var12++) { - for (int var13 = -6; var13 <= 6; var13++) { - var11.set(var7.getX() + var12, var7.getY(), var7.getZ() + var13); - if (b.world.getBlockState(var11).isAir() && b.world.getBlockState(var11.up()).isAir() && WorldUtil2.e(new Object[]{var11.down(), var4})) { - boolean var14 = true; + for (int offsetX = -6; offsetX <= 6; offsetX++) { + for (int offsetZ = -6; offsetZ <= 6; offsetZ++) { + scanPos.set(targetFeet.getX() + offsetX, targetFeet.getY(), targetFeet.getZ() + offsetZ); + if (mc.world.getBlockState(scanPos).isAir() && mc.world.getBlockState(scanPos.up()).isAir() && BlockUtil.isClickableBlock(scanPos.down())) { + boolean surrounded = true; - for (Direction var18 : Direction.values()) { - if (var18.getOffsetY() == 0 && !WorldUtil2.e(new Object[]{var11.offset(var18), var4})) { - var14 = false; + for (Direction direction : Direction.values()) { + if (direction.getOffsetY() == 0 && !BlockUtil.isClickableBlock(scanPos.offset(direction))) { + surrounded = false; break; } } - if (var14) { - double var20 = var12 * var12 + var13 * var13; - if (var20 < var9) { - var9 = var20; - var8 = var11.toImmutable(); + if (surrounded) { + double distSq = offsetX * offsetX + offsetZ * offsetZ; + if (distSq < nearestDistSq) { + nearestDistSq = distSq; + nearest = scanPos.toImmutable(); } } } } } - return var8; + return nearest; } - private boolean k_boolean_(Object[] var1) { - BlockPos var5 = (BlockPos)var1[0]; - BlockPos var2 = (BlockPos)var1[1]; - return var5.getY() == var2.getY() && Math.max(Math.abs(var5.getX() - var2.getX()), Math.abs(var5.getZ() - var2.getZ())) == 1; + private boolean isAdjacentToFeet(BlockPos base, BlockPos feet) { + return base.getY() == feet.getY() && Math.max(Math.abs(base.getX() - feet.getX()), Math.abs(base.getZ() - feet.getZ())) == 1; } - private EndCrystalEntity a_class_1511(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 21345801821222L; - long var6 = var2 ^ 125507669430018L; - long var8 = var2 ^ 55690499677084L; - Event.b(); - this.ah = false; - if (this.aa != null && this.g(new Object[]{this.aa.up(), var4})) { - Vec3d var11 = this.aa.up().toCenterPos(); - Vec3d var12 = b.player.getEyePos(); - Box var13 = new Box(this.aa.up()).expand(1.5); + private EndCrystalEntity findBreakableCrystal() { + this.crystalOutOfReach = false; + if (this.basePos != null && this.hasCrystalAt(this.basePos.up())) { + Vec3d spawnCenter = this.basePos.up().toCenterPos(); + Vec3d eyePos = mc.player.getEyePos(); + Box searchBox = new Box(this.basePos.up()).expand(1.5); - for (Entity var15 : b.world.getOtherEntities(null, var13, lpL243_0 -> ((net.minecraft.entity.Entity)lpL243_0) instanceof EndCrystalEntity)) { - if (var15 instanceof EndCrystalEntity var16 - && var16.isAlive() - && var16.getId() != this.ai - && var16.age >= 2 - && !(PositionUtil.a(new Object[]{var16, var6}).distanceTo(var11) > 1.0)) { - Box var17 = var16.getBoundingBox(); - double var18 = c_double___(new Object[]{var17, var12, var8}); - if (this.ak != null) { - var18 = Math.max(var18, c_double___(new Object[]{var17, this.ak, var8})); + for (Entity entity : mc.world.getOtherEntities(null, searchBox, nearby -> nearby instanceof EndCrystalEntity)) { + if (entity instanceof EndCrystalEntity crystal + && crystal.isAlive() + && crystal.getId() != this.lastAttackedCrystalId + && crystal.age >= 2 + && !(PositionUtil.getEntityPos(crystal).distanceTo(spawnCenter) > 1.0)) { + Box box = crystal.getBoundingBox(); + double distance = distanceToBox(box, eyePos); + if (this.serverEyePos != null) { + distance = Math.max(distance, distanceToBox(box, this.serverEyePos)); } - if (!(var18 > ((Float)this.I.getValue()).floatValue())) { - return var16; + if (!(distance > this.reach.getValue().floatValue())) { + return crystal; } - this.ah = true; + this.crystalOutOfReach = true; } } @@ -1603,233 +1163,122 @@ public class AutoObbyCrystal extends Module implements RenderContract3 { } } - private static double c_double___(Object[] var0) { - Box var4 = (Box)var0[0]; - Vec3d var3 = (Vec3d)var0[1]; - double var5 = Math.max(var4.minX - var3.x, Math.max(0.0, var3.x - var4.maxX)); - double var7 = Math.max(var4.minY - var3.y, Math.max(0.0, var3.y - var4.maxY)); - double var9 = Math.max(var4.minZ - var3.z, Math.max(0.0, var3.z - var4.maxZ)); - return Math.sqrt(var5 * var5 + var7 * var7 + var9 * var9); + private static double distanceToBox(Box box, Vec3d point) { + double dx = Math.max(box.minX - point.x, Math.max(0.0, point.x - box.maxX)); + double dy = Math.max(box.minY - point.y, Math.max(0.0, point.y - box.maxY)); + double dz = Math.max(box.minZ - point.z, Math.max(0.0, point.z - box.maxZ)); + return Math.sqrt(dx * dx + dy * dy + dz * dz); } - private boolean l_boolean(Object[] var1) { - Box var6 = (Box)var1[0]; - Vec3d var5 = (Vec3d)var1[1]; - RenderBatch var4 = (RenderBatch)var1[2]; - long var2 = (Long)var1[3]; - var2 = 45124953315131L ^ var2; - long var7 = var2 ^ 118867956410404L; - Vec3d var9 = var5.add(WorldUtil.a_class_243________________(new Object[]{var4, var7}).multiply(6.0)); - return var6.raycast(var5, var9).map(lpL242_0 -> var5.distanceTo(((net.minecraft.util.math.Vec3d)lpL242_0)) <= ((Float)this.I.getValue()).floatValue()).orElse(false); + private boolean canRayHitBox(Box box, Vec3d origin, Rotation rotation) { + return box.raycast(origin, origin.add(RotationUtil.getDirectionVector(rotation).multiply(6.0))).map(hitPos -> origin.distanceTo(hitPos) <= this.reach.getValue().floatValue()).orElse(false); } - private boolean m_boolean(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 136194790328295L; - return this.Z != null - && this.Z.isAlive() - && b.player.distanceTo(this.Z) <= (Float)this.k.getValue() - && Prestige.i.a_boolean_(new Object[]{this.Z, var4}); + private boolean isTargetValid() { + return this.target != null + && this.target.isAlive() + && mc.player.distanceTo(this.target) <= this.maxTargetDistance.getValue() + && Prestige.botFilter.isValidTarget(this.target); } - private boolean n_boolean(Object[] var1) { - if (this.ae != null && this.Z != null) { - BlockPos var5 = this.Z.getBlockPos(); - int var6 = Math.abs(var5.getX() - this.ae.getX()); - int var7 = Math.abs(var5.getY() - this.ae.getY()); - int var8 = Math.abs(var5.getZ() - this.ae.getZ()); - this.aD = Math.max(var6, Math.max(var7, var8)); - return this.aD > (this.S == CrystalState.PLACE_OBSIDIAN ? 2 : (Integer)this.o.getValue()); + private boolean hasTargetMoved() { + if (this.targetStartPos != null && this.target != null) { + BlockPos currentPos = this.target.getBlockPos(); + this.targetDrift = Math.max(Math.abs(currentPos.getX() - this.targetStartPos.getX()), Math.max(Math.abs(currentPos.getY() - this.targetStartPos.getY()), Math.abs(currentPos.getZ() - this.targetStartPos.getZ()))); + return this.targetDrift > (this.state == ObbyCrystalState.PLACE_OBSIDIAN ? 2 : this.midSequenceMovementTolerance.getValue()); } else { return false; } } - private void u(Object[] var1) { - String var4 = (String)var1[0]; - long var2 = (Long)var1[1]; - var2 = 45124953315131L ^ var2; - long var5 = var2 ^ 12846848591529L; - long var7 = var2 ^ 65625383453488L; - long var9 = var2 ^ 119828529314721L; - long var11 = var2 ^ 72510782199301L; - RenderHelper27 var10000 = this.aE; - Object[] var10004 = new Object[]{null, var9}; - var10004[0] = 3000.0F; - if (var10000.a(var10004)) { - ModuleNotificationsElement.s(new Object[]{this, var4, NotificationType.ERROR, var5}); - this.aE.a_void_____________________(new Object[]{var7}); + private void failWithError(String message) { + if (this.errorNotifyTimer.hasElapsed(3000.0F)) { + ModuleNotificationsElement.postNotification(this, message, NotificationType.ERROR); + this.errorNotifyTimer.reset(); } - this.x(new Object[]{var11}); + this.resetSequence(); } - private void v(Object[] var1) { - String var4 = (String)var1[0]; - long var2 = (Long)var1[1]; - var2 = 45124953315131L ^ var2; - long var5 = var2 ^ 109340588861614L; - long var7 = var2 ^ 45270268639234L; - if ((Boolean)this.q.getValue() && this.S != CrystalState.IDLE) { - ModuleNotificationsElement.s(new Object[]{this, "abort: " + this.S + ", " + var4, NotificationType.INFO, var5}); + private void abort(String reason) { + if (this.debugAborts.getValue() && this.state != ObbyCrystalState.IDLE) { + ModuleNotificationsElement.postNotification(this, "abort: " + this.state + ", " + reason, NotificationType.INFO); } - this.x(new Object[]{var7}); + this.resetSequence(); } - private float d_float_(Object[] var1) { - int var4 = 0; - PlayerListEntry var5 = b.player.networkHandler.getPlayerListEntry(b.player.getUuid()); - if (var5 != null) { - var4 = Math.max(0, var5.getLatency()); + private float getStageTimeout() { + int ping = 0; + PlayerListEntry entry = mc.player.networkHandler.getPlayerListEntry(mc.player.getUuid()); + if (entry != null) { + ping = Math.max(0, entry.getLatency()); } - return this.S == CrystalState.BREAK_CRYSTAL - ? Math.min(1500.0F, Math.max(500.0F, 300.0F + var4 * 1.5F)) - : Math.min(600.0F, Math.max(200.0F, 120.0F + var4 * 0.8F)); + return this.state == ObbyCrystalState.BREAK_CRYSTAL + ? Math.min(1500.0F, Math.max(500.0F, 300.0F + ping * 1.5F)) + : Math.min(600.0F, Math.max(200.0F, 120.0F + ping * 0.8F)); } - private void w(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 67436639361498L; - long var6 = var2 ^ 24817248026408L; - if (this.af != -1) { - if (b.player == null) { - RenderUtil6.a_void____________________________(new Object[]{this, var4}); - this.af = -1; - } else if (!RenderUtil6.a_boolean____________________________________________(new Object[]{this})) { - this.af = -1; - } else if (!Prestige.o.d_boolean______(new Object[0])) { - if ((Boolean)this.h.getValue()) { - int var10000 = this.af; - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); + private void restoreSwapSlot() { + if (this.swapBackSlot != -1) { + if (mc.player == null) { + SwapBackTracker.release(this); + this.swapBackSlot = -1; + } else if (!SwapBackTracker.isOwner(this)) { + this.swapBackSlot = -1; + } else if (!Prestige.silentRotationManager.hasActedThisTick()) { + if (this.swapBack.getValue()) { + InventoryUtil.selectSlot(this.swapBackSlot); + Prestige.silentRotationManager.setActedThisTick(true); } - RenderUtil6.a_void____________________________(new Object[]{this, var4}); - this.af = -1; + SwapBackTracker.release(this); + this.swapBackSlot = -1; } } } - private void x(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 30640521703415L; - this.w(new Object[]{var4}); - this.S = CrystalState.IDLE; - this.Z = null; - this.aa = null; - this.ab = null; - this.ac = null; - this.ad = null; - this.ae = null; - this.ag = false; - this.Y = false; - this.aj.clear(); - R = false; + private void resetSequence() { + this.restoreSwapSlot(); + this.state = ObbyCrystalState.IDLE; + this.target = null; + this.basePos = null; + this.supportPos = null; + this.placeSide = null; + this.hitVec = null; + this.targetStartPos = null; + this.breakTimeoutRetried = false; + this.obsidianJustPlaced = false; + this.candidates.clear(); + sequenceActive = false; } - private void y(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 45124953315131L ^ var2; - long var4 = var2 ^ 24958852567137L; - this.S = CrystalState.IDLE; - this.Z = null; - this.aa = null; - this.ab = null; - this.ac = null; - this.ad = null; - this.ae = null; - this.af = -1; - this.ag = false; - this.Y = false; - this.X = false; - this.ai = -1; - this.ak = null; - this.al = null; - this.am = null; - this.an = Vec3d.ZERO; - this.ao = Long.MIN_VALUE; - this.aj.clear(); - R = false; - this.ax.b(new Object[]{var4}); - this.ay.b(new Object[]{var4}); - this.az.clear(); - this.aA.clear(); - this.aB = null; - this.aC = null; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private void resetState() { + this.state = ObbyCrystalState.IDLE; + this.target = null; + this.basePos = null; + this.supportPos = null; + this.placeSide = null; + this.hitVec = null; + this.targetStartPos = null; + this.swapBackSlot = -1; + this.breakTimeoutRetried = false; + this.obsidianJustPlaced = false; + this.actedThisSequence = false; + this.lastAttackedCrystalId = -1; + this.serverEyePos = null; + this.trackedEntity = null; + this.trackedLastPos = null; + this.trackedVelocity = Vec3d.ZERO; + this.trackedLastTime = Long.MIN_VALUE; + this.candidates.clear(); + sequenceActive = false; + this.targetFade.reset(); + this.placementFade.reset(); + this.candidateFades.clear(); + this.renderedCandidates.clear(); + this.lastTargetPos = null; + this.lastBasePos = null; } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoSafeCart.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoSafeCart.java index 75abd97..97cbe67 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoSafeCart.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoSafeCart.java @@ -9,24 +9,20 @@ import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.DamageUtil; -import dev.zprestige.prestige.data.DoubleData; -import dev.zprestige.prestige.data.LongData2; -import dev.zprestige.prestige.data.VecDoubleData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.data.CartBlockerPlacement; +import dev.zprestige.prestige.data.SafeCartPlacement; +import dev.zprestige.prestige.data.CartThreat; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -37,7 +33,6 @@ import java.util.Set; import java.util.function.Predicate; import net.minecraft.block.Block; import net.minecraft.block.Blocks; -import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.entity.Entity; import net.minecraft.entity.vehicle.TntMinecartEntity; import net.minecraft.item.BlockItem; @@ -48,7 +43,6 @@ import net.minecraft.registry.tag.ItemTags; import net.minecraft.registry.tag.TagKey; import net.minecraft.util.Hand; import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.MathHelper; @@ -57,91 +51,80 @@ import net.minecraft.world.RaycastContext; import net.minecraft.world.RaycastContext.FluidHandling; import net.minecraft.world.RaycastContext.ShapeType; -public class AutoSafeCart extends Module implements RenderContract3 { - private EnumSetting a; - private EnumSetting c; - private FloatSetting d; - private FloatSetting e; - private MultiSetting f; - private IntSetting g; - private RangeSetting h; - private EnumSetting i; - private FloatSetting j; - private FloatSetting k; - private static final String[] l = new String[]{"Logs", "Planks", "Cobblestone", "Obsidian"}; - private Map m = new HashMap(); - private List n = new ArrayList(); - private BlockPos o; - private long p; - private boolean q; - private RenderHelper27 r = new RenderHelper27(26293358099357L); +public class AutoSafeCart extends Module implements RotationProvider { + private EnumSetting mode; + private EnumSetting protect; + private FloatSetting minDamage; + private FloatSetting maxDamage; + private MultiSetting blocks; + private IntSetting maxBlocks; + private RangeSetting delay; + private EnumSetting swap; + private FloatSetting range; + private FloatSetting fov; + private static final String[] BLOCK_OPTIONS = new String[]{"Logs", "Planks", "Cobblestone", "Obsidian"}; + private Map blocksPlacedPerCart = new HashMap(); + private List ownCartPlacements = new ArrayList(); + private BlockPos lastPlacePos; + private long lastPlaceTime; + private boolean hadThreats; + private StopWatch placeTimer = new StopWatch(); public AutoSafeCart() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.k.setVisibility_FloatSetting(new Object[]{(Predicate)lpL287_0 -> ((String)this.a.getValue()).equals("Silent"), 35046756052036L}); + this.fov.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Silent")); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Cart); } @Subscribe - public void a(TickEvent3 var1) { - this.m.clear(); - this.n.clear(); - this.o = null; - this.q = false; + public void onGameJoin(GameJoinEvent event) { + this.blocksPlacedPerCart.clear(); + this.ownCartPlacements.clear(); + this.lastPlacePos = null; + this.hadThreats = false; } @Subscribe - public void a(PacketEvent2 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket var7) { - ItemStack var12 = var7.getHand().equals(Hand.MAIN_HAND) ? b.player.getMainHandStack() : b.player.getOffHandStack(); - if (var12.getItem() == Items.TNT_MINECART) { - BlockHitResult var9 = var7.getBlockHitResult(); - long var10 = System.currentTimeMillis(); - this.n.add(new LongData2(var9.getBlockPos(), var10)); - this.n.add(new LongData2(WorldUtil2.a_class_2338______(new Object[]{var9, 110292667014705L}), var10)); + public void onPacketSend(PacketSendEvent event) { + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket interactPacket) { + if ((interactPacket.getHand().equals(Hand.MAIN_HAND) ? mc.player.getMainHandStack() : mc.player.getOffHandStack()).getItem() == Items.TNT_MINECART) { + BlockHitResult hitResult = interactPacket.getBlockHitResult(); + long now = System.currentTimeMillis(); + this.ownCartPlacements.add(new SafeCartPlacement(hitResult.getBlockPos(), now)); + this.ownCartPlacements.add(new SafeCartPlacement(BlockUtil.getPlacePos(hitResult), now)); } } } @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - this.k(new Object[]{24129908539005L}); - if (((String)this.a.getValue()).equals("Legit") && b.player != null && b.world != null) { - if (!b.player.isUsingItem() && !Prestige.o.d_boolean______(new Object[0])) { - Block var29 = this.a_class_2248(new Object[]{73622188516302L}); - if (var29 != null) { - List var30 = this.c(new Object[]{104766875730671L}); - this.j(new Object[]{var30, 30230479421378L}); - if (!var30.isEmpty() && this.r.b(new Object[]{this.h, 89714527855213L})) { - if (b.crosshairTarget instanceof BlockHitResult var31) { - BlockPos var38 = !WorldUtil2.b(new Object[]{var31.getBlockPos(), Blocks.FIRE, 91415361137757L}) - && !WorldUtil2.b( - new Object[]{var31.getBlockPos(), WorldUtil2.a_class_2248_(new Object[]{12315318725950L}), 91415361137757L} + public void onClientTick(ClientTickEvent event) { + this.pruneTracking(); + if (this.mode.getValue().equals("Legit") && mc.player != null && mc.world != null) { + if (!mc.player.isUsingItem() && !Prestige.silentRotationManager.hasActedThisTick()) { + Block coverBlock = this.findCoverBlock(); + if (coverBlock != null) { + List threats = this.findThreats(); + this.updateThreatState(threats); + if (!threats.isEmpty() && this.placeTimer.hasElapsedRandom(this.delay)) { + if (mc.crosshairTarget instanceof BlockHitResult crosshairHit) { + BlockPos placePos = !BlockUtil.isOf(crosshairHit.getBlockPos(), Blocks.FIRE) + && !BlockUtil.isOf( + crosshairHit.getBlockPos(), BlockUtil.getShortGrass() ) - ? WorldUtil2.a_class_2338______(new Object[]{var31, 110292667014705L}) - : var31.getBlockPos(); - if (b.world.getBlockState(var38).isReplaceable() && !WorldUtil2.g(new Object[]{var38, 87119771691358L})) { - if (this.o == null || !this.o.equals(var38)) { - BlockPos var33 = this.a_class_2338___(new Object[]{115862723372271L}); + ? BlockUtil.getPlacePos(crosshairHit) + : crosshairHit.getBlockPos(); + if (mc.world.getBlockState(placePos).isReplaceable() && !BlockUtil.hasEntityAt(placePos)) { + if (this.lastPlacePos == null || !this.lastPlacePos.equals(placePos)) { + BlockPos pendingPos = this.getPendingPlacePos(); - for (VecDoubleData var35 : (Iterable)(var30)) { - DamageUtil var10000 = Prestige.f; - ClientPlayerEntity var10001 = b.player; - Vec3d var10002 = var35.ap(); - double var10003 = var35.aq(); - Object[] var10009 = new Object[]{null, null, null, var33, var38, var29.getDefaultState(), 12057437191772L}; - var10009[2] = var10003; - var10009[1] = var10002; - var10009[0] = var10001; - double var36 = var10000.h(var10009); - if (!(var36 >= var35.ar() - 0.5) - && this.a_boolean_______________(new Object[]{var29, new DoubleData(var38, var31, var36), var35, 118652811801300L}) + for (CartThreat threat : (Iterable)(threats)) { + double damageAfter = Prestige.damageCalculator.getTntCartDamage(mc.player, threat.explosionPos(), threat.horizontalSpeed(), pendingPos, placePos, coverBlock.getDefaultState()); + if (!(damageAfter >= threat.damage() - 0.5) + && this.tryPlaceCover(coverBlock, new CartBlockerPlacement(placePos, crosshairHit, damageAfter), threat) ) { return; @@ -157,39 +140,29 @@ public class AutoSafeCart extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 116785209433731L; - long var6 = var2 ^ 14839365373047L; - long var8 = var2 ^ 93407410278523L; - long var10 = var2 ^ 18427541941590L; - long var12 = var2 ^ 39997114424685L; - long var14 = var2 ^ 33065978990036L; - long var16 = var2 ^ 4946510141917L; - long var18 = var2 ^ 101816702374277L; - if (((String)this.a.getValue()).equals("Silent") && b.player != null && b.world != null) { - if (!b.player.isUsingItem() && !Prestige.o.d_boolean______(new Object[0])) { - Block var21 = this.a_class_2248(new Object[]{var6}); - if (var21 == null) { + public Rotation provideRotation() { + if (this.mode.getValue().equals("Silent") && mc.player != null && mc.world != null) { + if (!mc.player.isUsingItem() && !Prestige.silentRotationManager.hasActedThisTick()) { + Block coverBlock = this.findCoverBlock(); + if (coverBlock == null) { return null; } else { - List var22 = this.c(new Object[]{var10}); - this.j(new Object[]{var22, var8}); - if (!var22.isEmpty() && this.r.b(new Object[]{this.h, var14})) { - for (VecDoubleData var24 : (Iterable)(var22)) { - DoubleData var25 = this.a_DoubleData(new Object[]{var24, var21, var16}); - if (var25 != null) { - RenderBatch var26 = Prestige.o.a_RenderBatch(new Object[]{var25.am().getPos(), var18}); - float var27 = MathHelper.wrapDegrees(var26.a(new Object[0]) - b.player.getYaw()); - if (!(var27 > (Float)this.k.getValue()) && !(var27 < -(Float)this.k.getValue())) { - if (var26.a_boolean________________________________________(new Object[0])) { - return var26; + List threats = this.findThreats(); + this.updateThreatState(threats); + if (!threats.isEmpty() && this.placeTimer.hasElapsedRandom(this.delay)) { + for (CartThreat threat : (Iterable)(threats)) { + CartBlockerPlacement placement = this.findBestCoverPlacement(threat, coverBlock); + if (placement != null) { + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(placement.hitResult().getPos()); + float yawDelta = MathHelper.wrapDegrees(rotation.getYaw() - mc.player.getYaw()); + if (!(yawDelta > this.fov.getValue()) && !(yawDelta < -this.fov.getValue())) { + if (rotation.isClamped()) { + return rotation; } - HitResult var28 = WorldUtil.a_class_239_(new Object[]{var26, var4}); - if (!(var28.getPos().distanceTo(var25.am().getPos()) > 0.5) - && this.a_boolean_______________(new Object[]{var21, var25, var24, var12})) { - return var26; + if (!(RotationUtil.raycastRotation(rotation).getPos().distanceTo(placement.hitResult().getPos()) > 0.5) + && this.tryPlaceCover(coverBlock, placement, threat)) { + return rotation; } } } @@ -208,127 +181,88 @@ public class AutoSafeCart extends Module implements RenderContract3 { } } - private List c(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 72247364469653L ^ var2; - long var4 = var2 ^ 38924065942550L; - long var6 = var2 ^ 22036425867046L; - long var8 = var2 ^ 129149756477191L; - long var10 = var2 ^ 131520260957589L; - long var12 = var2 ^ 67848603377868L; - ArrayList var15 = new ArrayList(); - Event.b(); - Vec3d var16 = PositionUtil.b(new Object[]{var8}); - BlockPos var17 = this.a_class_2338___(new Object[]{var10}); + private List findThreats() { + ArrayList threats = new ArrayList(); + Vec3d playerPos = PositionUtil.getPlayerPos(); + BlockPos pendingPos = this.getPendingPlacePos(); - for (Entity var19 : b.world.getEntities()) { - if (var19 instanceof TntMinecartEntity var20) { - Vec3d var21 = PositionUtil.a(new Object[]{var20, var4}); - if (!(var16.distanceTo(var21) > ((Float)this.j.getValue()).floatValue()) - && this.d_boolean_(new Object[]{var20, var12}) - && (Integer)this.m.getOrDefault(var20.getUuid(), 0) < (Integer)this.g.getValue()) { - double var22 = Math.hypot(var20.getVelocity().x, var20.getVelocity().z); - DamageUtil var10000 = Prestige.f; - ClientPlayerEntity var10001 = b.player; - Object[] var10009 = new Object[]{null, null, null, var17, null, null, var6}; - var10009[2] = var22; - var10009[1] = var21; - var10009[0] = var10001; - double var24 = var10000.h(var10009); - if (!(var24 < ((Float)this.d.getValue()).floatValue()) && !(var24 <= ((Float)this.e.getValue()).floatValue())) { - var15.add(new VecDoubleData(var20, var21, var22, var24)); + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof TntMinecartEntity cart) { + Vec3d cartPos = PositionUtil.getEntityPos(cart); + if (!(playerPos.distanceTo(cartPos) > this.range.getValue().floatValue()) + && this.shouldProtectFrom(cart) + && (Integer)this.blocksPlacedPerCart.getOrDefault(cart.getUuid(), 0) < this.maxBlocks.getValue()) { + double horizontalSpeed = Math.hypot(cart.getVelocity().x, cart.getVelocity().z); + double damage = Prestige.damageCalculator.getTntCartDamage(mc.player, cartPos, horizontalSpeed, pendingPos, null, null); + if (!(damage < this.minDamage.getValue().floatValue()) && !(damage <= this.maxDamage.getValue().floatValue())) { + threats.add(new CartThreat(cart, cartPos, horizontalSpeed, damage)); } } } } - var15.sort((lpL286_0, lpL286_1) -> Double.compare(((dev.zprestige.prestige.data.VecDoubleData)lpL286_1).ar(), ((dev.zprestige.prestige.data.VecDoubleData)lpL286_0).ar())); - return var15; + threats.sort((left, right) -> Double.compare(((dev.zprestige.prestige.data.CartThreat)right).damage(), ((dev.zprestige.prestige.data.CartThreat)left).damage())); + return threats; } - private List b_List__(Object[] var1) { - TntMinecartEntity var2 = (TntMinecartEntity)var1[0]; - LinkedHashSet var6 = new LinkedHashSet(); - BlockPos var7 = b.player.getBlockPos(); - BlockPos var8 = var2.getBlockPos(); - BlockPos[] var9 = new BlockPos[]{var7, var7.up(), var8, var8.up()}; - BlockPos[] var10 = var9; - int var11 = var9.length; - Event.b(); + private List getCoverCandidates(TntMinecartEntity cart) { + LinkedHashSet positions = new LinkedHashSet(); + BlockPos playerFeet = mc.player.getBlockPos(); + BlockPos cartFeet = cart.getBlockPos(); + BlockPos[] anchors = new BlockPos[]{playerFeet, playerFeet.up(), cartFeet, cartFeet.up()}; + BlockPos[] anchorArray = anchors; + int anchorCount = anchors.length; - for (int var12 = 0; var12 < var11; var12++) { - BlockPos var13 = var10[var12]; + for (int anchorIndex = 0; anchorIndex < anchorCount; anchorIndex++) { + BlockPos anchor = anchorArray[anchorIndex]; - for (int var14 = -1; var14 <= 1; var14++) { - for (int var15 = -1; var15 <= 1; var15++) { - if (var14 != 0 || var15 != 0) { - var6.add(var13.add(var14, 0, var15)); + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + if (dx != 0 || dz != 0) { + positions.add(anchor.add(dx, 0, dz)); } } } } - return new ArrayList(var6); + return new ArrayList(positions); } - private DoubleData a_DoubleData(Object[] var1) { - VecDoubleData var2 = (VecDoubleData)var1[0]; - Block var3 = (Block)var1[1]; - long var4 = (Long)var1[2]; - var4 = 72247364469653L ^ var4; - long var6 = var4 ^ 75557382509474L; - long var8 = var4 ^ 786192419757L; - long var10 = var4 ^ 108990155641118L; - long var12 = var4 ^ 117666535715452L; - BlockPos var15 = this.a_class_2338___(new Object[]{var10}); - Event.b(); - DoubleData var16 = null; + private CartBlockerPlacement findBestCoverPlacement(CartThreat threat, Block block) { + BlockPos pendingPos = this.getPendingPlacePos(); + CartBlockerPlacement best = null; - for (BlockPos var18 : (Iterable)(this.b_List__(new Object[]{var2.ao(), var12}))) { - BlockHitResult var19 = this.a_class_3965_____(new Object[]{var18, var6}); - if (var19 != null) { - DamageUtil var10000 = Prestige.f; - ClientPlayerEntity var10001 = b.player; - Vec3d var10002 = var2.ap(); - double var10003 = var2.aq(); - Object[] var10009 = new Object[]{null, null, null, var15, var18, var3.getDefaultState(), var8}; - var10009[2] = var10003; - var10009[1] = var10002; - var10009[0] = var10001; - double var20 = var10000.h(var10009); - if (!(var20 >= var2.ar() - 0.5) && (var16 == null || var20 < var16.an())) { - var16 = new DoubleData(var18, var19, var20); + for (BlockPos pos : (Iterable)(this.getCoverCandidates(threat.cart()))) { + BlockHitResult hit = this.getPlaceHit(pos); + if (hit != null) { + double damage = Prestige.damageCalculator.getTntCartDamage(mc.player, threat.explosionPos(), threat.horizontalSpeed(), pendingPos, pos, block.getDefaultState()); + if (!(damage >= threat.damage() - 0.5) && (best == null || damage < best.damage())) { + best = new CartBlockerPlacement(pos, hit, damage); } } } - return var16; + return best; } - private BlockHitResult a_class_3965_____(Object[] var1) { - BlockPos var2 = (BlockPos)var1[0]; - long var3 = (Long)var1[1]; - var3 = 72247364469653L ^ var3; - long var5 = var3 ^ 70854217993368L; - long var7 = var3 ^ 33335450342208L; - if (b.world.getBlockState(var2).isReplaceable() && !WorldUtil2.g(new Object[]{var2, var5})) { - if (this.o != null && this.o.equals(var2)) { + private BlockHitResult getPlaceHit(BlockPos pos) { + if (mc.world.getBlockState(pos).isReplaceable() && !BlockUtil.hasEntityAt(pos)) { + if (this.lastPlacePos != null && this.lastPlacePos.equals(pos)) { return null; } else { - Vec3d var10 = b.player.getEyePos(); - short var10000 = 824; - float var11 = InventoryUtil2.b_float_____(new Object[]{var7}); - Direction[] var12 = new Direction[]{Direction.DOWN, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP}; + Vec3d eyePos = mc.player.getEyePos(); + float reach = PlayerInteractions.getReachDistance(); + Direction[] directions = new Direction[]{Direction.DOWN, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP}; - for (Direction var16 : var12) { - BlockPos var17 = var2.offset(var16); - if (!b.world.getBlockState(var17).isReplaceable()) { - Direction var18 = var16.getOpposite(); - Vec3d var19 = var17.toCenterPos().add(var18.getOffsetX() * 0.5, var18.getOffsetY() * 0.5, var18.getOffsetZ() * 0.5); - if (!(var10.distanceTo(var19) > var11)) { - BlockHitResult var20 = b.world.raycast(new RaycastContext(var10, var19, ShapeType.COLLIDER, FluidHandling.NONE, b.player)); - if (var20 != null && !(var20.getPos().distanceTo(var19) > 0.1F)) { - return new BlockHitResult(var19, var18, var17, false); + for (Direction direction : directions) { + BlockPos neighbor = pos.offset(direction); + if (!mc.world.getBlockState(neighbor).isReplaceable()) { + Direction face = direction.getOpposite(); + Vec3d hitVec = neighbor.toCenterPos().add(face.getOffsetX() * 0.5, face.getOffsetY() * 0.5, face.getOffsetZ() * 0.5); + if (!(eyePos.distanceTo(hitVec) > reach)) { + BlockHitResult raycastHit = mc.world.raycast(new RaycastContext(eyePos, hitVec, ShapeType.COLLIDER, FluidHandling.NONE, mc.player)); + if (raycastHit != null && !(raycastHit.getPos().distanceTo(hitVec) > 0.1F)) { + return new BlockHitResult(hitVec, face, neighbor, false); } } } @@ -341,89 +275,55 @@ public class AutoSafeCart extends Module implements RenderContract3 { } } - private boolean a_boolean_______________(Object[] var1) { - Block var3 = (Block)var1[0]; - DoubleData var6 = (DoubleData)var1[1]; - VecDoubleData var2 = (VecDoubleData)var1[2]; - long var4 = (Long)var1[3]; - var4 = 72247364469653L ^ var4; - long var7 = var4 ^ 138090837969603L; - long var9 = var4 ^ 139965620301532L; - long var11 = var4 ^ 89428057324972L; - long var13 = var4 ^ 28268871843744L; - long var15 = var4 ^ 19536884003615L; - boolean var18; - if (((String)this.i.getValue()).equals("None")) { - if (!InventoryUtil.l(new Object[]{var3.asItem(), var15})) { + private boolean tryPlaceCover(Block block, CartBlockerPlacement placement, CartThreat threat) { + boolean placed; + if (this.swap.getValue().equals("None")) { + if (!InventoryUtil.isHolding(block.asItem())) { return false; } - var18 = InventoryUtil2.a(new Object[]{var6.am(), var7}); + placed = PlayerInteractions.interactBlock(placement.hitResult()); } else { - Runnable var10001 = () -> InventoryUtil2.a(new Object[]{var6.am(), 96519249476482L}); - boolean var10002 = ((String)this.i.getValue()).equals("Silent"); - Object[] var10005 = new Object[]{null, null, null, var11}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var3; - var18 = InventoryUtil.k(var10005); + placed = InventoryUtil.runWithBlock(block, () -> PlayerInteractions.interactBlock(placement.hitResult()), this.swap.getValue().equals("Silent")); } - if (var18) { - this.m.merge(var2.ao().getUuid(), 1, (java.util.function.BiFunction)(a_, b_) -> Integer.sum((Integer)a_, (Integer)b_)); - this.o = var6.al(); - this.p = System.currentTimeMillis(); - this.r.a_void_____________________(new Object[]{var9}); - this.h.reroll(new Object[]{var13}); + if (placed) { + this.blocksPlacedPerCart.merge(threat.cart().getUuid(), 1, (java.util.function.BiFunction)(oldCount, increment) -> Integer.sum((Integer)oldCount, (Integer)increment)); + this.lastPlacePos = placement.pos(); + this.lastPlaceTime = System.currentTimeMillis(); + this.placeTimer.reset(); + this.delay.reroll(); } - return var18; + return placed; } - private Block a_class_2248(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 72247364469653L ^ var2; - long var4 = var2 ^ 102651330164453L; - long var6 = var2 ^ 44830641924273L; - long var8 = var2 ^ 19383162669128L; - Event.b(); - boolean var11 = ((String)this.i.getValue()).equals("None"); + private Block findCoverBlock() { + boolean heldOnly = this.swap.getValue().equals("None"); - for (String var15 : l) { - if (this.f.isSelected(new Object[]{var15, var6})) { - Block var16 = switch (var15) { + for (String option : BLOCK_OPTIONS) { + if (this.blocks.isSelected(option)) { + Block block = switch (option) { case "Logs" -> { - TagKey var22 = ItemTags.LOGS; - Object[] var25 = new Object[]{null, null, var4}; - var25[1] = var11; - var25[0] = var22; - yield this.c_class_2248(var25); + TagKey logsTag = ItemTags.LOGS; + yield this.findAvailableTaggedBlock(logsTag, heldOnly); } case "Planks" -> { - TagKey var21 = ItemTags.PLANKS; - Object[] var24 = new Object[]{null, null, var4}; - var24[1] = var11; - var24[0] = var21; - yield this.c_class_2248(var24); + TagKey planksTag = ItemTags.PLANKS; + yield this.findAvailableTaggedBlock(planksTag, heldOnly); } case "Cobblestone" -> { - Block var20 = Blocks.COBBLESTONE; - Object[] var23 = new Object[]{null, null, var8}; - var23[1] = var11; - var23[0] = var20; - yield this.b_class_2248(var23); + Block cobblestone = Blocks.COBBLESTONE; + yield this.findAvailableBlock(cobblestone, heldOnly); } case "Obsidian" -> { - Block var10001 = Blocks.OBSIDIAN; - Object[] var10005 = new Object[]{null, null, var8}; - var10005[1] = var11; - var10005[0] = var10001; - yield this.b_class_2248(var10005); + Block obsidian = Blocks.OBSIDIAN; + yield this.findAvailableBlock(obsidian, heldOnly); } default -> null; }; - if (var16 != null) { - return var16; + if (block != null) { + return block; } } } @@ -431,33 +331,22 @@ public class AutoSafeCart extends Module implements RenderContract3 { return null; } - private Block b_class_2248(Object[] var1) { - Block var4 = (Block)var1[0]; - boolean var5 = (Boolean)var1[1]; - long var2 = (Long)var1[2]; - var2 = 72247364469653L ^ var2; - long var6 = var2 ^ 116383165242000L; - long var8 = var2 ^ 115237515274712L; - if (var5) { - return InventoryUtil.l(new Object[]{var4.asItem(), var8}) ? var4 : null; + private Block findAvailableBlock(Block block, boolean heldOnly) { + if (heldOnly) { + return InventoryUtil.isHolding(block.asItem()) ? block : null; } else { - return InventoryUtil.a_Integer(new Object[]{var4.asItem(), var6}) != null ? var4 : null; + return InventoryUtil.findHotbarSlot(block.asItem()) != null ? block : null; } } - private Block c_class_2248(Object[] var1) { - TagKey var5 = (TagKey)var1[0]; - boolean var4 = (Boolean)var1[1]; - long var2 = (Long)var1[2]; - var2 = 72247364469653L ^ var2; - long var6 = var2 ^ 126246368664270L; - if (var4) { - return this.d(new Object[]{b.player.getMainHandStack(), var5, var6}); + private Block findAvailableTaggedBlock(TagKey tag, boolean heldOnly) { + if (heldOnly) { + return this.getTaggedBlock(mc.player.getMainHandStack(), tag); } else { - for (int var9 = 0; var9 <= 8; var9++) { - Block var10 = this.d(new Object[]{b.player.getInventory().getStack(var9), var5, var6}); - if (var10 != null) { - return var10; + for (int slot = 0; slot <= 8; slot++) { + Block block = this.getTaggedBlock(mc.player.getInventory().getStack(slot), tag); + if (block != null) { + return block; } } @@ -465,36 +354,25 @@ public class AutoSafeCart extends Module implements RenderContract3 { } } - private Block d(Object[] var1) { - ItemStack var2 = (ItemStack)var1[0]; - TagKey var5 = (TagKey)var1[1]; - return !var2.isEmpty() && var2.isIn(var5) && var2.getItem() instanceof BlockItem var7 ? var7.getBlock() : null; + private Block getTaggedBlock(ItemStack stack, TagKey tag) { + return !stack.isEmpty() && stack.isIn(tag) && stack.getItem() instanceof BlockItem blockItem ? blockItem.getBlock() : null; } - private boolean d_boolean_(Object[] var1) { - TntMinecartEntity var4 = (TntMinecartEntity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 72247364469653L ^ var2; - long var5 = var2 ^ 41658254133611L; - if (((String)this.c.getValue()).equals("Both")) { + private boolean shouldProtectFrom(TntMinecartEntity cart) { + if (this.protect.getValue().equals("Both")) { return true; } else { - boolean var8 = this.e(new Object[]{var4, var5}); - return ((String)this.c.getValue()).equals("Only Self") ? var8 : !var8; + boolean ownCart = this.isOwnCart(cart); + return this.protect.getValue().equals("Only Self") ? ownCart : !ownCart; } } - private boolean e(Object[] var1) { - TntMinecartEntity var2 = (TntMinecartEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 72247364469653L ^ var3; - long var5 = var3 ^ 65081061148081L; - Vec3d var8 = PositionUtil.a(new Object[]{var2, var5}); - Event.b(); - long var9 = System.currentTimeMillis(); + private boolean isOwnCart(TntMinecartEntity cart) { + Vec3d cartPos = PositionUtil.getEntityPos(cart); + long now = System.currentTimeMillis(); - for (LongData2 var12 : (Iterable)(this.n)) { - if (var9 - var12.ak() <= 5000L && var8.isInRange(var12.aj().toCenterPos(), 1.5)) { + for (SafeCartPlacement placement : (Iterable)(this.ownCartPlacements)) { + if (now - placement.time() <= 5000L && cartPos.isInRange(placement.pos().toCenterPos(), 1.5)) { return true; } } @@ -502,134 +380,57 @@ public class AutoSafeCart extends Module implements RenderContract3 { return false; } - private void j(Object[] var1) { - List var2 = (List)var1[0]; - long var3 = (Long)var1[1]; - var3 = 72247364469653L ^ var3; - long var5 = var3 ^ 17424134595530L; - long var7 = var3 ^ 115591702524598L; - boolean var10 = !var2.isEmpty(); - if (var10 && !this.q) { - this.r.a_void_____________________(new Object[]{var5}); - this.h.reroll(new Object[]{var7}); + private void updateThreatState(List threats) { + boolean hasThreats = !threats.isEmpty(); + if (hasThreats && !this.hadThreats) { + this.placeTimer.reset(); + this.delay.reroll(); } - this.q = var10; + this.hadThreats = hasThreats; } - private BlockPos a_class_2338___(Object[] var1) { - if (this.o == null) { + private BlockPos getPendingPlacePos() { + if (this.lastPlacePos == null) { return null; - } else if (System.currentTimeMillis() - this.p <= 1000L && b.world.getBlockState(this.o).isReplaceable()) { - return this.o; + } else if (System.currentTimeMillis() - this.lastPlaceTime <= 1000L && mc.world.getBlockState(this.lastPlacePos).isReplaceable()) { + return this.lastPlacePos; } else { - this.o = null; + this.lastPlacePos = null; return null; } } - private void k(Object[] var1) { - if (b.world != null) { - if (!this.m.isEmpty()) { - HashSet var5 = new HashSet(); + private void pruneTracking() { + if (mc.world != null) { + if (!this.blocksPlacedPerCart.isEmpty()) { + HashSet aliveCartIds = new HashSet(); - for (Entity var7 : b.world.getEntities()) { - if (var7 instanceof TntMinecartEntity) { - var5.add(var7.getUuid()); + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof TntMinecartEntity) { + aliveCartIds.add(entity.getUuid()); } } - this.m.keySet().removeIf(lpL284_0 -> !var5.contains(((java.util.UUID)lpL284_0))); + this.blocksPlacedPerCart.keySet().removeIf(cartId -> !aliveCartIds.contains(((java.util.UUID)cartId))); } - long var8 = System.currentTimeMillis(); - this.n.removeIf(lpL283_0 -> var8 - ((dev.zprestige.prestige.data.LongData2)lpL283_0).ak() > 5000L); + long now = System.currentTimeMillis(); + this.ownCartPlacements.removeIf(placement -> now - ((dev.zprestige.prestige.data.SafeCartPlacement)placement).time() > 5000L); } } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); - this.m.clear(); - this.n.clear(); - this.o = null; - this.q = false; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + this.blocksPlacedPerCart.clear(); + this.ownCartPlacements.clear(); + this.lastPlacePos = null; + this.hadThreats = false; } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoShield.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoShield.java index b7f4ea0..1e74658 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoShield.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoShield.java @@ -5,19 +5,16 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.LivingEvent; -import dev.zprestige.prestige.event.PacketEvent; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.ShieldBreakEvent; +import dev.zprestige.prestige.event.PacketReceiveEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper35; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.KeyBindingAccessor; import dev.zprestige.prestige.world.PositionUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.Entity; @@ -30,102 +27,87 @@ import net.minecraft.util.math.Vec3d; import org.lwjgl.glfw.GLFW; public class AutoShield extends Module { - private FloatSetting a; - private FloatSetting c; - private FloatSetting d; - private FloatSetting e; - private BoolSetting f; - private BoolSetting g; - private RenderHelper27 h = new RenderHelper27(26293358099357L); - private RenderHelper27 i = new RenderHelper27(26293358099357L); - private RenderHelper27 j = new RenderHelper27(26293358099357L); - private boolean k = false; - public static boolean l = false; + private FloatSetting targetDistance; + private FloatSetting fov; + private FloatSetting movementThreshold; + private FloatSetting swordCooldownCorrection; + private BoolSetting disableTracker; + private BoolSetting swapToSword; + private StopWatch targetSwingTimer = new StopWatch(); + private StopWatch attackTimer = new StopWatch(); + private StopWatch shieldDisableTimer = new StopWatch(); + private boolean shieldDisabled = false; + public static boolean shieldOnCooldown = false; public AutoShield() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.g.setVisibility_BoolSetting(new Object[]{(Predicate)lpL288_0 -> (Boolean)this.f.getValue(), 73196168581295L}); + this.swapToSword.visibleWhen((Predicate)ignored -> this.disableTracker.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } @Subscribe - public void a(FloatEvent2 var1) { - if (this.k) { - RenderHelper27 var10000 = this.j; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 5000.0F; - if (!var10000.a(var10004)) { - this.l(new Object[]{89153285792718L}); + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (this.shieldDisabled) { + if (!this.shieldDisableTimer.hasElapsed(5000.0F)) { + this.restoreUseKeyState(); return; } - this.k = false; - l = false; + this.shieldDisabled = false; + shieldOnCooldown = false; } - float var27 = (Float)this.c.getValue(); - Object[] var10003 = new Object[]{null, 109615191536188L}; - var10003[0] = var27; - PlayerEntity var25 = CombatUtil.b(var10003); - RenderHelper27 var28 = this.i; - Object[] var30 = new Object[]{null, 2505922520844L}; - var30[0] = 100.0F; - if (var28.a(var30)) { - if (var25 == null) { - this.l(new Object[]{89153285792718L}); - } else if (b.player.distanceTo(var25) > (Float)this.a.getValue()) { - this.l(new Object[]{89153285792718L}); - } else if (b.player.getMainHandStack().getItem() == Items.SHIELD - || b.player.getOffHandStack().getItem() == Items.SHIELD && !InventoryUtil2.e(new Object[]{17574514088175L})) { - if (PositionUtil.a_boolean________________________________________________(new Object[]{120169006001489L})) { - this.l(new Object[]{89153285792718L}); - } else if (var25.getMainHandStack().getItem() instanceof AxeItem) { - this.k(new Object[]{15123390343570L}); - } else if (!InventoryUtil.a(new Object[]{var25.getMainHandStack(), 127680976181311L}) - && !InventoryUtil.o(new Object[]{var25.getMainHandStack(), 133561865349436L})) { - this.k(new Object[]{15123390343570L}); + PlayerEntity target = TargetSelector.getClosestEnemyInFov(this.fov.getValue()); + if (this.attackTimer.hasElapsed(100.0F)) { + if (target == null) { + this.restoreUseKeyState(); + } else if (mc.player.distanceTo(target) > this.targetDistance.getValue()) { + this.restoreUseKeyState(); + } else if (mc.player.getMainHandStack().getItem() == Items.SHIELD + || mc.player.getOffHandStack().getItem() == Items.SHIELD && !PlayerInteractions.isHoldingUsableItem()) { + if (PositionUtil.isPlayerGliding()) { + this.restoreUseKeyState(); + } else if (target.getMainHandStack().getItem() instanceof AxeItem) { + this.releaseUseKey(); + } else if (!InventoryUtil.isSword(target.getMainHandStack()) + && !InventoryUtil.isMace(target.getMainHandStack())) { + this.releaseUseKey(); } else { - RenderHelper27 var29 = this.h; - float var10001 = 625.0F * (0.94F - (Float)this.e.getValue() / 100.0F); - var30 = new Object[]{null, 2505922520844L}; - var30[0] = var10001; - boolean var26 = var29.a(var30); - if (!b.player.isOnGround() && b.player.fallDistance > 0.0 && b.player.getAttackCooldownProgress(0.0F) > 0.94F) { - this.k(new Object[]{15123390343570L}); - } else if (!var26 || !this.a(new Object[]{var25, 105503317375266L}) && !(b.player.distanceTo(var25) <= 3.0F)) { - if (!b.player.isOnGround() && b.player.fallDistance <= 0.0) { - this.j(new Object[]{130027305938123L}); + boolean targetCooldownReady = this.targetSwingTimer.hasElapsed(625.0F * (0.94F - this.swordCooldownCorrection.getValue() / 100.0F)); + if (!mc.player.isOnGround() && mc.player.fallDistance > 0.0 && mc.player.getAttackCooldownProgress(0.0F) > 0.94F) { + this.releaseUseKey(); + } else if (!targetCooldownReady || !this.isApproaching(target) && !(mc.player.distanceTo(target) <= 3.0F)) { + if (!mc.player.isOnGround() && mc.player.fallDistance <= 0.0) { + this.pressUseKey(); } else { - this.k(new Object[]{15123390343570L}); + this.releaseUseKey(); } } else { - this.j(new Object[]{130027305938123L}); + this.pressUseKey(); } } } else { - this.l(new Object[]{89153285792718L}); + this.restoreUseKeyState(); } } } @Subscribe - public void a(LivingEvent var1) { - if ((Boolean)this.f.getValue()) { - if (var1.a == b.player) { - this.j.a_void_____________________(new Object[]{93540861878173L}); - this.k = true; - l = true; - this.l(new Object[]{89153285792718L}); - if ((Boolean)this.g.getValue()) { - for (int var13 = 0; var13 < 9; var13++) { - if (InventoryUtil.a(new Object[]{b.player.getInventory().getStack(var13), 127680976181311L})) { - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var13; - InventoryUtil.a_void________(var10003); + public void onShieldBreak(ShieldBreakEvent event) { + if (this.disableTracker.getValue()) { + if (event.entity == mc.player) { + this.shieldDisableTimer.reset(); + this.shieldDisabled = true; + shieldOnCooldown = true; + this.restoreUseKeyState(); + if (this.swapToSword.getValue()) { + for (int slot = 0; slot < 9; slot++) { + if (InventoryUtil.isSword(mc.player.getInventory().getStack(slot))) { + InventoryUtil.selectSlot(slot); break; } } @@ -135,26 +117,23 @@ public class AutoShield extends Module { } @Subscribe - public void a(PacketEvent var1) { - if (b.world != null) { - if (var1.a(new Object[0]) instanceof PlayerRespawnS2CPacket) { - this.k = false; - l = false; + public void onPacketReceive(PacketReceiveEvent event) { + if (mc.world != null) { + if (event.getPacket() instanceof PlayerRespawnS2CPacket) { + this.shieldDisabled = false; + shieldOnCooldown = false; } else { - if (var1.a(new Object[0]) instanceof EntityAnimationS2CPacket) { - int var9 = ((EntityAnimationS2CPacket)var1.a(new Object[0])).getEntityId(); - Entity var10 = b.world.getEntityById(var9); - if (var10 instanceof PlayerEntity) { - float var10000 = (Float)this.c.getValue(); - Object[] var10003 = new Object[]{null, 109615191536188L}; - var10003[0] = var10000; - PlayerEntity var11 = CombatUtil.b(var10003); - if (var11 == null) { + if (event.getPacket() instanceof EntityAnimationS2CPacket) { + int entityId = ((EntityAnimationS2CPacket)event.getPacket()).getEntityId(); + Entity swingingEntity = mc.world.getEntityById(entityId); + if (swingingEntity instanceof PlayerEntity) { + PlayerEntity closestEnemy = TargetSelector.getClosestEnemyInFov(this.fov.getValue()); + if (closestEnemy == null) { return; } - if (var11.equals(var10)) { - this.h.a_void_____________________(new Object[]{93540861878173L}); + if (closestEnemy.equals(swingingEntity)) { + this.targetSwingTimer.reset(); } } } @@ -163,131 +142,48 @@ public class AutoShield extends Module { } @Subscribe - public void a(EntityEvent var1) { - if (b.player.isUsingItem()) { - var1.a_void_____(new Object[0]); + public void onAttackEntity(AttackEntityEvent event) { + if (mc.player.isUsingItem()) { + event.cancel(); } - this.i.a_void_____________________(new Object[]{93540861878173L}); + this.attackTimer.reset(); } - private boolean a(Object[] var1) { - PlayerEntity var2 = (PlayerEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 75187027837503L ^ var3; - long var5 = var3 ^ 41844236867185L; - long var7 = var3 ^ 123274899748192L; - Event.b(); - Vec3d var10 = new Vec3d(var2.getX() - var2.lastX, var2.getY() - var2.lastY, var2.getZ() - var2.lastZ); - double var11 = var10.length(); - if (var11 < (Float)this.d.getValue() / 10.0F) { + private boolean isApproaching(PlayerEntity enemy) { + Vec3d velocity = new Vec3d(enemy.getX() - enemy.lastX, enemy.getY() - enemy.lastY, enemy.getZ() - enemy.lastZ); + if (velocity.length() < this.movementThreshold.getValue() / 10.0F) { return false; } else { - Vec3d var13 = PositionUtil.b(new Object[]{var7}).subtract(PositionUtil.a(new Object[]{var2, var5})).normalize(); - Vec3d var14 = var10.normalize(); - double var15 = var14.dotProduct(var13); - return var15 > 0.0; + Vec3d toSelf = PositionUtil.getPlayerPos().subtract(PositionUtil.getEntityPos(enemy)).normalize(); + return velocity.normalize().dotProduct(toSelf) > 0.0; } } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 130523224806571L; - this.k = false; - l = false; - this.l(new Object[]{var4}); + public void onDisable() { + this.shieldDisabled = false; + shieldOnCooldown = false; + this.restoreUseKeyState(); } - private void j(Object[] var1) { - b.options.useKey.setPressed(true); + private void pressUseKey() { + mc.options.useKey.setPressed(true); } - private void k(Object[] var1) { - b.options.useKey.setPressed(false); + private void releaseUseKey() { + mc.options.useKey.setPressed(false); } - private void l(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 75187027837503L ^ var2; - long var4 = var2 ^ 115247237112293L; - Event.b(); - int var7 = new RenderHelper35(b.options.useKey).a(new Object[]{var4}).getCode(); - boolean var8; - if (var7 < 8) { - var8 = GLFW.glfwGetMouseButton(b.getWindow().getHandle(), var7) == 1; + private void restoreUseKeyState() { + int keyCode = new KeyBindingAccessor(mc.options.useKey).getBoundKey().getCode(); + boolean physicallyPressed; + if (keyCode < 8) { + physicallyPressed = GLFW.glfwGetMouseButton(mc.getWindow().getHandle(), keyCode) == 1; } else { - var8 = GLFW.glfwGetKey(b.getWindow().getHandle(), var7) == 1; + physicallyPressed = GLFW.glfwGetKey(mc.getWindow().getHandle(), keyCode) == 1; } - b.options.useKey.setPressed(var8); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + mc.options.useKey.setPressed(physicallyPressed); } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoShieldBreaker.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoShieldBreaker.java index 86dcec0..0416b46 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoShieldBreaker.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoShieldBreaker.java @@ -8,22 +8,18 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.TickEvent7; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.DoAttackEvent; import dev.zprestige.prestige.hud.ModuleNotificationsElement; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import dev.zprestige.prestige.type.NotificationType; -import dev.zprestige.prestige.util.TpsTimer; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.player.PlayerEntity; @@ -31,108 +27,94 @@ import net.minecraft.item.AxeItem; import net.minecraft.item.Items; import net.minecraft.util.math.MathHelper; -public class AutoShieldBreaker extends Module implements RenderContract3 { - private EnumSetting a; - private BoolSetting d; - private FloatSetting c; - private BoolSetting e; - private RangeSetting f; - private RangeSetting g; - private BoolSetting h; - private BoolSetting i; - private FloatSetting j; - private int k = -1; - private int l = -1; - private boolean m = false; - private RenderHelper27 n = new RenderHelper27(26293358099357L); - private RenderHelper27 o = new RenderHelper27(26293358099357L); - private RenderHelper27 p = new RenderHelper27(26293358099357L); - private static final long x = 3000L; +public class AutoShieldBreaker extends Module implements RotationProvider { + private EnumSetting mode; + private BoolSetting stun; + private FloatSetting chance; + private BoolSetting fromInventory; + private RangeSetting hitDelay; + private RangeSetting breakCooldown; + private BoolSetting swapBack; + private BoolSetting silentAim; + private FloatSetting maxYaw; + private int previousSlot = -1; + private int axeInventorySlot = -1; + private boolean swappedToAxe = false; + private StopWatch breakCooldownTimer = new StopWatch(); + private StopWatch hitDelayTimer = new StopWatch(); + private StopWatch axeSwapTimer = new StopWatch(); + private static final long NOTIFICATION_DURATION_MS = 3000L; public AutoShieldBreaker() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.d.setVisibility_BoolSetting(new Object[]{(Predicate)lpL296_0 -> ((String)this.a.getValue()).equals("Automatic"), 73196168581295L}); - this.g.setVisibility_RangeSetting(new Object[]{(Predicate)lpL292_0 -> ((String)this.a.getValue()).equals("Automatic"), 37043306203287L}); - this.h.setVisibility_BoolSetting(new Object[]{(Predicate)lpL291_0 -> ((String)this.a.getValue()).equals("Automatic"), 73196168581295L}); - this.i.setVisibility_BoolSetting(new Object[]{(Predicate)lpL290_0 -> ((String)this.a.getValue()).equals("Automatic"), 73196168581295L}); - this.j - .setVisibility_FloatSetting( - new Object[]{(Predicate)lpL289_0 -> ((String)this.a.getValue()).equals("Automatic") && (Boolean)this.i.getValue(), 35046756052036L} + this.stun.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Automatic")); + this.breakCooldown.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Automatic")); + this.swapBack.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Automatic")); + this.silentAim.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Automatic")); + this.maxYaw + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Automatic") && this.silentAim.getValue() ); - this.c.setVisibility_FloatSetting(new Object[]{(Predicate)lpL295_0 -> ((String)this.a.getValue()).equals("Automatic"), 35046756052036L}); - this.f.setVisibility_RangeSetting(new Object[]{(Predicate)lpL293_0 -> ((String)this.a.getValue()).equals("Automatic"), 37043306203287L}); - this.e.setVisibility_BoolSetting(new Object[]{(Predicate)lpL294_0 -> ((String)this.a.getValue()).equals("Automatic"), 73196168581295L}); + this.chance.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Automatic")); + this.hitDelay.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Automatic")); + this.fromInventory.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Automatic")); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword); } @Subscribe - public void a(FloatEvent2 var1) { - if (!b.player.isAlive()) { - this.k = -1; - this.l = -1; - this.m = false; - } else if (!(b.player.fallDistance > 2.0)) { - if (this.m) { - RenderHelper27 var10000 = this.p; - float var10001 = this.f.getRolled(new Object[0]) + 400.0F; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - this.m = false; + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (!mc.player.isAlive()) { + this.previousSlot = -1; + this.axeInventorySlot = -1; + this.swappedToAxe = false; + } else if (!(mc.player.fallDistance > 2.0)) { + if (this.swappedToAxe) { + if (this.axeSwapTimer.hasElapsed(this.hitDelay.getRolled() + 400.0F)) { + this.swappedToAxe = false; } } - if (this.k != -1 && !this.m && b.currentScreen == null && !InventoryUtil2.e(new Object[]{17574514088175L})) { - if ((Boolean)this.h.getValue()) { - if (this.l != -1) { - int var2 = this.l; - int var4 = this.k; - Object[] var5 = new Object[]{null, null, 133411734417951L}; - var5[1] = var4; - var5[0] = var2; - InventoryUtil.f(var5); + if (this.previousSlot != -1 && !this.swappedToAxe && mc.currentScreen == null && !PlayerInteractions.isHoldingUsableItem()) { + if (this.swapBack.getValue()) { + if (this.axeInventorySlot != -1) { + InventoryUtil.swapSlot(this.axeInventorySlot, this.previousSlot); } else { - int var3 = this.k; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var3; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(this.previousSlot); } } - this.k = -1; - this.l = -1; + this.previousSlot = -1; + this.axeInventorySlot = -1; } - if (b.targetedEntity != null) { - if (b.targetedEntity instanceof PlayerEntity) { - this.d_boolean__(new Object[]{(PlayerEntity)b.targetedEntity, 23325805542517L}); + if (mc.targetedEntity != null) { + if (mc.targetedEntity instanceof PlayerEntity) { + this.tryBreakShield((PlayerEntity)mc.targetedEntity); } } } } @Subscribe - public void a(TickEvent7 var1) { - if (((String)this.a.getValue()).equals("On Hit")) { - if (b.targetedEntity != null && b.currentScreen == null && b.isWindowFocused()) { - if (b.targetedEntity instanceof PlayerEntity var17) { - if (!Prestige.g.a(new Object[]{var17.getName().getString(), 24848952222090L})) { - if (Prestige.i.a_boolean_(new Object[]{var17, 54363558999103L})) { - if (this.a_boolean________________(new Object[]{var17, 61043913486438L})) { - int var19 = this.d(new Object[]{91840059170392L}); - if (var19 != -1) { - if (this.k == -1) { - this.k = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - this.l = -1; + public void onDoAttack(DoAttackEvent event) { + if (this.mode.getValue().equals("On Hit")) { + if (mc.targetedEntity != null && mc.currentScreen == null && mc.isWindowFocused()) { + if (mc.targetedEntity instanceof PlayerEntity target) { + if (!Prestige.friendManager.isFriend(target.getName().getString())) { + if (Prestige.botFilter.isValidTarget(target)) { + if (this.isBlockingWithShield(target)) { + int axeSlot = this.findHotbarAxe(); + if (axeSlot != -1) { + if (this.previousSlot == -1) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.axeInventorySlot = -1; } - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var19; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(axeSlot); } } } @@ -142,68 +124,54 @@ public class AutoShieldBreaker extends Module implements RenderContract3 { } } - private int d(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 <= 8; var5++) { - if (b.player.getInventory().getStack(var5).getItem() instanceof AxeItem) { - return var5; + private int findHotbarAxe() { + for (int slot = 0; slot <= 8; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() instanceof AxeItem) { + return slot; } } return -1; } - private int e(Object[] var1) { - Event.b(); - - for (int var5 = 9; var5 <= 35; var5++) { - if (b.player.getInventory().getStack(var5).getItem() instanceof AxeItem) { - return var5; + private int findInventoryAxe() { + for (int slot = 9; slot <= 35; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() instanceof AxeItem) { + return slot; } } return -1; } - private boolean a_boolean________________(Object[] var1) { - PlayerEntity var2 = (PlayerEntity)var1[0]; - return var2.isUsingItem() && var2.getActiveItem().getItem() == Items.SHIELD; + private boolean isBlockingWithShield(PlayerEntity target) { + return target.isUsingItem() && target.getActiveItem().getItem() == Items.SHIELD; } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 139616768334726L; - long var6 = var2 ^ 81856115773718L; - long var8 = var2 ^ 48633155378565L; - long var10 = var2 ^ 99765532791756L; - if (!(Boolean)this.i.getValue()) { + public Rotation provideRotation() { + if (!this.silentAim.getValue()) { return null; - } else if (b.player.fallDistance > 2.0) { + } else if (mc.player.fallDistance > 2.0) { return null; } else { - float var10000 = (Float)this.j.getValue(); - Object[] var10003 = new Object[]{null, var8}; - var10003[0] = var10000; - PlayerEntity var13 = CombatUtil.b(var10003); - if (var13 != null) { - if (b.player.distanceTo(var13) > 3.0F || !b.player.canSee(var13)) { + PlayerEntity target = TargetSelector.getClosestEnemyInFov(this.maxYaw.getValue()); + if (target != null) { + if (mc.player.distanceTo(target) > 3.0F || !mc.player.canSee(target)) { return null; } - if (!Prestige.i.a_boolean_(new Object[]{var13, var4})) { + if (!Prestige.botFilter.isValidTarget(target)) { return null; } - RenderBatch var14 = WorldUtil.a_RenderBatch_(new Object[]{var13.getEyePos(), var6}); - float var15 = MathHelper.wrapDegrees(var14.a(new Object[0]) - b.player.getYaw()); - if (Math.abs(var15) > (Float)this.j.getValue()) { + Rotation rotation = RotationUtil.getRotationTo(target.getEyePos()); + if (Math.abs(MathHelper.wrapDegrees(rotation.getYaw() - mc.player.getYaw())) > this.maxYaw.getValue()) { return null; } - if (this.d_boolean__(new Object[]{var13, var10})) { - return var14; + if (this.tryBreakShield(target)) { + return rotation; } } @@ -211,106 +179,72 @@ public class AutoShieldBreaker extends Module implements RenderContract3 { } } - public boolean d_boolean__(Object[] var1) { - PlayerEntity var2 = (PlayerEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 98027917846872L ^ var3; - long var5 = var3 ^ 99542470669479L; - long var7 = var3 ^ 137853719650578L; - long var9 = var3 ^ 27497399503536L; - long var11 = var3 ^ 121028492791642L; - long var13 = var3 ^ 21383556365186L; - long var15 = var3 ^ 135884001617227L; - long var17 = var3 ^ 140718861360076L; - long var19 = var3 ^ 59646094127753L; - long var21 = var3 ^ 60370766762950L; - long var23 = var3 ^ 88630113527819L; - long var25 = var3 ^ 34730170420085L; - long var27 = var3 ^ 74676391480770L; - long var29 = var3 ^ 22188002490132L; - long var31 = var3 ^ 32475790358336L; - long var33 = var3 ^ 72405603546274L; - long var35 = var3 ^ 58580240377650L; - if (b.player.fallDistance > 2.0) { + public boolean tryBreakShield(PlayerEntity target) { + if (mc.player.fallDistance > 2.0) { return false; - } else if (b.currentScreen == null && b.isWindowFocused()) { - if (InventoryUtil2.e(new Object[]{var27})) { + } else if (mc.currentScreen == null && mc.isWindowFocused()) { + if (PlayerInteractions.isHoldingUsableItem()) { return false; } else { - if (!b.player.isUsingItem()) { - Object[] var10004 = new Object[]{null, null, var29}; - var10004[1] = 100; - var10004[0] = 0; - if (RenderUtil5.a_int__________________________(var10004) <= (Float)this.c.getValue() && this.n.b(new Object[]{this.g, var31})) { - if (!((String)this.a.getValue()).equals("Automatic")) { + if (!mc.player.isUsingItem()) { + if (RandomUtil.randomInt(0, 100) <= this.chance.getValue() && this.breakCooldownTimer.hasElapsedRandom(this.breakCooldown)) { + if (!this.mode.getValue().equals("Automatic")) { return false; } - if (Prestige.g.a(new Object[]{var2.getName().getString(), var5})) { + if (Prestige.friendManager.isFriend(target.getName().getString())) { return false; } - if (!Prestige.i.a_boolean_(new Object[]{var2, var7})) { + if (!Prestige.botFilter.isValidTarget(target)) { return false; } - if (this.a_boolean________________(new Object[]{var2, var15})) { - if (!(b.player.getMainHandStack().getItem() instanceof AxeItem)) { - if (this.m) { + if (this.isBlockingWithShield(target)) { + if (!(mc.player.getMainHandStack().getItem() instanceof AxeItem)) { + if (this.swappedToAxe) { return false; } - int var38 = this.d(new Object[]{var25}); - if (var38 != -1) { - this.k = InventoryUtil.a_int_____(new Object[]{var19}); - this.l = -1; - Object[] var41 = new Object[]{null, var11}; - var41[0] = var38; - InventoryUtil.a_void________(var41); - this.m = true; - this.p.a_void_____________________(new Object[]{var9}); - } else if ((Boolean)this.e.getValue()) { - int var39 = this.e(new Object[]{var21}); - if (var39 != -1) { - this.k = InventoryUtil.a_int_____(new Object[]{var19}); - this.l = var39; - int var10001 = this.k; - var10004 = new Object[]{null, null, var35}; - var10004[1] = var10001; - var10004[0] = var39; - InventoryUtil.f(var10004); - this.m = true; - this.p.a_void_____________________(new Object[]{var9}); + int hotbarAxeSlot = this.findHotbarAxe(); + if (hotbarAxeSlot != -1) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.axeInventorySlot = -1; + InventoryUtil.selectSlot(hotbarAxeSlot); + this.swappedToAxe = true; + this.axeSwapTimer.reset(); + } else if (this.fromInventory.getValue()) { + int inventoryAxeSlot = this.findInventoryAxe(); + if (inventoryAxeSlot != -1) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.axeInventorySlot = inventoryAxeSlot; + InventoryUtil.swapSlot(inventoryAxeSlot, this.previousSlot); + this.swappedToAxe = true; + this.axeSwapTimer.reset(); } } - this.o.a_void_____________________(new Object[]{var9}); - this.f.reroll(new Object[]{var17}); + this.hitDelayTimer.reset(); + this.hitDelay.reroll(); return false; } - if (!this.o.b(new Object[]{this.f, var31})) { + if (!this.hitDelayTimer.hasElapsedRandom(this.hitDelay)) { return false; } - InventoryUtil2.a_void_________(new Object[]{var2, var23}); - if ((Boolean)this.d.getValue()) { - InventoryUtil2.a_void_________(new Object[]{var2, var23}); + PlayerInteractions.attackEntity(target); + if (this.stun.getValue()) { + PlayerInteractions.attackEntity(target); } - if (ModuleNotificationsElement.a.e_boolean(new Object[]{var33})) { - TpsTimer var10000 = Prestige.v; - long var10003 = x; - Object[] var10007 = new Object[]{null, null, null, NotificationType.INFO, var13}; - var10007[2] = var10003; - var10007[1] = "Broke target's shield!"; - var10007[0] = "AutoShieldBreaker"; - var10000.a(var10007); + if (ModuleNotificationsElement.instance.isEnabled()) { + Prestige.notificationManager.addNotification("AutoShieldBreaker", "Broke target's shield!", NOTIFICATION_DURATION_MS, NotificationType.INFO); } - this.m = false; - this.n.a_void_____________________(new Object[]{var9}); - this.g.reroll(new Object[]{var17}); + this.swappedToAxe = false; + this.breakCooldownTimer.reset(); + this.breakCooldown.reroll(); return true; } @@ -326,87 +260,15 @@ public class AutoShieldBreaker extends Module implements RenderContract3 { } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); - this.k = -1; - this.l = -1; - this.m = false; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + this.previousSlot = -1; + this.axeInventorySlot = -1; + this.swappedToAxe = false; } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/AutoTotem.java b/src/main/java/dev/zprestige/prestige/module/combat/AutoTotem.java index 34e7065..bd8ee4f 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/AutoTotem.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/AutoTotem.java @@ -9,37 +9,32 @@ import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.combat.CombatUtil2; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.gui.GuiHelper; -import dev.zprestige.prestige.gui.InventoryScreenOverride; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.combat.ThreatAssessor; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.gui.HandledScreenAccessor; +import dev.zprestige.prestige.gui.LockedInventoryScreen; import dev.zprestige.prestige.hud.ModuleNotificationsElement; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.network.NetworkUtil; -import dev.zprestige.prestige.network.PacketQueue; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.network.PacketSender; import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.render.AutoTotemHelper; -import dev.zprestige.prestige.render.RenderHelper26; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; +import dev.zprestige.prestige.render.DamageSample; +import dev.zprestige.prestige.render.ThreatAssessment; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import dev.zprestige.prestige.type.ArmorState; -import dev.zprestige.prestige.type.BlockBreakType; +import dev.zprestige.prestige.type.ThreatType; import dev.zprestige.prestige.type.NotificationType; -import dev.zprestige.prestige.type.PacketResult; -import dev.zprestige.prestige.util.TpsTimer; +import dev.zprestige.prestige.type.SwapQueueResult; import java.awt.GraphicsEnvironment; import java.awt.MouseInfo; import java.awt.Point; import java.awt.Robot; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; @@ -51,11 +46,9 @@ import java.util.function.Predicate; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.screen.ingame.InventoryScreen; -import net.minecraft.entity.Entity; import net.minecraft.entity.damage.DamageEffects; import net.minecraft.entity.damage.DamageType; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.network.packet.BundlePacket; import net.minecraft.network.packet.Packet; @@ -77,656 +70,507 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; public class AutoTotem extends Module { - private EnumSetting c; - private RangeSetting d; - private BoolSetting e; - private MultiSetting f; - private MultiSetting g; - private IntSetting h; - private BoolSetting i; - private RangeSetting j; - private BoolSetting k; - private RangeSetting l; - private RangeSetting m; - private MultiSetting n; - private FloatSetting o; - private BoolSetting p; - private BoolSetting q; - private RenderHelper27 r = new RenderHelper27(26293358099357L); - private RenderHelper27 s = new RenderHelper27(26293358099357L); - private boolean t = false; - private boolean u = false; - private InventoryScreen v; - private int w = -1; - private int x = -1; - private ArmorState y = ArmorState.NONE; - private int z = -1; - private int A = 0; - private long B = 0L; - private float C = Float.NaN; - private Deque D = new ArrayDeque(); - private float F = Float.NaN; - private Robot G; - private Random H = new Random(); - private Slot I; - private RenderHelper27 J = new RenderHelper27(26293358099357L); - private List K = new ArrayList(); - private int L = 0; - private Point M = null; - private RenderHelper27 N = new RenderHelper27(26293358099357L); - private volatile long O = 0L; + private EnumSetting mode; + private RangeSetting delay; + private BoolSetting dynamicDelay; + private MultiSetting measures; + private MultiSetting actions; + private IntSetting totemSlot; + private BoolSetting legit; + private RangeSetting hoverDelay; + private BoolSetting legitMouseMovement; + private RangeSetting mouseSpeed; + private RangeSetting mouseMoveDelay; + private MultiSetting extra; + private FloatSetting health; + private BoolSetting waitWhenShielding; + private BoolSetting antiMace; + private StopWatch actionTimer = new StopWatch(); + private StopWatch hoverTimer = new StopWatch(); + private boolean totemPopped = false; + private boolean swapQueued = false; + private InventoryScreen openedInventory; + private int totemOriginSlot = -1; + private int slotToReselect = -1; + private ArmorState offhandSwapPhase = ArmorState.NONE; + private int offhandSwapSlot = -1; + private int swapSettleTicks = 0; + private long swapRequestId = 0L; + private float lastEnemyY = Float.NaN; + private Deque damageSamples = new ArrayDeque(); + private float lastHealth = Float.NaN; + private Robot robot; + private Random random = new Random(); + private Slot mouseTargetSlot; + private StopWatch inventoryOpenTimer = new StopWatch(); + private List mousePath = new ArrayList(); + private int mousePathIndex = 0; + private Point mousePathTarget = null; + private StopWatch mouseStepTimer = new StopWatch(); + private volatile long ignorePopUntil = 0L; public AutoTotem() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.g.setVisibility_MultiSetting(new Object[]{(Predicate)lpL310_0 -> ((String)this.c.getValue()).equals("Crystal"), 18435058659860L}); - this.m - .setVisibility_RangeSetting( - new Object[]{(Predicate)lpL304_0 -> ((String)this.c.getValue()).equals("Crystal") && (Boolean)this.k.getValue(), 37043306203287L} + this.actions.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Crystal")); + this.mouseMoveDelay + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Crystal") && this.legitMouseMovement.getValue() ); - this.o.setVisibility_FloatSetting(new Object[]{(Predicate)lpL302_0 -> ((String)this.c.getValue()).equals("SMP"), 35046756052036L}); - this.q.setVisibility_BoolSetting(new Object[]{(Predicate)lpL300_0 -> ((String)this.c.getValue()).equals("SMP"), 73196168581295L}); - this.f - .setVisibility_MultiSetting( - new Object[]{(Predicate)lpL311_0 -> ((String)this.c.getValue()).equals("Crystal") && (Boolean)this.e.getValue(), 18435058659860L} + this.health.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("SMP")); + this.antiMace.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("SMP")); + this.measures + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Crystal") && this.dynamicDelay.getValue() ); - this.i - .setVisibility_BoolSetting( - new Object[]{ - (Predicate)lpL308_0 -> ((String)this.c.getValue()).equals("Crystal") && this.g.isSelected(new Object[]{"Switch", 47850572908778L}), - 73196168581295L - } + this.legit + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Crystal") && this.actions.isSelected("Switch") ); - this.k.setVisibility_BoolSetting(new Object[]{(Predicate)lpL306_0 -> ((String)this.c.getValue()).equals("Crystal"), 73196168581295L}); - this.n.setVisibility_MultiSetting(new Object[]{(Predicate)lpL303_0 -> ((String)this.c.getValue()).equals("Crystal"), 18435058659860L}); - this.h.setVisibility_IntSetting(new Object[]{(Predicate)lpL309_0 -> ((String)this.c.getValue()).equals("Crystal"), 98265949679296L}); - this.j - .setVisibility_RangeSetting( - new Object[]{ - (Predicate)lpL307_0 -> ((String)this.c.getValue()).equals("Crystal") - && (Boolean)this.i.getValue() - && this.g.isSelected(new Object[]{"Switch", 47850572908778L}), - 37043306203287L - } + this.legitMouseMovement.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Crystal")); + this.extra.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Crystal")); + this.totemSlot.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Crystal")); + this.hoverDelay + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Crystal") + && this.legit.getValue() + && this.actions.isSelected("Switch") ); - this.l - .setVisibility_RangeSetting( - new Object[]{(Predicate)lpL305_0 -> ((String)this.c.getValue()).equals("Crystal") && (Boolean)this.k.getValue(), 37043306203287L} + this.mouseSpeed + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Crystal") && this.legitMouseMovement.getValue() ); - this.p.setVisibility_BoolSetting(new Object[]{(Predicate)lpL301_0 -> ((String)this.c.getValue()).equals("SMP"), 73196168581295L}); - this.e.setVisibility_BoolSetting(new Object[]{(Predicate)lpL312_0 -> ((String)this.c.getValue()).equals("Crystal"), 73196168581295L}); + this.waitWhenShielding.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("SMP")); + this.dynamicDelay.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Crystal")); } @Override - public void onEnable(Object[] var1) { - this.f(); + public void onEnable() { + this.resetState(); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 122422495623210L; - this.j(new Object[]{var4}); - this.f(); + public void onDisable() { + this.closeOpenedInventory(); + this.resetState(); } @Subscribe - public void a(TickEvent3 var1) { - this.f(); + public void onGameJoin(GameJoinEvent event) { + this.resetState(); } - private void f() { - if (Prestige.u != null) { - Prestige.u.a_int___________________(new Object[]{this, 49283324427169L}); + private void resetState() { + if (Prestige.inventorySwapQueue != null) { + Prestige.inventorySwapQueue.cancelSwaps(this); } - this.t = false; - this.u = false; - this.O = 0L; - this.w = -1; - this.x = -1; - this.m(new Object[]{27529539044667L}); - this.D.clear(); - this.F = Float.NaN; - this.C = Float.NaN; - this.v = null; - this.I = null; - this.K.clear(); - this.L = 0; - this.M = null; - this.d.reroll(new Object[]{57083216809697L}); - this.j.reroll(new Object[]{57083216809697L}); - this.m.reroll(new Object[]{57083216809697L}); - this.r.a_void_____________________(new Object[]{93540861878173L}); - this.s.a_void_____________________(new Object[]{93540861878173L}); - this.J.a_void_____________________(new Object[]{93540861878173L}); - this.N.a_void_____________________(new Object[]{93540861878173L}); + this.totemPopped = false; + this.swapQueued = false; + this.ignorePopUntil = 0L; + this.totemOriginSlot = -1; + this.slotToReselect = -1; + this.clearOffhandSwap(); + this.damageSamples.clear(); + this.lastHealth = Float.NaN; + this.lastEnemyY = Float.NaN; + this.openedInventory = null; + this.mouseTargetSlot = null; + this.mousePath.clear(); + this.mousePathIndex = 0; + this.mousePathTarget = null; + this.delay.reroll(); + this.hoverDelay.reroll(); + this.mouseMoveDelay.reroll(); + this.actionTimer.reset(); + this.hoverTimer.reset(); + this.inventoryOpenTimer.reset(); + this.mouseStepTimer.reset(); } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 14313756215246L ^ var2; - long var4 = var2 ^ 128814246915471L; - Event.b(); - InventoryScreen var7 = this.v; - this.v = null; - if (var7 != null && b.currentScreen == var7) { - if (b.getNetworkHandler() != null) { - NetworkUtil.a(new Object[]{new CloseHandledScreenC2SPacket(var7.getScreenHandler().syncId), var4}); + private void closeOpenedInventory() { + InventoryScreen screen = this.openedInventory; + this.openedInventory = null; + if (screen != null && mc.currentScreen == screen) { + if (mc.getNetworkHandler() != null) { + PacketSender.sendPacket(new CloseHandledScreenC2SPacket(screen.getScreenHandler().syncId)); } - b.setScreen(null); + mc.setScreen(null); } } - private void k(Object[] var1) { - HandledScreen var2 = (HandledScreen)var1[0]; - long var3 = (Long)var1[1]; - var3 = 14313756215246L ^ var3; - long var5 = var3 ^ 28860982368821L; - Event.b(); - NetworkUtil.a(new Object[]{new CloseHandledScreenC2SPacket(var2.getScreenHandler().syncId), var5}); - b.setScreen(null); - if (this.v == var2) { - this.v = null; + private void closeScreen(HandledScreen screen) { + PacketSender.sendPacket(new CloseHandledScreenC2SPacket(screen.getScreenHandler().syncId)); + mc.setScreen(null); + if (this.openedInventory == screen) { + this.openedInventory = null; } } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 14313756215246L ^ var2; - long var4 = var2 ^ 28352705930964L; - if (!this.u) { + private boolean isQueuedSwapPending() { + if (!this.swapQueued) { return false; - } else if (Prestige.u != null && Prestige.u.a_boolean____________________________________(new Object[]{var4})) { + } else if (Prestige.inventorySwapQueue != null && Prestige.inventorySwapQueue.hasPendingSwaps()) { return true; } else { - this.u = false; + this.swapQueued = false; return false; } } - private boolean a(Object[] var1) { - int var4 = (Integer)var1[0]; - int var5 = (Integer)var1[1]; - long var2 = (Long)var1[2]; - var2 = 14313756215246L ^ var2; - long var6 = var2 ^ 24779892326681L; - long var8 = var2 ^ 39846721046167L; - if (Prestige.u == null) { - Object[] var10004 = new Object[]{null, null, var6}; - var10004[1] = var5; - var10004[0] = var4; - return InventoryUtil.f(var10004); + private boolean requestSwap(int slotId, int button) { + if (Prestige.inventorySwapQueue == null) { + return InventoryUtil.swapSlot(slotId, button); } else { - PacketQueue var10000 = Prestige.u; - Object[] var10006 = new Object[]{null, null, null, var8}; - var10006[2] = var5; - var10006[1] = var4; - var10006[0] = this; - PacketResult var11 = var10000.c(var10006); - this.u = var11 == PacketResult.QUEUED; - return var11 != PacketResult.REJECTED; + SwapQueueResult result = Prestige.inventorySwapQueue.requestSwapFor(this, slotId, button); + this.swapQueued = result == SwapQueueResult.QUEUED; + return result != SwapQueueResult.REJECTED; } } - private boolean e(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 14313756215246L ^ var2; - long var4 = var2 ^ 66331746231645L; - long var6 = var2 ^ 128591650490244L; - if (this.y == ArmorState.NONE) { + private boolean isOffhandSwapPending() { + if (this.offhandSwapPhase == ArmorState.NONE) { return false; - } else if (Prestige.u != null && Prestige.u.a_boolean____________________________________(new Object[]{var4})) { - this.A = 0; + } else if (Prestige.inventorySwapQueue != null && Prestige.inventorySwapQueue.hasPendingSwaps()) { + this.swapSettleTicks = 0; return true; - } else if (this.A++ == 0) { + } else if (this.swapSettleTicks++ == 0) { return true; } else { - this.m(new Object[]{var6}); + this.clearOffhandSwap(); return false; } } - private boolean f(Object[] var1) { - int var5 = (Integer)var1[0]; - ArmorState var4 = (ArmorState)var1[1]; - long var2 = (Long)var1[2]; - var2 = 14313756215246L ^ var2; - long var6 = var2 ^ 93961424471427L; - long var8 = var2 ^ 98340789407323L; - long var10 = var2 ^ 122696113199470L; - long var12 = var2 ^ 17353904664138L; - if (this.y != ArmorState.NONE) { + private boolean requestOffhandSwap(int slotId, ArmorState phase) { + if (this.offhandSwapPhase != ArmorState.NONE) { return false; } else { - long var15 = ++this.B; - this.y = var4; - this.z = var5; - this.A = 0; - if (Prestige.u == null) { - Object[] var10004 = new Object[]{null, null, var12}; - var10004[1] = 40; - var10004[0] = var5; - InventoryUtil.f(var10004); - Object[] var19 = new Object[]{null, null, null, var8}; - var19[2] = var5; - var19[1] = var4; - var19[0] = var15; - this.l(var19); + long requestId = ++this.swapRequestId; + this.offhandSwapPhase = phase; + this.offhandSwapSlot = slotId; + this.swapSettleTicks = 0; + if (Prestige.inventorySwapQueue == null) { + InventoryUtil.swapSlot(slotId, 40); + this.onOffhandSwapComplete(requestId, phase, slotId); return true; } else { - PacketQueue var10000 = Prestige.u; - Object[] var10007 = new Object[]{null, null, null, (Runnable)() -> { - Object[] var10006x = new Object[]{null, null, null, 52701086519822L}; - var10006x[2] = var5; - var10006x[1] = var4; - var10006x[0] = var15; - this.l(var10006x); - }, var6}; - var10007[2] = 40; - var10007[1] = var5; - var10007[0] = this; - PacketResult var17 = var10000.d(var10007); - if (var17 == PacketResult.IMMEDIATE) { - Object[] var10006 = new Object[]{null, null, null, var8}; - var10006[2] = var5; - var10006[1] = var4; - var10006[0] = var15; - this.l(var10006); + SwapQueueResult result = Prestige.inventorySwapQueue.requestSwap(this, slotId, 40, (Runnable)() -> { + this.onOffhandSwapComplete(requestId, phase, slotId); + }); + if (result == SwapQueueResult.IMMEDIATE) { + this.onOffhandSwapComplete(requestId, phase, slotId); return true; - } else if (var17 == PacketResult.QUEUED) { + } else if (result == SwapQueueResult.QUEUED) { return true; } else { - this.m(new Object[]{var10}); + this.clearOffhandSwap(); return false; } } } } - private void l(Object[] var1) { - long var6 = (Long)var1[0]; - ArmorState var2 = (ArmorState)var1[1]; - int var3 = (Integer)var1[2]; - long var4 = (Long)var1[3]; - var4 = 14313756215246L ^ var4; - long var8 = var4 ^ 65848219078907L; - if (this.isEnabled() && var6 == this.B && this.y == var2 && this.z == var3) { - if (var2 == ArmorState.EQUIP) { - this.w = var3; - } else if (var2 == ArmorState.RESTORE) { - this.w = -1; + private void onOffhandSwapComplete(long requestId, ArmorState phase, int slotId) { + if (this.isEnabled() && requestId == this.swapRequestId && this.offhandSwapPhase == phase && this.offhandSwapSlot == slotId) { + if (phase == ArmorState.EQUIP) { + this.totemOriginSlot = slotId; + } else if (phase == ArmorState.RESTORE) { + this.totemOriginSlot = -1; } - this.m(new Object[]{var8}); + this.clearOffhandSwap(); } } - private void m(Object[] var1) { - this.y = ArmorState.NONE; - this.z = -1; - this.A = 0; - this.B++; + private void clearOffhandSwap() { + this.offhandSwapPhase = ArmorState.NONE; + this.offhandSwapSlot = -1; + this.swapSettleTicks = 0; + this.swapRequestId++; } - private boolean g(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 14313756215246L ^ var2; - long var4 = var2 ^ 18795505335480L; - Event.b(); - long var7 = this.O; - this.O = 0L; - return this.n.isSelected(new Object[]{"Anti Totem Guard Test", var4}) && var7 != 0L && System.currentTimeMillis() <= var7; + private boolean shouldIgnorePop() { + long ignoreDeadline = this.ignorePopUntil; + this.ignorePopUntil = 0L; + return this.extra.isSelected("Anti Totem Guard Test") && ignoreDeadline != 0L && System.currentTimeMillis() <= ignoreDeadline; } - private float b_float___________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 14313756215246L ^ var2; - long var4 = var2 ^ 89958660340586L; - long var6 = var2 ^ 81607964457590L; - long var8 = var2 ^ 1656969740956L; - long var10 = var2 ^ 41151638402158L; - long var12 = var2 ^ 113056885772394L; - Event.b(); - PlayerEntity var15 = CombatUtil.a_class_1657(new Object[]{var8}); - if (var15 != null && !(b.player.distanceTo(var15) > 20.0F)) { - float var16 = b.player.getHealth() + b.player.getAbsorptionAmount(); - float var17 = b.player.distanceTo(var15); - float var18 = (float)Math.max(0.0, Math.min(1.0, (b.player.getY() - var15.getY()) / 100.0)); - float var19 = 0.0F; - int var20 = 0; - if (this.f.isSelected(new Object[]{"Health", var10})) { - var19 += Math.max(0.0F, Math.min(1.0F, (20.0F - var16) / 18.0F)); - var20++; + private float computeDangerScore() { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null && !(mc.player.distanceTo(enemy) > 20.0F)) { + float currentHealth = mc.player.getHealth() + mc.player.getAbsorptionAmount(); + float enemyDistance = mc.player.distanceTo(enemy); + float heightFactor = (float)Math.max(0.0, Math.min(1.0, (mc.player.getY() - enemy.getY()) / 100.0)); + float dangerSum = 0.0F; + int measureCount = 0; + if (this.measures.isSelected("Health")) { + dangerSum += Math.max(0.0F, Math.min(1.0F, (20.0F - currentHealth) / 18.0F)); + measureCount++; } - if (this.f.isSelected(new Object[]{"Distance", var10})) { - var19 += Math.max(0.0F, Math.min(1.0F, (10.0F - var17) / 6.0F)); - var20++; + if (this.measures.isSelected("Distance")) { + dangerSum += Math.max(0.0F, Math.min(1.0F, (10.0F - enemyDistance) / 6.0F)); + measureCount++; } - if (this.f.isSelected(new Object[]{"Y Level", var10})) { - var19 += var18; - var20++; + if (this.measures.isSelected("Y Level")) { + dangerSum += heightFactor; + measureCount++; } - if (this.f.isSelected(new Object[]{"Nearby Threats", var10})) { - RenderHelper26 var21 = CombatUtil2.b( - new Object[]{var15, EnumSet.of(BlockBreakType.CRYSTAL, BlockBreakType.ANCHOR, BlockBreakType.OBSIDIAN), var4} + if (this.measures.isSelected("Nearby Threats")) { + ThreatAssessment threat = ThreatAssessor.findBiggestThreat( + enemy, EnumSet.of(ThreatType.CRYSTAL, ThreatType.ANCHOR, ThreatType.OBSIDIAN) ); - float var22 = 0.0F; - if (var21.a(new Object[0])) { - Object[] var10004 = new Object[]{null, var12}; - var10004[0] = var16; - if (var21.b(var10004)) { - var22 = 1.0F; + float threatFactor = 0.0F; + if (threat.hasThreat()) { + if (threat.isLethal(currentHealth)) { + threatFactor = 1.0F; } else { - var10004 = new Object[]{null, var6}; - var10004[0] = var16; - if (var21.a_float_________________(var10004) < 6.0F) { - var22 = 0.6F; + if (threat.getHealthAfter(currentHealth) < 6.0F) { + threatFactor = 0.6F; } } } - var19 += var22; - var20++; + dangerSum += threatFactor; + measureCount++; } - if (this.f.isSelected(new Object[]{"Recent Damage Rate", var10})) { - long var27 = System.currentTimeMillis(); - this.D.removeIf(lpL298_0 -> var27 - ((dev.zprestige.prestige.render.AutoTotemHelper)lpL298_0).a > 5000L); - float var23 = 0.0F; + if (this.measures.isSelected("Recent Damage Rate")) { + long now = System.currentTimeMillis(); + this.damageSamples.removeIf(oldSample -> now - ((dev.zprestige.prestige.render.DamageSample)oldSample).timestamp > 5000L); + float recentDamage = 0.0F; - for (AutoTotemHelper var25 : (Iterable)(this.D)) { - var23 += var25.b; + for (DamageSample sample : (Iterable)(this.damageSamples)) { + recentDamage += sample.damage; } - var19 += Math.min(1.0F, var23 / 20.0F); - var20++; + dangerSum += Math.min(1.0F, recentDamage / 20.0F); + measureCount++; } - return var20 > 0 ? var19 / var20 * 100.0F : 0.0F; + return measureCount > 0 ? dangerSum / measureCount * 100.0F : 0.0F; } else { return 0.0F; } } - private List b_List___(Object[] var1) { - Point var2 = (Point)var1[0]; - Point var3 = (Point)var1[1]; - long var4 = (Long)var1[2]; - var4 = 14313756215246L ^ var4; - long var6 = var4 ^ 19128065120188L; - Event.b(); - ArrayList var9 = new ArrayList(); - double var10 = var2.distance(var3); - float var12 = this.l.randomInRange(new Object[]{var6}); - int var13 = (int)Math.max(8.0, Math.min(60.0, var10 / var12 * 3.5)); - double var14 = Math.atan2(var3.y - var2.y, var3.x - var2.x); - double var16 = var14 + (Math.PI / 2); - double var18 = Math.min(var10 * 0.18, 22.0); - double var20 = (this.H.nextGaussian() * 0.4 + (this.H.nextBoolean() ? 1 : -1)) * var18 * (0.4 + this.H.nextDouble() * 0.6); - double var22 = this.H.nextGaussian() * 0.3 * var18 * 0.5; - double var24 = var2.x + (var3.x - var2.x) * (0.25 + this.H.nextDouble() * 0.15) + Math.cos(var16) * var20; - double var26 = var2.y + (var3.y - var2.y) * (0.25 + this.H.nextDouble() * 0.15) + Math.sin(var16) * var20; - double var28 = var2.x + (var3.x - var2.x) * (0.6 + this.H.nextDouble() * 0.15) + Math.cos(var16) * var22; - double var30 = var2.y + (var3.y - var2.y) * (0.6 + this.H.nextDouble() * 0.15) + Math.sin(var16) * var22; - boolean var32 = this.H.nextDouble() < 0.25 && var10 > 30.0; - double var33 = var32 ? 3.0 + this.H.nextDouble() * 5.0 : 0.0; - double var35 = var14 + this.H.nextGaussian() * 0.15; - Point var37 = var32 ? new Point((int)(var3.x + Math.cos(var35) * var33), (int)(var3.y + Math.sin(var35) * var33)) : var3; + private List generateMousePath(Point start, Point end) { + ArrayList path = new ArrayList(); + double distance = start.distance(end); + int steps = (int)Math.max(8.0, Math.min(60.0, distance / this.mouseSpeed.randomInRange() * 3.5)); + double angle = Math.atan2(end.y - start.y, end.x - start.x); + double normalAngle = angle + (Math.PI / 2); + double curveAmplitude = Math.min(distance * 0.18, 22.0); + double firstOffset = (this.random.nextGaussian() * 0.4 + (this.random.nextBoolean() ? 1 : -1)) * curveAmplitude * (0.4 + this.random.nextDouble() * 0.6); + double secondOffset = this.random.nextGaussian() * 0.3 * curveAmplitude * 0.5; + double control1X = start.x + (end.x - start.x) * (0.25 + this.random.nextDouble() * 0.15) + Math.cos(normalAngle) * firstOffset; + double control1Y = start.y + (end.y - start.y) * (0.25 + this.random.nextDouble() * 0.15) + Math.sin(normalAngle) * firstOffset; + double control2X = start.x + (end.x - start.x) * (0.6 + this.random.nextDouble() * 0.15) + Math.cos(normalAngle) * secondOffset; + double control2Y = start.y + (end.y - start.y) * (0.6 + this.random.nextDouble() * 0.15) + Math.sin(normalAngle) * secondOffset; + boolean overshoot = this.random.nextDouble() < 0.25 && distance > 30.0; + double overshootDistance = overshoot ? 3.0 + this.random.nextDouble() * 5.0 : 0.0; + double overshootAngle = angle + this.random.nextGaussian() * 0.15; + Point curveEnd = overshoot ? new Point((int)(end.x + Math.cos(overshootAngle) * overshootDistance), (int)(end.y + Math.sin(overshootAngle) * overshootDistance)) : end; - for (int var38 = 0; var38 <= var13; var38++) { - double var39 = (double)var38 / var13; - double var41 = var39 < 0.5 ? 4.0 * var39 * var39 * var39 : 1.0 - Math.pow(-2.0 * var39 + 2.0, 3.0) / 2.0; - double var43 = 1.0 - var41; - int var45 = (int)( - var43 * var43 * var43 * var2.x + 3.0 * var43 * var43 * var41 * var24 + 3.0 * var43 * var41 * var41 * var28 + var41 * var41 * var41 * var37.x - ); - int var46 = (int)( - var43 * var43 * var43 * var2.y + 3.0 * var43 * var43 * var41 * var26 + 3.0 * var43 * var41 * var41 * var30 + var41 * var41 * var41 * var37.y - ); - var9.add(new Point(var45, var46)); + for (int step = 0; step <= steps; step++) { + double progress = (double)step / steps; + double eased = progress < 0.5 ? 4.0 * progress * progress * progress : 1.0 - Math.pow(-2.0 * progress + 2.0, 3.0) / 2.0; + double invEased = 1.0 - eased; + path.add(new Point((int)( + invEased * invEased * invEased * start.x + 3.0 * invEased * invEased * eased * control1X + 3.0 * invEased * eased * eased * control2X + eased * eased * eased * curveEnd.x + ), (int)( + invEased * invEased * invEased * start.y + 3.0 * invEased * invEased * eased * control1Y + 3.0 * invEased * eased * eased * control2Y + eased * eased * eased * curveEnd.y + ))); } - if (var32) { - int var48 = 4 + this.H.nextInt(4); + if (overshoot) { + int correctionSteps = 4 + this.random.nextInt(4); - for (int var49 = 1; var49 <= var48; var49++) { - double var40 = (double)var49 / var48; - double var42 = var40 * var40 * (3.0 - 2.0 * var40); - int var44 = (int)(var37.x + (var3.x - var37.x) * var42); - int var50 = (int)(var37.y + (var3.y - var37.y) * var42); - var9.add(new Point(var44, var50)); + for (int correctionStep = 1; correctionStep <= correctionSteps; correctionStep++) { + double correctionProgress = (double)correctionStep / correctionSteps; + double smoothed = correctionProgress * correctionProgress * (3.0 - 2.0 * correctionProgress); + path.add(new Point((int)(curveEnd.x + (end.x - curveEnd.x) * smoothed), (int)(curveEnd.y + (end.y - curveEnd.y) * smoothed))); } } - var9.add(var3); - return var9; + path.add(end); + return path; } @Subscribe - public void a(TickEvent24 var1) { - if (b.isWindowFocused()) { - if (!((String)this.c.getValue()).equals("SMP")) { - if (this.t && !this.h(new Object[]{94918739196044L})) { - if ((Boolean)this.k.getValue() && this.G == null) { - this.n(new Object[]{2037288542756L}); + public void onFrame(FrameEvent event) { + if (mc.isWindowFocused()) { + if (!this.mode.getValue().equals("SMP")) { + if (this.totemPopped && !this.isDelayActive()) { + if (this.legitMouseMovement.getValue() && this.robot == null) { + this.createRobot(); } - boolean var49 = InventoryUtil.l(new Object[]{Items.SHIELD, 65539821781598L}) && b.player.isUsingItem(); - if (!var49) { - Integer var50 = InventoryUtil.a_Integer(new Object[]{Items.TOTEM_OF_UNDYING, 64376993919254L}); - if (var50 != null - && b.currentScreen == null - && this.g.isSelected(new Object[]{"Double Hand", 47850572908778L}) - && !InventoryUtil.l(new Object[]{Items.TOTEM_OF_UNDYING, 65539821781598L})) { - int var10000 = var50; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - if (this.i(new Object[]{39191347047416L})) { + if (!(InventoryUtil.isHolding(Items.SHIELD) && mc.player.isUsingItem())) { + Integer hotbarTotemSlot = InventoryUtil.findHotbarSlot(Items.TOTEM_OF_UNDYING); + if (hotbarTotemSlot != null + && mc.currentScreen == null + && this.actions.isSelected("Double Hand") + && !InventoryUtil.isHolding(Items.TOTEM_OF_UNDYING)) { + InventoryUtil.selectSlot(hotbarTotemSlot); + if (this.startActionDelay()) { return; } } - Item var86 = Items.TOTEM_OF_UNDYING; - Object[] var10004 = new Object[]{null, null, 77736144221765L}; - var10004[1] = true; - var10004[0] = var86; - List var51 = InventoryUtil.a_List(var10004); - if (var51.isEmpty()) { - if (b.currentScreen instanceof InventoryScreen && this.g.isSelected(new Object[]{"Close Inventory", 47850572908778L})) { - this.k(new Object[]{(HandledScreen)b.currentScreen, 43910558120181L}); + List inventoryTotemSlots = InventoryUtil.findInventorySlots(Items.TOTEM_OF_UNDYING, true); + if (inventoryTotemSlots.isEmpty()) { + if (mc.currentScreen instanceof InventoryScreen && this.actions.isSelected("Close Inventory")) { + this.closeScreen((HandledScreen)mc.currentScreen); } - this.t = false; + this.totemPopped = false; } else { - boolean var52 = var50 == null && this.g.isSelected(new Object[]{"Refill Hotbar Totem", 47850572908778L}); - boolean var53 = b.currentScreen == null && (var52 || !InventoryUtil.m(new Object[]{Items.TOTEM_OF_UNDYING, 6830336961985L})); - if (this.n.isSelected(new Object[]{"Only Inventory on Both Pops", 47850572908778L})) { - var53 = b.currentScreen == null && var52 && !InventoryUtil.m(new Object[]{Items.TOTEM_OF_UNDYING, 6830336961985L}); - if (!var53 - && b.currentScreen == null - && (var52 || !InventoryUtil.m(new Object[]{Items.TOTEM_OF_UNDYING, 6830336961985L})) - && (!var52 || InventoryUtil.m(new Object[]{Items.TOTEM_OF_UNDYING, 6830336961985L})) - && this.i(new Object[]{39191347047416L})) { + boolean needsHotbarRefill = hotbarTotemSlot == null && this.actions.isSelected("Refill Hotbar Totem"); + boolean shouldOpenInventory = mc.currentScreen == null && (needsHotbarRefill || !InventoryUtil.isHoldingOffhand(Items.TOTEM_OF_UNDYING)); + if (this.extra.isSelected("Only Inventory on Both Pops")) { + shouldOpenInventory = mc.currentScreen == null && needsHotbarRefill && !InventoryUtil.isHoldingOffhand(Items.TOTEM_OF_UNDYING); + if (!shouldOpenInventory + && mc.currentScreen == null + && (needsHotbarRefill || !InventoryUtil.isHoldingOffhand(Items.TOTEM_OF_UNDYING)) + && (!needsHotbarRefill || InventoryUtil.isHoldingOffhand(Items.TOTEM_OF_UNDYING)) + && this.startActionDelay()) { return; } } - if (var53) { - this.J.a_void_____________________(new Object[]{93540861878173L}); - this.m.reroll(new Object[]{57083216809697L}); - this.K = new ArrayList(); - this.L = 0; - this.M = null; - this.I = null; - if (!this.g.isSelected(new Object[]{"Open Inventory", 47850572908778L})) { + if (shouldOpenInventory) { + this.inventoryOpenTimer.reset(); + this.mouseMoveDelay.reroll(); + this.mousePath = new ArrayList(); + this.mousePathIndex = 0; + this.mousePathTarget = null; + this.mouseTargetSlot = null; + if (!this.actions.isSelected("Open Inventory")) { return; } - Object var54 = this.g.isSelected(new Object[]{"Switch", 47850572908778L}) - ? new InventoryScreenOverride(b.player) - : new InventoryScreen(b.player); - b.setScreen((Screen)var54); - if (b.currentScreen == var54) { - this.v = (InventoryScreen)var54; + Object inventoryScreen = this.actions.isSelected("Switch") + ? new LockedInventoryScreen(mc.player) + : new InventoryScreen(mc.player); + mc.setScreen((Screen)inventoryScreen); + if (mc.currentScreen == inventoryScreen) { + this.openedInventory = (InventoryScreen)inventoryScreen; } - if (this.i(new Object[]{39191347047416L})) { + if (this.startActionDelay()) { return; } } - if (b.currentScreen instanceof InventoryScreen || b.currentScreen instanceof InventoryScreenOverride) { - if (this.d(new Object[]{76297766520568L})) { + if (mc.currentScreen instanceof InventoryScreen || mc.currentScreen instanceof LockedInventoryScreen) { + if (this.isQueuedSwapPending()) { return; } - if ((Boolean)this.k.getValue() && this.J.b(new Object[]{this.m, 89714527855213L})) { - GuiHelper var75 = new GuiHelper((HandledScreen)b.currentScreen); - if (var75.a(new Object[]{37619827302565L}) == null - || var75.a(new Object[]{37619827302565L}).getStack().getItem() != Items.TOTEM_OF_UNDYING) { - if (this.I != null && this.I.getStack().getItem() != Items.TOTEM_OF_UNDYING) { - this.I = null; + if (this.legitMouseMovement.getValue() && this.inventoryOpenTimer.hasElapsedRandom(this.mouseMoveDelay)) { + HandledScreenAccessor focusAccessor = new HandledScreenAccessor((HandledScreen)mc.currentScreen); + if (focusAccessor.getFocusedSlot() == null + || focusAccessor.getFocusedSlot().getStack().getItem() != Items.TOTEM_OF_UNDYING) { + if (this.mouseTargetSlot != null && this.mouseTargetSlot.getStack().getItem() != Items.TOTEM_OF_UNDYING) { + this.mouseTargetSlot = null; } - if (this.I == null) { - ArrayList var55 = new ArrayList(); + if (this.mouseTargetSlot == null) { + ArrayList candidateSlots = new ArrayList(); - for (Slot var57 : ((HandledScreen)b.currentScreen).getScreenHandler().slots) { - if (var57.id != 45 - && var57.id != 36 + ((Integer)this.h.getValue() - 1) - && var57.getStack().getItem() == Items.TOTEM_OF_UNDYING) { - var55.add(var57); + for (Slot slot : ((HandledScreen)mc.currentScreen).getScreenHandler().slots) { + if (slot.id != 45 + && slot.id != 36 + (this.totemSlot.getValue() - 1) + && slot.getStack().getItem() == Items.TOTEM_OF_UNDYING) { + candidateSlots.add(slot); } } - if (!var55.isEmpty()) { - this.I = (Slot)var55.get(this.H.nextInt(var55.size())); + if (!candidateSlots.isEmpty()) { + this.mouseTargetSlot = (Slot)candidateSlots.get(this.random.nextInt(candidateSlots.size())); } } - if (this.I != null) { - double var77 = b.getWindow().getScaleFactor(); - int var84 = b.getWindow().getX(); - int var58 = b.getWindow().getY(); - int var59 = (Integer)FieldAccessor.a(new Object[]{HandledScreen.class, "x", 9152214377937L}) - .a_Object_(new Object[]{(InventoryScreen)b.currentScreen, 107155396285200L}); - int var60 = (Integer)FieldAccessor.a(new Object[]{HandledScreen.class, "y", 9152214377937L}) - .a_Object_(new Object[]{(InventoryScreen)b.currentScreen, 107155396285200L}); - int var61 = var59 + this.I.x + 8; - int var62 = var60 + this.I.y + 8; - int var63 = var84 + (int)(var61 * var77); - int var64 = var58 + (int)(var62 * var77); - Point var65 = new Point(var63, var64); - Point var66 = MouseInfo.getPointerInfo().getLocation(); - if (this.M == null || !this.M.equals(var65) || this.L >= this.K.size()) { - this.M = var65; - this.K = this.b_List___(new Object[]{var66, var65, 31531047457231L}); - this.L = 0; + if (this.mouseTargetSlot != null) { + double scaleFactor = mc.getWindow().getScaleFactor(); + int windowX = mc.getWindow().getX(); + int windowY = mc.getWindow().getY(); + int screenLeft = (Integer)FieldAccessor.of(HandledScreen.class, "x") + .get((InventoryScreen)mc.currentScreen); + int screenTop = (Integer)FieldAccessor.of(HandledScreen.class, "y") + .get((InventoryScreen)mc.currentScreen); + Point slotPoint = new Point(windowX + (int)((screenLeft + this.mouseTargetSlot.x + 8) * scaleFactor), windowY + (int)((screenTop + this.mouseTargetSlot.y + 8) * scaleFactor)); + Point cursorPoint = MouseInfo.getPointerInfo().getLocation(); + if (this.mousePathTarget == null || !this.mousePathTarget.equals(slotPoint) || this.mousePathIndex >= this.mousePath.size()) { + this.mousePathTarget = slotPoint; + this.mousePath = this.generateMousePath(cursorPoint, slotPoint); + this.mousePathIndex = 0; } - float var67 = (21.0F - this.l.randomInRange(new Object[]{877569900989L})) * 2.0F; - if (this.L < this.K.size()) { - RenderHelper27 var87 = this.N; - var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var67; - if (var87.a(var10004)) { - Point var68 = (Point)this.K.get(this.L); - double var69 = (double)this.L / this.K.size(); - double var71 = Math.max(0.0, 1.0 - var69 * 2.5); - int var73 = (int)(this.H.nextGaussian() * 0.8 * var71); - int var74 = (int)(this.H.nextGaussian() * 0.8 * var71); - this.G.mouseMove(var68.x + var73, var68.y + var74); - this.L++; - this.N.a_void_____________________(new Object[]{93540861878173L}); + float stepDelayMs = (21.0F - this.mouseSpeed.randomInRange()) * 2.0F; + if (this.mousePathIndex < this.mousePath.size()) { + if (this.mouseStepTimer.hasElapsed(stepDelayMs)) { + Point nextPoint = (Point)this.mousePath.get(this.mousePathIndex); + double jitterScale = Math.max(0.0, 1.0 - ((double)this.mousePathIndex / this.mousePath.size()) * 2.5); + int jitterX = (int)(this.random.nextGaussian() * 0.8 * jitterScale); + int jitterY = (int)(this.random.nextGaussian() * 0.8 * jitterScale); + this.robot.mouseMove(nextPoint.x + jitterX, nextPoint.y + jitterY); + this.mousePathIndex++; + this.mouseStepTimer.reset(); } } } } } - boolean var76 = InventoryUtil.m(new Object[]{Items.TOTEM_OF_UNDYING, 6830336961985L}); - if (!var76 && this.g.isSelected(new Object[]{"Switch", 47850572908778L})) { - if (!(Boolean)this.i.getValue() && !(Boolean)this.k.getValue()) { - var86 = Items.TOTEM_OF_UNDYING; - var10004 = new Object[]{null, null, 77736144221765L}; - var10004[1] = false; - var10004[0] = var86; - List var79 = InventoryUtil.a_List(var10004); - List var81 = var79.isEmpty() ? var51 : var79; - int var10002 = var81.size() - 1; - Object[] var100 = new Object[]{null, null, 97028099236409L}; - var100[1] = var10002; - var100[0] = 0; - int var85 = (Integer)var81.get(RenderUtil5.a_int__________________________(var100)); - int var91 = var79.isEmpty() ? 36 + var85 : var85; - var100 = new Object[]{null, null, 108694851105992L}; - var100[1] = 40; - var100[0] = var91; - if (this.a(var100) && this.i(new Object[]{39191347047416L})) { + boolean offhandHasTotem = InventoryUtil.isHoldingOffhand(Items.TOTEM_OF_UNDYING); + if (!offhandHasTotem && this.actions.isSelected("Switch")) { + if (!this.legit.getValue() && !this.legitMouseMovement.getValue()) { + List mainInventoryTotems = InventoryUtil.findInventorySlots(Items.TOTEM_OF_UNDYING, false); + List sourceSlots = mainInventoryTotems.isEmpty() ? inventoryTotemSlots : mainInventoryTotems; + int sourceSlot = (Integer)sourceSlots.get(RandomUtil.randomInt(0, sourceSlots.size() - 1)); + if (this.requestSwap(mainInventoryTotems.isEmpty() ? 36 + sourceSlot : sourceSlot, 40) && this.startActionDelay()) { return; } } else { - GuiHelper var78 = new GuiHelper((HandledScreen)b.currentScreen); - if (var78.a(new Object[]{37619827302565L}) == null - || var78.a(new Object[]{37619827302565L}).getStack().getItem() != Items.TOTEM_OF_UNDYING) { - this.s.a_void_____________________(new Object[]{93540861878173L}); - this.j.reroll(new Object[]{57083216809697L}); + HandledScreenAccessor offhandFocusAccessor = new HandledScreenAccessor((HandledScreen)mc.currentScreen); + if (offhandFocusAccessor.getFocusedSlot() == null + || offhandFocusAccessor.getFocusedSlot().getStack().getItem() != Items.TOTEM_OF_UNDYING) { + this.hoverTimer.reset(); + this.hoverDelay.reroll(); return; } - if (this.s.b(new Object[]{this.j, 89714527855213L})) { - int var10001 = var78.a(new Object[]{37619827302565L}).id; - Object[] var10005 = new Object[]{null, null, 108694851105992L}; - var10005[1] = 40; - var10005[0] = var10001; - if (this.a(var10005) && this.i(new Object[]{39191347047416L})) { + if (this.hoverTimer.hasElapsedRandom(this.hoverDelay)) { + if (this.requestSwap(offhandFocusAccessor.getFocusedSlot().id, 40) && this.startActionDelay()) { return; } } } } - if (var52 && this.g.isSelected(new Object[]{"Switch", 47850572908778L})) { - var86 = Items.TOTEM_OF_UNDYING; - var10004 = new Object[]{null, null, 77736144221765L}; - var10004[1] = false; - var10004[0] = var86; - List var80 = InventoryUtil.a_List(var10004); - if (var80.size() > 0) { - if (!(Boolean)this.i.getValue() && !(Boolean)this.k.getValue()) { - int var94 = var80.size() - 1; - Object[] var103 = new Object[]{null, null, 97028099236409L}; - var103[1] = var94; - var103[0] = 0; - int var83 = (Integer)var80.get(RenderUtil5.a_int__________________________(var103)); - var94 = (Integer)this.h.getValue() - 1; - var103 = new Object[]{null, null, 108694851105992L}; - var103[1] = var94; - var103[0] = var83; - if (this.a(var103) && this.i(new Object[]{39191347047416L})) { + if (needsHotbarRefill && this.actions.isSelected("Switch")) { + List refillTotems = InventoryUtil.findInventorySlots(Items.TOTEM_OF_UNDYING, false); + if (refillTotems.size() > 0) { + if (!this.legit.getValue() && !this.legitMouseMovement.getValue()) { + if (this.requestSwap((Integer)refillTotems.get(RandomUtil.randomInt(0, refillTotems.size() - 1)), this.totemSlot.getValue() - 1) && this.startActionDelay()) { return; } } else { - GuiHelper var82 = new GuiHelper((HandledScreen)b.currentScreen); - if (var82.a(new Object[]{37619827302565L}) == null - || var82.a(new Object[]{37619827302565L}).getStack().getItem() != Items.TOTEM_OF_UNDYING) { - this.s.a_void_____________________(new Object[]{93540861878173L}); - this.j.reroll(new Object[]{57083216809697L}); + HandledScreenAccessor refillFocusAccessor = new HandledScreenAccessor((HandledScreen)mc.currentScreen); + if (refillFocusAccessor.getFocusedSlot() == null + || refillFocusAccessor.getFocusedSlot().getStack().getItem() != Items.TOTEM_OF_UNDYING) { + this.hoverTimer.reset(); + this.hoverDelay.reroll(); return; } - if (this.s.b(new Object[]{this.j, 89714527855213L})) { - int var92 = var82.a(new Object[]{37619827302565L}).id; - int var93 = (Integer)this.h.getValue() - 1; - Object[] var102 = new Object[]{null, null, 108694851105992L}; - var102[1] = var93; - var102[0] = var92; - if (this.a(var102) && this.i(new Object[]{39191347047416L})) { + if (this.hoverTimer.hasElapsedRandom(this.hoverDelay)) { + if (this.requestSwap(refillFocusAccessor.getFocusedSlot().id, this.totemSlot.getValue() - 1) && this.startActionDelay()) { return; } } @@ -734,25 +578,22 @@ public class AutoTotem extends Module { } } - if (!this.g.isSelected(new Object[]{"Close Inventory", 47850572908778L})) { + if (!this.actions.isSelected("Close Inventory")) { return; } - if (var52 || !var76) { + if (needsHotbarRefill || !offhandHasTotem) { return; } - this.k(new Object[]{(HandledScreen)b.currentScreen, 43910558120181L}); - if (this.i(new Object[]{39191347047416L})) { + this.closeScreen((HandledScreen)mc.currentScreen); + if (this.startActionDelay()) { return; } } - RenderHelper27 var90 = this.r; - var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 150.0F; - if (var90.a(var10004)) { - this.t = false; + if (this.actionTimer.hasElapsed(150.0F)) { + this.totemPopped = false; } } } @@ -762,48 +603,46 @@ public class AutoTotem extends Module { } @Subscribe - public void a(PacketEvent var1) { - if (var1.a(new Object[0]) instanceof PlayerRespawnS2CPacket) { - b.execute(this::f); - } else if (b.world != null && b.player != null) { - if (this.n.isSelected(new Object[]{"Anti Totem Guard Test", 47850572908778L}) - && var1.a(new Object[0]) instanceof EntityDamageS2CPacket var13 - && var13.entityId() == b.player.getId()) { - DamageType var20 = var13.sourceType().value(); - if (var20.msgId().equals("generic") - && var20.exhaustion() == 0.0F - && var20.effects().equals(DamageEffects.HURT) - && var13.sourceCauseId() == -1 - && var13.sourceType().getType().equals(Type.REFERENCE)) { - ModuleNotificationsElement.s(new Object[]{this, "Detected a manual totem check, ignoring pop.", NotificationType.WARNING, 111134823389700L}); - b.world.playSoundFromEntity(b.player, b.player, SoundEvents.BLOCK_ANVIL_PLACE, SoundCategory.AMBIENT, 13.0F, 5.0F); - this.O = System.currentTimeMillis() + 500L; + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof PlayerRespawnS2CPacket) { + mc.execute(this::resetState); + } else if (mc.world != null && mc.player != null) { + if (this.extra.isSelected("Anti Totem Guard Test") + && event.getPacket() instanceof EntityDamageS2CPacket damagePacket + && damagePacket.entityId() == mc.player.getId()) { + DamageType damageType = damagePacket.sourceType().value(); + if (damageType.msgId().equals("generic") + && damageType.exhaustion() == 0.0F + && damageType.effects().equals(DamageEffects.HURT) + && damagePacket.sourceCauseId() == -1 + && damagePacket.sourceType().getType().equals(Type.REFERENCE)) { + ModuleNotificationsElement.postNotification(this, "Detected a manual totem check, ignoring pop.", NotificationType.WARNING); + mc.world.playSoundFromEntity(mc.player, mc.player, SoundEvents.BLOCK_ANVIL_PLACE, SoundCategory.AMBIENT, 13.0F, 5.0F); + this.ignorePopUntil = System.currentTimeMillis() + 500L; } } - if (var1.a(new Object[0]) instanceof EntityStatusS2CPacket var18) { - Entity var22 = var18.getEntity(b.world); - if (var22 == b.player && var18.getStatus() == 35) { - if (this.g(new Object[]{61132707951516L})) { + if (event.getPacket() instanceof EntityStatusS2CPacket statusPacket) { + if (statusPacket.getEntity(mc.world) == mc.player && statusPacket.getStatus() == 35) { + if (this.shouldIgnorePop()) { return; } - this.i(new Object[]{39191347047416L}); - this.t = true; + this.startActionDelay(); + this.totemPopped = true; } } - if (var1.a(new Object[0]) instanceof BundlePacket var19) { - for (Packet var15 : (Iterable)(var19.getPackets())) { - if (var15 instanceof EntityStatusS2CPacket var16) { - Entity var17 = var16.getEntity(b.world); - if (var17 == b.player && var16.getStatus() == 35) { - if (this.g(new Object[]{61132707951516L})) { + if (event.getPacket() instanceof BundlePacket bundlePacket) { + for (Packet bundledPacket : (Iterable)(bundlePacket.getPackets())) { + if (bundledPacket instanceof EntityStatusS2CPacket bundledStatus) { + if (bundledStatus.getEntity(mc.world) == mc.player && bundledStatus.getStatus() == 35) { + if (this.shouldIgnorePop()) { return; } - this.i(new Object[]{39191347047416L}); - this.t = true; + this.startActionDelay(); + this.totemPopped = true; } } } @@ -812,261 +651,142 @@ public class AutoTotem extends Module { } @Subscribe - public void a(PacketEvent2 var1) { - if (((String)this.c.getValue()).equals("Crystal") && this.n.isSelected(new Object[]{"Pause Interactions", 47850572908778L})) { - if (var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket || var1.a(new Object[0]) instanceof PlayerInteractItemC2SPacket) { - if (this.v != null && b.currentScreen != this.v) { - this.v = null; + public void onPacketSend(PacketSendEvent event) { + if (this.mode.getValue().equals("Crystal") && this.extra.isSelected("Pause Interactions")) { + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket || event.getPacket() instanceof PlayerInteractItemC2SPacket) { + if (this.openedInventory != null && mc.currentScreen != this.openedInventory) { + this.openedInventory = null; } - if (this.v != null || Prestige.u != null && Prestige.u.a_boolean____________________________________(new Object[]{89789443909602L})) { - var1.a_void_____(new Object[0]); + if (this.openedInventory != null || Prestige.inventorySwapQueue != null && Prestige.inventorySwapQueue.hasPendingSwaps()) { + event.cancel(); } } } } @Subscribe - public void a(TickEvent19 var1) { - if ((Boolean)this.e.getValue()) { - float var33 = b.player.getHealth() + b.player.getAbsorptionAmount(); - if (!Float.isNaN(this.F)) { - float var34 = Math.max(0.0F, this.F - var33); - if (var34 > 0.0F) { - this.D.addLast(new AutoTotemHelper(System.currentTimeMillis(), var34)); + public void onClientTick(ClientTickEvent event) { + if (this.dynamicDelay.getValue()) { + float currentHealth = mc.player.getHealth() + mc.player.getAbsorptionAmount(); + if (!Float.isNaN(this.lastHealth)) { + float damageTaken = Math.max(0.0F, this.lastHealth - currentHealth); + if (damageTaken > 0.0F) { + this.damageSamples.addLast(new DamageSample(System.currentTimeMillis(), damageTaken)); } } - this.F = var33; + this.lastHealth = currentHealth; } - if (((String)this.c.getValue()).equals("SMP")) { - if (b.isWindowFocused()) { - if (!this.e(new Object[]{106622657070449L})) { - boolean var38 = false; - if ((Boolean)this.q.getValue() && !InventoryUtil2.d(new Object[]{89063551742447L})) { - PlayerEntity var39 = CombatUtil.a_class_1657(new Object[]{16945855905304L}); - if (var39 != null) { - if (!Float.isNaN(this.C) && var39.getY() - this.C >= 0.4F && b.player.getY() < var39.getY()) { - Vec3d var35 = new Vec3d(var39.getX(), b.player.getY(), var39.getZ()); - if (Math.sqrt(b.player.squaredDistanceTo(var35)) < 8.0) { - var38 = true; - TpsTimer var42 = Prestige.v; - Object[] var10007 = new Object[]{null, null, null, NotificationType.WARNING, 104881728073391L}; - var10007[2] = 3000L; - var10007[1] = "Detected mace look, switching to totem!"; - var10007[0] = "Auto Totem"; - var42.a(var10007); + if (this.mode.getValue().equals("SMP")) { + if (mc.isWindowFocused()) { + if (!this.isOffhandSwapPending()) { + boolean maceDetected = false; + if (this.antiMace.getValue() && !PlayerInteractions.isBlocking()) { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null) { + if (!Float.isNaN(this.lastEnemyY) && enemy.getY() - this.lastEnemyY >= 0.4F && mc.player.getY() < enemy.getY()) { + Vec3d enemyAtPlayerY = new Vec3d(enemy.getX(), mc.player.getY(), enemy.getZ()); + if (Math.sqrt(mc.player.squaredDistanceTo(enemyAtPlayerY)) < 8.0) { + maceDetected = true; + Prestige.notificationManager.addNotification("Auto Totem", "Detected mace look, switching to totem!", 3000L, NotificationType.WARNING); } } - this.C = (float)var39.getY(); + this.lastEnemyY = (float)enemy.getY(); } } - if (!this.h(new Object[]{94918739196044L}) || var38) { - if (this.x != -1) { - int var46 = this.x; - Object[] var50 = new Object[]{null, 37392877673079L}; - var50[0] = var46; - InventoryUtil.a_void________(var50); - this.x = -1; - } else if (!(Boolean)this.p.getValue() || !InventoryUtil2.d(new Object[]{89063551742447L})) { - if (b.player.getHealth() + b.player.getAbsorptionAmount() > (Float)this.o.getValue() && !var38) { - if (this.w != -1 && !b.player.isUsingItem()) { - if (this.w < 9) { - this.x = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - if (InventoryUtil.a_int_____(new Object[]{134339616728996L}) != this.w) { - int var45 = this.w; - Object[] var49 = new Object[]{null, 37392877673079L}; - var49[0] = var45; - InventoryUtil.a_void________(var49); - NetworkUtil.a( - new Object[]{ - new UpdateSelectedSlotC2SPacket(InventoryUtil.a_int_____(new Object[]{134339616728996L})), 53690043409678L - } + if (!this.isDelayActive() || maceDetected) { + if (this.slotToReselect != -1) { + InventoryUtil.selectSlot(this.slotToReselect); + this.slotToReselect = -1; + } else if (!this.waitWhenShielding.getValue() || !PlayerInteractions.isBlocking()) { + if (mc.player.getHealth() + mc.player.getAbsorptionAmount() > this.health.getValue() && !maceDetected) { + if (this.totemOriginSlot != -1 && !mc.player.isUsingItem()) { + if (this.totemOriginSlot < 9) { + this.slotToReselect = InventoryUtil.getSelectedSlot(); + if (InventoryUtil.getSelectedSlot() != this.totemOriginSlot) { + InventoryUtil.selectSlot(this.totemOriginSlot); + PacketSender.sendPacket( + new UpdateSelectedSlotC2SPacket(InventoryUtil.getSelectedSlot()) ); } - NetworkUtil.a( - new Object[]{ - new PlayerActionC2SPacket(Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ORIGIN, Direction.DOWN), 53690043409678L - } + PacketSender.sendPacket( + new PlayerActionC2SPacket(Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ORIGIN, Direction.DOWN) ); - this.w = -1; + this.totemOriginSlot = -1; } else { - int var47 = this.w; - Object[] var51 = new Object[]{null, ArmorState.RESTORE, 135903435660187L}; - var51[0] = var47; - this.f(var51); + this.requestOffhandSwap(this.totemOriginSlot, ArmorState.RESTORE); } } - this.i(new Object[]{39191347047416L}); - } else if (!InventoryUtil.m(new Object[]{Items.TOTEM_OF_UNDYING, 6830336961985L}) && this.w == -1) { - Item var43 = Items.TOTEM_OF_UNDYING; - Object[] var10004 = new Object[]{null, null, 77736144221765L}; - var10004[1] = true; - var10004[0] = var43; - List var40 = InventoryUtil.a_List(var10004); - Iterator var41 = var40.iterator(); - if (var41.hasNext()) { - Integer var36 = (Integer)var41.next(); - if (var36 < 9) { - this.x = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - if (InventoryUtil.a_int_____(new Object[]{134339616728996L}) != var36) { - int var44 = var36; - Object[] var48 = new Object[]{null, 37392877673079L}; - var48[0] = var44; - InventoryUtil.a_void________(var48); - NetworkUtil.a( - new Object[]{ - new UpdateSelectedSlotC2SPacket(InventoryUtil.a_int_____(new Object[]{134339616728996L})), 53690043409678L - } + this.startActionDelay(); + } else if (!InventoryUtil.isHoldingOffhand(Items.TOTEM_OF_UNDYING) && this.totemOriginSlot == -1) { + Iterator totemSlotIterator = InventoryUtil.findInventorySlots(Items.TOTEM_OF_UNDYING, true).iterator(); + if (totemSlotIterator.hasNext()) { + Integer firstTotemSlot = (Integer)totemSlotIterator.next(); + if (firstTotemSlot < 9) { + this.slotToReselect = InventoryUtil.getSelectedSlot(); + if (InventoryUtil.getSelectedSlot() != firstTotemSlot) { + InventoryUtil.selectSlot(firstTotemSlot); + PacketSender.sendPacket( + new UpdateSelectedSlotC2SPacket(InventoryUtil.getSelectedSlot()) ); } - NetworkUtil.a( - new Object[]{ - new PlayerActionC2SPacket(Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ORIGIN, Direction.DOWN), 53690043409678L - } + PacketSender.sendPacket( + new PlayerActionC2SPacket(Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ORIGIN, Direction.DOWN) ); - this.w = var36; + this.totemOriginSlot = firstTotemSlot; } else { - int var10001 = var36; - Object[] var10005 = new Object[]{null, ArmorState.EQUIP, 135903435660187L}; - var10005[0] = var10001; - this.f(var10005); + this.requestOffhandSwap(firstTotemSlot, ArmorState.EQUIP); } } - this.i(new Object[]{39191347047416L}); + this.startActionDelay(); } else { - this.i(new Object[]{39191347047416L}); + this.startActionDelay(); } } } } } } else { - if (this.n.isSelected(new Object[]{"Double Hand On GUI", 47850572908778L}) && b.currentScreen != null) { - Integer var37 = InventoryUtil.a_Integer(new Object[]{Items.TOTEM_OF_UNDYING, 64376993919254L}); - if (var37 != null) { - int var10000 = var37; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + if (this.extra.isSelected("Double Hand On GUI") && mc.currentScreen != null) { + Integer hotbarTotemSlot = InventoryUtil.findHotbarSlot(Items.TOTEM_OF_UNDYING); + if (hotbarTotemSlot != null) { + InventoryUtil.selectSlot(hotbarTotemSlot); } } } } - private boolean h(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 14313756215246L ^ var2; - long var4 = var2 ^ 11884601400623L; - return !this.r.b(new Object[]{this.d, var4}); + private boolean isDelayActive() { + return !this.actionTimer.hasElapsedRandom(this.delay); } - private boolean i(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 14313756215246L ^ var2; - long var4 = var2 ^ 49807578027900L; - long var6 = var2 ^ 51041646505355L; - long var8 = var2 ^ 136010639045547L; - long var10 = var2 ^ 32207504089815L; - Event.b(); - this.d.reroll(new Object[]{var10}); - if ((Boolean)this.e.getValue() && ((String)this.c.getValue()).equals("Crystal")) { - float var13 = this.b_float___________(new Object[]{var4}); - float var14 = this.d.randomInRange(new Object[]{var6}); - float var15 = (var14 - this.d.getMin()) * (float)Math.pow(var13 / 100.0F, 2.0); - float var16 = Math.max(this.d.getMin(), var14 - var15); - this.d.setRolled(new Object[]{var16}); + private boolean startActionDelay() { + this.delay.reroll(); + if (this.dynamicDelay.getValue() && this.mode.getValue().equals("Crystal")) { + float danger = this.computeDangerScore(); + float rolledDelay = this.delay.randomInRange(); + float reduction = (rolledDelay - this.delay.getMin()) * (float)Math.pow(danger / 100.0F, 2.0); + float adjustedDelay = Math.max(this.delay.getMin(), rolledDelay - reduction); + this.delay.setRolled(adjustedDelay); } - this.r.a_void_____________________(new Object[]{var8}); + this.actionTimer.reset(); return true; } - private void n(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 14313756215246L ^ var2; - long var4 = var2 ^ 79538084803541L; - long var6 = var2 ^ 4999677100091L; - + private void createRobot() { try { - FieldAccessor.a(new Object[]{GraphicsEnvironment.class, "headless", var6}).c(new Object[]{false, var4}); - this.G = new Robot(); - } catch (Exception var8) { - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + FieldAccessor.of(GraphicsEnvironment.class, "headless").set(false); + this.robot = new Robot(); + } catch (Exception ignored) { } } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/Backtrack.java b/src/main/java/dev/zprestige/prestige/module/combat/Backtrack.java index a6bde0b..6ed7ab8 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/Backtrack.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/Backtrack.java @@ -4,26 +4,19 @@ import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.data.LongData3; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.data.DelayedPacket; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.ShapeRenderer; import dev.zprestige.prestige.world.PositionUtil; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Map; -import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import net.minecraft.client.network.ClientPlayNetworkHandler; @@ -50,106 +43,88 @@ public class Backtrack extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private RangeSetting a; - private RangeSetting c; - private BoolSetting d; - private Map e = new ConcurrentHashMap(); - private ConcurrentLinkedQueue f = new ConcurrentLinkedQueue(); - private volatile long g; - private volatile int h = -1; - private volatile int i = -1; - private Vec3d j; - private boolean k; - private volatile Vec3d l = Vec3d.ZERO; - private volatile Vec3d m = Vec3d.ZERO; - private volatile Vec3d n = Vec3d.ZERO; - private int o; + private RangeSetting range; + private RangeSetting latency; + private BoolSetting weaponOnly; + private Map trackedPositions = new ConcurrentHashMap(); + private ConcurrentLinkedQueue delayedPackets = new ConcurrentLinkedQueue(); + private volatile long lastReleaseTime; + private volatile int targetId = -1; + private volatile int pendingTargetId = -1; + private Vec3d lastTargetPos; + private boolean holdingPackets; + private volatile Vec3d prevRenderPos = Vec3d.ZERO; + private volatile Vec3d renderPos = Vec3d.ZERO; + private volatile Vec3d renderTargetPos = Vec3d.ZERO; + private int renderLerpSteps; @Subscribe - public void a(PacketEvent var1) { - Event.b(); - Object[] var10005 = new Object[]{null, 118606147722755L}; - var10005[0] = false; - this.k(var10005); - this.l(new Object[]{88686438666488L}); - if (b.world == null || b.player == null) { - Object[] var35 = new Object[]{null, 118606147722755L}; - var35[0] = true; - this.k(var35); - this.h = -1; - } else if (b.player.age < 10) { - Object[] var34 = new Object[]{null, 125085024114902L}; - var34[0] = true; - this.n(var34); + public void onPacketReceive(PacketReceiveEvent event) { + this.releasePackets(false); + this.applyPendingTarget(); + if (mc.world == null || mc.player == null) { + this.releasePackets(true); + this.targetId = -1; + } else if (mc.player.age < 10) { + this.resetState(true); } else { - Packet var21 = var1.a(new Object[0]); - if (!(var21 instanceof PlayerRespawnS2CPacket) && !(var21 instanceof GameStateChangeS2CPacket) && !(var21 instanceof DisconnectS2CPacket)) { - ArrayList var22 = new ArrayList(); - if (var21 instanceof BundleS2CPacket var23) { - for (Packet var25 : var23.getPackets()) { - var22.add(var25); + Packet packet = event.getPacket(); + if (!(packet instanceof PlayerRespawnS2CPacket) && !(packet instanceof GameStateChangeS2CPacket) && !(packet instanceof DisconnectS2CPacket)) { + ArrayList packets = new ArrayList(); + if (packet instanceof BundleS2CPacket bundle) { + for (Packet bundledPacket : bundle.getPackets()) { + packets.add(bundledPacket); } } else { - var22.add(var21); + packets.add(packet); } - Vec3d var27 = null; + Vec3d newTargetPos = null; - for (Packet var29 : (Iterable)(var22)) { - Vec3d var26 = this.a(new Object[]{var29, 43901125296446L}); - if (var26 != null) { - var27 = var26; + for (Packet subPacket : (Iterable)(packets)) { + Vec3d updatedPos = this.processPositionPacket(subPacket); + if (updatedPos != null) { + newTargetPos = updatedPos; } - if (this.a_boolean_________________(new Object[]{var29, 83149107607277L})) { - Object[] var30 = new Object[]{null, 118606147722755L}; - var30[0] = true; - this.k(var30); + if (this.isSelfMotionPacket(subPacket)) { + this.releasePackets(true); return; } } - if (this.h == -1) { - Object[] var33 = new Object[]{null, 118606147722755L}; - var33[0] = true; - this.k(var33); - } else if (!this.e(new Object[]{55962480142592L})) { - Object[] var32 = new Object[]{null, 118606147722755L}; - var32[0] = true; - this.k(var32); + if (this.targetId == -1) { + this.releasePackets(true); + } else if (!this.passesWeaponCheck()) { + this.releasePackets(true); } else { - if (var27 != null) { - this.k = this.d(new Object[]{var27, 637617902806L}); - this.j = var27; + if (newTargetPos != null) { + this.holdingPackets = this.isMovingAway(newTargetPos); + this.lastTargetPos = newTargetPos; } - if (this.k) { - var1.a_void_____(new Object[0]); - this.j(new Object[]{var21, 73185779439232L}); + if (this.holdingPackets) { + event.cancel(); + this.queuePacket(packet); } else { - Object[] var31 = new Object[]{null, 118606147722755L}; - var31[0] = true; - this.k(var31); + this.releasePackets(true); } } } else { - Object[] var10004 = new Object[]{null, 125085024114902L}; - var10004[0] = true; - this.n(var10004); + this.resetState(true); } } } @Subscribe - public void a(EntityEvent var1) { - Event.b(); - Entity var9 = var1.a(new Object[0]); - if (var9 != null) { - if (var9 instanceof PlayerEntity && this.f(new Object[]{var9, 122803427193588L})) { - if (this.e(new Object[]{55962480142592L})) { - int var10 = var9.getId(); - if (var10 != this.h && var10 != this.i) { - this.i = var10; + public void onAttackEntity(AttackEntityEvent event) { + Entity target = event.getTarget(); + if (target != null) { + if (target instanceof PlayerEntity && this.isInRange(target)) { + if (this.passesWeaponCheck()) { + int entityId = target.getId(); + if (entityId != this.targetId && entityId != this.pendingTargetId) { + this.pendingTargetId = entityId; } } } @@ -157,406 +132,223 @@ public class Backtrack extends Module { } @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - this.l = this.m; - if (this.h != -1 && this.o > 0) { - this.m = this.m.add(this.n.subtract(this.m).multiply(1.0 / this.o)); - this.o--; + public void onClientTick(ClientTickEvent event) { + this.prevRenderPos = this.renderPos; + if (this.targetId != -1 && this.renderLerpSteps > 0) { + this.renderPos = this.renderPos.add(this.renderTargetPos.subtract(this.renderPos).multiply(1.0 / this.renderLerpSteps)); + this.renderLerpSteps--; } - if (b.world != null && b.player != null) { - if (!b.player.isAlive()) { - Object[] var10004 = new Object[]{null, 125085024114902L}; - var10004[0] = true; - this.n(var10004); + if (mc.world != null && mc.player != null) { + if (!mc.player.isAlive()) { + this.resetState(true); } } } @Subscribe - public void a(TickEvent3 var1) { - Object[] var10004 = new Object[]{null, 125085024114902L}; - var10004[0] = false; - this.n(var10004); + public void onGameJoin(GameJoinEvent event) { + this.resetState(false); } @Subscribe - public void a(TickEvent27 var1) { - if (this.h != -1 && b.world != null) { - if (this.m.getY() != 0.0) { - Entity var14 = b.world.getEntityById(this.h); - if (var14 != null) { - float var15 = MatrixStack.a_float_______________(new Object[]{601921721859L}); - Vec3d var16 = this.l.add(this.m.subtract(this.l).multiply(var15)); - MatrixCameraData var10000 = var1.b; - RenderHelper8 var10001 = var1.a; - float var10002 = (float)(var16.getX() - 0.25); - float var10003 = (float)var16.getY(); - float var10004 = (float)(var16.getZ() - 0.25); - float var10005 = (float)(var16.getX() + 0.25); - float var10006 = (float)(var16.getY() + 2.0); - float var10007 = (float)(var16.getZ() + 0.25); - Color var10008 = MathHelper4.d(new Object[]{122780339483702L}); - Object[] var10012 = new Object[]{null, null, 20220661505083L}; - var10012[1] = 0.3F; - var10012[0] = var10008; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, MathHelper4.b(var10012), 108390846498585L}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.h(var10011); - var10000 = var1.b; - var10001 = var1.a; - var10002 = (float)(var16.getX() - 0.25); - var10003 = (float)var16.getY(); - var10004 = (float)(var16.getZ() - 0.25); - var10005 = (float)(var16.getX() + 0.25); - var10006 = (float)(var16.getY() + 2.0); - var10007 = (float)(var16.getZ() + 0.25); - var10008 = MathHelper4.d(new Object[]{122780339483702L}); - var10012 = new Object[]{null, null, 20220661505083L}; - var10012[1] = 1.0F; - var10012[0] = var10008; - var10011 = new Object[]{null, null, null, null, null, null, null, null, MathHelper4.b(var10012), 119015971454350L}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); + public void onRender3D(Render3DEvent event) { + if (this.targetId != -1 && mc.world != null) { + if (this.renderPos.getY() != 0.0) { + if (mc.world.getEntityById(this.targetId) != null) { + float tickDelta = Render2D.getTickDelta(); + Vec3d interpolatedPos = this.prevRenderPos.add(this.renderPos.subtract(this.prevRenderPos).multiply(tickDelta)); + ShapeRenderer.drawFilledBox(event.context, event.renderer, (float)(interpolatedPos.getX() - 0.25), (float)interpolatedPos.getY(), (float)(interpolatedPos.getZ() - 0.25), (float)(interpolatedPos.getX() + 0.25), (float)(interpolatedPos.getY() + 2.0), (float)(interpolatedPos.getZ() + 0.25), UiMath.withAlpha(UiMath.getAccentColor(), 0.3F)); + ShapeRenderer.drawBoxOutline(event.context, event.renderer, (float)(interpolatedPos.getX() - 0.25), (float)interpolatedPos.getY(), (float)(interpolatedPos.getZ() - 0.25), (float)(interpolatedPos.getX() + 0.25), (float)(interpolatedPos.getY() + 2.0), (float)(interpolatedPos.getZ() + 0.25), UiMath.withAlpha(UiMath.getAccentColor(), 1.0F)); } } } } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 15258385839568L; - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = false; - this.n(var10004); + public void onEnable() { + this.resetState(false); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 94987294404531L; - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = true; - this.n(var10004); + public void onDisable() { + this.resetState(true); } - private Vec3d a(Object[] var1) { - Packet var4 = (Packet)var1[0]; - long var2 = (Long)var1[1]; - var2 = 7286369456822L ^ var2; - long var5 = var2 ^ 28973116157516L; - long var7 = var2 ^ 81994662907275L; - long var9 = var2 ^ 96044739017963L; - Event.b(); - Integer var12 = null; - if (var4 instanceof EntityS2CPacket var13) { - Entity var16 = var13.getEntity(b.world); - if (var16 != null && var13.isPositionChanged()) { - var12 = var16.getId(); - TrackedPosition var17 = (TrackedPosition)this.e - .computeIfAbsent(var12, lpL314_0 -> this.a_class_7422(new Object[]{PositionUtil.a(new Object[]{var16, 67736483458412L}), 14173057341269L})); - var17.setPos(var17.withDelta(var13.getDeltaX(), var13.getDeltaY(), var13.getDeltaZ())); + private Vec3d processPositionPacket(Packet packet) { + Integer entityId = null; + if (packet instanceof EntityS2CPacket movePacket) { + Entity entity = movePacket.getEntity(mc.world); + if (entity != null && movePacket.isPositionChanged()) { + entityId = entity.getId(); + TrackedPosition trackedPos = (TrackedPosition)this.trackedPositions + .computeIfAbsent(entityId, key -> this.createTrackedPosition(PositionUtil.getEntityPos(entity))); + trackedPos.setPos(trackedPos.withDelta(movePacket.getDeltaX(), movePacket.getDeltaY(), movePacket.getDeltaZ())); } - } else if (var4 instanceof EntityPositionS2CPacket var14) { - var12 = var14.entityId(); - int var10001 = var12; - Object[] var10005 = new Object[]{null, var14.change().position(), var5}; - var10005[0] = var10001; - this.m(var10005); - } else if (var4 instanceof EntitiesDestroyS2CPacket var15) { - for (int var23 : var15.getEntityIds()) { - this.e.remove(var23); - if (var23 == this.h) { - this.h = -1; - this.j = null; - Object[] var10004 = new Object[]{null, var7}; - var10004[0] = true; - this.k(var10004); + } else if (packet instanceof EntityPositionS2CPacket positionPacket) { + entityId = positionPacket.entityId(); + this.setTrackedPosition(entityId, positionPacket.change().position()); + } else if (packet instanceof EntitiesDestroyS2CPacket destroyPacket) { + for (int destroyedId : destroyPacket.getEntityIds()) { + this.trackedPositions.remove(destroyedId); + if (destroyedId == this.targetId) { + this.targetId = -1; + this.lastTargetPos = null; + this.releasePackets(true); } } return null; } - if (var4 instanceof EntityPositionSyncS2CPacket var19) { - var12 = var19.id(); - int var24 = var12; - Object[] var25 = new Object[]{null, var19.values().position(), var5}; - var25[0] = var24; - this.m(var25); + if (packet instanceof EntityPositionSyncS2CPacket syncPacket) { + entityId = syncPacket.id(); + this.setTrackedPosition(entityId, syncPacket.values().position()); } - if (var12 != null && var12 == this.h) { - TrackedPosition var20 = (TrackedPosition)this.e.get(var12); - if (var20 == null) { + if (entityId != null && entityId == this.targetId) { + TrackedPosition targetTrackedPos = (TrackedPosition)this.trackedPositions.get(entityId); + if (targetTrackedPos == null) { return null; } else { - Vec3d var21 = var20.withDelta(0L, 0L, 0L); - this.o(new Object[]{var21, var9}); - return var21; + Vec3d serverPos = targetTrackedPos.withDelta(0L, 0L, 0L); + this.setRenderTarget(serverPos); + return serverPos; } } else { return null; } } - private boolean a_boolean_________________(Object[] var1) { - Packet var4 = (Packet)var1[0]; - if (var4 instanceof PlayerPositionLookS2CPacket) { + private boolean isSelfMotionPacket(Packet packet) { + if (packet instanceof PlayerPositionLookS2CPacket) { return true; } else { - return var4 instanceof EntityVelocityUpdateS2CPacket var6 && b.player != null ? var6.getEntityId() == b.player.getId() : false; + return packet instanceof EntityVelocityUpdateS2CPacket velocityPacket && mc.player != null ? velocityPacket.getEntityId() == mc.player.getId() : false; } } - private boolean d(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - long var3 = (Long)var1[1]; - var3 = 7286369456822L ^ var3; - long var5 = var3 ^ 70745482860988L; - if (this.j == null) { + private boolean isMovingAway(Vec3d newPos) { + if (this.lastTargetPos == null) { return false; } else { - double var8 = this.a_double____(new Object[]{this.j, var5}); - double var10 = this.a_double____(new Object[]{var2, var5}); - return var10 > var8 + 0.001; + double lastDistance = this.getHitDistance(this.lastTargetPos); + return this.getHitDistance(newPos) > lastDistance + 0.001; } } - private double a_double____(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - Vec3d var5 = b.player.getEyePos(); - Vec3d var6 = var4.add(0.0, 0.9, 0.0); - Vec3d var7 = var5.add(var6.subtract(var5).normalize().multiply(256.0)); - Box var8 = new Box(var4.x - 0.3, var4.y, var4.z - 0.3, var4.x + 0.3, var4.y + 1.8, var4.z + 0.3).expand(0.1); - Optional var9 = var8.raycast(var5, var7); - return var9.map(var5::distanceTo).orElse(0.0); + private double getHitDistance(Vec3d pos) { + Vec3d eyePos = mc.player.getEyePos(); + Vec3d rayEnd = eyePos.add(pos.add(0.0, 0.9, 0.0).subtract(eyePos).normalize().multiply(256.0)); + return new Box(pos.x - 0.3, pos.y, pos.z - 0.3, pos.x + 0.3, pos.y + 1.8, pos.z + 0.3).expand(0.1).raycast(eyePos, rayEnd).map(eyePos::distanceTo).orElse(0.0); } - private void j(Object[] var1) { - Packet var4 = (Packet)var1[0]; - long var2 = (Long)var1[1]; - var2 = 7286369456822L ^ var2; - long var5 = var2 ^ 75745140032907L; - Event.b(); - long var8 = System.currentTimeMillis() + (long)this.c.randomInRange(new Object[]{var5}); - if (var8 <= this.g) { - var8 = this.g + 1L; + private void queuePacket(Packet packet) { + long releaseTime = System.currentTimeMillis() + (long)this.latency.randomInRange(); + if (releaseTime <= this.lastReleaseTime) { + releaseTime = this.lastReleaseTime + 1L; } - this.g = var8; - this.f.add(new LongData3(var4, var8)); + this.lastReleaseTime = releaseTime; + this.delayedPackets.add(new DelayedPacket(packet, releaseTime)); } - private void k(Object[] var1) { - boolean var4 = (Boolean)var1[0]; - if (!this.f.isEmpty()) { - ClientPlayNetworkHandler var6 = b.getNetworkHandler(); - if (var6 == null) { - this.f.clear(); - this.g = 0L; + private void releasePackets(boolean releaseAll) { + if (!this.delayedPackets.isEmpty()) { + ClientPlayNetworkHandler networkHandler = mc.getNetworkHandler(); + if (networkHandler == null) { + this.delayedPackets.clear(); + this.lastReleaseTime = 0L; } else { - long var7 = System.currentTimeMillis(); + long now = System.currentTimeMillis(); - LongData3 var9; - while ((var9 = (LongData3)this.f.peek()) != null && (var4 || var7 >= var9.at())) { - this.f.poll(); + DelayedPacket delayedPacket; + while ((delayedPacket = (DelayedPacket)this.delayedPackets.peek()) != null && (releaseAll || now >= delayedPacket.releaseTime())) { + this.delayedPackets.poll(); try { - ((net.minecraft.network.packet.Packet)var9.as()).apply(var6); - } catch (Exception var10) { + ((net.minecraft.network.packet.Packet)delayedPacket.packet()).apply(networkHandler); + } catch (Exception ignored) { } } - if (this.f.isEmpty()) { - this.g = 0L; + if (this.delayedPackets.isEmpty()) { + this.lastReleaseTime = 0L; } } } } - private void l(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 7286369456822L ^ var2; - long var4 = var2 ^ 118282188369698L; - long var6 = var2 ^ 67996640304205L; - if (this.i != -1) { - this.h = this.i; - this.i = -1; - this.j = null; - Vec3d var9 = null; - TrackedPosition var10 = (TrackedPosition)this.e.get(this.h); - if (var10 != null) { - var9 = var10.withDelta(0L, 0L, 0L); - } else if (b.world != null) { - Entity var11 = b.world.getEntityById(this.h); - if (var11 != null) { - var9 = PositionUtil.a(new Object[]{var11, var4}); + private void applyPendingTarget() { + if (this.pendingTargetId != -1) { + this.targetId = this.pendingTargetId; + this.pendingTargetId = -1; + this.lastTargetPos = null; + Vec3d startPos = null; + TrackedPosition trackedPos = (TrackedPosition)this.trackedPositions.get(this.targetId); + if (trackedPos != null) { + startPos = trackedPos.withDelta(0L, 0L, 0L); + } else if (mc.world != null) { + Entity entity = mc.world.getEntityById(this.targetId); + if (entity != null) { + startPos = PositionUtil.getEntityPos(entity); } } - this.p(new Object[]{var9 == null ? Vec3d.ZERO : var9}); - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = true; - this.k(var10004); + this.snapRenderPos((Vec3d)(startPos == null ? Vec3d.ZERO : startPos)); + this.releasePackets(true); } } - private void m(Object[] var1) { - int var2 = (Integer)var1[0]; - Vec3d var5 = (Vec3d)var1[1]; - ((TrackedPosition)this.e.computeIfAbsent(var2, lpL313_0 -> new TrackedPosition())).setPos(var5); + private void setTrackedPosition(int entityId, Vec3d pos) { + ((TrackedPosition)this.trackedPositions.computeIfAbsent(entityId, key -> new TrackedPosition())).setPos(pos); } - private TrackedPosition a_class_7422(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - TrackedPosition var5 = new TrackedPosition(); - var5.setPos(var4); - return var5; + private TrackedPosition createTrackedPosition(Vec3d pos) { + TrackedPosition trackedPos = new TrackedPosition(); + trackedPos.setPos(pos); + return trackedPos; } - private void n(Object[] var1) { - boolean var2 = (Boolean)var1[0]; - long var3 = (Long)var1[1]; - var3 = 7286369456822L ^ var3; - long var5 = var3 ^ 31597945869411L; - if (var2) { - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = true; - this.k(var10004); + private void resetState(boolean flushQueued) { + if (flushQueued) { + this.releasePackets(true); } else { - this.f.clear(); - this.g = 0L; + this.delayedPackets.clear(); + this.lastReleaseTime = 0L; } - this.e.clear(); - this.h = -1; - this.i = -1; - this.j = null; - this.k = false; - this.p(new Object[]{Vec3d.ZERO}); + this.trackedPositions.clear(); + this.targetId = -1; + this.pendingTargetId = -1; + this.lastTargetPos = null; + this.holdingPackets = false; + this.snapRenderPos(Vec3d.ZERO); } - private void o(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - this.n = var4; - this.o = 3; + private void setRenderTarget(Vec3d pos) { + this.renderTargetPos = pos; + this.renderLerpSteps = 3; } - private void p(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - this.l = var2; - this.m = var2; - this.n = var2; - this.o = 0; + private void snapRenderPos(Vec3d pos) { + this.prevRenderPos = pos; + this.renderPos = pos; + this.renderTargetPos = pos; + this.renderLerpSteps = 0; } - private boolean e(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 7286369456822L ^ var2; - long var4 = var2 ^ 70805521408905L; - long var6 = var2 ^ 90460232118235L; - long var8 = var2 ^ 84924141097610L; - if (!(Boolean)this.d.getValue()) { + private boolean passesWeaponCheck() { + if (!this.weaponOnly.getValue()) { return true; } else { - ItemStack var11 = b.player.getMainHandStack(); - return InventoryUtil.a(new Object[]{var11, var4}) || InventoryUtil.b(new Object[]{var11, var6}) || InventoryUtil.o(new Object[]{var11, var8}); + ItemStack mainHand = mc.player.getMainHandStack(); + return InventoryUtil.isSword(mainHand) || InventoryUtil.isAxe(mainHand) || InventoryUtil.isMace(mainHand); } } - private boolean f(Object[] var1) { - Entity var2 = (Entity)var1[0]; - Event.b(); - double var6 = b.player.distanceTo(var2); - return var6 >= this.a.getMin() && var6 <= this.a.getMax(); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Exception a(Exception var0) { - return var0; + private boolean isInRange(Entity entity) { + double distance = mc.player.distanceTo(entity); + return distance >= this.range.getMin() && distance <= this.range.getMax(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/CartAura.java b/src/main/java/dev/zprestige/prestige/module/combat/CartAura.java index d669db1..3e8a2fd 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/CartAura.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/CartAura.java @@ -7,28 +7,23 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.LongData4; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.data.AuraCartPlacement; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.Renderer2D; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.Entity; import net.minecraft.entity.vehicle.TntMinecartEntity; -import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; import net.minecraft.util.Hand; @@ -37,248 +32,191 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class CartAura extends Module implements RenderContract3 { - private RangeSetting a; - private FloatSetting c; - private BoolSetting d; - private FloatSetting e; - private RangeSetting f; - private FloatSetting g; - private BoolSetting h; - private RenderHelper27 i = new RenderHelper27(26293358099357L); - private RenderHelper27 j = new RenderHelper27(26293358099357L); - private RenderHelper27 k = new RenderHelper27(26293358099357L); - private RenderHelper27 l = new RenderHelper27(26293358099357L); - private List m = new ArrayList(); - private TntMinecartEntity n; - private int o = -1; - private int p = 0; +public class CartAura extends Module implements RotationProvider { + private RangeSetting reactionDelay; + private FloatSetting swapDelay; + private BoolSetting swapBack; + private FloatSetting swapBackDelay; + private RangeSetting attackDelay; + private FloatSetting targetFov; + private BoolSetting humanizedAim; + private StopWatch reactionTimer = new StopWatch(); + private StopWatch swapTimer = new StopWatch(); + private StopWatch swapBackTimer = new StopWatch(); + private StopWatch attackTimer = new StopWatch(); + private List ownCartPlacements = new ArrayList(); + private TntMinecartEntity target; + private int previousSlot = -1; + private int swapStage = 0; public CartAura() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.e.setVisibility_FloatSetting(new Object[]{(Predicate)lpL316_0 -> (Boolean)this.d.getValue(), 35046756052036L}); + this.swapBackDelay.visibleWhen((Predicate)ignored -> this.swapBack.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Cart); } @Subscribe - public void a(PacketEvent2 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket var7) { - ItemStack var12 = var7.getHand().equals(Hand.MAIN_HAND) ? b.player.getMainHandStack() : b.player.getOffHandStack(); - if (var12.getItem() == Items.TNT_MINECART) { - BlockHitResult var9 = var7.getBlockHitResult(); - long var10 = System.currentTimeMillis(); - this.m.add(new LongData4(var9.getBlockPos(), var10)); - this.m.add(new LongData4(WorldUtil2.a_class_2338______(new Object[]{var9, 110292667014705L}), var10)); + public void onPacketSend(PacketSendEvent event) { + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket interactPacket) { + if ((interactPacket.getHand().equals(Hand.MAIN_HAND) ? mc.player.getMainHandStack() : mc.player.getOffHandStack()).getItem() == Items.TNT_MINECART) { + BlockHitResult hitResult = interactPacket.getBlockHitResult(); + long now = System.currentTimeMillis(); + this.ownCartPlacements.add(new AuraCartPlacement(hitResult.getBlockPos(), now)); + this.ownCartPlacements.add(new AuraCartPlacement(BlockUtil.getPlacePos(hitResult), now)); } } } @Subscribe - public void a(TickEvent3 var1) { - this.m.clear(); + public void onGameJoin(GameJoinEvent event) { + this.ownCartPlacements.clear(); } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 65603549542278L; - long var6 = var2 ^ 29247161167908L; - long var8 = var2 ^ 94148018906117L; - long var10 = var2 ^ 18556217440230L; - long var12 = var2 ^ 120434008667598L; - long var14 = var2 ^ 136752692109656L; - long var16 = var2 ^ 24717810023087L; - long var18 = var2 ^ 58982489950237L; - long var20 = var2 ^ 7477342050734L; - long var22 = var2 ^ 8794929828675L; - long var24 = var2 ^ 91260814807711L; - long var26 = var2 ^ 40152458499673L; - long var28 = var2 ^ 33065978990036L; - long var30 = var2 ^ 85547089512629L; - long var32 = var2 ^ 101816702374277L; - long var34 = var2 ^ 96868503357288L; - long var36 = var2 ^ 64921433391096L; - if (b.player == null || b.world == null) { - this.k(new Object[]{var36}); + public Rotation provideRotation() { + if (mc.player == null || mc.world == null) { + this.resetState(); return null; - } else if (this.p == 2) { - RenderHelper27 var43 = this.k; - float var44 = (Float)this.e.getValue(); - Object[] var45 = new Object[]{null, var30}; - var45[0] = var44; - if (var43.a(var45)) { - this.j(new Object[]{var10}); + } else if (this.swapStage == 2) { + if (this.swapBackTimer.hasElapsed(this.swapBackDelay.getValue())) { + this.restorePreviousSlot(); } return null; - } else if (b.player.isUsingItem()) { + } else if (mc.player.isUsingItem()) { return null; - } else if (AutoObbyCrystal.R) { + } else if (AutoObbyCrystal.sequenceActive) { return null; - } else if (Prestige.o.d_boolean______(new Object[0])) { + } else if (Prestige.silentRotationManager.hasActedThisTick()) { return null; } else { - if (this.n != null) { - Vec3d var39 = this.a_class_243________(new Object[]{this.n, var8}); - if (!this.n.isAlive() - || this.a_boolean__________________(new Object[]{this.n, var16}) - || Math.sqrt(b.player.squaredDistanceTo(var39.x, var39.y, var39.z)) > 5.0) { - this.n = null; + if (this.target != null) { + Vec3d targetCenter = this.getBoxCenter(this.target); + if (!this.target.isAlive() + || this.isOwnCart(this.target) + || Math.sqrt(mc.player.squaredDistanceTo(targetCenter.x, targetCenter.y, targetCenter.z)) > 5.0) { + this.target = null; } } - if (this.n == null) { - float var10002 = (Float)this.g.getValue(); - Object[] var10005 = new Object[]{null, var26}; - var10005[0] = var10002; - this.n = this.a_class_1701_(var10005); - if (this.n != null) { - this.a.reroll(new Object[]{var14}); - this.i.a_void_____________________(new Object[]{var6}); + if (this.target == null) { + this.target = this.findTarget(this.targetFov.getValue()); + if (this.target != null) { + this.reactionDelay.reroll(); + this.reactionTimer.reset(); } } - if (this.n == null) { - if (this.p == 1) { - this.j(new Object[]{var10}); + if (this.target == null) { + if (this.swapStage == 1) { + this.restorePreviousSlot(); } return null; } else { - Vec3d var42 = this.a_class_243________(new Object[]{this.n, var8}); - RenderBatch var40 = Prestige.o.a_RenderBatch(new Object[]{var42, var32}); - if ((Boolean)this.h.getValue() && !var40.a_boolean________________________________________(new Object[0])) { - var40 = WorldUtil.d_RenderBatch(new Object[]{var40, var42, var20}); + Vec3d aimPoint = this.getBoxCenter(this.target); + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + if (this.humanizedAim.getValue() && !rotation.isClamped()) { + rotation = RotationUtil.addRandomJitter(rotation, aimPoint); } - if (!b.player.canSee(this.n)) { + if (!mc.player.canSee(this.target)) { return null; - } else if (this.a_double_____(new Object[]{this.n, var34}) > 3.0) { + } else if (this.getDistanceToBox(this.target) > 3.0) { return null; - } else if (!this.i.b(new Object[]{this.a, var28})) { - return var40; + } else if (!this.reactionTimer.hasElapsedRandom(this.reactionDelay)) { + return rotation; } else { - if (this.p == 1) { - RenderHelper27 var10000 = this.j; - float var10001 = (Float)this.c.getValue(); - Object[] var10004 = new Object[]{null, var30}; - var10004[0] = var10001; - if (!var10000.a(var10004)) { - return var40; + if (this.swapStage == 1) { + if (!this.swapTimer.hasElapsed(this.swapDelay.getValue())) { + return rotation; } - if (!InventoryUtil.a(new Object[]{b.player.getMainHandStack(), var4})) { - this.j(new Object[]{var10}); - return var40; + if (!InventoryUtil.isSword(mc.player.getMainHandStack())) { + this.restorePreviousSlot(); + return rotation; } - } else if (!InventoryUtil.a(new Object[]{b.player.getMainHandStack(), var4})) { - int var41 = this.d(new Object[]{var22}); - if (var41 == -1) { + } else if (!InventoryUtil.isSword(mc.player.getMainHandStack())) { + int swordSlot = this.findSwordSlot(); + if (swordSlot == -1) { return null; } - this.o = InventoryUtil.a_int_____(new Object[]{var18}); - Object[] var10003 = new Object[]{null, var12}; - var10003[0] = var41; - InventoryUtil.a_void________(var10003); - this.p = 1; - this.j.a_void_____________________(new Object[]{var6}); - return var40; + this.previousSlot = InventoryUtil.getSelectedSlot(); + InventoryUtil.selectSlot(swordSlot); + this.swapStage = 1; + this.swapTimer.reset(); + return rotation; } - if (!this.l.b(new Object[]{this.f, var28})) { - return var40; - } else if (var40.a_boolean________________________________________(new Object[0])) { - return var40; + if (!this.attackTimer.hasElapsedRandom(this.attackDelay)) { + return rotation; + } else if (rotation.isClamped()) { + return rotation; } else { - InventoryUtil2.a_void_________(new Object[]{this.n, var24}); - this.l.a_void_____________________(new Object[]{var6}); - this.f.reroll(new Object[]{var14}); - if (this.p == 1) { - if ((Boolean)this.d.getValue()) { - this.p = 2; - this.k.a_void_____________________(new Object[]{var6}); + PlayerInteractions.attackEntity(this.target); + this.attackTimer.reset(); + this.attackDelay.reroll(); + if (this.swapStage == 1) { + if (this.swapBack.getValue()) { + this.swapStage = 2; + this.swapBackTimer.reset(); } else { - this.o = -1; - this.p = 0; + this.previousSlot = -1; + this.swapStage = 0; } } - return var40; + return rotation; } } } } } - private TntMinecartEntity a_class_1701_(Object[] var1) { - float var4 = (Float)var1[0]; - long var2 = (Long)var1[1]; - var2 = 28326220671996L ^ var2; - long var5 = var2 ^ 115341421025696L; - long var7 = var2 ^ 129805134438857L; - long var9 = var2 ^ 47539367544586L; - long var11 = var2 ^ 129796871681829L; - if (b.world == null) { + private TntMinecartEntity findTarget(float fov) { + if (mc.world == null) { return null; } else { - long var14 = System.currentTimeMillis(); - this.m.removeIf(lpL315_0 -> var14 - ((dev.zprestige.prestige.data.LongData4)lpL315_0).az() > 5000L); - TntMinecartEntity var16 = null; - double var17 = Double.MAX_VALUE; - RenderBatch var19 = new RenderBatch(b.player.getYaw(), b.player.getPitch()); + long now = System.currentTimeMillis(); + this.ownCartPlacements.removeIf(placement -> now - ((dev.zprestige.prestige.data.AuraCartPlacement)placement).time() > 5000L); + TntMinecartEntity bestCart = null; + double bestDistSq = Double.MAX_VALUE; + Rotation viewRotation = new Rotation(mc.player.getYaw(), mc.player.getPitch()); - for (Entity var21 : b.world.getEntities()) { - if (var21 instanceof TntMinecartEntity var22 && var22.isAlive() && !this.a_boolean__________________(new Object[]{var22, var9})) { - Vec3d var23 = this.a_class_243________(new Object[]{var22, var5}); - double var24 = b.player.squaredDistanceTo(var23.x, var23.y, var23.z); - if (!(Math.sqrt(var24) > 5.0)) { - if (var4 < 360.0F) { - float var10000 = (float)var23.x; - float var10001 = (float)var23.y; - float var10002 = (float)var23.z; - Object[] var10005 = new Object[]{null, null, null, var11}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var10000; - RenderBatch var26 = WorldUtil.b_RenderBatch_____________(var10005); - var10005 = new Object[]{null, null, null, var7}; - var10005[2] = var4; - var10005[1] = var26; - var10005[0] = var19; - if (!WorldUtil.f(var10005)) { + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof TntMinecartEntity cart && cart.isAlive() && !this.isOwnCart(cart)) { + Vec3d center = this.getBoxCenter(cart); + double distSq = mc.player.squaredDistanceTo(center.x, center.y, center.z); + if (!(Math.sqrt(distSq) > 5.0)) { + if (fov < 360.0F) { + if (!RotationUtil.isWithinAngle(viewRotation, RotationUtil.getRotationToPoint((float)center.x, (float)center.y, (float)center.z), fov)) { continue; } } - if (var24 < var17) { - var16 = var22; - var17 = var24; + if (distSq < bestDistSq) { + bestCart = cart; + bestDistSq = distSq; } } } } - return var16; + return bestCart; } } - private boolean a_boolean__________________(Object[] var1) { - TntMinecartEntity var2 = (TntMinecartEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 28326220671996L ^ var3; - long var5 = var3 ^ 138167091794822L; - Event.b(); - Vec3d var8 = PositionUtil.a(new Object[]{var2, var5}); - long var9 = System.currentTimeMillis(); + private boolean isOwnCart(TntMinecartEntity cart) { + Vec3d cartPos = PositionUtil.getEntityPos(cart); + long now = System.currentTimeMillis(); - for (LongData4 var12 : (Iterable)(this.m)) { - if (var9 - var12.az() <= 5000L && var8.isInRange(var12.ay().toCenterPos(), 1.5)) { + for (AuraCartPlacement placement : (Iterable)(this.ownCartPlacements)) { + if (now - placement.time() <= 5000L && cartPos.isInRange(placement.pos().toCenterPos(), 1.5)) { return true; } } @@ -286,147 +224,59 @@ public class CartAura extends Module implements RenderContract3 { return false; } - private int d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 28326220671996L ^ var2; - long var4 = var2 ^ 41326321930041L; - Event.b(); - - for (int var7 = 0; var7 <= 8; var7++) { - if (InventoryUtil.a(new Object[]{b.player.getInventory().getStack(var7), var4})) { - return var7; + private int findSwordSlot() { + for (int slot = 0; slot <= 8; slot++) { + if (InventoryUtil.isSword(mc.player.getInventory().getStack(slot))) { + return slot; } } return -1; } - private Vec3d a_class_243________(Object[] var1) { - Entity var2 = (Entity)var1[0]; - return var2.getBoundingBox().getCenter(); + private Vec3d getBoxCenter(Entity entity) { + return entity.getBoundingBox().getCenter(); } - private double a_double_____(Object[] var1) { - Entity var4 = (Entity)var1[0]; - Vec3d var5 = b.player.getEyePos(); - Box var6 = var4.getBoundingBox(); - double var7 = MathHelper.clamp(var5.x, var6.minX, var6.maxX); - double var9 = MathHelper.clamp(var5.y, var6.minY, var6.maxY); - double var11 = MathHelper.clamp(var5.z, var6.minZ, var6.maxZ); - double var13 = var5.x - var7; - double var15 = var5.y - var9; - double var17 = var5.z - var11; - return Math.sqrt(var13 * var13 + var15 * var15 + var17 * var17); + private double getDistanceToBox(Entity entity) { + Vec3d eyePos = mc.player.getEyePos(); + Box box = entity.getBoundingBox(); + double closestX = MathHelper.clamp(eyePos.x, box.minX, box.maxX); + double closestY = MathHelper.clamp(eyePos.y, box.minY, box.maxY); + double closestZ = MathHelper.clamp(eyePos.z, box.minZ, box.maxZ); + double dx = eyePos.x - closestX; + double dy = eyePos.y - closestY; + double dz = eyePos.z - closestZ; + return Math.sqrt(dx * dx + dy * dy + dz * dz); } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 28326220671996L ^ var2; - long var4 = var2 ^ 46650497383476L; - if (this.o != -1) { - Renderer2D var10000 = Prestige.o; - int var10001 = this.o; - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - var10000.i(var10004); - this.o = -1; + private void restorePreviousSlot() { + if (this.previousSlot != -1) { + Prestige.silentRotationManager.scheduleSlotSwitch(this.previousSlot); + this.previousSlot = -1; } - this.p = 0; + this.swapStage = 0; } - private void k(Object[] var1) { - this.n = null; - this.m.clear(); - this.o = -1; - this.p = 0; + private void resetState() { + this.target = null; + this.ownCartPlacements.clear(); + this.previousSlot = -1; + this.swapStage = 0; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 9491932282183L; - long var6 = var2 ^ 91082959635357L; - this.k(new Object[]{var4}); - Prestige.o.e(new Object[]{this, var6}); + public void onEnable() { + this.resetState(); + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - long var6 = var2 ^ 132811803356986L; - Prestige.o.f(new Object[]{this, var4}); - this.j(new Object[]{var6}); - this.n = null; - this.m.clear(); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + this.restorePreviousSlot(); + this.target = null; + this.ownCartPlacements.clear(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/CartPearlCatch.java b/src/main/java/dev/zprestige/prestige/module/combat/CartPearlCatch.java index 14e83a7..3392053 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/CartPearlCatch.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/CartPearlCatch.java @@ -7,35 +7,28 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.DamageUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.data.VecIntData2; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent25; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.data.CartCatchPearlLanding; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render2DEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; -import dev.zprestige.prestige.type.FireState; -import dev.zprestige.prestige.world.WorldUtil; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.MsdfFont; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; +import dev.zprestige.prestige.type.CartCatchState; +import dev.zprestige.prestige.world.RotationUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.HashSet; import java.util.Set; import java.util.UUID; import java.util.function.Predicate; import net.minecraft.client.gui.screen.ChatScreen; -import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.ChargedProjectilesComponent; import net.minecraft.entity.Entity; @@ -59,140 +52,126 @@ import net.minecraft.world.RaycastContext.FluidHandling; import net.minecraft.world.RaycastContext.ShapeType; import org.joml.Matrix4f; -public class CartPearlCatch extends Module implements RenderContract3 { - private FloatSetting a; - private FloatSetting c; - private FloatSetting d; - private BoolSetting e; - private IntSetting f; - private BoolSetting g; - private FloatSetting h; - private BoolSetting i; - private static final Item[] j = new Item[]{Items.RAIL, Items.POWERED_RAIL, Items.DETECTOR_RAIL, Items.ACTIVATOR_RAIL}; - private FireState k = FireState.IDLE; - private UUID l; - private Set m = new HashSet(); - private int n; - private int o; - private int p; - private BlockPos q; - private boolean r; - private int s = -1; - private int t = 0; - private int u = 0; - private int v = 0; - private int w = -1; - private boolean x = false; - private RenderBatch y; - private int z = -1; - private static final Identifier A = Identifier.of("minecraft", "textures/item/tnt_minecart.png"); - private static FontRenderer B; +public class CartPearlCatch extends Module implements RotationProvider { + private FloatSetting scanRange; + private FloatSetting minDamage; + private FloatSetting maxSelfDamage; + private BoolSetting preferXbow; + private IntSetting switchDelay; + private BoolSetting silentAim; + private FloatSetting silentAimFov; + private BoolSetting render; + private static final Item[] RAIL_ITEMS = new Item[]{Items.RAIL, Items.POWERED_RAIL, Items.DETECTOR_RAIL, Items.ACTIVATOR_RAIL}; + private CartCatchState state = CartCatchState.IDLE; + private UUID pearlUuid; + private Set handledPearls = new HashSet(); + private int cartX; + private int cartY; + private int cartZ; + private BlockPos firePos; + private boolean useCrossbow; + private int previousSlot = -1; + private int delayTicks = 0; + private int activeTicks = 0; + private int aimWaitTicks = 0; + private int pendingCartSlot = -1; + private boolean holdingUseKey = false; + private Rotation shotRotation; + private int shotFlightTicks = -1; + private static final Identifier CART_TEXTURE_ID = Identifier.of("minecraft", "textures/item/tnt_minecart.png"); + private static GlTextureHandle cartTexture; public CartPearlCatch() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.h.setVisibility_FloatSetting(new Object[]{(Predicate)lpL317_0 -> (Boolean)this.g.getValue(), 35046756052036L}); + this.silentAimFov.visibleWhen((Predicate)ignored -> this.silentAim.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Cart); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - this.j(new Object[0]); - this.m.clear(); - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + this.resetState(); + this.handledPearls.clear(); + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 83012844419172L; - long var6 = var2 ^ 140372736859409L; - this.m(new Object[]{var4}); - Prestige.o.f(new Object[]{this, var6}); - this.j(new Object[0]); + public void onDisable() { + this.releaseUseKey(); + Prestige.silentRotationManager.removeRotationProvider(this); + this.resetState(); } - private void j(Object[] var1) { - this.k = FireState.IDLE; - this.l = null; - this.q = null; - this.s = -1; - this.t = 0; - this.u = 0; - this.v = 0; - this.w = -1; - this.y = null; - this.z = -1; + private void resetState() { + this.state = CartCatchState.IDLE; + this.pearlUuid = null; + this.firePos = null; + this.previousSlot = -1; + this.delayTicks = 0; + this.activeTicks = 0; + this.aimWaitTicks = 0; + this.pendingCartSlot = -1; + this.shotRotation = null; + this.shotFlightTicks = -1; } @Subscribe - public void a(TickEvent3 var1) { - this.m.clear(); + public void onGameJoin(GameJoinEvent event) { + this.handledPearls.clear(); } - private void k(Object[] var1) { - String var2 = (String)var1[0]; - if (b.player != null) { - b.player.sendMessage(Text.literal("§7[CartPearlCatch] §f" + var2), false); + private void printMessage(String message) { + if (mc.player != null) { + mc.player.sendMessage(Text.literal("§7[CartPearlCatch] §f" + message), false); } } - private void l(Object[] var1) { - String var2 = (String)var1[0]; - long var3 = (Long)var1[1]; - var3 = 57555634897493L ^ var3; - long var5 = var3 ^ 16090892033783L; - long var7 = var3 ^ 92977459443455L; - Event.b(); - this.k(new Object[]{"aborted: " + var2, var7}); - if (this.l != null) { - this.m.add(this.l); + private void abort(String reason) { + this.printMessage("aborted: " + reason); + if (this.pearlUuid != null) { + this.handledPearls.add(this.pearlUuid); } - this.m(new Object[]{var5}); - this.j(new Object[0]); + this.releaseUseKey(); + this.resetState(); } - private void m(Object[] var1) { - if (this.x) { - this.x = false; - b.options.useKey.setPressed(false); - if (b.player != null && b.player.isUsingItem()) { - b.interactionManager.stopUsingItem(b.player); + private void releaseUseKey() { + if (this.holdingUseKey) { + this.holdingUseKey = false; + mc.options.useKey.setPressed(false); + if (mc.player != null && mc.player.isUsingItem()) { + mc.interactionManager.stopUsingItem(mc.player); } } } - private VecIntData2 a_VecIntData2(Object[] var1) { - EnderPearlEntity var4 = (EnderPearlEntity)var1[0]; - double var6 = var4.getX(); - Event.b(); - double var8 = var4.getY(); - double var10 = var4.getZ(); - Vec3d var12 = var4.getVelocity(); - double var13 = var12.x; - double var15 = var12.y; - double var17 = var12.z; + private CartCatchPearlLanding predictLanding(EnderPearlEntity pearl) { + double posX = pearl.getX(); + double posY = pearl.getY(); + double posZ = pearl.getZ(); + Vec3d velocity = pearl.getVelocity(); + double motionX = velocity.x; + double motionY = velocity.y; + double motionZ = velocity.z; - for (int var19 = 1; var19 <= 200; var19++) { - Vec3d var20 = new Vec3d(var6, var8, var10); - var6 += var13; - var8 += var15; - var10 += var17; - var13 *= 0.99; - var17 *= 0.99; - var15 = var15 * 0.99 - 0.03; - BlockHitResult var21 = b.world.raycast(new RaycastContext(var20, new Vec3d(var6, var8, var10), ShapeType.OUTLINE, FluidHandling.NONE, var4)); - if (var21 != null && var21.getType() == Type.BLOCK) { - return new VecIntData2(var21.getPos(), var19); + for (int tick = 1; tick <= 200; tick++) { + Vec3d prevPos = new Vec3d(posX, posY, posZ); + posX += motionX; + posY += motionY; + posZ += motionZ; + motionX *= 0.99; + motionZ *= 0.99; + motionY = motionY * 0.99 - 0.03; + BlockHitResult hit = mc.world.raycast(new RaycastContext(prevPos, new Vec3d(posX, posY, posZ), ShapeType.OUTLINE, FluidHandling.NONE, pearl)); + if (hit != null && hit.getType() == Type.BLOCK) { + return new CartCatchPearlLanding(hit.getPos(), tick); } - if (var8 < -65.0) { + if (posY < -65.0) { break; } } @@ -200,11 +179,11 @@ public class CartPearlCatch extends Module implements RenderContract3 { return null; } - private EnderPearlEntity a_class_1684_(Object[] var1) { - if (this.l != null && b.world != null) { - for (Entity var6 : b.world.getEntities()) { - if (var6 instanceof EnderPearlEntity var7 && var6.getUuid().equals(this.l)) { - return var7; + private EnderPearlEntity findTrackedPearl() { + if (this.pearlUuid != null && mc.world != null) { + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EnderPearlEntity pearl && entity.getUuid().equals(this.pearlUuid)) { + return pearl; } } @@ -214,77 +193,47 @@ public class CartPearlCatch extends Module implements RenderContract3 { } } - private double a_double______(Object[] var1) { - Vec3d var7 = (Vec3d)var1[0]; - Vec3d var6 = (Vec3d)var1[1]; - double var2 = (Double)var1[2]; - double var9 = var2 * 2.0; - Event.b(); - double var11 = Math.sqrt(var7.squaredDistanceTo(var6)); - double var13 = var11 / var9; - if (var13 > 1.0) { + private double estimateExplosionDamage(Vec3d targetPos, Vec3d explosionPos, double power) { + double explosionDiameter = power * 2.0; + double distanceRatio = Math.sqrt(targetPos.squaredDistanceTo(explosionPos)) / explosionDiameter; + if (distanceRatio > 1.0) { return 0.0; } else { - int var15 = 0; + int visibleRays = 0; - for (double var19 : new double[]{0.2, 1.0, 1.7}) { - Vec3d var21 = var7.add(0.0, var19, 0.0); - BlockHitResult var22 = b.world.raycast(new RaycastContext(var6, var21, ShapeType.COLLIDER, FluidHandling.NONE, b.player)); - if (var22 == null || var22.getType() == Type.MISS) { - var15++; + for (double heightOffset : new double[]{0.2, 1.0, 1.7}) { + Vec3d samplePos = targetPos.add(0.0, heightOffset, 0.0); + BlockHitResult hit = mc.world.raycast(new RaycastContext(explosionPos, samplePos, ShapeType.COLLIDER, FluidHandling.NONE, mc.player)); + if (hit == null || hit.getType() == Type.MISS) { + visibleRays++; } } - double var23 = (1.0 - var13) * (var15 / 3.0); - return (var23 * var23 + var23) / 2.0 * 7.0 * var9 + 1.0; + double impact = (1.0 - distanceRatio) * (visibleRays / 3.0); + return (impact * impact + impact) / 2.0 * 7.0 * explosionDiameter + 1.0; } } - private BlockPos a_class_2338____(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - long var2 = (Long)var1[1]; - var2 = 57555634897493L ^ var2; - long var5 = var2 ^ 55318463579930L; - long var7 = var2 ^ 68011556437821L; - long var9 = var2 ^ 133643832525828L; - double var12 = this.r ? 6.4 : 6.25; - double var14 = this.r ? 3.15 : 3.0; - short var10000 = 25142; - BlockPos var16 = BlockPos.ofFloored(var4); - long var10001 = 3235896888934859824L ^ var2; - BlockPos var17 = null; - double var18 = ((Float)this.c.getValue()).floatValue(); + private BlockPos findBestCartPos(Vec3d landing) { + double explosionPower = this.useCrossbow ? 6.4 : 6.25; + double arrowSpeed = this.useCrossbow ? 3.15 : 3.0; + BlockPos landingBlock = BlockPos.ofFloored(landing); + BlockPos bestPos = null; + double bestDamage = this.minDamage.getValue().floatValue(); - for (int var20 = -4; var20 <= 4; var20++) { - for (int var21 = -1; var21 <= 2; var21++) { - for (int var22 = -4; var22 <= 4; var22++) { - BlockPos var23 = var16.add(var20, var21, var22); - BlockPos var24 = var23.up(); - if (!b.world.getBlockState(var23).isReplaceable() && b.world.getBlockState(var24).isReplaceable()) { - double var30 = var24.getX() + 0.5; - double var10002 = var24.getY() + 0.5; - double var10003 = var24.getZ() + 0.5; - Object[] var10006 = new Object[]{null, null, null, var7}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var30; - if (this.f(var10006)) { - Vec3d var25 = new Vec3d(var24.getX() + 0.5, var24.getY() + 0.0625, var24.getZ() + 0.5); - DamageUtil var29 = Prestige.f; - ClientPlayerEntity var31 = b.player; - var10006 = new Object[]{null, null, null, var5}; - var10006[2] = var14; - var10006[1] = var25; - var10006[0] = var31; - if (!(var29.g(var10006) > ((Float)this.d.getValue()).floatValue())) { - var10006 = new Object[]{null, null, null, var9}; - var10006[2] = var12; - var10006[1] = var25; - var10006[0] = var4; - double var26 = this.a_double______(var10006); - if (var26 >= var18) { - var18 = var26; - var17 = var24; + for (int dx = -4; dx <= 4; dx++) { + for (int dy = -1; dy <= 2; dy++) { + for (int dz = -4; dz <= 4; dz++) { + BlockPos floorPos = landingBlock.add(dx, dy, dz); + BlockPos railPos = floorPos.up(); + if (!mc.world.getBlockState(floorPos).isReplaceable() && mc.world.getBlockState(railPos).isReplaceable()) { + if (this.isInReach(railPos.getX() + 0.5, railPos.getY() + 0.5, railPos.getZ() + 0.5)) { + Vec3d cartCenter = new Vec3d(railPos.getX() + 0.5, railPos.getY() + 0.0625, railPos.getZ() + 0.5); + if (!(Prestige.damageCalculator.getTntCartDamage(mc.player, cartCenter, arrowSpeed) > this.maxSelfDamage.getValue().floatValue())) { + double damage = this.estimateExplosionDamage(landing, cartCenter, explosionPower); + if (damage >= bestDamage) { + bestDamage = damage; + bestPos = railPos; } } } @@ -293,109 +242,88 @@ public class CartPearlCatch extends Module implements RenderContract3 { } } - return var17; + return bestPos; } - private int a_int__________(Object[] var1) { - float var6 = (Float)var1[0]; - float var2 = (Float)var1[1]; - float var3 = (Float)var1[2]; - Event.b(); - Vec3d var8 = b.player.getEyePos(); - double var9 = var8.x; - double var11 = var8.y - 0.1; - double var13 = var8.z; - double var15 = Math.toRadians(var6); - double var17 = Math.toRadians(var2); - double var19 = -Math.sin(var15) * Math.cos(var17); - double var21 = -Math.sin(var17); - double var23 = Math.cos(var15) * Math.cos(var17); - double var25 = Math.sqrt(var19 * var19 + var21 * var21 + var23 * var23); - double var27 = Math.min(var3, 1.05F) * 3.0; - var19 = var19 / var25 * var27; - var21 = var21 / var25 * var27; - var23 = var23 / var25 * var27; - var19 += b.player.getVelocity().x; - var23 += b.player.getVelocity().z; - if (!b.player.isOnGround()) { - var21 += b.player.getVelocity().y; + private int simulateArrowFlight(float yaw, float pitch, float pullProgress) { + Vec3d eyePos = mc.player.getEyePos(); + double arrowX = eyePos.x; + double arrowY = eyePos.y - 0.1; + double arrowZ = eyePos.z; + double yawRad = Math.toRadians(yaw); + double pitchRad = Math.toRadians(pitch); + double motionX = -Math.sin(yawRad) * Math.cos(pitchRad); + double motionY = -Math.sin(pitchRad); + double motionZ = Math.cos(yawRad) * Math.cos(pitchRad); + double length = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); + double speed = Math.min(pullProgress, 1.05F) * 3.0; + motionX = motionX / length * speed; + motionY = motionY / length * speed; + motionZ = motionZ / length * speed; + motionX += mc.player.getVelocity().x; + motionZ += mc.player.getVelocity().z; + if (!mc.player.isOnGround()) { + motionY += mc.player.getVelocity().y; } - Box var29 = new Box(this.n + 0.01, this.o + 0.0625, this.p + 0.01, this.n + 0.99, this.o + 0.7625, this.p + 0.99); - BlockPos var30 = new BlockPos(this.n, this.o, this.p); + Box cartBox = new Box(this.cartX + 0.01, this.cartY + 0.0625, this.cartZ + 0.01, this.cartX + 0.99, this.cartY + 0.7625, this.cartZ + 0.99); + BlockPos cartBlock = new BlockPos(this.cartX, this.cartY, this.cartZ); - for (int var31 = 1; var31 <= 60; var31++) { - Vec3d var32 = new Vec3d(var9, var11, var13); - double var33 = Math.sqrt(var19 * var19 + var21 * var21 + var23 * var23); - int var35 = Math.max(1, (int)Math.ceil(var33 / 0.25)); + for (int tick = 1; tick <= 60; tick++) { + Vec3d prevPos = new Vec3d(arrowX, arrowY, arrowZ); + int substeps = Math.max(1, (int)Math.ceil(Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ) / 0.25)); - for (int var36 = 0; var36 < var35; var36++) { - var9 += var19 / var35; - var11 += var21 / var35; - var13 += var23 / var35; - if (var29.contains(var9, var11, var13)) { - return var31; + for (int step = 0; step < substeps; step++) { + arrowX += motionX / substeps; + arrowY += motionY / substeps; + arrowZ += motionZ / substeps; + if (cartBox.contains(arrowX, arrowY, arrowZ)) { + return tick; } } - Vec3d var43 = new Vec3d(var9, var11, var13); - BlockHitResult var37 = b.world.raycast(new RaycastContext(var32, var43, ShapeType.OUTLINE, FluidHandling.NONE, b.player)); - if (var37 != null && var37.getType() == Type.BLOCK && !var37.getBlockPos().equals(var30)) { + Vec3d nextPos = new Vec3d(arrowX, arrowY, arrowZ); + BlockHitResult hit = mc.world.raycast(new RaycastContext(prevPos, nextPos, ShapeType.OUTLINE, FluidHandling.NONE, mc.player)); + if (hit != null && hit.getType() == Type.BLOCK && !hit.getBlockPos().equals(cartBlock)) { return -1; } - if (var11 < this.o - 3) { + if (arrowY < this.cartY - 3) { return -1; } - var19 *= 0.99; - var23 *= 0.99; - var21 = var21 * 0.99 - 0.05; + motionX *= 0.99; + motionZ *= 0.99; + motionY = motionY * 0.99 - 0.05; } return -1; } - private RenderBatch b_RenderBatch_(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - Vec3d var6 = b.player.getEyePos(); - Event.b(); - double var7 = var2.x - var6.x; - double var9 = var2.y - (var6.y - 0.1); - double var11 = var2.z - var6.z; - double var13 = Math.sqrt(var7 * var7 + var9 * var9 + var11 * var11); - if (var13 < 1.0E-6) { + private Rotation getAimRotation(Vec3d target) { + Vec3d eyePos = mc.player.getEyePos(); + double deltaX = target.x - eyePos.x; + double deltaY = target.y - (eyePos.y - 0.1); + double deltaZ = target.z - eyePos.z; + double distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); + if (distance < 1.0E-6) { return null; } else { - float var15 = (float)(Math.toDegrees(Math.atan2(var11, var7)) - 90.0); - float var16 = (float)(-Math.toDegrees(Math.asin(var9 / var13))); - return new RenderBatch(var15, var16); + return new Rotation((float)(Math.toDegrees(Math.atan2(deltaZ, deltaX)) - 90.0), (float)(-Math.toDegrees(Math.asin(deltaY / distance)))); } } - private boolean a_boolean___________________(Object[] var1) { - float var4 = (Float)var1[0]; - long var2 = (Long)var1[1]; - var2 = 57555634897493L ^ var2; - long var5 = var2 ^ 71076682851812L; - long var7 = var2 ^ 120219321038427L; - Vec3d var10 = new Vec3d(this.n + 0.5, this.o + 0.45, this.p + 0.5); - double[] var11 = new double[]{0.0, 0.15, 0.3, 0.5, 0.8, 1.2, 1.8, 2.6}; - Event.b(); + private boolean solveShot(float pullProgress) { + Vec3d cartCenter = new Vec3d(this.cartX + 0.5, this.cartY + 0.45, this.cartZ + 0.5); + double[] heightOffsets = new double[]{0.0, 0.15, 0.3, 0.5, 0.8, 1.2, 1.8, 2.6}; - for (double var14 : var11) { - RenderBatch var16 = this.b_RenderBatch_(new Object[]{var10.add(0.0, var14, 0.0), var7}); - if (var16 != null) { - float var10001 = var16.a(new Object[0]); - float var10002 = var16.b(new Object[0]); - Object[] var10006 = new Object[]{null, null, null, var5}; - var10006[2] = var4; - var10006[1] = var10002; - var10006[0] = var10001; - int var17 = this.a_int__________(var10006); - if (var17 != -1) { - this.y = var16; - this.z = var17; + for (double heightOffset : heightOffsets) { + Rotation rotation = this.getAimRotation(cartCenter.add(0.0, heightOffset, 0.0)); + if (rotation != null) { + int flightTicks = this.simulateArrowFlight(rotation.getYaw(), rotation.getPitch(), pullProgress); + if (flightTicks != -1) { + this.shotRotation = rotation; + this.shotFlightTicks = flightTicks; return true; } } @@ -404,527 +332,429 @@ public class CartPearlCatch extends Module implements RenderContract3 { return false; } - private BlockPos b_class_2338(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - long var2 = (Long)var1[1]; - var2 = 57555634897493L ^ var2; - long var5 = var2 ^ 111447218500322L; - long var7 = var2 ^ 134189818566232L; - Event.b(); - RenderBatch var10 = this.b_RenderBatch_(new Object[]{var4, var5}); - if (var10 == null) { + private BlockPos findFireSpot(Vec3d target) { + Rotation rotation = this.getAimRotation(target); + if (rotation == null) { return null; } else { - Vec3d var11 = b.player.getEyePos(); - double var12 = var11.x; - double var14 = var11.y - 0.1; - double var16 = var11.z; - double var18 = Math.toRadians(var10.a(new Object[0])); - double var20 = Math.toRadians(var10.b(new Object[0])); - double var22 = -Math.sin(var18) * Math.cos(var20); - double var24 = -Math.sin(var20); - double var26 = Math.cos(var18) * Math.cos(var20); - double var28 = Math.sqrt(var22 * var22 + var24 * var24 + var26 * var26); - var22 = var22 / var28 * 3.15; - var24 = var24 / var28 * 3.15; - var26 = var26 / var28 * 3.15; - var22 += b.player.getVelocity().x; - var26 += b.player.getVelocity().z; - if (!b.player.isOnGround()) { - var24 += b.player.getVelocity().y; + Vec3d eyePos = mc.player.getEyePos(); + double arrowX = eyePos.x; + double arrowY = eyePos.y - 0.1; + double arrowZ = eyePos.z; + double yawRad = Math.toRadians(rotation.getYaw()); + double pitchRad = Math.toRadians(rotation.getPitch()); + double motionX = -Math.sin(yawRad) * Math.cos(pitchRad); + double motionY = -Math.sin(pitchRad); + double motionZ = Math.cos(yawRad) * Math.cos(pitchRad); + double length = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); + motionX = motionX / length * 3.15; + motionY = motionY / length * 3.15; + motionZ = motionZ / length * 3.15; + motionX += mc.player.getVelocity().x; + motionZ += mc.player.getVelocity().z; + if (!mc.player.isOnGround()) { + motionY += mc.player.getVelocity().y; } - BlockPos var30 = new BlockPos(this.n, this.o, this.p); - Box var31 = b.player.getBoundingBox().expand(0.3); + BlockPos cartBlock = new BlockPos(this.cartX, this.cartY, this.cartZ); + Box playerBox = mc.player.getBoundingBox().expand(0.3); - for (int var32 = 0; var32 < 60; var32++) { - double var33 = Math.sqrt(var22 * var22 + var24 * var24 + var26 * var26); - int var35 = Math.max(1, (int)Math.ceil(var33 / 0.25)); + for (int tick = 0; tick < 60; tick++) { + int substeps = Math.max(1, (int)Math.ceil(Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ) / 0.25)); - for (int var36 = 0; var36 < var35; var36++) { - var12 += var22 / var35; - var14 += var24 / var35; - var16 += var26 / var35; - BlockPos var37 = BlockPos.ofFloored(var12, var14, var16); - if (var37.equals(var30) || var37.equals(var30.up())) { + for (int step = 0; step < substeps; step++) { + arrowX += motionX / substeps; + arrowY += motionY / substeps; + arrowZ += motionZ / substeps; + BlockPos stepBlock = BlockPos.ofFloored(arrowX, arrowY, arrowZ); + if (stepBlock.equals(cartBlock) || stepBlock.equals(cartBlock.up())) { return null; } - if (!var31.intersects(new Box(var37))) { - double var10001 = var37.getX() + 0.5; - double var10002 = var37.getY(); - double var10003 = var37.getZ() + 0.5; - Object[] var10006 = new Object[]{null, null, null, var7}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - if (this.f(var10006) - && b.world.getBlockState(var37).isReplaceable() - && b.world.getBlockState(var37.down()).isSideSolidFullSquare(b.world, var37.down(), Direction.UP)) { - return var37; + if (!playerBox.intersects(new Box(stepBlock))) { + double centerX = stepBlock.getX() + 0.5; + double bottomY = stepBlock.getY(); + if (this.isInReach(centerX, bottomY, stepBlock.getZ() + 0.5) + && mc.world.getBlockState(stepBlock).isReplaceable() + && mc.world.getBlockState(stepBlock.down()).isSideSolidFullSquare(mc.world, stepBlock.down(), Direction.UP)) { + return stepBlock; } } } - var22 *= 0.99; - var26 *= 0.99; - var24 = var24 * 0.99 - 0.05; + motionX *= 0.99; + motionZ *= 0.99; + motionY = motionY * 0.99 - 0.05; } return null; } } - private boolean d(Object[] var1) { - float var2 = (Float)var1[0]; - float var5 = (Float)var1[1]; - Vec3d var7 = b.player.getEyePos(); - double var8 = var7.x; - double var10 = var7.y - 0.1; - double var12 = var7.z; - double var14 = Math.toRadians(var2); - Event.b(); - double var16 = Math.toRadians(var5); - double var18 = -Math.sin(var14) * Math.cos(var16); - double var20 = -Math.sin(var16); - double var22 = Math.cos(var14) * Math.cos(var16); - double var24 = Math.sqrt(var18 * var18 + var20 * var20 + var22 * var22); - var18 = var18 / var24 * 3.15; - var20 = var20 / var24 * 3.15; - var22 = var22 / var24 * 3.15; - var18 += b.player.getVelocity().x; - var22 += b.player.getVelocity().z; - if (!b.player.isOnGround()) { - var20 += b.player.getVelocity().y; + private boolean shotPassesThroughFire(float yaw, float pitch) { + Vec3d eyePos = mc.player.getEyePos(); + double arrowX = eyePos.x; + double arrowY = eyePos.y - 0.1; + double arrowZ = eyePos.z; + double yawRad = Math.toRadians(yaw); + double pitchRad = Math.toRadians(pitch); + double motionX = -Math.sin(yawRad) * Math.cos(pitchRad); + double motionY = -Math.sin(pitchRad); + double motionZ = Math.cos(yawRad) * Math.cos(pitchRad); + double length = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); + motionX = motionX / length * 3.15; + motionY = motionY / length * 3.15; + motionZ = motionZ / length * 3.15; + motionX += mc.player.getVelocity().x; + motionZ += mc.player.getVelocity().z; + if (!mc.player.isOnGround()) { + motionY += mc.player.getVelocity().y; } - Box var26 = new Box(this.n + 0.01, this.o + 0.0625, this.p + 0.01, this.n + 0.99, this.o + 0.7625, this.p + 0.99); - BlockPos var27 = new BlockPos(this.n, this.o, this.p); - Box var28 = this.q != null ? new Box(this.q) : null; - boolean var29 = false; + Box cartBox = new Box(this.cartX + 0.01, this.cartY + 0.0625, this.cartZ + 0.01, this.cartX + 0.99, this.cartY + 0.7625, this.cartZ + 0.99); + BlockPos cartBlock = new BlockPos(this.cartX, this.cartY, this.cartZ); + Box fireBox = this.firePos != null ? new Box(this.firePos) : null; + boolean ignited = false; - for (int var30 = 0; var30 < 60; var30++) { - Vec3d var31 = new Vec3d(var8, var10, var12); - double var32 = Math.sqrt(var18 * var18 + var20 * var20 + var22 * var22); - int var34 = Math.max(1, (int)Math.ceil(var32 / 0.25)); + for (int tick = 0; tick < 60; tick++) { + Vec3d prevPos = new Vec3d(arrowX, arrowY, arrowZ); + int substeps = Math.max(1, (int)Math.ceil(Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ) / 0.25)); - for (int var35 = 0; var35 < var34; var35++) { - var8 += var18 / var34; - var10 += var20 / var34; - var12 += var22 / var34; - if (!var29 && var28 != null && var28.contains(var8, var10, var12)) { - var29 = true; + for (int step = 0; step < substeps; step++) { + arrowX += motionX / substeps; + arrowY += motionY / substeps; + arrowZ += motionZ / substeps; + if (!ignited && fireBox != null && fireBox.contains(arrowX, arrowY, arrowZ)) { + ignited = true; } - if (var26.contains(var8, var10, var12)) { - return var29; + if (cartBox.contains(arrowX, arrowY, arrowZ)) { + return ignited; } } - Vec3d var42 = new Vec3d(var8, var10, var12); - BlockHitResult var36 = b.world.raycast(new RaycastContext(var31, var42, ShapeType.OUTLINE, FluidHandling.NONE, b.player)); - if (var36 != null && var36.getType() == Type.BLOCK && !var36.getBlockPos().equals(var27)) { + Vec3d nextPos = new Vec3d(arrowX, arrowY, arrowZ); + BlockHitResult hit = mc.world.raycast(new RaycastContext(prevPos, nextPos, ShapeType.OUTLINE, FluidHandling.NONE, mc.player)); + if (hit != null && hit.getType() == Type.BLOCK && !hit.getBlockPos().equals(cartBlock)) { return false; } - if (var10 < this.o - 3) { + if (arrowY < this.cartY - 3) { return false; } - var18 *= 0.99; - var22 *= 0.99; - var20 = var20 * 0.99 - 0.05; + motionX *= 0.99; + motionZ *= 0.99; + motionY = motionY * 0.99 - 0.05; } return false; } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null && b.player != null) { - if (this.k == FireState.IDLE) { - this.o(new Object[]{29002719073789L}); - } else if (++this.u > 100) { - this.l(new Object[]{"timed out", 94718932046755L}); + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { + if (this.state == CartCatchState.IDLE) { + this.scanForPearls(); + } else if (++this.activeTicks > 100) { + this.abort("timed out"); } else { - switch (this.k) { + switch (this.state) { case ARMED: - EnderPearlEntity var58 = this.a_class_1684_(new Object[]{58875298170324L}); - if (var58 == null) { - this.l(new Object[]{"too late — the pearl already landed", 94718932046755L}); + EnderPearlEntity pearl = this.findTrackedPearl(); + if (pearl == null) { + this.abort("too late — the pearl already landed"); return; } - int var63 = this.c(new Object[]{var58, 140618963028407L}); - if (this.r) { - Object[] var81 = new Object[]{null, 64929107332566L}; - var81[0] = 1.05F; - this.a_boolean___________________(var81); - if (var63 <= this.d_int___(new Object[]{131259633732523L}) + Math.max(this.z, 0)) { - this.k = FireState.SWITCH_RAIL; + int ticksLeft = this.getTicksUntilLanding(pearl); + if (this.useCrossbow) { + this.solveShot(1.05F); + if (ticksLeft <= this.getLeadTicks() + Math.max(this.shotFlightTicks, 0)) { + this.state = CartCatchState.SWITCH_RAIL; } - } else if (var63 <= this.d_int___(new Object[]{131259633732523L}) + 20) { - this.k = FireState.SWITCH_RAIL; + } else if (ticksLeft <= this.getLeadTicks() + 20) { + this.state = CartCatchState.SWITCH_RAIL; } break; case SWITCH_RAIL: - int var57 = this.e_int__(new Object[]{64280958659869L}); - if (var57 == -1) { - this.l(new Object[]{"no rail in hotbar", 94718932046755L}); + int railSlot = this.findRailSlot(); + if (railSlot == -1) { + this.abort("no rail in hotbar"); return; } - double var70 = this.n + 0.5; - double var73 = this.o + 0.5; - double var79 = this.p + 0.5; - Object[] var83 = new Object[]{null, null, null, 137802499562850L}; - var83[2] = var79; - var83[1] = var73; - var83[0] = var70; - if (!this.f(var83)) { - this.l(new Object[]{"placement out of reach", 94718932046755L}); + if (!this.isInReach(this.cartX + 0.5, this.cartY + 0.5, this.cartZ + 0.5)) { + this.abort("placement out of reach"); return; } - BlockPos var62 = new BlockPos(this.n, this.o - 1, this.p); - Object[] var80 = new Object[]{null, 37392877673079L}; - var80[0] = var57; - InventoryUtil.a_void________(var80); - this.p(new Object[]{new BlockHitResult(new Vec3d(this.n + 0.5, this.o, this.p + 0.5), Direction.UP, var62, false), 44089689467500L}); - this.t = (Integer)this.f.getValue(); - this.k = FireState.SWITCH_CART; + BlockPos railSupport = new BlockPos(this.cartX, this.cartY - 1, this.cartZ); + InventoryUtil.selectSlot(railSlot); + this.clickBlock(new BlockHitResult(new Vec3d(this.cartX + 0.5, this.cartY, this.cartZ + 0.5), Direction.UP, railSupport, false)); + this.delayTicks = this.switchDelay.getValue(); + this.state = CartCatchState.SWITCH_CART; break; case SWITCH_CART: - if (this.t > 0) { - this.t--; + if (this.delayTicks > 0) { + this.delayTicks--; return; } - Integer var56 = this.a_Integer__(new Object[]{106761166356357L}); - if (var56 == null) { - this.l(new Object[]{"no TNT carts", 94718932046755L}); + Integer cartSlot = this.findTntCartSlot(); + if (cartSlot == null) { + this.abort("no TNT carts"); return; } - if (b.player.getInventory().getStack(var56).getItem() != Items.TNT_MINECART) { + if (mc.player.getInventory().getStack(cartSlot).getItem() != Items.TNT_MINECART) { return; } - double var69 = this.n + 0.5; - double var72 = this.o + 0.5; - double var77 = this.p + 0.5; - Object[] var82 = new Object[]{null, null, null, 137802499562850L}; - var82[2] = var77; - var82[1] = var72; - var82[0] = var69; - if (!this.f(var82)) { - this.l(new Object[]{"cart out of reach", 94718932046755L}); + if (!this.isInReach(this.cartX + 0.5, this.cartY + 0.5, this.cartZ + 0.5)) { + this.abort("cart out of reach"); return; } - int var66 = var56; - Object[] var78 = new Object[]{null, 37392877673079L}; - var78[0] = var66; - InventoryUtil.a_void________(var78); - InventoryUtil2.a( - new Object[]{ - new BlockHitResult( - new Vec3d(this.n + 0.5, this.o + 0.125, this.p + 0.5), Direction.UP, new BlockPos(this.n, this.o, this.p), false - ), - 96519249476482L - } + InventoryUtil.selectSlot(cartSlot); + PlayerInteractions.interactBlock( + new BlockHitResult( + new Vec3d(this.cartX + 0.5, this.cartY + 0.125, this.cartZ + 0.5), Direction.UP, new BlockPos(this.cartX, this.cartY, this.cartZ), false + ) ); - if (this.r) { - this.t = (Integer)this.f.getValue(); - this.k = FireState.SWITCH_FIRE; + if (this.useCrossbow) { + this.delayTicks = this.switchDelay.getValue(); + this.state = CartCatchState.SWITCH_FIRE; } else { - this.k = FireState.SWITCH_BOW; + this.state = CartCatchState.SWITCH_BOW; } break; case SWITCH_FIRE: - if (this.t > 0) { - this.t--; + if (this.delayTicks > 0) { + this.delayTicks--; return; } - if (this.q == null) { - this.q = this.b_class_2338(new Object[]{new Vec3d(this.n + 0.5, this.o + 0.45, this.p + 0.5), 56107612670319L}); - if (this.q == null) { - this.l(new Object[]{"no fire spot on the shot path", 94718932046755L}); + if (this.firePos == null) { + this.firePos = this.findFireSpot(new Vec3d(this.cartX + 0.5, this.cartY + 0.45, this.cartZ + 0.5)); + if (this.firePos == null) { + this.abort("no fire spot on the shot path"); return; } } - int var55 = this.f_int(new Object[]{75954783929944L}); - if (var55 == -1) { - this.l(new Object[]{"lost the flint & steel", 94718932046755L}); + int flintSlot = this.findFlintAndSteelSlot(); + if (flintSlot == -1) { + this.abort("lost the flint & steel"); return; } - BlockPos var61 = this.q.down(); - Object[] var76 = new Object[]{null, 37392877673079L}; - var76[0] = var55; - InventoryUtil.a_void________(var76); - this.p( - new Object[]{ - new BlockHitResult(new Vec3d(var61.getX() + 0.5, var61.getY() + 1.0, var61.getZ() + 0.5), Direction.UP, var61, false), - 44089689467500L - } + BlockPos fireSupport = this.firePos.down(); + InventoryUtil.selectSlot(flintSlot); + this.clickBlock( + new BlockHitResult(new Vec3d(fireSupport.getX() + 0.5, fireSupport.getY() + 1.0, fireSupport.getZ() + 0.5), Direction.UP, fireSupport, false) ); - this.t = (Integer)this.f.getValue(); - this.k = FireState.SWITCH_XBOW; + this.delayTicks = this.switchDelay.getValue(); + this.state = CartCatchState.SWITCH_XBOW; break; case SWITCH_XBOW: - if (this.t > 0) { - this.t--; + if (this.delayTicks > 0) { + this.delayTicks--; return; } - int var54 = this.g(new Object[]{81774609946785L}); - if (var54 == -1) { - this.l(new Object[]{"no charged crossbow", 94718932046755L}); + int crossbowSlot = this.findChargedCrossbowSlot(); + if (crossbowSlot == -1) { + this.abort("no charged crossbow"); return; } - Object[] var75 = new Object[]{null, 37392877673079L}; - var75[0] = var54; - InventoryUtil.a_void________(var75); - this.v = 0; - this.k = FireState.FIRE; + InventoryUtil.selectSlot(crossbowSlot); + this.aimWaitTicks = 0; + this.state = CartCatchState.FIRE; break; case FIRE: - RenderBatch var53 = this.b_RenderBatch_(new Object[]{new Vec3d(this.n + 0.5, this.o + 0.45, this.p + 0.5), 107767014652376L}); - if (var53 != null) { - float var67 = var53.a(new Object[0]); - float var10002 = var53.b(new Object[0]); - Object[] var10005 = new Object[]{null, null, 97740287203088L}; - var10005[1] = var10002; - var10005[0] = var67; - if (this.d(var10005)) { - this.y = var53; - var67 = var53.a(new Object[0]); - var10002 = var53.b(new Object[0]); - Object[] var10006 = new Object[]{null, null, null, 87897028061799L}; - var10006[2] = 1.05F; - var10006[1] = var10002; - var10006[0] = var67; - int var50 = this.a_int__________(var10006); - if (var50 != -1) { - this.z = var50; + Rotation aimRotation = this.getAimRotation(new Vec3d(this.cartX + 0.5, this.cartY + 0.45, this.cartZ + 0.5)); + if (aimRotation != null) { + if (this.shotPassesThroughFire(aimRotation.getYaw(), aimRotation.getPitch())) { + this.shotRotation = aimRotation; + int flightTicks = this.simulateArrowFlight(aimRotation.getYaw(), aimRotation.getPitch(), 1.05F); + if (flightTicks != -1) { + this.shotFlightTicks = flightTicks; } } } - if (this.y == null) { - this.l(new Object[]{"no firing line through the fire", 94718932046755L}); + if (this.shotRotation == null) { + this.abort("no firing line through the fire"); return; } - if (!InventoryUtil.l(new Object[]{Items.CROSSBOW, 65539821781598L})) { - int var60 = this.g(new Object[]{81774609946785L}); - if (var60 == -1) { - this.l(new Object[]{"crossbow lost its charge", 94718932046755L}); + if (!InventoryUtil.isHolding(Items.CROSSBOW)) { + int chargedCrossbowSlot = this.findChargedCrossbowSlot(); + if (chargedCrossbowSlot == -1) { + this.abort("crossbow lost its charge"); return; } - Object[] var74 = new Object[]{null, 37392877673079L}; - var74[0] = var60; - InventoryUtil.a_void________(var74); + InventoryUtil.selectSlot(chargedCrossbowSlot); return; } - if (!this.e(new Object[]{40873392269738L})) { + if (!this.shouldFireNow()) { return; } - RenderBatch var59 = Prestige.o.c(new Object[0]); - if (var59 != null && var59.a_boolean________________________________________(new Object[0]) && this.v++ < 5) { + Rotation xbowActiveRotation = Prestige.silentRotationManager.getActiveRotation(); + if (xbowActiveRotation != null && xbowActiveRotation.isClamped() && this.aimWaitTicks++ < 5) { return; } - b.interactionManager.interactItem(b.player, Hand.MAIN_HAND); - Prestige.o.g(new Object[]{true}); - this.n(new Object[]{25573606183585L}); + mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND); + Prestige.silentRotationManager.setActedThisTick(true); + this.finishCatch(); break; case SWITCH_BOW: - Integer var52 = InventoryUtil.a_Integer(new Object[]{Items.BOW, 64376993919254L}); - if (var52 == null) { - this.l(new Object[]{"no bow in hotbar", 94718932046755L}); + Integer bowSlot = InventoryUtil.findHotbarSlot(Items.BOW); + if (bowSlot == null) { + this.abort("no bow in hotbar"); return; } - int var64 = var52; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var64; - InventoryUtil.a_void________(var10003); - this.k = FireState.USE_BOW; + InventoryUtil.selectSlot(bowSlot); + this.state = CartCatchState.USE_BOW; break; case USE_BOW: - b.options.useKey.setPressed(true); - b.interactionManager.interactItem(b.player, Hand.MAIN_HAND); - this.x = true; - this.k = FireState.CHARGE_WAIT; + mc.options.useKey.setPressed(true); + mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND); + this.holdingUseKey = true; + this.state = CartCatchState.CHARGE_WAIT; break; case CHARGE_WAIT: - if (!b.options.useKey.isPressed()) { - b.options.useKey.setPressed(true); + if (!mc.options.useKey.isPressed()) { + mc.options.useKey.setPressed(true); } - int var51 = b.player.getItemUseTime(); - if (var51 >= 3) { - float var10001 = BowItem.getPullProgress(var51); - Object[] var10004 = new Object[]{null, 64929107332566L}; - var10004[0] = var10001; - this.a_boolean___________________(var10004); + int useTime = mc.player.getItemUseTime(); + if (useTime >= 3) { + this.solveShot(BowItem.getPullProgress(useTime)); } - if (this.y == null && var51 >= 30) { - this.l(new Object[]{"no firing line at the cart", 94718932046755L}); + if (this.shotRotation == null && useTime >= 30) { + this.abort("no firing line at the cart"); return; } - if (this.y != null && (this.e(new Object[]{40873392269738L}) || var51 >= 30)) { - this.v = 0; - this.k = FireState.RELEASE; + if (this.shotRotation != null && (this.shouldFireNow() || useTime >= 30)) { + this.aimWaitTicks = 0; + this.state = CartCatchState.RELEASE; } break; case RELEASE: - if (this.y == null) { - this.l(new Object[]{"no firing line at the cart", 94718932046755L}); + if (this.shotRotation == null) { + this.abort("no firing line at the cart"); return; } - if (!this.e(new Object[]{40873392269738L}) && b.player.getItemUseTime() < 30) { - if (!b.options.useKey.isPressed()) { - b.options.useKey.setPressed(true); + if (!this.shouldFireNow() && mc.player.getItemUseTime() < 30) { + if (!mc.options.useKey.isPressed()) { + mc.options.useKey.setPressed(true); } return; } - RenderBatch var49 = Prestige.o.c(new Object[0]); - if (var49 != null && var49.a_boolean________________________________________(new Object[0]) && this.v++ < 5) { - if (!b.options.useKey.isPressed()) { - b.options.useKey.setPressed(true); + Rotation bowActiveRotation = Prestige.silentRotationManager.getActiveRotation(); + if (bowActiveRotation != null && bowActiveRotation.isClamped() && this.aimWaitTicks++ < 5) { + if (!mc.options.useKey.isPressed()) { + mc.options.useKey.setPressed(true); } return; } - this.x = false; - b.options.useKey.setPressed(false); - if (b.player.isUsingItem()) { - b.interactionManager.stopUsingItem(b.player); + this.holdingUseKey = false; + mc.options.useKey.setPressed(false); + if (mc.player.isUsingItem()) { + mc.interactionManager.stopUsingItem(mc.player); } - this.n(new Object[]{25573606183585L}); + this.finishCatch(); } } } } - private int c(Object[] var1) { - EnderPearlEntity var4 = (EnderPearlEntity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 57555634897493L ^ var2; - long var5 = var2 ^ 21919088601415L; - Event.b(); - VecIntData2 var8 = this.a_VecIntData2(new Object[]{var4, var5}); - return var8 != null ? var8.aB() : 0; + private int getTicksUntilLanding(EnderPearlEntity pearl) { + CartCatchPearlLanding landing = this.predictLanding(pearl); + return landing != null ? landing.ticksUntilLanding() : 0; } - private int d_int___(Object[] var1) { - Event.b(); - int var5 = (Integer)this.f.getValue(); - return this.r ? 3 * var5 + 4 : var5 + 2; + private int getLeadTicks() { + int switchTicks = this.switchDelay.getValue(); + return this.useCrossbow ? 3 * switchTicks + 4 : switchTicks + 2; } - private boolean e(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 57555634897493L ^ var2; - long var4 = var2 ^ 40681293835819L; - long var6 = var2 ^ 80434472716634L; - if (this.z < 0) { + private boolean shouldFireNow() { + if (this.shotFlightTicks < 0) { return false; } else { - EnderPearlEntity var9 = this.a_class_1684_(new Object[]{var4}); - if (var9 == null) { + EnderPearlEntity pearl = this.findTrackedPearl(); + if (pearl == null) { return true; } else { - VecIntData2 var10 = this.a_VecIntData2(new Object[]{var9, var6}); - return var10 == null || var10.aB() <= this.z + 1; + CartCatchPearlLanding landing = this.predictLanding(pearl); + return landing == null || landing.ticksUntilLanding() <= this.shotFlightTicks + 1; } } } - private void n(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 57555634897493L ^ var2; - long var4 = var2 ^ 1206142028419L; - if (this.l != null) { - this.m.add(this.l); + private void finishCatch() { + if (this.pearlUuid != null) { + this.handledPearls.add(this.pearlUuid); } - if (this.s != -1) { - int var10000 = this.s; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + if (this.previousSlot != -1) { + InventoryUtil.selectSlot(this.previousSlot); } - this.j(new Object[0]); + this.resetState(); } - private void o(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 57555634897493L ^ var2; - long var4 = var2 ^ 62266675344930L; - long var6 = var2 ^ 34400800056215L; - long var8 = var2 ^ 110396454932233L; - long var10 = var2 ^ 22767088068286L; - long var12 = var2 ^ 22327863294645L; - long var14 = var2 ^ 130204902028557L; - long var16 = var2 ^ 117839239483888L; - long var18 = var2 ^ 87004403312685L; - long var20 = var2 ^ 23319315749502L; - long var22 = var2 ^ 92455324790796L; - long var24 = var2 ^ 99983372384162L; - if (this.e_int__(new Object[]{var12}) != -1) { - for (Entity var28 : b.world.getEntities()) { - if (var28 instanceof EnderPearlEntity var29 && !this.m.contains(var29.getUuid())) { - double var30 = ((Float)this.a.getValue()).floatValue(); - Vec3d var32 = b.player.getEyePos(); - double var33 = var29.getX() - var32.x; - double var35 = var29.getY() - var32.y; - double var37 = var29.getZ() - var32.z; - if (!(var33 * var33 + var35 * var35 + var37 * var37 > var30 * var30) - && var29.getOwner() instanceof PlayerEntity var39 - && !var39.equals(b.player) - && Prestige.i.a_boolean_(new Object[]{var39, var6}) - && !Prestige.g.a(new Object[]{var39.getName().getString(), var4})) { - VecIntData2 var44 = this.a_VecIntData2(new Object[]{var29, var14}); - if (var44 != null && var44.aB() <= 100) { - boolean var41 = (Boolean)this.e.getValue() && this.g(new Object[]{var8}) != -1 && this.f_int(new Object[]{var16}) != -1; - if ((var41 || InventoryUtil.a_Integer(new Object[]{Items.BOW, var10}) != null) && this.a_Integer__(new Object[]{var18}) != null) { - this.r = var41; - BlockPos var42 = this.a_class_2338____(new Object[]{var44.aA(), var24}); - if (var42 != null) { - this.l = var29.getUuid(); - this.n = var42.getX(); - this.o = var42.getY(); - this.p = var42.getZ(); - float var10001 = var41 ? 1.05F : 1.0F; - Object[] var10004 = new Object[]{null, var20}; - var10004[0] = var10001; - if (this.a_boolean___________________(var10004)) { - this.s = InventoryUtil.a_int_____(new Object[]{var22}); - this.u = 0; - this.t = 0; - this.k = FireState.ARMED; + private void scanForPearls() { + if (this.findRailSlot() != -1) { + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EnderPearlEntity pearl && !this.handledPearls.contains(pearl.getUuid())) { + double range = this.scanRange.getValue().floatValue(); + Vec3d eyePos = mc.player.getEyePos(); + double dx = pearl.getX() - eyePos.x; + double dy = pearl.getY() - eyePos.y; + double dz = pearl.getZ() - eyePos.z; + if (!(dx * dx + dy * dy + dz * dz > range * range) + && pearl.getOwner() instanceof PlayerEntity thrower + && !thrower.equals(mc.player) + && Prestige.botFilter.isValidTarget(thrower) + && !Prestige.friendManager.isFriend(thrower.getName().getString())) { + CartCatchPearlLanding landing = this.predictLanding(pearl); + if (landing != null && landing.ticksUntilLanding() <= 100) { + boolean canUseCrossbow = this.preferXbow.getValue() && this.findChargedCrossbowSlot() != -1 && this.findFlintAndSteelSlot() != -1; + if ((canUseCrossbow || InventoryUtil.findHotbarSlot(Items.BOW) != null) && this.findTntCartSlot() != null) { + this.useCrossbow = canUseCrossbow; + BlockPos cartPos = this.findBestCartPos(landing.landingPos()); + if (cartPos != null) { + this.pearlUuid = pearl.getUuid(); + this.cartX = cartPos.getX(); + this.cartY = cartPos.getY(); + this.cartZ = cartPos.getZ(); + if (this.solveShot(canUseCrossbow ? 1.05F : 1.0F)) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.activeTicks = 0; + this.delayTicks = 0; + this.state = CartCatchState.ARMED; return; } - this.l = null; + this.pearlUuid = null; } } } @@ -935,45 +765,34 @@ public class CartPearlCatch extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 51598816251400L; - long var6 = var2 ^ 101816702374277L; - if (b.player != null && b.world != null && (Boolean)this.g.getValue()) { - if (this.y == null - || this.k != FireState.FIRE - && this.k != FireState.RELEASE - && this.k != FireState.SWITCH_XBOW - && this.k != FireState.SWITCH_BOW - && this.k != FireState.USE_BOW - && this.k != FireState.CHARGE_WAIT) { - Vec3d var12 = null; - if (this.k == FireState.SWITCH_RAIL || this.k == FireState.SWITCH_CART) { - var12 = new Vec3d(this.n + 0.5, this.o + 0.5, this.p + 0.5); - } else if (this.k == FireState.SWITCH_FIRE && this.q != null) { - var12 = this.q.toCenterPos(); + public Rotation provideRotation() { + if (mc.player != null && mc.world != null && this.silentAim.getValue()) { + if (this.shotRotation == null + || this.state != CartCatchState.FIRE + && this.state != CartCatchState.RELEASE + && this.state != CartCatchState.SWITCH_XBOW + && this.state != CartCatchState.SWITCH_BOW + && this.state != CartCatchState.USE_BOW + && this.state != CartCatchState.CHARGE_WAIT) { + Vec3d aimPoint = null; + if (this.state == CartCatchState.SWITCH_RAIL || this.state == CartCatchState.SWITCH_CART) { + aimPoint = new Vec3d(this.cartX + 0.5, this.cartY + 0.5, this.cartZ + 0.5); + } else if (this.state == CartCatchState.SWITCH_FIRE && this.firePos != null) { + aimPoint = this.firePos.toCenterPos(); } - if (var12 != null) { - RenderBatch var10 = Prestige.o.a_RenderBatch(new Object[]{var12, var6}); - if (var10 != null) { - float var13 = var10.a(new Object[0]) - b.player.getYaw(); - Object[] var14 = new Object[]{null, var4}; - var14[0] = var13; - float var11 = Math.abs(WorldUtil.b_float_____________________(var14)); - if (var11 <= (Float)this.h.getValue()) { - return var10; + if (aimPoint != null) { + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + if (rotation != null) { + if (Math.abs(RotationUtil.wrapDegrees(rotation.getYaw() - mc.player.getYaw())) <= this.silentAimFov.getValue()) { + return rotation; } } } return null; } else { - float var10000 = this.y.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var10000; - float var9 = Math.abs(WorldUtil.b_float_____________________(var10003)); - return var9 <= this.h.getValue() ? this.y : null; + return Math.abs(RotationUtil.wrapDegrees(this.shotRotation.getYaw() - mc.player.getYaw())) <= this.silentAimFov.getValue() ? this.shotRotation : null; } } else { return null; @@ -981,93 +800,50 @@ public class CartPearlCatch extends Module implements RenderContract3 { } @Subscribe - public void a(TickEvent25 var1) { - if ((Boolean)this.i.getValue()) { - if (b.currentScreen == null || b.currentScreen instanceof ChatScreen) { - if (b.world != null && b.player != null) { - if (this.k != FireState.IDLE) { - if (B == null) { - B = FontRenderer.d_FontRenderer(new Object[]{A, 15872041225672L}); + public void onRender2D(Render2DEvent event) { + if (this.render.getValue()) { + if (mc.currentScreen == null || mc.currentScreen instanceof ChatScreen) { + if (mc.world != null && mc.player != null) { + if (this.state != CartCatchState.IDLE) { + if (cartTexture == null) { + cartTexture = GlTextureHandle.wrapMinecraftTexture(CART_TEXTURE_ID); } - EnderPearlEntity var30 = this.a_class_1684_(new Object[]{58875298170324L}); - String var29 = var30 == null ? "!" : String.format("%.1fs", this.c(new Object[]{var30, 140618963028407L}) / 20.0F); - Vec3d var31 = MatrixStack.a_class_243_______________(new Object[]{new Vec3d(this.n + 0.5, this.o + 0.8, this.p + 0.5), 73023576373275L}); - if (!(var31.z < 0.0) && !(var31.z >= 1.0)) { - Font var32 = Prestige.c.a(new Object[]{1236438218049L}); - float var33 = var32.c_float___(new Object[]{78913221670390L}); - float var34 = 16.0F; - float var35 = 3.0F; - float var36 = 0.5F; - float var37 = 4.0F; - float var38 = 3.0F; - float var39 = 5.0F; - float var40 = var32.a_float______________(new Object[]{var29, 47859522476307L}); - float var41 = Math.max(var34, var40); - float var42 = var34 + var35 + var36 + var35 + var33; - float var43 = var41 + 2.0F * var37; - float var44 = var42 + 2.0F * var38; - float var45 = (float)var31.x; - float var46 = (float)var31.y; - float var47 = var45 - var43 / 2.0F; - float var48 = var46 - var44 / 2.0F; - Matrix4f var49 = new Matrix4f(); - Color var50 = new Color(14, 14, 14, 200); - Color var51 = new Color(255, 255, 255, 50); - Color var52 = new Color(255, 255, 255, 255); - RenderHelper8 var10000 = var1.a; - MatrixCameraData var10001 = var1.b; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 35553070502242L}; - var10011[8] = var39; - var10011[7] = 5; - var10011[6] = var44; - var10011[5] = var43; - var10011[4] = var48; - var10011[3] = var47; - var10011[2] = var49; - var10011[1] = var10001; - var10011[0] = var10000; - RenderTarget.e(var10011); - var10000 = var1.a; - var10001 = var1.b; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 16042616216793L}; - var10011[8] = var39; - var10011[7] = var50; - var10011[6] = var44; - var10011[5] = var43; - var10011[4] = var48; - var10011[3] = var47; - var10011[2] = var49; - var10011[1] = var10001; - var10011[0] = var10000; - RoundedPosColorShader.c(var10011); - float var53 = var45 - var34 / 2.0F; - float var54 = var48 + var38; - Object[] var10009 = new Object[]{null, null, null, null, var49, B, var52, 73467207830142L}; - var10009[3] = var34; - var10009[2] = var34; - var10009[1] = var54; - var10009[0] = var53; - MatrixStack.v(var10009); - float var55 = var47 + var37; - float var56 = var47 + var43 - var37; - float var57 = var54 + var34 + var35; - float var10004 = var57 + var36; - Object[] var10008 = new Object[]{null, null, null, null, null, var51, 43912076835818L}; - var10008[4] = var10004; - var10008[3] = var56; - var10008[2] = var57; - var10008[1] = var55; - var10008[0] = var49; - RenderState.l(var10008); - float var58 = var45 - var40 / 2.0F; - float var59 = var57 + var36 + var35; - var10008 = new Object[]{null, null, null, null, var52, 36494305523424L}; - var10008[3] = var59; - var10008[2] = var58; - var10008[1] = var29; - var10008[0] = var49; - var32.v(var10008); + EnderPearlEntity pearl = this.findTrackedPearl(); + String etaText = pearl == null ? "!" : String.format("%.1fs", this.getTicksUntilLanding(pearl) / 20.0F); + Vec3d screenPos = Render2D.worldToScreen(new Vec3d(this.cartX + 0.5, this.cartY + 0.8, this.cartZ + 0.5)); + if (!(screenPos.z < 0.0) && !(screenPos.z >= 1.0)) { + MsdfFont font = Prestige.fontManager.getDefaultFont(); + float lineHeight = font.getLineHeight(); + float iconSize = 16.0F; + float lineGap = 3.0F; + float dividerHeight = 0.5F; + float paddingX = 4.0F; + float paddingY = 3.0F; + float cornerRadius = 5.0F; + float etaWidth = font.getTextWidth(etaText); + float contentWidth = Math.max(iconSize, etaWidth); + float contentHeight = iconSize + lineGap + dividerHeight + lineGap + lineHeight; + float boxWidth = contentWidth + 2.0F * paddingX; + float boxHeight = contentHeight + 2.0F * paddingY; + float centerX = (float)screenPos.x; + float centerY = (float)screenPos.y; + float boxX = centerX - boxWidth / 2.0F; + float boxY = centerY - boxHeight / 2.0F; + Matrix4f matrix = new Matrix4f(); + Color backgroundColor = new Color(14, 14, 14, 200); + Color dividerColor = new Color(255, 255, 255, 50); + Color textColor = new Color(255, 255, 255, 255); + BlurredRoundedRectShader.drawBlurredRect(event.renderer, event.context, matrix, boxX, boxY, boxWidth, boxHeight, 5, cornerRadius); + RoundedRectShader.drawRoundedRect(event.renderer, event.context, matrix, boxX, boxY, boxWidth, boxHeight, backgroundColor, cornerRadius); + float iconX = centerX - iconSize / 2.0F; + float iconY = boxY + paddingY; + Render2D.drawTexture(iconX, iconY, iconSize, iconSize, matrix, cartTexture, textColor); + float dividerLeft = boxX + paddingX; + float dividerRight = boxX + boxWidth - paddingX; + float dividerY = iconY + iconSize + lineGap; + ShapeRenderer.drawRect(matrix, dividerLeft, dividerY, dividerRight, dividerY + dividerHeight, dividerColor); + font.drawText(matrix, etaText, centerX - etaWidth / 2.0F, dividerY + dividerHeight + lineGap, textColor); } } } @@ -1075,39 +851,29 @@ public class CartPearlCatch extends Module implements RenderContract3 { } } - private void p(Object[] var1) { - BlockHitResult var2 = (BlockHitResult)var1[0]; - if (b.interactionManager.interactBlock(b.player, Hand.MAIN_HAND, var2).isAccepted()) { - b.player.swingHand(Hand.MAIN_HAND); - Prestige.o.g(new Object[]{true}); + private void clickBlock(BlockHitResult hit) { + if (mc.interactionManager.interactBlock(mc.player, Hand.MAIN_HAND, hit).isAccepted()) { + mc.player.swingHand(Hand.MAIN_HAND); + Prestige.silentRotationManager.setActedThisTick(true); } } - private boolean f(Object[] var1) { - double var2 = (Double)var1[0]; - double var4 = (Double)var1[1]; - double var6 = (Double)var1[2]; - long var8 = (Long)var1[3]; - var8 = 57555634897493L ^ var8; - long var10 = var8 ^ 96828947016113L; - Vec3d var13 = b.player.getEyePos(); - Event.b(); - double var14 = InventoryUtil2.b_float_____(new Object[]{var10}); - double var16 = var2 - var13.x; - double var18 = var4 - var13.y; - double var20 = var6 - var13.z; - return var16 * var16 + var18 * var18 + var20 * var20 <= var14 * var14; + private boolean isInReach(double targetX, double targetY, double targetZ) { + Vec3d eyePos = mc.player.getEyePos(); + double reach = PlayerInteractions.getReachDistance(); + double dx = targetX - eyePos.x; + double dy = targetY - eyePos.y; + double dz = targetZ - eyePos.z; + return dx * dx + dy * dy + dz * dz <= reach * reach; } - private int e_int__(Object[] var1) { - Event.b(); + private int findRailSlot() { + for (int slot = 0; slot < 9; slot++) { + Item item = mc.player.getInventory().getStack(slot).getItem(); - for (int var5 = 0; var5 < 9; var5++) { - Item var6 = b.player.getInventory().getStack(var5).getItem(); - - for (Item var10 : j) { - if (var6 == var10) { - return var5; + for (Item railItem : RAIL_ITEMS) { + if (item == railItem) { + return slot; } } } @@ -1115,29 +881,25 @@ public class CartPearlCatch extends Module implements RenderContract3 { return -1; } - private int f_int(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 < 9; var5++) { - if (b.player.getInventory().getStack(var5).getItem() == Items.FLINT_AND_STEEL) { - return var5; + private int findFlintAndSteelSlot() { + for (int slot = 0; slot < 9; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == Items.FLINT_AND_STEEL) { + return slot; } } return -1; } - private int g(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 < 9; var5++) { - ItemStack var6 = b.player.getInventory().getStack(var5); - if (var6.getItem() == Items.CROSSBOW) { - ChargedProjectilesComponent var7 = var6.get(DataComponentTypes.CHARGED_PROJECTILES); - if (var7 != null) { - for (ItemStack var9 : var7.getProjectiles()) { - if (var9.getItem() == Items.ARROW || var9.getItem() == Items.SPECTRAL_ARROW) { - return var5; + private int findChargedCrossbowSlot() { + for (int slot = 0; slot < 9; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack.getItem() == Items.CROSSBOW) { + ChargedProjectilesComponent chargedProjectiles = stack.get(DataComponentTypes.CHARGED_PROJECTILES); + if (chargedProjectiles != null) { + for (ItemStack projectile : chargedProjectiles.getProjectiles()) { + if (projectile.getItem() == Items.ARROW || projectile.getItem() == Items.SPECTRAL_ARROW) { + return slot; } } } @@ -1147,128 +909,50 @@ public class CartPearlCatch extends Module implements RenderContract3 { return -1; } - private Integer a_Integer__(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 57555634897493L ^ var2; - long var4 = var2 ^ 122926755187910L; - long var6 = var2 ^ 52156261161588L; - long var8 = var2 ^ 5395714251314L; - long var10 = var2 ^ 48480068358095L; - Event.b(); - Integer var13 = InventoryUtil.a_Integer(new Object[]{Items.TNT_MINECART, var4}); - if (var13 != null) { - this.w = -1; - return var13; + private Integer findTntCartSlot() { + Integer hotbarSlot = InventoryUtil.findHotbarSlot(Items.TNT_MINECART); + if (hotbarSlot != null) { + this.pendingCartSlot = -1; + return hotbarSlot; } else { - int var14 = -1; + int cartInvSlot = -1; - for (int var15 = 9; var15 < 36; var15++) { - if (b.player.getInventory().getStack(var15).getItem() == Items.TNT_MINECART) { - var14 = var15; + for (int slot = 9; slot < 36; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == Items.TNT_MINECART) { + cartInvSlot = slot; break; } } - if (var14 == -1) { + if (cartInvSlot == -1) { return null; } else { - int var19 = InventoryUtil.a_int_____(new Object[]{var6}); - int var16 = -1; + int selectedSlot = InventoryUtil.getSelectedSlot(); + int emptySlot = -1; - for (int var17 = 0; var17 < 9; var17++) { - if (var17 != var19 && b.player.getInventory().getStack(var17).isEmpty()) { - var16 = var17; + for (int hotbarIndex = 0; hotbarIndex < 9; hotbarIndex++) { + if (hotbarIndex != selectedSlot && mc.player.getInventory().getStack(hotbarIndex).isEmpty()) { + emptySlot = hotbarIndex; break; } } - if (var16 == -1) { + if (emptySlot == -1) { return null; } else { - if (this.w != -1) { - if (Prestige.u != null && Prestige.u.a_boolean____________________________________(new Object[]{var8})) { - return this.w; + if (this.pendingCartSlot != -1) { + if (Prestige.inventorySwapQueue != null && Prestige.inventorySwapQueue.hasPendingSwaps()) { + return this.pendingCartSlot; } - this.w = -1; + this.pendingCartSlot = -1; } - Object[] var10004 = new Object[]{null, null, var10}; - var10004[1] = var16; - var10004[0] = var14; - InventoryUtil.f(var10004); - this.w = var16; - return var16; + InventoryUtil.swapSlot(cartInvSlot, emptySlot); + this.pendingCartSlot = emptySlot; + return emptySlot; } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/CobwebPlacer.java b/src/main/java/dev/zprestige/prestige/module/combat/CobwebPlacer.java index 9c7a35c..4250da5 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/CobwebPlacer.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/CobwebPlacer.java @@ -10,38 +10,32 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.TickEvent27; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.Render3DEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.network.PacketQueue; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderUtil6; -import dev.zprestige.prestige.type.PacketResult; -import dev.zprestige.prestige.type.PlaceState; -import dev.zprestige.prestige.world.CobwebPlacerHelper; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.SwapBackTracker; +import dev.zprestige.prestige.type.SwapQueueResult; +import dev.zprestige.prestige.type.CobwebPlaceState; +import dev.zprestige.prestige.world.CobwebSwitchBackTask; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.List; import java.util.Set; import java.util.UUID; import java.util.function.Predicate; -import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.screen.slot.SlotActionType; import net.minecraft.util.hit.BlockHitResult; @@ -51,157 +45,130 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class CobwebPlacer extends Module implements RenderContract3 { - private static final double a = 0.08; - private static final double c = 0.91; - private static final double d = 0.98; - private static final double e = 0.999; - private EnumSetting f; - private FloatSetting g; - private RangeSetting h; - private IntSetting i; - private BoolSetting j; - private IntSetting k; - private BoolSetting l; - private EnumSetting m; - private IntSetting n; - private EnumSetting o; - private BoolSetting p; - private BoolSetting q; - private EnumSetting r; - private IntSetting s; - private BoolSetting t; - private ColorSetting u; - private RenderHelper27 v = new RenderHelper27(26293358099357L); - private int w = 0; - private Integer x = null; - private Vec3d y = null; - private UUID z = null; - private int A = 0; - private int B = -1; - private int C = -1; - private int D = -1; - public boolean E = false; - public boolean F = false; - private Object G = null; +public class CobwebPlacer extends Module implements RotationProvider { + private EnumSetting mode; + private FloatSetting targetRange; + private RangeSetting delay; + private IntSetting leadTicks; + private BoolSetting onlyWhenFalling; + private IntSetting maxWebsPerFall; + private BoolSetting silent; + private EnumSetting switchBack; + private IntSetting switchSlot; + private EnumSetting swapMode; + private BoolSetting fromInventory; + private BoolSetting headTrap; + private EnumSetting autoSwitchBack; + private IntSetting autoSwitchSlot; + private BoolSetting render; + private ColorSetting renderColor; + private StopWatch delayTimer = new StopWatch(); + private int manualStage = 0; + private Integer manualOriginalSlot = null; + private Vec3d predictedPlacePos = null; + private UUID fallTargetUuid = null; + private int websThisFall = 0; + private int originalSlot = -1; + private int expectedSlot = -1; + private int switchBackSlot = -1; + public boolean switchBackPending = false; + public boolean switchBackScheduled = false; + private Object swapWorld = null; public CobwebPlacer() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.l.setVisibility_BoolSetting(new Object[]{(Predicate)lpL176_0 -> ((String)this.f.getValue()).equals("Manual"), 73196168581295L}); - this.n - .setVisibility_IntSetting( - new Object[]{ - (Predicate)lpL174_0 -> ((String)this.f.getValue()).equals("Manual") - && !(Boolean)this.l.getValue() - && ((String)this.m.getValue()).equals("Slot"), - 98265949679296L - } + this.silent.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Manual")); + this.switchSlot + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Manual") + && !this.silent.getValue() + && this.switchBack.getValue().equals("Slot") ); - this.m - .setVisibility_EnumSetting( - new Object[]{(Predicate)lpL175_0 -> ((String)this.f.getValue()).equals("Manual") && !(Boolean)this.l.getValue(), 90319707064974L} + this.switchBack + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Manual") && !this.silent.getValue() ); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public boolean b(Object[] var1) { - return "Auto".equals(this.f.getValue()); + public boolean isPersistent() { + return "Auto".equals(this.mode.getValue()); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 39963010439486L; - long var6 = var2 ^ 91082959635357L; - this.w = 0; - Event.b(); - this.x = null; - this.y = null; - this.z = null; - this.A = 0; - if (!this.E) { - this.p(new Object[]{var4}); - } else if (this.G != b.world) { - this.p(new Object[]{var4}); + public void onEnable() { + this.manualStage = 0; + this.manualOriginalSlot = null; + this.predictedPlacePos = null; + this.fallTargetUuid = null; + this.websThisFall = 0; + if (!this.switchBackPending) { + this.releaseSwap(); + } else if (this.swapWorld != mc.world) { + this.releaseSwap(); } - Prestige.o.e(new Object[]{this, var6}); + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - long var6 = var2 ^ 56527593523101L; - this.n(new Object[]{var6}); - this.w = 0; - this.x = null; - this.y = null; - this.z = null; - this.A = 0; - Prestige.o.f(new Object[]{this, var4}); + public void onDisable() { + this.finishSwitchBack(); + this.manualStage = 0; + this.manualOriginalSlot = null; + this.predictedPlacePos = null; + this.fallTargetUuid = null; + this.websThisFall = 0; + Prestige.silentRotationManager.removeRotationProvider(this); } @Subscribe - public void a(FloatEvent2 var1) { - if (!((String)this.f.getValue()).equals("Auto")) { - if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem()) { - if (!Prestige.o.d_boolean______(new Object[0])) { - if (this.v.b(new Object[]{this.h, 89714527855213L})) { - if (b.crosshairTarget instanceof BlockHitResult var21) { - if (b.world.getBlockState(var21.getBlockPos()).isReplaceable()) { - this.toggle(new Object[]{115103427876780L}); + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (!this.mode.getValue().equals("Auto")) { + if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem()) { + if (!Prestige.silentRotationManager.hasActedThisTick()) { + if (this.delayTimer.hasElapsedRandom(this.delay)) { + if (mc.crosshairTarget instanceof BlockHitResult blockHit) { + if (mc.world.getBlockState(blockHit.getBlockPos()).isReplaceable()) { + this.toggle(); } else { - if ((Boolean)this.l.getValue()) { - Block var10000 = Blocks.COBWEB; - Runnable var10001 = () -> InventoryUtil2.a(new Object[]{var21, 96519249476482L}); - boolean var10002 = (Boolean)this.l.getValue(); - Object[] var10005 = new Object[]{null, null, null, 135286962703597L}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var10000; - if (InventoryUtil.k(var10005)) { - this.toggle(new Object[]{115103427876780L}); + if (this.silent.getValue()) { + if (InventoryUtil.runWithBlock(Blocks.COBWEB, () -> PlayerInteractions.interactBlock(blockHit), this.silent.getValue())) { + this.toggle(); } } else { - switch (this.w) { + switch (this.manualStage) { case 0: - this.x = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - if (!InventoryUtil.i(new Object[]{Blocks.COBWEB, 33415164545344L})) { - this.toggle(new Object[]{115103427876780L}); + this.manualOriginalSlot = InventoryUtil.getSelectedSlot(); + if (!InventoryUtil.switchToBlock(Blocks.COBWEB)) { + this.toggle(); return; } - this.s(new Object[]{29220901753974L}); + this.advanceManualStage(); break; case 1: - InventoryUtil2.a(new Object[]{var21, 96519249476482L}); - this.s(new Object[]{29220901753974L}); + PlayerInteractions.interactBlock(blockHit); + this.advanceManualStage(); break; case 2: - if (((String)this.m.getValue()).equals("Slot")) { - int var23 = (Integer)this.n.getValue() - 1; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var23; - InventoryUtil.a_void________(var10003); - } else if (((String)this.m.getValue()).equals("Original")) { - int var24 = this.x; - Object[] var25 = new Object[]{null, 37392877673079L}; - var25[0] = var24; - InventoryUtil.a_void________(var25); + if (this.switchBack.getValue().equals("Slot")) { + InventoryUtil.selectSlot(this.switchSlot.getValue() - 1); + } else if (this.switchBack.getValue().equals("Original")) { + InventoryUtil.selectSlot(this.manualOriginalSlot); } - this.toggle(new Object[]{115103427876780L}); + this.toggle(); } } } } else { - this.toggle(new Object[]{115103427876780L}); + this.toggle(); } } } @@ -210,155 +177,123 @@ public class CobwebPlacer extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 35169069234686L; - long var6 = var2 ^ 92268617212551L; - long var8 = var2 ^ 29247161167908L; - long var10 = var2 ^ 89744056802368L; - long var12 = var2 ^ 125420266980053L; - long var14 = var2 ^ 29142186185547L; - long var16 = var2 ^ 119646042442835L; - long var18 = var2 ^ 17054052230717L; - long var20 = var2 ^ 136752692109656L; - long var22 = var2 ^ 114124981852069L; - long var24 = var2 ^ 58982489950237L; - long var26 = var2 ^ 71343916077473L; - long var28 = var2 ^ 127616945565159L; - long var30 = var2 ^ 46949571541433L; - long var32 = var2 ^ 114164831697321L; - long var34 = var2 ^ 116785209433731L; - long var36 = var2 ^ 83235255851133L; - long var38 = var2 ^ 26324604509057L; - long var40 = var2 ^ 51598816251400L; - long var42 = var2 ^ 33065978990036L; - long var44 = var2 ^ 102249493874797L; - long var46 = var2 ^ 103998936193343L; - long var48 = var2 ^ 101816702374277L; - long var50 = var2 ^ 78799625056005L; - if (!((String)this.f.getValue()).equals("Auto")) { - this.y = null; - this.m(new Object[]{var16}); - this.d(new Object[]{var22}); + public Rotation provideRotation() { + if (!this.mode.getValue().equals("Auto")) { + this.predictedPlacePos = null; + this.restoreOriginalSlot(); + this.processSwitchBack(); return null; - } else if (b.player != null && b.world != null) { - if (this.B == -1 - || this.G == b.world - && RenderUtil6.a_boolean____________________________________________(new Object[]{this}) - && (this.C == -1 || InventoryUtil.a_int_____(new Object[]{var24}) == this.C)) { - if (this.d(new Object[]{var22})) { + } else if (mc.player != null && mc.world != null) { + if (this.originalSlot == -1 + || this.swapWorld == mc.world + && SwapBackTracker.isOwner(this) + && (this.expectedSlot == -1 || InventoryUtil.getSelectedSlot() == this.expectedSlot)) { + if (this.processSwitchBack()) { return null; - } else if (b.currentScreen != null || !b.isWindowFocused() || b.player.isUsingItem()) { - return this.b_RenderBatch__(new Object[]{var44}); - } else if (Prestige.o.d_boolean______(new Object[0])) { + } else if (mc.currentScreen != null || !mc.isWindowFocused() || mc.player.isUsingItem()) { + return this.restoreAndSkip(); + } else if (Prestige.silentRotationManager.hasActedThisTick()) { return null; - } else if (!this.v.b(new Object[]{this.h, var42})) { + } else if (!this.delayTimer.hasElapsedRandom(this.delay)) { return null; } else { - PlayerEntity var53 = CombatUtil.a_class_1657(new Object[]{var26}); - if (var53 == null || b.player.distanceTo(var53) > (Float)this.g.getValue()) { - this.y = null; - return this.b_RenderBatch__(new Object[]{var44}); - } else if (WorldUtil2.a(new Object[]{var53, var32})) { - this.y = null; - return this.b_RenderBatch__(new Object[]{var44}); + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy == null || mc.player.distanceTo(enemy) > this.targetRange.getValue()) { + this.predictedPlacePos = null; + return this.restoreAndSkip(); + } else if (BlockUtil.isCobwebInLineOfSight(enemy)) { + this.predictedPlacePos = null; + return this.restoreAndSkip(); } else { - Integer var54 = InventoryUtil.d(new Object[]{Blocks.COBWEB, var50}); - int var55 = -1; - if (var54 == null && (Boolean)this.p.getValue()) { - Item var10000 = Items.COBWEB; - Object[] var10004 = new Object[]{null, null, var4}; - var10004[1] = false; - var10004[0] = var10000; - List var56 = InventoryUtil.b_List(var10004); - if (!var56.isEmpty()) { - var55 = (Integer)var56.get(0); + Integer hotbarSlot = InventoryUtil.findBlockSlot(Blocks.COBWEB); + int inventorySlot = -1; + if (hotbarSlot == null && this.fromInventory.getValue()) { + List inventorySlots = InventoryUtil.collectInventorySlots(Items.COBWEB, false); + if (!inventorySlots.isEmpty()) { + inventorySlot = (Integer)inventorySlots.get(0); } } - if (var54 == null && var55 == -1) { - this.y = null; - return this.b_RenderBatch__(new Object[]{var44}); + if (hotbarSlot == null && inventorySlot == -1) { + this.predictedPlacePos = null; + return this.restoreAndSkip(); } else { - boolean var92 = ((String)this.o.getValue()).equals("None"); - if (var92 && !InventoryUtil.l(new Object[]{Items.COBWEB, var28}) && var55 == -1) { - this.y = null; - return this.b_RenderBatch__(new Object[]{var44}); + boolean noSwap = this.swapMode.getValue().equals("None"); + if (noSwap && !InventoryUtil.isHolding(Items.COBWEB) && inventorySlot == -1) { + this.predictedPlacePos = null; + return this.restoreAndSkip(); } else { - Vec3d var57; - if (!(Boolean)this.j.getValue()) { - var57 = this.a_class_243_________(new Object[]{var53, var18}); + Vec3d predictedPos; + if (!this.onlyWhenFalling.getValue()) { + predictedPos = this.predictPlacePos(enemy); } else { - if (this.z == null - || !this.z.equals(var53.getUuid()) - || PositionUtil.a_double___________(new Object[]{var53, var30}) < 0.3F) { - this.z = var53.getUuid(); - this.A = 0; + if (this.fallTargetUuid == null + || !this.fallTargetUuid.equals(enemy.getUuid()) + || PositionUtil.getHeightAboveGround(enemy) < 0.3F) { + this.fallTargetUuid = enemy.getUuid(); + this.websThisFall = 0; } - if (this.A >= (Integer)this.k.getValue()) { - this.y = null; - return this.b_RenderBatch__(new Object[]{var44}); + if (this.websThisFall >= this.maxWebsPerFall.getValue()) { + this.predictedPlacePos = null; + return this.restoreAndSkip(); } - var57 = this.b_class_243___(new Object[]{var53, var36}); - if (var57 == null || var57.y >= PositionUtil.a(new Object[]{var53, var12}).y - 0.5) { - this.y = null; - return this.b_RenderBatch__(new Object[]{var44}); + predictedPos = this.predictFallLanding(enemy); + if (predictedPos == null || predictedPos.y >= PositionUtil.getEntityPos(enemy).y - 0.5) { + this.predictedPlacePos = null; + return this.restoreAndSkip(); } } - if (var57 == null) { - return this.b_RenderBatch__(new Object[]{var44}); + if (predictedPos == null) { + return this.restoreAndSkip(); } else { - this.y = var57; - BlockPos var58 = BlockPos.ofFloored(var57.x, var57.y, var57.z); - BlockPos[] var59 = this.q.getValue() ? new BlockPos[]{var58, var58.up()} : new BlockPos[]{var58}; - RenderBatch var60 = null; - BlockHitResult var61 = null; - double var62 = Double.MAX_VALUE; - RenderBatch var64 = null; - Vec3d var65 = b.player.getEyePos(); - double var66 = InventoryUtil2.b_float_____(new Object[]{var46}); - float var68 = b.player.getYaw(); - float var69 = b.player.getPitch(); - BlockPos var70 = b.player.getBlockPos(); - BlockPos var71 = var70.up(); + this.predictedPlacePos = predictedPos; + BlockPos placePos = BlockPos.ofFloored(predictedPos.x, predictedPos.y, predictedPos.z); + BlockPos[] candidates = this.headTrap.getValue() ? new BlockPos[]{placePos, placePos.up()} : new BlockPos[]{placePos}; + Rotation bestRotation = null; + BlockHitResult bestHit = null; + double bestAngle = Double.MAX_VALUE; + Rotation fallbackRotation = null; + Vec3d eyePos = mc.player.getEyePos(); + double reach = PlayerInteractions.getReachDistance(); + float playerYaw = mc.player.getYaw(); + float playerPitch = mc.player.getPitch(); + BlockPos feetPos = mc.player.getBlockPos(); + BlockPos headPos = feetPos.up(); - for (BlockPos var75 : var59) { - if (!var75.equals(var70) && !var75.equals(var71)) { - BlockState var76 = b.world.getBlockState(var75); - if (var76.isReplaceable() && var76.getFluidState().isEmpty()) { - for (Direction var80 : Direction.values()) { - BlockPos var81 = var75.offset(var80); - BlockState var82 = b.world.getBlockState(var81); - if (!var82.isAir() && !var82.isReplaceable() && var82.getFluidState().isEmpty()) { - Direction var83 = var80.getOpposite(); - Vec3d var84 = new Vec3d( - var81.getX() + 0.5 + var83.getOffsetX() * 0.5, - var81.getY() + 0.5 + var83.getOffsetY() * 0.5, - var81.getZ() + 0.5 + var83.getOffsetZ() * 0.5 + for (BlockPos candidate : candidates) { + if (!candidate.equals(feetPos) && !candidate.equals(headPos)) { + BlockState candidateState = mc.world.getBlockState(candidate); + if (candidateState.isReplaceable() && candidateState.getFluidState().isEmpty()) { + for (Direction direction : Direction.values()) { + BlockPos neighborPos = candidate.offset(direction); + BlockState neighborState = mc.world.getBlockState(neighborPos); + if (!neighborState.isAir() && !neighborState.isReplaceable() && neighborState.getFluidState().isEmpty()) { + Direction side = direction.getOpposite(); + Vec3d hitVec = new Vec3d( + neighborPos.getX() + 0.5 + side.getOffsetX() * 0.5, + neighborPos.getY() + 0.5 + side.getOffsetY() * 0.5, + neighborPos.getZ() + 0.5 + side.getOffsetZ() * 0.5 ); - if (!(var65.distanceTo(var84) > var66)) { - RenderBatch var85 = Prestige.o.a_RenderBatch(new Object[]{var84, var48}); - float var96 = var85.a(new Object[0]) - var68; - Object[] var10003 = new Object[]{null, var40}; - var10003[0] = var96; - float var86 = WorldUtil.b_float_____________________(var10003); - if (var85.a_boolean________________________________________(new Object[0])) { - if (var64 == null) { - var64 = var85; + if (!(eyePos.distanceTo(hitVec) > reach)) { + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(hitVec); + float yawDelta = RotationUtil.wrapDegrees(rotation.getYaw() - playerYaw); + if (rotation.isClamped()) { + if (fallbackRotation == null) { + fallbackRotation = rotation; } - } else if (WorldUtil.a_class_239_(new Object[]{var85, var34}) instanceof BlockHitResult var88 - && var88.getBlockPos().equals(var81) - && var88.getSide() == var83 - && !(var65.distanceTo(var88.getPos()) > var66)) { - float var89 = var85.b(new Object[0]) - var69; - double var90 = Math.sqrt(var86 * var86 + var89 * var89); - if (var90 < var62) { - var62 = var90; - var60 = var85; - var61 = var88; + } else if (RotationUtil.raycastRotation(rotation) instanceof BlockHitResult rayHit + && rayHit.getBlockPos().equals(neighborPos) + && rayHit.getSide() == side + && !(eyePos.distanceTo(rayHit.getPos()) > reach)) { + float pitchDelta = rotation.getPitch() - playerPitch; + double angle = Math.sqrt(yawDelta * yawDelta + pitchDelta * pitchDelta); + if (angle < bestAngle) { + bestAngle = angle; + bestRotation = rotation; + bestHit = rayHit; } } } @@ -368,35 +303,29 @@ public class CobwebPlacer extends Module implements RenderContract3 { } } - if (var60 == null) { - return var64 != null ? var64 : this.b_RenderBatch__(new Object[]{var44}); - } else if (var61 == null) { - return var60; + if (bestRotation == null) { + return fallbackRotation != null ? fallbackRotation : this.restoreAndSkip(); + } else if (bestHit == null) { + return bestRotation; } else { - boolean var93 = !InventoryUtil.l(new Object[]{Items.COBWEB, var28}) && this.B == -1 && !var92 && var54 != null; - if (!var93) { - BlockHitResult var94 = this.a_class_3965______(new Object[]{var61, var6}); - if (var94 == null) { - return var60; + if (!(!InventoryUtil.isHolding(Items.COBWEB) && this.originalSlot == -1 && !noSwap && hotbarSlot != null)) { + BlockHitResult serverHit = this.getMatchingServerHit(bestHit); + if (serverHit == null) { + return bestRotation; } - var61 = var94; + bestHit = serverHit; } - Object[] var10007 = new Object[]{null, null, null, null, var14}; - var10007[3] = var92; - var10007[2] = var55; - var10007[1] = var54; - var10007[0] = var61; - PlaceState var95 = this.a_PlaceState(var10007); - if (var95 == PlaceState.PLACE_SENT) { - this.j(new Object[]{var10}); - } else if (var95 == PlaceState.INVENTORY_QUEUED) { - this.v.a_void_____________________(new Object[]{var8}); - this.h.reroll(new Object[]{var20}); + CobwebPlaceState placeState = this.tryPlace(bestHit, hotbarSlot, inventorySlot, noSwap); + if (placeState == CobwebPlaceState.PLACE_SENT) { + this.recordPlacement(); + } else if (placeState == CobwebPlaceState.INVENTORY_QUEUED) { + this.delayTimer.reset(); + this.delay.reroll(); } - return var60; + return bestRotation; } } } @@ -404,445 +333,307 @@ public class CobwebPlacer extends Module implements RenderContract3 { } } } else { - this.p(new Object[]{var38}); + this.releaseSwap(); return null; } } else { - this.p(new Object[]{var38}); + this.releaseSwap(); return null; } } - private BlockHitResult a_class_3965______(Object[] var1) { - BlockHitResult var2 = (BlockHitResult)var1[0]; - long var3 = (Long)var1[1]; - var3 = 114642101026600L ^ var3; - long var5 = var3 ^ 89721522766636L; - long var7 = var3 ^ 111295021188240L; - Event.b(); - RenderBatch var10 = Prestige.o.b_RenderBatch____________(new Object[0]); - if (var10 == null) { + private BlockHitResult getMatchingServerHit(BlockHitResult desiredHit) { + Rotation serverRotation = Prestige.silentRotationManager.getServerRotation(); + if (serverRotation == null) { return null; - } else if (WorldUtil.a_class_239_(new Object[]{var10, var5}) instanceof BlockHitResult var12) { - if (!var12.getBlockPos().equals(var2.getBlockPos())) { + } else if (RotationUtil.raycastRotation(serverRotation) instanceof BlockHitResult serverHit) { + if (!serverHit.getBlockPos().equals(desiredHit.getBlockPos())) { return null; - } else if (var12.getSide() != var2.getSide()) { + } else if (serverHit.getSide() != desiredHit.getSide()) { return null; } else { - return b.player.getEyePos().distanceTo(var12.getPos()) > InventoryUtil2.b_float_____(new Object[]{var7}) ? null : var12; + return mc.player.getEyePos().distanceTo(serverHit.getPos()) > PlayerInteractions.getReachDistance() ? null : serverHit; } } else { return null; } } - private PlaceState a_PlaceState(Object[] var1) { - BlockHitResult var2 = (BlockHitResult)var1[0]; - Integer var7 = (Integer)var1[1]; - int var4 = (Integer)var1[2]; - boolean var3 = (Boolean)var1[3]; - long var5 = (Long)var1[4]; - var5 = 114642101026600L ^ var5; - long var8 = var5 ^ 118253987659769L; - long var10 = var5 ^ 57771033853791L; - long var12 = var5 ^ 117128807594072L; - long var14 = var5 ^ 115449276473541L; - long var16 = var5 ^ 70942196657459L; - long var18 = var5 ^ 33072385433648L; - long var20 = var5 ^ 34418699590061L; - long var22 = var5 ^ 78485935514750L; - long var24 = var5 ^ 7508184252804L; - long var26 = var5 ^ 100695879185363L; - long var28 = var5 ^ 22735931462175L; - Event.b(); - int var31 = InventoryUtil.a_int_____(new Object[]{var22}); - if (!InventoryUtil.l(new Object[]{Items.COBWEB, var24})) { - if (this.B != -1) { - if (RenderUtil6.a_boolean____________________________________________(new Object[]{this}) && var31 == this.C) { - this.m(new Object[]{var18}); - return PlaceState.NONE; + private CobwebPlaceState tryPlace(BlockHitResult hitResult, Integer hotbarSlot, int inventorySlot, boolean noSwap) { + int selectedSlot = InventoryUtil.getSelectedSlot(); + if (!InventoryUtil.isHolding(Items.COBWEB)) { + if (this.originalSlot != -1) { + if (SwapBackTracker.isOwner(this) && selectedSlot == this.expectedSlot) { + this.restoreOriginalSlot(); + return CobwebPlaceState.NONE; } else { - if (RenderUtil6.a_boolean____________________________________________(new Object[]{this})) { - RenderUtil6.a_void____________________________(new Object[]{this, var10}); + if (SwapBackTracker.isOwner(this)) { + SwapBackTracker.release(this); } - this.q(new Object[0]); - return PlaceState.NONE; + this.clearSwapState(); + return CobwebPlaceState.NONE; } - } else if (!var3 && var7 != null) { - this.B = RenderUtil6.a(new Object[]{this, var26}); - this.C = var7; - this.G = b.world; - int var36 = var7; - Object[] var10003 = new Object[]{null, var20}; - var10003[0] = var36; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); - return PlaceState.HOTBAR_SWAPPED; - } else if (var4 != -1) { - if (Prestige.u != null) { - PacketQueue var10000 = Prestige.u; - Object[] var10006 = new Object[]{null, null, (Runnable)() -> { - Object[] var10006x = new Object[]{null, null, null, 138306721574633L}; - var10006x[2] = var31; - var10006x[1] = var4; - var10006x[0] = var2; - if (this.a_boolean____________________(var10006x)) { - this.j(new Object[]{33078325982201L}); + } else if (!noSwap && hotbarSlot != null) { + this.originalSlot = SwapBackTracker.claim(this); + this.expectedSlot = hotbarSlot; + this.swapWorld = mc.world; + InventoryUtil.selectSlot(hotbarSlot); + Prestige.silentRotationManager.setActedThisTick(true); + return CobwebPlaceState.HOTBAR_SWAPPED; + } else if (inventorySlot != -1) { + if (Prestige.inventorySwapQueue != null) { + SwapQueueResult swapResult = Prestige.inventorySwapQueue.requestSwapThen(inventorySlot, selectedSlot, (Runnable)() -> { + if (this.placeFromInventory(hitResult, inventorySlot, selectedSlot)) { + this.recordPlacement(); } - }, var8}; - var10006[1] = var31; - var10006[0] = var4; - PacketResult var34 = var10000.b(var10006); - if (var34 == PacketResult.QUEUED) { - return PlaceState.INVENTORY_QUEUED; + }); + if (swapResult == SwapQueueResult.QUEUED) { + return CobwebPlaceState.INVENTORY_QUEUED; } - if (var34 == PacketResult.REJECTED) { - return PlaceState.NONE; + if (swapResult == SwapQueueResult.REJECTED) { + return CobwebPlaceState.NONE; } } else { - Object[] var10005 = new Object[]{null, null, SlotActionType.SWAP, var14}; - var10005[1] = var31; - var10005[0] = var4; - InventoryUtil.e(var10005); + InventoryUtil.clickSlot(inventorySlot, selectedSlot, SlotActionType.SWAP); } - Object[] var37 = new Object[]{null, null, null, var16}; - var37[2] = var31; - var37[1] = var4; - var37[0] = var2; - return this.a_boolean____________________(var37) ? PlaceState.PLACE_SENT : PlaceState.NONE; + return this.placeFromInventory(hitResult, inventorySlot, selectedSlot) ? CobwebPlaceState.PLACE_SENT : CobwebPlaceState.NONE; } else { - return PlaceState.NONE; + return CobwebPlaceState.NONE; } - } else if (this.B != -1 && (!RenderUtil6.a_boolean____________________________________________(new Object[]{this}) || var31 != this.C)) { - if (RenderUtil6.a_boolean____________________________________________(new Object[]{this})) { - RenderUtil6.a_void____________________________(new Object[]{this, var10}); + } else if (this.originalSlot != -1 && (!SwapBackTracker.isOwner(this) || selectedSlot != this.expectedSlot)) { + if (SwapBackTracker.isOwner(this)) { + SwapBackTracker.release(this); } - this.q(new Object[0]); - return PlaceState.NONE; + this.clearSwapState(); + return CobwebPlaceState.NONE; } else { - InventoryUtil2.a(new Object[]{var2, var12}); - this.k(new Object[]{var28}); - return PlaceState.PLACE_SENT; + PlayerInteractions.interactBlock(hitResult); + this.applyAutoSwitchBack(); + return CobwebPlaceState.PLACE_SENT; } } - private boolean a_boolean____________________(Object[] var1) { - BlockHitResult var2 = (BlockHitResult)var1[0]; - int var3 = (Integer)var1[1]; - int var6 = (Integer)var1[2]; - long var4 = (Long)var1[3]; - var4 = 114642101026600L ^ var4; - long var7 = var4 ^ 72870984378947L; - long var9 = var4 ^ 99175127842387L; - long var11 = var4 ^ 135704699456659L; - if (b.player != null && b.world != null) { - InventoryUtil2.a(new Object[]{var2, var7}); - if (((String)this.r.getValue()).equals("Slot")) { - int var10001 = (Integer)this.s.getValue() - 1; - Object[] var10004 = new Object[]{null, var9}; - var10004[0] = var10001; - this.l(var10004); + private boolean placeFromInventory(BlockHitResult hitResult, int inventorySlot, int hotbarSlot) { + if (mc.player != null && mc.world != null) { + PlayerInteractions.interactBlock(hitResult); + if (this.autoSwitchBack.getValue().equals("Slot")) { + this.queueSwitchBack(this.autoSwitchSlot.getValue() - 1); } - Prestige.o.h(new Object[]{(Runnable)() -> { - if (b.player != null) { - Object[] var10004x = new Object[]{null, null, 133411734417951L}; - var10004x[1] = var6; - var10004x[0] = var3; - InventoryUtil.f(var10004x); + Prestige.silentRotationManager.scheduleTask((Runnable)() -> { + if (mc.player != null) { + InventoryUtil.swapSlot(inventorySlot, hotbarSlot); } - }, var11}); + }); return true; } else { return false; } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 114642101026600L ^ var2; - long var4 = var2 ^ 38769490367308L; - long var6 = var2 ^ 76670211441200L; - if ((Boolean)this.j.getValue()) { - this.A++; + private void recordPlacement() { + if (this.onlyWhenFalling.getValue()) { + this.websThisFall++; } - this.v.a_void_____________________(new Object[]{var4}); - this.h.reroll(new Object[]{var6}); + this.delayTimer.reset(); + this.delay.reroll(); } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 114642101026600L ^ var2; - long var4 = var2 ^ 28439160216277L; - long var6 = var2 ^ 15509549728127L; - Event.b(); - String var9 = (String)this.r.getValue(); - switch (var9) { + private void applyAutoSwitchBack() { + switch (this.autoSwitchBack.getValue()) { case "Slot": - int var12 = (Integer)this.s.getValue() - 1; - Object[] var13 = new Object[]{null, var6}; - var13[0] = var12; - this.l(var13); + this.queueSwitchBack(this.autoSwitchSlot.getValue() - 1); break; case "Original": - if (this.B != -1) { - int var10001 = this.B; - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = var10001; - this.l(var10004); + if (this.originalSlot != -1) { + this.queueSwitchBack(this.originalSlot); } else { - this.p(new Object[]{var4}); + this.releaseSwap(); } break; default: - this.p(new Object[]{var4}); + this.releaseSwap(); } } - private void l(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - var2 = 114642101026600L ^ var2; - long var5 = var2 ^ 41209559543312L; - long var7 = var2 ^ 140199183787138L; - long var9 = var2 ^ 103179750733598L; - long var11 = var2 ^ 71620999143603L; - if (var4 >= 0 && var4 <= 8 && var4 != InventoryUtil.a_int_____(new Object[]{var9})) { - if (this.B == -1) { - this.B = RenderUtil6.a(new Object[]{this, var11}); - this.C = InventoryUtil.a_int_____(new Object[]{var9}); - this.G = b.world; + private void queueSwitchBack(int slot) { + if (slot >= 0 && slot <= 8 && slot != InventoryUtil.getSelectedSlot()) { + if (this.originalSlot == -1) { + this.originalSlot = SwapBackTracker.claim(this); + this.expectedSlot = InventoryUtil.getSelectedSlot(); + this.swapWorld = mc.world; } - if (!RenderUtil6.a_boolean____________________________________________(new Object[]{this})) { - this.q(new Object[0]); + if (!SwapBackTracker.isOwner(this)) { + this.clearSwapState(); } else { - this.D = var4; - this.E = true; - this.o(new Object[]{var5}); + this.switchBackSlot = slot; + this.switchBackPending = true; + this.scheduleSwitchBack(); } } else { - this.p(new Object[]{var7}); + this.releaseSwap(); } } - private void m(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 114642101026600L ^ var2; - long var4 = var2 ^ 21321809242362L; - long var6 = var2 ^ 5097151312720L; - long var8 = var2 ^ 54089143712614L; - if (!this.E && this.B != -1) { - if (b.player != null && b.world != null && this.G == b.world) { - if (!RenderUtil6.a_boolean____________________________________________(new Object[]{this})) { - this.q(new Object[0]); - } else if (this.C != -1 && InventoryUtil.a_int_____(new Object[]{var8}) != this.C) { - this.p(new Object[]{var4}); + private void restoreOriginalSlot() { + if (!this.switchBackPending && this.originalSlot != -1) { + if (mc.player != null && mc.world != null && this.swapWorld == mc.world) { + if (!SwapBackTracker.isOwner(this)) { + this.clearSwapState(); + } else if (this.expectedSlot != -1 && InventoryUtil.getSelectedSlot() != this.expectedSlot) { + this.releaseSwap(); } else { - int var10001 = this.B; - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = var10001; - this.l(var10004); + this.queueSwitchBack(this.originalSlot); } } else { - this.p(new Object[]{var4}); + this.releaseSwap(); } } } - public boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 114642101026600L ^ var2; - long var4 = var2 ^ 81089642396593L; - long var6 = var2 ^ 26933035709196L; - long var8 = var2 ^ 107783294541123L; - long var10 = var2 ^ 63956708843664L; - if (!this.E) { + public boolean processSwitchBack() { + if (!this.switchBackPending) { return false; - } else if (b.player != null && b.world != null && this.G == b.world) { - if (!RenderUtil6.a_boolean____________________________________________(new Object[]{this})) { - this.q(new Object[0]); + } else if (mc.player != null && mc.world != null && this.swapWorld == mc.world) { + if (!SwapBackTracker.isOwner(this)) { + this.clearSwapState(); return true; - } else if (this.C != -1 && InventoryUtil.a_int_____(new Object[]{var10}) != this.C) { - this.p(new Object[]{var6}); + } else if (this.expectedSlot != -1 && InventoryUtil.getSelectedSlot() != this.expectedSlot) { + this.releaseSwap(); return true; - } else if (Prestige.o.d_boolean______(new Object[0])) { + } else if (Prestige.silentRotationManager.hasActedThisTick()) { return true; } else { - if (InventoryUtil.a_int_____(new Object[]{var10}) != this.D) { - int var10000 = this.D; - Object[] var10003 = new Object[]{null, var8}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - Prestige.o.g(new Object[]{true}); + if (InventoryUtil.getSelectedSlot() != this.switchBackSlot) { + InventoryUtil.selectSlot(this.switchBackSlot); + Prestige.silentRotationManager.setActedThisTick(true); } - RenderUtil6.a_void____________________________(new Object[]{this, var4}); - this.q(new Object[0]); + SwapBackTracker.release(this); + this.clearSwapState(); return true; } } else { - this.p(new Object[]{var6}); + this.releaseSwap(); return true; } } - private RenderBatch b_RenderBatch__(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 114642101026600L ^ var2; - long var4 = var2 ^ 97219313941270L; - long var6 = var2 ^ 91745508860128L; - this.m(new Object[]{var4}); - this.d(new Object[]{var6}); + private Rotation restoreAndSkip() { + this.restoreOriginalSlot(); + this.processSwitchBack(); return null; } - private void n(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 114642101026600L ^ var2; - long var4 = var2 ^ 138602510037370L; - long var6 = var2 ^ 40641577122792L; - long var8 = var2 ^ 105376849390650L; - long var10 = var2 ^ 7298628692084L; - long var12 = var2 ^ 93237255075788L; - if (b.player != null && b.world != null && this.G == b.world) { - this.m(new Object[]{var8}); - if (!this.E) { - this.p(new Object[]{var6}); - } else if (RenderUtil6.a_boolean____________________________________________(new Object[]{this}) && b.player != null && b.world != null) { - if (this.C != -1 && InventoryUtil.a_int_____(new Object[]{var10}) != this.C) { - this.p(new Object[]{var6}); - } else if (Prestige.o.d_boolean______(new Object[0])) { - this.o(new Object[]{var4}); + private void finishSwitchBack() { + if (mc.player != null && mc.world != null && this.swapWorld == mc.world) { + this.restoreOriginalSlot(); + if (!this.switchBackPending) { + this.releaseSwap(); + } else if (SwapBackTracker.isOwner(this) && mc.player != null && mc.world != null) { + if (this.expectedSlot != -1 && InventoryUtil.getSelectedSlot() != this.expectedSlot) { + this.releaseSwap(); + } else if (Prestige.silentRotationManager.hasActedThisTick()) { + this.scheduleSwitchBack(); } else { - this.d(new Object[]{var12}); + this.processSwitchBack(); } } else { - this.p(new Object[]{var6}); + this.releaseSwap(); } } else { - this.p(new Object[]{var6}); + this.releaseSwap(); } } - public void o(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 114642101026600L ^ var2; - long var4 = var2 ^ 4560937311440L; - if (!this.F) { - this.F = true; - Prestige.o.h(new Object[]{new CobwebPlacerHelper(this), var4}); + public void scheduleSwitchBack() { + if (!this.switchBackScheduled) { + this.switchBackScheduled = true; + Prestige.silentRotationManager.scheduleTask(new CobwebSwitchBackTask(this)); } } - private void p(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 114642101026600L ^ var2; - long var4 = var2 ^ 63749141034901L; - if (RenderUtil6.a_boolean____________________________________________(new Object[]{this})) { - RenderUtil6.a_void____________________________(new Object[]{this, var4}); + private void releaseSwap() { + if (SwapBackTracker.isOwner(this)) { + SwapBackTracker.release(this); } - this.q(new Object[0]); + this.clearSwapState(); } - private void q(Object[] var1) { - this.B = -1; - this.C = -1; - this.D = -1; - this.E = false; - this.G = null; + private void clearSwapState() { + this.originalSlot = -1; + this.expectedSlot = -1; + this.switchBackSlot = -1; + this.switchBackPending = false; + this.swapWorld = null; } - private Vec3d a_class_243_________(Object[] var1) { - PlayerEntity var4 = (PlayerEntity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 114642101026600L ^ var2; - long var5 = var2 ^ 65621862799979L; - long var7 = var2 ^ 63841328492754L; - long var9 = var2 ^ 85168287391916L; - boolean var12 = PositionUtil.a_double___________(new Object[]{var4, var9}) < 0.3F; - return var12 ? this.d_class_243_(new Object[]{var4, var5}) : this.c(new Object[]{var4, var7}); + private Vec3d predictPlacePos(PlayerEntity enemy) { + return (PositionUtil.getHeightAboveGround(enemy) < 0.3F) ? this.predictGroundedPos(enemy) : this.predictAirbornePos(enemy); } - private Vec3d b_class_243___(Object[] var1) { - PlayerEntity var2 = (PlayerEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 114642101026600L ^ var3; - long var5 = var3 ^ 69663059769370L; - long var7 = var3 ^ 10271476725475L; - long var9 = var3 ^ 90048957031808L; - Vec3d var12 = PositionUtil.a(new Object[]{var2, var9}); - Vec3d var13 = PositionUtil.c(new Object[]{var2, var5}); - Vec3d var14 = var2.getVelocity(); - double var15 = Math.min(var12.y - var13.y, var14.y); - Vec3d var17 = new Vec3d(var12.x - var13.x, var15, var12.z - var13.z); - Box var18 = var2.getBoundingBox(); - double var19 = Math.max((var18.maxX - var18.minX) / 2.0, 0.15); - int var23 = b.world.getBottomY(); - double var24 = var12.x; - Event.b(); - double var26 = var12.y; - double var28 = var12.z; + private Vec3d predictFallLanding(PlayerEntity enemy) { + Vec3d pos = PositionUtil.getEntityPos(enemy); + Vec3d lastPos = PositionUtil.getLastPos(enemy); + Vec3d velocity = enemy.getVelocity(); + double motionY = Math.min(pos.y - lastPos.y, velocity.y); + Vec3d motion = new Vec3d(pos.x - lastPos.x, motionY, pos.z - lastPos.z); + Box box = enemy.getBoundingBox(); + double halfWidth = Math.max((box.maxX - box.minX) / 2.0, 0.15); + int bottomY = mc.world.getBottomY(); + double simX = pos.x; + double simY = pos.y; + double simZ = pos.z; - for (int var30 = 0; var30 < 80; var30++) { - double var31 = var17.x / 4; - double var33 = var17.y / 4; - double var35 = var17.z / 4; + for (int tick = 0; tick < 80; tick++) { + double stepX = motion.x / 4; + double stepY = motion.y / 4; + double stepZ = motion.z / 4; - for (int var37 = 0; var37 < 4; var37++) { - double var38 = var24 + var31; - double var40 = var26 + var33; - double var42 = var28 + var35; - if (var17.y <= 0.0) { - Object[] var10007 = new Object[]{null, null, null, null, var7}; - var10007[3] = var19; - var10007[2] = var42; - var10007[1] = var40; - var10007[0] = var38; - if (this.e(var10007)) { - int var44 = MathHelper.floor(var40 - 1.0E-4); - return new Vec3d(var38, var44 + 1.0, var42); + for (int subStep = 0; subStep < 4; subStep++) { + double nextX = simX + stepX; + double nextY = simY + stepY; + double nextZ = simZ + stepZ; + if (motion.y <= 0.0) { + if (this.hasGroundBelow(nextX, nextY, nextZ, halfWidth)) { + return new Vec3d(nextX, MathHelper.floor(nextY - 1.0E-4) + 1.0, nextZ); } } - var24 = var38; - var26 = var40; - var28 = var42; + simX = nextX; + simY = nextY; + simZ = nextZ; } - if (var26 <= var23) { + if (simY <= bottomY) { return null; } - var17 = var17.subtract(0.0, 0.08, 0.0).multiply(0.91, 0.98, 0.91); + motion = motion.subtract(0.0, 0.08, 0.0).multiply(0.91, 0.98, 0.91); } return null; } - private boolean e(Object[] var1) { - double var2 = (Double)var1[0]; - double var4 = (Double)var1[1]; - double var6 = (Double)var1[2]; - double var8 = (Double)var1[3]; - int var13 = MathHelper.floor(var2 - var8 + 0.001); - Event.b(); - int var14 = MathHelper.floor(var2 + var8 - 0.001); - int var15 = MathHelper.floor(var6 - var8 + 0.001); - int var16 = MathHelper.floor(var6 + var8 - 0.001); - int var17 = MathHelper.floor(var4 - 0.001); + private boolean hasGroundBelow(double posX, double posY, double posZ, double halfWidth) { + int minX = MathHelper.floor(posX - halfWidth + 0.001); + int maxX = MathHelper.floor(posX + halfWidth - 0.001); + int minZ = MathHelper.floor(posZ - halfWidth + 0.001); + int maxZ = MathHelper.floor(posZ + halfWidth - 0.001); + int blockY = MathHelper.floor(posY - 0.001); - for (int var18 = var13; var18 <= var14; var18++) { - for (int var19 = var15; var19 <= var16; var19++) { - BlockPos var20 = new BlockPos(var18, var17, var19); - BlockState var21 = b.world.getBlockState(var20); - if (!var21.isAir() && !var21.getCollisionShape(b.world, var20).isEmpty()) { + for (int blockX = minX; blockX <= maxX; blockX++) { + for (int blockZ = minZ; blockZ <= maxZ; blockZ++) { + BlockPos blockPos = new BlockPos(blockX, blockY, blockZ); + BlockState state = mc.world.getBlockState(blockPos); + if (!state.isAir() && !state.getCollisionShape(mc.world, blockPos).isEmpty()) { return true; } } @@ -851,184 +642,82 @@ public class CobwebPlacer extends Module implements RenderContract3 { return false; } - private Vec3d c(Object[] var1) { - PlayerEntity var4 = (PlayerEntity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 114642101026600L ^ var2; - long var5 = var2 ^ 45349293885856L; - long var7 = var2 ^ 78628729345082L; - Vec3d var10 = PositionUtil.a(new Object[]{var4, var7}); - Vec3d var11 = PositionUtil.c(new Object[]{var4, var5}); - Vec3d var12 = var4.getVelocity(); - double var13 = Math.min(var10.y - var11.y, var12.y); - Vec3d var15 = new Vec3d(var10.x - var11.x, var13, var10.z - var11.z); - Event.b(); - Vec3d var16 = var10; - int var17 = (Integer)this.i.getValue(); - int var18 = b.world.getBottomY(); + private Vec3d predictAirbornePos(PlayerEntity enemy) { + Vec3d pos = PositionUtil.getEntityPos(enemy); + Vec3d lastPos = PositionUtil.getLastPos(enemy); + Vec3d velocity = enemy.getVelocity(); + double motionY = Math.min(pos.y - lastPos.y, velocity.y); + Vec3d motion = new Vec3d(pos.x - lastPos.x, motionY, pos.z - lastPos.z); + Vec3d previousPos = pos; + int ticks = this.leadTicks.getValue(); + int bottomY = mc.world.getBottomY(); - for (int var19 = 0; var19 < var17; var19++) { - var16 = var10; - var10 = var10.add(var15); - BlockPos var20 = BlockPos.ofFloored(var10.x, var10.y - 0.1, var10.z); - if (!b.world.getBlockState(var20).isAir()) { - return new Vec3d(var10.x, var20.getY() + 1.0, var10.z); + for (int tick = 0; tick < ticks; tick++) { + previousPos = pos; + pos = pos.add(motion); + BlockPos belowPos = BlockPos.ofFloored(pos.x, pos.y - 0.1, pos.z); + if (!mc.world.getBlockState(belowPos).isAir()) { + return new Vec3d(pos.x, belowPos.getY() + 1.0, pos.z); } - if (var10.y <= var18) { + if (pos.y <= bottomY) { return null; } - var15 = var15.subtract(0.0, 0.08, 0.0).multiply(0.91, 0.98, 0.91); + motion = motion.subtract(0.0, 0.08, 0.0).multiply(0.91, 0.98, 0.91); } - return var16; + return previousPos; } - private Vec3d d_class_243_(Object[] var1) { - PlayerEntity var2 = (PlayerEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 114642101026600L ^ var3; - long var5 = var3 ^ 44531377185561L; - long var7 = var3 ^ 77231516679811L; - Event.b(); - Vec3d var10 = PositionUtil.a(new Object[]{var2, var7}); - Vec3d var11 = PositionUtil.c(new Object[]{var2, var5}); - Vec3d var12 = new Vec3d(var10.x - var11.x, 0.0, var10.z - var11.z); - int var13 = (Integer)this.i.getValue(); + private Vec3d predictGroundedPos(PlayerEntity enemy) { + Vec3d pos = PositionUtil.getEntityPos(enemy); + Vec3d lastPos = PositionUtil.getLastPos(enemy); + Vec3d motion = new Vec3d(pos.x - lastPos.x, 0.0, pos.z - lastPos.z); + int ticks = this.leadTicks.getValue(); - for (int var14 = 0; var14 < var13; var14++) { - var10 = var10.add(var12.x, 0.0, var12.z); - BlockPos var15 = BlockPos.ofFloored(var10.x, var10.y - 0.1, var10.z); - if (b.world.getBlockState(var15).isAir()) { + for (int tick = 0; tick < ticks; tick++) { + pos = pos.add(motion.x, 0.0, motion.z); + BlockPos belowPos = BlockPos.ofFloored(pos.x, pos.y - 0.1, pos.z); + if (mc.world.getBlockState(belowPos).isAir()) { break; } - var12 = var12.multiply(0.999, 1.0, 0.999); - if (Math.abs(var12.x) < 0.005 && Math.abs(var12.z) < 0.005) { + motion = motion.multiply(0.999, 1.0, 0.999); + if (Math.abs(motion.x) < 0.005 && Math.abs(motion.z) < 0.005) { break; } } - return var10; + return pos; } @Subscribe - public void a(TickEvent27 var1) { - if (((String)this.f.getValue()).equals("Auto") && (Boolean)this.t.getValue()) { - Vec3d var7 = this.y; - if (var7 != null) { - BlockPos var8 = BlockPos.ofFloored(var7.x, var7.y, var7.z); - this.r(new Object[]{var1, var8, (Color)this.u.getValue(), 8204085245145L}); - if ((Boolean)this.q.getValue()) { - this.r(new Object[]{var1, var8.up(), (Color)this.u.getValue(), 8204085245145L}); + public void onRender3D(Render3DEvent event) { + if (this.mode.getValue().equals("Auto") && this.render.getValue()) { + Vec3d predictedPos = this.predictedPlacePos; + if (predictedPos != null) { + BlockPos blockPos = BlockPos.ofFloored(predictedPos.x, predictedPos.y, predictedPos.z); + this.drawOutline(event, blockPos, this.renderColor.getValue()); + if (this.headTrap.getValue()) { + this.drawOutline(event, blockPos.up(), this.renderColor.getValue()); } } } } - private void r(Object[] var1) { - TickEvent27 var5 = (TickEvent27)var1[0]; - BlockPos var4 = (BlockPos)var1[1]; - Color var6 = (Color)var1[2]; - long var2 = (Long)var1[3]; - var2 = 114642101026600L ^ var2; - long var7 = var2 ^ 3352365659775L; - MatrixCameraData var10000 = var5.b; - RenderHelper8 var10001 = var5.a; - float var10002 = var4.getX(); - float var10003 = var4.getY(); - float var10004 = var4.getZ(); - float var10005 = var4.getX() + 1.0F; - float var10006 = var4.getY() + 1.0F; - float var10007 = var4.getZ() + 1.0F; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var6, var7}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); + private void drawOutline(Render3DEvent event, BlockPos pos, Color color) { + CameraMatrices matrices = event.context; + BufferSource buffers = event.renderer; + float minX = pos.getX(); + float minY = pos.getY(); + float minZ = pos.getZ(); + ShapeRenderer.drawBoxOutline(matrices, buffers, minX, minY, minZ, pos.getX() + 1.0F, pos.getY() + 1.0F, pos.getZ() + 1.0F, color); } - private void s(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 114642101026600L ^ var2; - long var4 = var2 ^ 43725335377091L; - long var6 = var2 ^ 71730451277247L; - this.v.a_void_____________________(new Object[]{var4}); - this.h.reroll(new Object[]{var6}); - this.w++; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private void advanceManualStage() { + this.delayTimer.reset(); + this.delay.reroll(); + this.manualStage++; } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/DoubleAnchor.java b/src/main/java/dev/zprestige/prestige/module/combat/DoubleAnchor.java index 501bb48..c8ed262 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/DoubleAnchor.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/DoubleAnchor.java @@ -10,28 +10,23 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.hud.ModuleNotificationsElement; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; -import dev.zprestige.prestige.render.Renderer2D; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import dev.zprestige.prestige.type.DoubleAnchorState; import dev.zprestige.prestige.type.NotificationType; import dev.zprestige.prestige.world.RaycastUtil; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.BlockUtil; import java.util.Set; import java.util.function.Predicate; import net.minecraft.block.Blocks; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; import net.minecraft.state.property.Properties; @@ -43,197 +38,173 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; public class DoubleAnchor extends Module { - private FloatSetting a; - private BoolSetting d; - private RangeSetting c; - private KeybindSetting f; - private BoolSetting e; - private RangeSetting g; - private EnumSetting h; - private BoolSetting i; - private IntSetting j; - private BoolSetting k; - private FloatSetting l; - private IntSetting m; - private RenderHelper27 n = new RenderHelper27(26293358099357L); - private RenderHelper27 o = new RenderHelper27(26293358099357L); - private BlockPos p = null; - private int q = 0; - private boolean r = false; - public static boolean s; - private int t = 0; - private RenderHelper27 u = new RenderHelper27(26293358099357L); - private RenderHelper27 v = new RenderHelper27(26293358099357L); - private DoubleAnchorState w = DoubleAnchorState.IDLE; - private BlockHitResult x = null; - private BlockPos y = null; - private int z = -1; - private boolean A = false; - private boolean B = false; - private boolean C = false; + private FloatSetting chance; + private BoolSetting glowStone; + private RangeSetting delay; + private KeybindSetting macroBind; + private BoolSetting macroHoldRepeat; + private RangeSetting macroDelay; + private EnumSetting macroSwap; + private BoolSetting macroSwapBack; + private IntSetting macroExplodeSlot; + private BoolSetting macroDamageTick; + private FloatSetting macroDamageTickRange; + private IntSetting macroDamageTickMaxWait; + private StopWatch doubleAnchorTimer = new StopWatch(); + private StopWatch glowstoneTimer = new StopWatch(); + private BlockPos lastAnchorPos = null; + private int doubleAnchorCount = 0; + private boolean glowstonePending = false; + public static boolean acting; + private int actingUntilAge = 0; + private StopWatch macroStageTimer = new StopWatch(); + private StopWatch damageTickWaitTimer = new StopWatch(); + private DoubleAnchorState macroState = DoubleAnchorState.IDLE; + private BlockHitResult startHit = null; + private BlockPos macroAnchorPos = null; + private int startSlot = -1; + private boolean startedThisPress = false; + private boolean runningMacroStage = false; + private boolean damageTickWaitNotified = false; public DoubleAnchor() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.h.setVisibility_EnumSetting(new Object[]{(Predicate)lpL185_0 -> (Integer)this.f.getValue() != -1, 90319707064974L}); - this.g.setVisibility_RangeSetting(new Object[]{(Predicate)lpL186_0 -> (Integer)this.f.getValue() != -1, 37043306203287L}); - this.l - .setVisibility_FloatSetting( - new Object[]{(Predicate)lpL181_0 -> (Integer)this.f.getValue() != -1 && (Boolean)this.k.getValue(), 35046756052036L} + this.macroSwap.visibleWhen((Predicate)ignored -> this.macroBind.getValue() != -1); + this.macroDelay.visibleWhen((Predicate)ignored -> this.macroBind.getValue() != -1); + this.macroDamageTickRange + .visibleWhen( + (Predicate)ignored -> this.macroBind.getValue() != -1 && this.macroDamageTick.getValue() ); - this.m - .setVisibility_IntSetting( - new Object[]{(Predicate)lpL180_0 -> (Integer)this.f.getValue() != -1 && (Boolean)this.k.getValue(), 98265949679296L} + this.macroDamageTickMaxWait + .visibleWhen( + (Predicate)ignored -> this.macroBind.getValue() != -1 && this.macroDamageTick.getValue() ); - this.i - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL184_0 -> (Integer)this.f.getValue() != -1 && ((String)this.h.getValue()).equals("Swap"), 73196168581295L} + this.macroSwapBack + .visibleWhen( + (Predicate)ignored -> this.macroBind.getValue() != -1 && this.macroSwap.getValue().equals("Swap") ); - this.k.setVisibility_BoolSetting(new Object[]{(Predicate)lpL182_0 -> (Integer)this.f.getValue() != -1, 73196168581295L}); - this.e.setVisibility_BoolSetting(new Object[]{(Predicate)lpL187_0 -> (Integer)this.f.getValue() != -1, 73196168581295L}); - this.j - .setVisibility_IntSetting( - new Object[]{(Predicate)lpL183_0 -> (Integer)this.f.getValue() != -1 && ((String)this.h.getValue()).equals("Swap"), 98265949679296L} + this.macroDamageTick.visibleWhen((Predicate)ignored -> this.macroBind.getValue() != -1); + this.macroHoldRepeat.visibleWhen((Predicate)ignored -> this.macroBind.getValue() != -1); + this.macroExplodeSlot + .visibleWhen( + (Predicate)ignored -> this.macroBind.getValue() != -1 && this.macroSwap.getValue().equals("Swap") ); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public void onEnable(Object[] var1) { - this.j(new Object[0]); - this.A = false; + public void onEnable() { + this.resetMacro(); + this.startedThisPress = false; } @Override - public void onDisable(Object[] var1) { - this.j(new Object[0]); - this.A = false; - s = false; - this.t = 0; + public void onDisable() { + this.resetMacro(); + this.startedThisPress = false; + acting = false; + this.actingUntilAge = 0; } - private void j(Object[] var1) { - this.w = DoubleAnchorState.IDLE; - this.x = null; - this.y = null; - this.z = -1; - this.B = false; - this.C = false; + private void resetMacro() { + this.macroState = DoubleAnchorState.IDLE; + this.startHit = null; + this.macroAnchorPos = null; + this.startSlot = -1; + this.runningMacroStage = false; + this.damageTickWaitNotified = false; } - private boolean a(Object[] var1) { - BlockPos var2 = (BlockPos)var1[0]; - return b.world.getBlockState(var2).isOf(Blocks.RESPAWN_ANCHOR) && b.world.getBlockState(var2).get(Properties.CHARGES) > 0; + private boolean isChargedAnchor(BlockPos pos) { + return mc.world.getBlockState(pos).isOf(Blocks.RESPAWN_ANCHOR) && mc.world.getBlockState(pos).get(Properties.CHARGES) > 0; } - private boolean d(Object[] var1) { - BlockPos var2 = (BlockPos)var1[0]; - return b.world.getBlockState(var2).isOf(Blocks.RESPAWN_ANCHOR); + private boolean isAnchor(BlockPos pos) { + return mc.world.getBlockState(pos).isOf(Blocks.RESPAWN_ANCHOR); } - private boolean e(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 79187590595000L ^ var2; - long var4 = var2 ^ 96108774942226L; - long var6 = var2 ^ 99264852426502L; - if (!(Boolean)this.k.getValue()) { + private boolean shouldWaitForDamageTick() { + if (!this.macroDamageTick.getValue()) { return false; } else { - PlayerEntity var9 = CombatUtil.a_class_1657(new Object[]{var6}); - if (var9 == null) { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy == null) { return false; - } else if (b.player.distanceTo(var9) >= (Float)this.l.getValue()) { + } else if (mc.player.distanceTo(enemy) >= this.macroDamageTickRange.getValue()) { return false; - } else if (var9.hurtTime == 0) { + } else if (enemy.hurtTime == 0) { return false; } else { - RenderHelper27 var10000 = this.v; - float var10001 = ((Integer)this.m.getValue()).intValue(); - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - return !var10000.a(var10004); + StopWatch waitTimer = this.damageTickWaitTimer; + float maxWaitMs = this.macroDamageTickMaxWait.getValue().intValue(); + return !waitTimer.hasElapsed(maxWaitMs); } } } @Subscribe - public void a(FloatEvent2 var1) { - s = this.B || b.player != null && b.player.age <= this.t; - if ((Boolean)this.d.getValue() && this.r) { - RenderHelper27 var10000 = this.o; - float var10001 = (Float)this.c.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - if (!(b.crosshairTarget instanceof BlockHitResult var9)) { - this.r = false; + public void onSendMovementPackets(SendMovementPacketsEvent event) { + acting = this.runningMacroStage || mc.player != null && mc.player.age <= this.actingUntilAge; + if (this.glowStone.getValue() && this.glowstonePending) { + if (this.glowstoneTimer.hasElapsed(this.delay.getValue())) { + if (!(mc.crosshairTarget instanceof BlockHitResult crosshairHit)) { + this.glowstonePending = false; return; } - if (b.world.getBlockState(var9.getBlockPos()).getBlock() == Blocks.RESPAWN_ANCHOR - && b.world.getBlockState(var9.getBlockPos()).get(Properties.CHARGES) == 0) { - this.r = false; - this.t = b.player.age + 2; - s = true; - Item var10 = Items.GLOWSTONE; - Runnable var11 = () -> InventoryUtil2.a(new Object[]{var9, 96519249476482L}); - Object[] var10005 = new Object[]{null, null, null, 114857082072684L}; - var10005[2] = false; - var10005[1] = var11; - var10005[0] = var10; - InventoryUtil.j(var10005); + if (mc.world.getBlockState(crosshairHit.getBlockPos()).getBlock() == Blocks.RESPAWN_ANCHOR + && mc.world.getBlockState(crosshairHit.getBlockPos()).get(Properties.CHARGES) == 0) { + this.glowstonePending = false; + this.actingUntilAge = mc.player.age + 2; + acting = true; + InventoryUtil.runWithItem(Items.GLOWSTONE, () -> PlayerInteractions.interactBlock(crosshairHit), false); return; } - this.r = false; + this.glowstonePending = false; return; } } } @Subscribe - public void a(PacketEvent2 var1) { - if (!this.B) { - if (var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket) { - RenderHelper27 var10000 = this.n; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 200.0F; - if (var10000.a(var10004)) { - if (!InventoryUtil.l(new Object[]{Items.RESPAWN_ANCHOR, 65539821781598L})) { + public void onPacketSend(PacketSendEvent event) { + if (!this.runningMacroStage) { + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket) { + if (this.doubleAnchorTimer.hasElapsed(200.0F)) { + if (!InventoryUtil.isHolding(Items.RESPAWN_ANCHOR)) { return; } - BlockHitResult var17 = (BlockHitResult)b.crosshairTarget; - if (var17 != null - && b.world.getBlockState(var17.getBlockPos()).isOf(Blocks.RESPAWN_ANCHOR) - && b.world.getBlockState(var17.getBlockPos()).get(Properties.CHARGES) != 0) { - var10004 = new Object[]{null, null, 29524726012237L}; - var10004[1] = 100.0F; - var10004[0] = 0.0F; - if (RenderUtil5.a(var10004) > (Float)this.a.getValue()) { + BlockHitResult crosshairHit = (BlockHitResult)mc.crosshairTarget; + if (crosshairHit != null + && mc.world.getBlockState(crosshairHit.getBlockPos()).isOf(Blocks.RESPAWN_ANCHOR) + && mc.world.getBlockState(crosshairHit.getBlockPos()).get(Properties.CHARGES) != 0) { + if (RandomUtil.randomFloat(0.0F, 100.0F) > this.chance.getValue()) { return; } - if (var17.getBlockPos().equals(this.p)) { - if (this.q >= 1) { + if (crosshairHit.getBlockPos().equals(this.lastAnchorPos)) { + if (this.doubleAnchorCount >= 1) { return; } } else { - this.p = var17.getBlockPos(); - this.q = 0; + this.lastAnchorPos = crosshairHit.getBlockPos(); + this.doubleAnchorCount = 0; } - this.n.a_void_____________________(new Object[]{93540861878173L}); - this.t = b.player.age + 2; - s = true; - InventoryUtil2.a(new Object[]{var17, 96519249476482L}); - this.r = true; - this.c.reroll(new Object[]{57083216809697L}); - this.o.a_void_____________________(new Object[]{93540861878173L}); - this.q++; + this.doubleAnchorTimer.reset(); + this.actingUntilAge = mc.player.age + 2; + acting = true; + PlayerInteractions.interactBlock(crosshairHit); + this.glowstonePending = true; + this.delay.reroll(); + this.glowstoneTimer.reset(); + this.doubleAnchorCount++; } } } @@ -241,35 +212,34 @@ public class DoubleAnchor extends Module { } @Subscribe - public void a(TickEvent19 var1) { - if ((Integer)this.f.getValue() != -1) { - if (b.player != null && b.world != null) { - if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem() && !b.player.isSneaking()) { - if (this.w != DoubleAnchorState.IDLE) { - if (this.u.b(new Object[]{this.g, 89714527855213L})) { - this.k(new Object[]{35898293100276L}); + public void onClientTick(ClientTickEvent event) { + if (this.macroBind.getValue() != -1) { + if (mc.player != null && mc.world != null) { + if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem() && !mc.player.isSneaking()) { + if (this.macroState != DoubleAnchorState.IDLE) { + if (this.macroStageTimer.hasElapsedRandom(this.macroDelay)) { + this.runMacroStage(); } } else { - boolean var23 = this.f.isPressed(new Object[]{28844609523469L}); - if (!var23) { - this.A = false; - } else if (!this.A || (Boolean)this.e.getValue()) { - if (this.u.b(new Object[]{this.g, 89714527855213L})) { - if (b.crosshairTarget instanceof BlockHitResult var24 && var24.getType() == Type.BLOCK) { - if (WorldUtil2.d(new Object[]{var24, 85348799407646L})) { - if (!b.world.getBlockState(var24.getBlockPos()).isOf(Blocks.RESPAWN_ANCHOR)) { - BlockPos var26 = b.world.getBlockState(var24.getBlockPos()).isReplaceable() - ? var24.getBlockPos() - : WorldUtil2.a_class_2338______(new Object[]{var24, 110292667014705L}); - if (!b.player.getBoundingBox().intersects(new Box(var26))) { - this.A = true; - this.x = var24; - this.y = var26; - this.z = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - this.w = DoubleAnchorState.PLACE_1; - this.u.a_void_____________________(new Object[]{93540861878173L}); - this.g.reroll(new Object[]{57083216809697L}); - this.m(new Object[]{"Macro: sequence started", 19751549127680L}); + if (!this.macroBind.isPressed()) { + this.startedThisPress = false; + } else if (!this.startedThisPress || this.macroHoldRepeat.getValue()) { + if (this.macroStageTimer.hasElapsedRandom(this.macroDelay)) { + if (mc.crosshairTarget instanceof BlockHitResult crosshairHit && crosshairHit.getType() == Type.BLOCK) { + if (BlockUtil.isClickableBlockHit(crosshairHit)) { + if (!mc.world.getBlockState(crosshairHit.getBlockPos()).isOf(Blocks.RESPAWN_ANCHOR)) { + BlockPos placePos = mc.world.getBlockState(crosshairHit.getBlockPos()).isReplaceable() + ? crosshairHit.getBlockPos() + : BlockUtil.getPlacePos(crosshairHit); + if (!mc.player.getBoundingBox().intersects(new Box(placePos))) { + this.startedThisPress = true; + this.startHit = crosshairHit; + this.macroAnchorPos = placePos; + this.startSlot = InventoryUtil.getSelectedSlot(); + this.macroState = DoubleAnchorState.PLACE_1; + this.macroStageTimer.reset(); + this.macroDelay.reroll(); + this.notifyInfo("Macro: sequence started"); } } } @@ -282,326 +252,190 @@ public class DoubleAnchor extends Module { } } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 79187590595000L ^ var2; - long var4 = var2 ^ 67827615613137L; - long var6 = var2 ^ 110229631654360L; - long var8 = var2 ^ 100372545474989L; - long var10 = var2 ^ 124386046323710L; - long var12 = var2 ^ 116426037201411L; - long var14 = var2 ^ 108521349448208L; - long var16 = var2 ^ 4840746324187L; - long var18 = var2 ^ 129228536209386L; - long var20 = var2 ^ 130730732197639L; - long var22 = var2 ^ 66390967204072L; - long var24 = var2 ^ 24988888660708L; - long var26 = var2 ^ 133408951276364L; - long var28 = var2 ^ 138016866472735L; - Event.b(); - this.B = true; + private void runMacroStage() { + this.runningMacroStage = true; label329: { try { - switch (this.w) { + switch (this.macroState) { case PLACE_1: - if (b.player.getBoundingBox().intersects(new Box(this.y))) { - this.l(new Object[]{"player blocking placement", var10}); + if (mc.player.getBoundingBox().intersects(new Box(this.macroAnchorPos))) { + this.abortMacro("player blocking placement"); return; } - if (this.f(new Object[]{this.x, var6})) { - this.m(new Object[]{"Macro: placed anchor", var26}); - this.w = DoubleAnchorState.GLOW_1; + if (this.placeAnchor(this.startHit)) { + this.notifyInfo("Macro: placed anchor"); + this.macroState = DoubleAnchorState.GLOW_1; break label329; } - this.l(new Object[]{"no respawn anchor", var10}); + this.abortMacro("no respawn anchor"); return; case GLOW_1: - if (!this.d(new Object[]{this.y, var20})) { - this.l(new Object[]{"anchor missing", var10}); + if (!this.isAnchor(this.macroAnchorPos)) { + this.abortMacro("anchor missing"); return; } - if (this.g(new Object[]{this.a_class_3965_______(new Object[]{this.y, var14}), var28})) { - this.m(new Object[]{"Macro: charged anchor", var26}); - this.w = DoubleAnchorState.EXPLODE_DOUBLE_1; + if (this.chargeAnchor(this.createTopFaceHit(this.macroAnchorPos))) { + this.notifyInfo("Macro: charged anchor"); + this.macroState = DoubleAnchorState.EXPLODE_DOUBLE_1; break label329; } - this.l(new Object[]{"no glowstone", var10}); + this.abortMacro("no glowstone"); return; case EXPLODE_DOUBLE_1: - if (!this.a(new Object[]{this.y, var22})) { - this.l(new Object[]{"anchor not charged", var10}); + if (!this.isChargedAnchor(this.macroAnchorPos)) { + this.abortMacro("anchor not charged"); return; } - if (this.i(new Object[]{this.a_class_3965_______(new Object[]{this.y, var14}), var24})) { - this.m(new Object[]{"Macro: exploded + double-placed", var26}); - this.w = DoubleAnchorState.GLOW_2; + if (this.explodeAndDoublePlace(this.createTopFaceHit(this.macroAnchorPos))) { + this.notifyInfo("Macro: exploded + double-placed"); + this.macroState = DoubleAnchorState.GLOW_2; break label329; } - this.l(new Object[]{"explode failed", var10}); + this.abortMacro("explode failed"); return; case GLOW_2: - if (!this.d(new Object[]{this.y, var20})) { - this.l(new Object[]{"double failed", var10}); + if (!this.isAnchor(this.macroAnchorPos)) { + this.abortMacro("double failed"); return; } - if (this.g(new Object[]{this.a_class_3965_______(new Object[]{this.y, var14}), var28})) { - this.m(new Object[]{"Macro: charged again", var26}); - this.w = DoubleAnchorState.EXPLODE_2; - this.v.a_void_____________________(new Object[]{var4}); - this.C = false; + if (this.chargeAnchor(this.createTopFaceHit(this.macroAnchorPos))) { + this.notifyInfo("Macro: charged again"); + this.macroState = DoubleAnchorState.EXPLODE_2; + this.damageTickWaitTimer.reset(); + this.damageTickWaitNotified = false; break label329; } - this.l(new Object[]{"no glowstone (2)", var10}); + this.abortMacro("no glowstone (2)"); return; case EXPLODE_2: - if (!this.a(new Object[]{this.y, var22})) { - this.l(new Object[]{"second anchor not charged", var10}); + if (!this.isChargedAnchor(this.macroAnchorPos)) { + this.abortMacro("second anchor not charged"); return; } - if (!this.e(new Object[]{var18})) { - this.C = false; - if (this.h(new Object[]{this.a_class_3965_______(new Object[]{this.y, var14}), var12})) { - this.m(new Object[]{"Macro: exploded again", var26}); - this.w = DoubleAnchorState.RESTORE; + if (!this.shouldWaitForDamageTick()) { + this.damageTickWaitNotified = false; + if (this.explodeAnchor(this.createTopFaceHit(this.macroAnchorPos))) { + this.notifyInfo("Macro: exploded again"); + this.macroState = DoubleAnchorState.RESTORE; break label329; } - this.l(new Object[]{"explode failed (2)", var10}); + this.abortMacro("explode failed (2)"); return; } - if (!this.C) { - this.m(new Object[]{"Macro: waiting for damage tick", var26}); - this.C = true; + if (!this.damageTickWaitNotified) { + this.notifyInfo("Macro: waiting for damage tick"); + this.damageTickWaitNotified = true; } break; case RESTORE: - if ((Boolean)this.i.getValue() && "Swap".equals(this.h.getValue()) && this.z != -1) { - Renderer2D var10000 = Prestige.o; - int var10001 = this.z; - Object[] var10004 = new Object[]{null, var16}; - var10004[0] = var10001; - var10000.i(var10004); + if (this.macroSwapBack.getValue() && "Swap".equals(this.macroSwap.getValue()) && this.startSlot != -1) { + Prestige.silentRotationManager.scheduleSlotSwitch(this.startSlot); } - this.m(new Object[]{"Macro: done", var26}); - this.j(new Object[0]); + this.notifyInfo("Macro: done"); + this.resetMacro(); default: break label329; } } finally { - this.B = false; + this.runningMacroStage = false; } return; } - this.u.a_void_____________________(new Object[]{var4}); - this.g.reroll(new Object[]{var8}); + this.macroStageTimer.reset(); + this.macroDelay.reroll(); } - private void l(Object[] var1) { - String var4 = (String)var1[0]; - long var2 = (Long)var1[1]; - var2 = 79187590595000L ^ var2; - long var5 = var2 ^ 67356845505181L; - long var7 = var2 ^ 5042136492695L; - long var9 = var2 ^ 108217669876715L; - long var11 = var2 ^ 70850301196554L; - if ("Swap".equals(this.h.getValue()) && this.z != -1) { - Renderer2D var10000 = Prestige.o; - int var10001 = this.z; - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var10001; - var10000.i(var10004); + private void abortMacro(String reason) { + if ("Swap".equals(this.macroSwap.getValue()) && this.startSlot != -1) { + Prestige.silentRotationManager.scheduleSlotSwitch(this.startSlot); } - this.m(new Object[]{"Macro aborted: " + var4, var11}); - this.j(new Object[0]); - this.u.a_void_____________________(new Object[]{var7}); - this.g.reroll(new Object[]{var9}); + this.notifyInfo("Macro aborted: " + reason); + this.resetMacro(); + this.macroStageTimer.reset(); + this.macroDelay.reroll(); } - private void m(Object[] var1) { - String var2 = (String)var1[0]; - long var3 = (Long)var1[1]; - var3 = 79187590595000L ^ var3; - long var5 = var3 ^ 66933299812284L; - ModuleNotificationsElement.s(new Object[]{this, var2, NotificationType.INFO, var5}); + private void notifyInfo(String message) { + ModuleNotificationsElement.postNotification(this, message, NotificationType.INFO); } - private BlockHitResult a_class_3965_______(Object[] var1) { - BlockPos var4 = (BlockPos)var1[0]; - long var2 = (Long)var1[1]; - var2 = 79187590595000L ^ var2; - long var5 = var2 ^ 71420769162501L; - Event.b(); - Vec3d var8 = RaycastUtil.b(new Object[]{var4, var5}); - if (var8 == null) { - var8 = new Vec3d(var4.getX() + 0.5, var4.getY() + 1.0, var4.getZ() + 0.5); + private BlockHitResult createTopFaceHit(BlockPos anchorPos) { + Vec3d hitVec = RaycastUtil.getVisibleTopPoint(anchorPos); + if (hitVec == null) { + hitVec = new Vec3d(anchorPos.getX() + 0.5, anchorPos.getY() + 1.0, anchorPos.getZ() + 0.5); } - return new BlockHitResult(var8, Direction.UP, var4, false); + return new BlockHitResult(hitVec, Direction.UP, anchorPos, false); } - private boolean f(Object[] var1) { - BlockHitResult var2 = (BlockHitResult)var1[0]; - long var3 = (Long)var1[1]; - var3 = 79187590595000L ^ var3; - long var5 = var3 ^ 21089574976686L; - long var7 = var3 ^ 140175967520114L; - long var9 = var3 ^ 99518620667500L; - if ("None".equals(this.h.getValue())) { - if (!InventoryUtil.l(new Object[]{Items.RESPAWN_ANCHOR, var7})) { + private boolean placeAnchor(BlockHitResult hitResult) { + if ("None".equals(this.macroSwap.getValue())) { + if (!InventoryUtil.isHolding(Items.RESPAWN_ANCHOR)) { return false; } - } else if (!InventoryUtil.i(new Object[]{Blocks.RESPAWN_ANCHOR, var9})) { + } else if (!InventoryUtil.switchToBlock(Blocks.RESPAWN_ANCHOR)) { return false; } - InventoryUtil2.a(new Object[]{var2, var5}); + PlayerInteractions.interactBlock(hitResult); return true; } - private boolean g(Object[] var1) { - BlockHitResult var4 = (BlockHitResult)var1[0]; - long var2 = (Long)var1[1]; - var2 = 79187590595000L ^ var2; - long var5 = var2 ^ 11991898568297L; - long var7 = var2 ^ 112953789861813L; - long var9 = var2 ^ 73962093397163L; - if ("None".equals(this.h.getValue())) { - if (!InventoryUtil.l(new Object[]{Items.GLOWSTONE, var7})) { + private boolean chargeAnchor(BlockHitResult hitResult) { + if ("None".equals(this.macroSwap.getValue())) { + if (!InventoryUtil.isHolding(Items.GLOWSTONE)) { return false; } - } else if (!InventoryUtil.i(new Object[]{Blocks.GLOWSTONE, var9})) { + } else if (!InventoryUtil.switchToBlock(Blocks.GLOWSTONE)) { return false; } - InventoryUtil2.a(new Object[]{var4, var5}); + PlayerInteractions.interactBlock(hitResult); return true; } - private boolean h(Object[] var1) { - BlockHitResult var4 = (BlockHitResult)var1[0]; - long var2 = (Long)var1[1]; - var2 = 79187590595000L ^ var2; - long var5 = var2 ^ 33591308398453L; - long var7 = var2 ^ 117954845200000L; - long var9 = var2 ^ 126298217174697L; - if ("None".equals(this.h.getValue())) { - if (InventoryUtil.l(new Object[]{Items.GLOWSTONE, var9})) { + private boolean explodeAnchor(BlockHitResult hitResult) { + if ("None".equals(this.macroSwap.getValue())) { + if (InventoryUtil.isHolding(Items.GLOWSTONE)) { return false; } } else { - int var10000 = (Integer)this.j.getValue() - 1; - Object[] var10003 = new Object[]{null, var7}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(this.macroExplodeSlot.getValue() - 1); } - InventoryUtil2.a(new Object[]{var4, var5}); + PlayerInteractions.interactBlock(hitResult); return true; } - private boolean i(Object[] var1) { - BlockHitResult var2 = (BlockHitResult)var1[0]; - long var3 = (Long)var1[1]; - var3 = 79187590595000L ^ var3; - long var5 = var3 ^ 107566235574162L; - long var7 = var3 ^ 60872260497759L; - long var9 = var3 ^ 14876577441358L; - long var11 = var3 ^ 44495992630608L; - if (!this.h(new Object[]{var2, var7})) { + private boolean explodeAndDoublePlace(BlockHitResult hitResult) { + if (!this.explodeAnchor(hitResult)) { return false; } else { - if ("None".equals(this.h.getValue())) { - if (InventoryUtil.l(new Object[]{Items.RESPAWN_ANCHOR, var9})) { - InventoryUtil2.a(new Object[]{var2, var5}); + if ("None".equals(this.macroSwap.getValue())) { + if (InventoryUtil.isHolding(Items.RESPAWN_ANCHOR)) { + PlayerInteractions.interactBlock(hitResult); } - } else if (InventoryUtil.i(new Object[]{Blocks.RESPAWN_ANCHOR, var11})) { - InventoryUtil2.a(new Object[]{var2, var5}); + } else if (InventoryUtil.switchToBlock(Blocks.RESPAWN_ANCHOR)) { + PlayerInteractions.interactBlock(hitResult); } return true; } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/GhostPlace.java b/src/main/java/dev/zprestige/prestige/module/combat/GhostPlace.java index afab2fb..1b23231 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/GhostPlace.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/GhostPlace.java @@ -5,12 +5,10 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; import java.util.Set; import net.minecraft.entity.LivingEntity; import net.minecraft.item.BlockItem; @@ -27,34 +25,34 @@ import net.minecraft.world.RaycastContext.FluidHandling; import net.minecraft.world.RaycastContext.ShapeType; public class GhostPlace extends Module { - private BoolSetting d; - private BoolSetting a; - private long c; - private static final long l = -1L; + private BoolSetting cobwebOnly; + private BoolSetting useOffhand; + private long lastPlaceTime; + private static final long NEVER_PLACED = -1L; public GhostPlace() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.c = l; + this.lastPlaceTime = NEVER_PLACED; } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Subscribe - public void a(FloatEvent2 var1) { - if (b.player != null && b.world != null) { - if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem()) { - if (!Prestige.o.d_boolean______(new Object[0])) { - if (b.options.useKey.isPressed()) { - Hand var13 = this.a(new Object[]{5530615103354L}); - if (var13 != null) { - if (d(new Object[]{b.crosshairTarget, 52554676280732L})) { - BlockHitResult var14 = this.a_class_3965________(new Object[]{10873155518664L}); - if (var14 != null && var14.getType() == Type.BLOCK) { - InventoryUtil2.b(new Object[]{var14, var13, 41898663564720L}); - this.c = b.world.getTime(); + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (mc.player != null && mc.world != null) { + if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem()) { + if (!Prestige.silentRotationManager.hasActedThisTick()) { + if (mc.options.useKey.isPressed()) { + Hand hand = this.getPlaceHand(); + if (hand != null) { + if (isEnemyHit(mc.crosshairTarget)) { + BlockHitResult blockHit = this.raycastBlockBehind(); + if (blockHit != null && blockHit.getType() == Type.BLOCK) { + PlayerInteractions.interactBlock(blockHit, hand); + this.lastPlaceTime = mc.world.getTime(); } } } @@ -65,16 +63,16 @@ public class GhostPlace extends Module { } @Subscribe - public void a(TickEvent5 var1) { - if (b.player != null && b.world != null) { - if (d(new Object[]{b.crosshairTarget, 52554676280732L})) { - if (this.a(new Object[]{5530615103354L}) != null) { - if (this.c == b.world.getTime()) { - var1.a_void_____(new Object[0]); - } else if (b.options.useKey.isPressed()) { - BlockHitResult var11 = this.a_class_3965________(new Object[]{10873155518664L}); - if (var11 != null && var11.getType() == Type.BLOCK) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (mc.player != null && mc.world != null) { + if (isEnemyHit(mc.crosshairTarget)) { + if (this.getPlaceHand() != null) { + if (this.lastPlaceTime == mc.world.getTime()) { + event.cancel(); + } else if (mc.options.useKey.isPressed()) { + BlockHitResult blockHit = this.raycastBlockBehind(); + if (blockHit != null && blockHit.getType() == Type.BLOCK) { + event.cancel(); } } } @@ -82,111 +80,30 @@ public class GhostPlace extends Module { } } - private Hand a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 51780909037643L ^ var2; - long var4 = var2 ^ 34460687958252L; - if (this.a_boolean_____________________(new Object[]{b.player.getMainHandStack(), var4})) { + private Hand getPlaceHand() { + if (this.isPlaceable(mc.player.getMainHandStack())) { return Hand.MAIN_HAND; } else { - return this.a.getValue() && this.a_boolean_____________________(new Object[]{b.player.getOffHandStack(), var4}) ? Hand.OFF_HAND : null; + return this.useOffhand.getValue() && this.isPlaceable(mc.player.getOffHandStack()) ? Hand.OFF_HAND : null; } } - private boolean a_boolean_____________________(Object[] var1) { - ItemStack var2 = (ItemStack)var1[0]; - return this.d.getValue() ? var2.getItem() == Items.COBWEB : var2.getItem() instanceof BlockItem; + private boolean isPlaceable(ItemStack stack) { + return this.cobwebOnly.getValue() ? stack.getItem() == Items.COBWEB : stack.getItem() instanceof BlockItem; } - private static boolean d(Object[] var0) { - HitResult var1 = (HitResult)var0[0]; - long var2 = (Long)var0[1]; - var2 = 51780909037643L ^ var2; - long var4 = var2 ^ 24523735270493L; - long var6 = var2 ^ 54588914831848L; - if (!(var1 instanceof EntityHitResult var9 && var9.getEntity() instanceof LivingEntity var10)) { + private static boolean isEnemyHit(HitResult hitResult) { + if (!(hitResult instanceof EntityHitResult entityHit && entityHit.getEntity() instanceof LivingEntity livingEntity)) { return false; } else { - return Prestige.g.a(new Object[]{var10.getName().getString(), var4}) ? false : Prestige.i.a_boolean_(new Object[]{var10, var6}); + return Prestige.friendManager.isFriend(livingEntity.getName().getString()) ? false : Prestige.botFilter.isValidTarget(livingEntity); } } - private BlockHitResult a_class_3965________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 51780909037643L ^ var2; - long var4 = var2 ^ 61465696013829L; - Vec3d var6 = b.player.getEyePos(); - RenderBatch var7 = Prestige.o.b_RenderBatch____________(new Object[0]); - Vec3d var8 = var7 != null ? b.player.getRotationVector(var7.b(new Object[0]), var7.a(new Object[0])) : b.player.getRotationVec(1.0F); - Vec3d var9 = var6.add(var8.multiply(InventoryUtil2.b_float_____(new Object[]{var4}))); - return b.world.raycast(new RaycastContext(var6, var9, ShapeType.OUTLINE, FluidHandling.NONE, b.player)); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private BlockHitResult raycastBlockBehind() { + Vec3d eyePos = mc.player.getEyePos(); + Rotation serverRotation = Prestige.silentRotationManager.getServerRotation(); + Vec3d endPos = eyePos.add((serverRotation != null ? mc.player.getRotationVector(serverRotation.getPitch(), serverRotation.getYaw()) : mc.player.getRotationVec(1.0F)).multiply(PlayerInteractions.getReachDistance())); + return mc.world.raycast(new RaycastContext(eyePos, endPos, ShapeType.OUTLINE, FluidHandling.NONE, mc.player)); } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/HitFix.java b/src/main/java/dev/zprestige/prestige/module/combat/HitFix.java index 534f81f..6a46dc3 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/HitFix.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/HitFix.java @@ -4,69 +4,62 @@ import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.BoolEvent; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.TickEvent12; -import dev.zprestige.prestige.event.TickEvent28; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.SwingHandEvent; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.AutoAttackEvent; +import dev.zprestige.prestige.event.ResetAttackCooldownEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.type.EventPhase; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult.Type; -public class HitFix extends Module implements RenderContract3 { +public class HitFix extends Module implements RotationProvider { public HitFix() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private BoolSetting a; - private BoolSetting c; - private RenderHelper27 e = new RenderHelper27(26293358099357L); - private boolean i = false; - private boolean f = false; - private PlayerEntity g = null; + private BoolSetting weaponOnly; + private BoolSetting onlyOnGround; + private BoolSetting damageTick; + private StopWatch pendingHitTimer = new StopWatch(); + private boolean hitPending = false; + private boolean sendingAttack = false; + private PlayerEntity pendingTarget = null; - private boolean a_boolean______________________(Object[] var1) { - PlayerEntity var2 = (PlayerEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 45690498302318L ^ var3; - long var5 = var3 ^ 3071957506038L; - long var7 = var3 ^ 21796793555401L; - if (var2 == null) { + private boolean shouldDelayHit(PlayerEntity target) { + if (target == null) { return false; - } else if ((Boolean)this.d.getValue() && !InventoryUtil.a(new Object[]{b.player.getMainHandStack(), var5})) { + } else if (this.weaponOnly.getValue() && !InventoryUtil.isSword(mc.player.getMainHandStack())) { return false; } else { - return this.c.getValue() && var2.hurtTime != 0 + return this.damageTick.getValue() && target.hurtTime != 0 ? true - : (Boolean)this.a.getValue() && PositionUtil.a_double___________(new Object[]{var2, var7}) > 0.3F; + : this.onlyOnGround.getValue() && PositionUtil.getHeightAboveGround(target) > 0.3F; } } @Subscribe - public void a(BoolEvent var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE) { - if (this.f) { - var1.b(new Object[]{true}); - } else if (b.crosshairTarget != null && b.crosshairTarget.getType() == Type.ENTITY) { - if (b.crosshairTarget instanceof EntityHitResult) { - if (((EntityHitResult)b.crosshairTarget).getEntity() instanceof PlayerEntity var9) { - if (this.a_boolean______________________(new Object[]{var9, 104887668870823L})) { - this.i = true; - this.g = var9; - this.e.a_void_____________________(new Object[]{93540861878173L}); - var1.a_void_____(new Object[0]); + public void onSwingHand(SwingHandEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (event.getPhase() == EventPhase.PRE) { + if (this.sendingAttack) { + event.setSkipPost(true); + } else if (mc.crosshairTarget != null && mc.crosshairTarget.getType() == Type.ENTITY) { + if (mc.crosshairTarget instanceof EntityHitResult) { + if (((EntityHitResult)mc.crosshairTarget).getEntity() instanceof PlayerEntity target) { + if (this.shouldDelayHit(target)) { + this.hitPending = true; + this.pendingTarget = target; + this.pendingHitTimer.reset(); + event.cancel(); } } } @@ -76,16 +69,16 @@ public class HitFix extends Module implements RenderContract3 { } @Subscribe - public void a(EntityEvent var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - if (b.crosshairTarget != null && b.crosshairTarget.getType() == Type.ENTITY) { - if (b.crosshairTarget instanceof EntityHitResult) { - if (((EntityHitResult)b.crosshairTarget).getEntity() instanceof PlayerEntity var9) { - if (this.i || this.a_boolean______________________(new Object[]{var9, 104887668870823L})) { - this.i = true; - this.g = var9; - this.e.a_void_____________________(new Object[]{93540861878173L}); - var1.a_void_____(new Object[0]); + public void onAttackEntity(AttackEntityEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (mc.crosshairTarget != null && mc.crosshairTarget.getType() == Type.ENTITY) { + if (mc.crosshairTarget instanceof EntityHitResult) { + if (((EntityHitResult)mc.crosshairTarget).getEntity() instanceof PlayerEntity target) { + if (this.hitPending || this.shouldDelayHit(target)) { + this.hitPending = true; + this.pendingTarget = target; + this.pendingHitTimer.reset(); + event.cancel(); } } } @@ -94,16 +87,16 @@ public class HitFix extends Module implements RenderContract3 { } @Subscribe - public void a(TickEvent28 var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - if (b.crosshairTarget != null && b.crosshairTarget.getType() == Type.ENTITY) { - if (b.crosshairTarget instanceof EntityHitResult) { - if (((EntityHitResult)b.crosshairTarget).getEntity() instanceof PlayerEntity var9) { - if (this.i || this.a_boolean______________________(new Object[]{var9, 104887668870823L})) { - this.i = true; - this.g = var9; - this.e.a_void_____________________(new Object[]{93540861878173L}); - var1.a_void_____(new Object[0]); + public void onResetAttackCooldown(ResetAttackCooldownEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (mc.crosshairTarget != null && mc.crosshairTarget.getType() == Type.ENTITY) { + if (mc.crosshairTarget instanceof EntityHitResult) { + if (((EntityHitResult)mc.crosshairTarget).getEntity() instanceof PlayerEntity target) { + if (this.hitPending || this.shouldDelayHit(target)) { + this.hitPending = true; + this.pendingTarget = target; + this.pendingHitTimer.reset(); + event.cancel(); } } } @@ -112,135 +105,53 @@ public class HitFix extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 36160164621105L; - long var6 = var2 ^ 91260814807711L; - long var8 = var2 ^ 18621355024670L; - long var10 = var2 ^ 85547089512629L; - long var12 = var2 ^ 81856115773718L; - long var14 = var2 ^ 71343916077473L; - if (!this.i) { + public Rotation provideRotation() { + if (!this.hitPending) { return null; - } else if (b.player.isUsingItem()) { + } else if (mc.player.isUsingItem()) { return null; } else { - PlayerEntity var17 = this.g != null && this.g.isAlive() ? this.g : CombatUtil.a_class_1657(new Object[]{var14}); - if (var17 != null && !(b.player.distanceTo(var17) > 3.0F) && b.player.canSee(var17)) { - if (this.a_boolean______________________(new Object[]{var17, var8})) { + PlayerEntity target = this.pendingTarget != null && this.pendingTarget.isAlive() ? this.pendingTarget : TargetSelector.getClosestEnemy(); + if (target != null && !(mc.player.distanceTo(target) > 3.0F) && mc.player.canSee(target)) { + if (this.shouldDelayHit(target)) { return null; } else { - RenderHelper27 var10000 = this.e; - Object[] var10004 = new Object[]{null, var10}; - var10004[0] = 1000.0F; - if (var10000.a(var10004)) { - this.i = false; - this.g = null; + if (this.pendingHitTimer.hasElapsed(1000.0F)) { + this.hitPending = false; + this.pendingTarget = null; return null; } else { - RenderBatch var18 = WorldUtil.a_RenderBatch_(new Object[]{var17.getEyePos(), var12}); - this.i = false; - this.g = null; - new TickEvent12().b_boolean__(new Object[]{var4}); - this.f = true; - InventoryUtil2.a_void_________(new Object[]{var17, var6}); - this.f = false; - return var18; + Rotation rotation = RotationUtil.getRotationTo(target.getEyePos()); + this.hitPending = false; + this.pendingTarget = null; + new AutoAttackEvent().post(); + this.sendingAttack = true; + PlayerInteractions.attackEntity(target); + this.sendingAttack = false; + return rotation; } } } else { - this.i = false; - this.g = null; + this.hitPending = false; + this.pendingTarget = null; return null; } } } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - this.i = false; - this.g = null; - this.f = false; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + this.hitPending = false; + this.pendingTarget = null; + this.sendingAttack = false; + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - this.i = false; - this.g = null; - this.f = false; - Prestige.o.f(new Object[]{this, var4}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + this.hitPending = false; + this.pendingTarget = null; + this.sendingAttack = false; + Prestige.silentRotationManager.removeRotationProvider(this); } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/HitFlick.java b/src/main/java/dev/zprestige/prestige/module/combat/HitFlick.java index d6fea30..8039b26 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/HitFlick.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/HitFlick.java @@ -7,86 +7,80 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.type.KillAuraState; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.type.HitFlickState; +import dev.zprestige.prestige.world.RotationUtil; import java.util.Set; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.MathHelper; -public class HitFlick extends Module implements RenderContract3 { +public class HitFlick extends Module implements RotationProvider { public HitFlick() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private BoolSetting a; - private FloatSetting c; - private FloatSetting e; - private EnumSetting f; - private KillAuraState g = KillAuraState.IDLE; - private Entity h; - private float i; - private boolean j; + private BoolSetting playersOnly; + private BoolSetting requireSprint; + private FloatSetting minAngle; + private FloatSetting maxAngle; + private EnumSetting direction; + private HitFlickState state = HitFlickState.IDLE; + private Entity pendingTarget; + private float flickYaw; + private boolean sendingAttack; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); - this.g = KillAuraState.IDLE; - this.h = null; + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); + this.state = HitFlickState.IDLE; + this.pendingTarget = null; } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); - this.g = KillAuraState.IDLE; - this.h = null; + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + this.state = HitFlickState.IDLE; + this.pendingTarget = null; } @Subscribe - public void a(EntityEvent var1) { - if (!this.j) { - if (b.player != null && b.world != null) { - if (b.currentScreen == null && b.isWindowFocused() && !b.player.isUsingItem()) { - if (this.g == KillAuraState.IDLE) { - if (!(Boolean)this.a.getValue() || b.player.isSprinting()) { - Entity var9 = var1.a(new Object[0]); - if (var9 != null && var9 != b.player) { - if (!(Boolean)this.d.getValue() || var9 instanceof PlayerEntity) { - if (!(var9 instanceof PlayerEntity var10 && Prestige.g.a(new Object[]{var10.getName().getString(), 24848952222090L}))) { - if (Prestige.i.a_boolean_(new Object[]{var9, 54363558999103L})) { - String var11 = (String)this.f.getValue(); - float var15; - if (var11.equals("Left")) { - var15 = -1.0F; - } else if (var11.equals("Right")) { - var15 = 1.0F; + public void onAttackEntity(AttackEntityEvent event) { + if (!this.sendingAttack) { + if (mc.player != null && mc.world != null) { + if (mc.currentScreen == null && mc.isWindowFocused() && !mc.player.isUsingItem()) { + if (this.state == HitFlickState.IDLE) { + if (!this.requireSprint.getValue() || mc.player.isSprinting()) { + Entity target = event.getTarget(); + if (target != null && target != mc.player) { + if (!this.playersOnly.getValue() || target instanceof PlayerEntity) { + if (!(target instanceof PlayerEntity player && Prestige.friendManager.isFriend(player.getName().getString()))) { + if (Prestige.botFilter.isValidTarget(target)) { + String directionMode = this.direction.getValue(); + float flickSign; + if (directionMode.equals("Left")) { + flickSign = -1.0F; + } else if (directionMode.equals("Right")) { + flickSign = 1.0F; } else { - var15 = Math.random() < 0.5 ? -1.0F : 1.0F; + flickSign = Math.random() < 0.5 ? -1.0F : 1.0F; } - float var12 = Math.min((Float)this.c.getValue(), (Float)this.e.getValue()); - float var13 = Math.max((Float)this.c.getValue(), (Float)this.e.getValue()); - float var14 = var12 + (float)(Math.random() * (var13 - var12)); - this.i = b.player.getYaw() + var15 * var14; - this.h = var9; - this.g = KillAuraState.FLICK; - var1.a_void_____(new Object[0]); + float lowAngle = Math.min(this.minAngle.getValue(), this.maxAngle.getValue()); + float highAngle = Math.max(this.minAngle.getValue(), this.maxAngle.getValue()); + float flickAngle = lowAngle + (float)(Math.random() * (highAngle - lowAngle)); + this.flickYaw = mc.player.getYaw() + flickSign * flickAngle; + this.pendingTarget = target; + this.state = HitFlickState.FLICK; + event.cancel(); } } } @@ -99,100 +93,29 @@ public class HitFlick extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91260814807711L; - long var6 = var2 ^ 81856115773718L; - if (this.g == KillAuraState.IDLE) { + public Rotation provideRotation() { + if (this.state == HitFlickState.IDLE) { return null; - } else if (this.g == KillAuraState.FLICK) { - float var13 = this.i + (float)(Math.random() * 3.0 - 1.5); - float var14 = MathHelper.clamp(b.player.getPitch() + (float)(Math.random() * 2.0 - 1.0), -89.9F, 89.9F); - this.g = KillAuraState.ATTACK; - return new RenderBatch(var13, var14); + } else if (this.state == HitFlickState.FLICK) { + float yaw = this.flickYaw + (float)(Math.random() * 3.0 - 1.5); + float pitch = MathHelper.clamp(mc.player.getPitch() + (float)(Math.random() * 2.0 - 1.0), -89.9F, 89.9F); + this.state = HitFlickState.ATTACK; + return new Rotation(yaw, pitch); } else { - this.g = KillAuraState.IDLE; - Entity var9 = this.h; - this.h = null; - if (var9 != null && var9.isAlive()) { - RenderBatch var10 = WorldUtil.a_RenderBatch_(new Object[]{var9.getEyePos(), var6}); - float var11 = var10.a(new Object[0]) + (float)(Math.random() * 3.0 - 1.5); - float var12 = MathHelper.clamp(var10.b(new Object[0]) + (float)(Math.random() * 2.0 - 1.0), -89.9F, 89.9F); - this.j = true; - InventoryUtil2.a_void_________(new Object[]{var9, var4}); - this.j = false; - return new RenderBatch(var11, var12); + this.state = HitFlickState.IDLE; + Entity target = this.pendingTarget; + this.pendingTarget = null; + if (target != null && target.isAlive()) { + Rotation rotationToTarget = RotationUtil.getRotationTo(target.getEyePos()); + float attackYaw = rotationToTarget.getYaw() + (float)(Math.random() * 3.0 - 1.5); + float attackPitch = MathHelper.clamp(rotationToTarget.getPitch() + (float)(Math.random() * 2.0 - 1.0), -89.9F, 89.9F); + this.sendingAttack = true; + PlayerInteractions.attackEntity(target); + this.sendingAttack = false; + return new Rotation(attackYaw, attackPitch); } else { return null; } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/Hitboxes.java b/src/main/java/dev/zprestige/prestige/module/combat/Hitboxes.java index d520b8a..b9eb846 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/Hitboxes.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/Hitboxes.java @@ -6,21 +6,17 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.BoolEvent; -import dev.zprestige.prestige.event.EntityEvent2; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.SwingHandEvent; +import dev.zprestige.prestige.event.BoundingBoxEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.ShapeRenderer; import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.world.WorldUtil; +import dev.zprestige.prestige.world.RotationUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Items; @@ -30,69 +26,51 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class Hitboxes extends Module implements RenderContract3 { - private BoolSetting d; - private FloatSetting a; - private BoolSetting c; - private FloatSetting e; - private EnumSetting f; - private BoolSetting g; - private BoolSetting h; - private boolean i = false; - private boolean j = false; +public class Hitboxes extends Module implements RotationProvider { + private BoolSetting playerOnly; + private FloatSetting expand; + private BoolSetting renderHitboxes; + private FloatSetting distance; + private EnumSetting antiCheat; + private BoolSetting ignoreWalls; + private BoolSetting skipShielding; + private boolean hitPending = false; + private boolean sendingAttack = false; public Hitboxes() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.g.setVisibility_BoolSetting(new Object[]{(Predicate)lpL211_0 -> ((String)this.f.getValue()).equals("Grim/Vulcan"), 73196168581295L}); - this.h.setVisibility_BoolSetting(new Object[]{(Predicate)lpL210_0 -> ((String)this.f.getValue()).equals("Grim/Vulcan"), 73196168581295L}); + this.ignoreWalls.visibleWhen((Predicate)ignored -> this.antiCheat.getValue().equals("Grim/Vulcan")); + this.skipShielding.visibleWhen((Predicate)ignored -> this.antiCheat.getValue().equals("Grim/Vulcan")); } @Subscribe - public void a(TickEvent27 var1) { - if ((Boolean)this.c.getValue()) { - PlayerEntity var11 = CombatUtil.a_class_1657(new Object[]{16945855905304L}); - float var12 = (Float)this.e.getValue(); - boolean var13 = ((String)this.f.getValue()).equals("Grim/Vulcan"); - double var14 = var13 ? ((Float)this.a.getValue()).floatValue() / 5.0 : 0.0; + public void onRender3D(Render3DEvent event) { + if (this.renderHitboxes.getValue()) { + PlayerEntity closestEnemy = TargetSelector.getClosestEnemy(); + float maxDistance = this.distance.getValue(); + boolean grimVulcanMode = this.antiCheat.getValue().equals("Grim/Vulcan"); + double expansion = grimVulcanMode ? this.expand.getValue().floatValue() / 5.0 : 0.0; - for (PlayerEntity var17 : b.world.getPlayers()) { - float var18 = b.player.distanceTo(var17); - if (!(var18 > var12) && Prestige.i.a_boolean_(new Object[]{var17, 54363558999103L})) { - Box var19 = var13 ? var17.getBoundingBox().expand(var14) : var17.getBoundingBox(); - Color var20 = var18 <= 3.0F && var13 && var11 == var17 ? Color.GREEN : Color.RED; - MatrixCameraData var10000 = var1.b; - RenderHelper8 var10001 = var1.a; - float var10002 = (float)var19.minX; - float var10003 = (float)var19.minY; - float var10004 = (float)var19.minZ; - float var10005 = (float)var19.maxX; - float var10006 = (float)var19.maxY; - float var10007 = (float)var19.maxZ; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var20, 119015971454350L}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); + for (PlayerEntity player : mc.world.getPlayers()) { + float playerDistance = mc.player.distanceTo(player); + if (!(playerDistance > maxDistance) && Prestige.botFilter.isValidTarget(player)) { + Box box = grimVulcanMode ? player.getBoundingBox().expand(expansion) : player.getBoundingBox(); + ShapeRenderer.drawBoxOutline(event.context, event.renderer, (float)box.minX, (float)box.minY, (float)box.minZ, (float)box.maxX, (float)box.maxY, (float)box.maxZ, playerDistance <= 3.0F && grimVulcanMode && closestEnemy == player ? Color.GREEN : Color.RED); } } } } @Subscribe - public void a(EntityEvent2 var1) { - if (((String)this.f.getValue()).equals("None")) { - if (!var1.a(new Object[0]).equals(b.player)) { - if (!(Boolean)this.d.getValue() || var1.a(new Object[0]) instanceof PlayerEntity) { - if (!(var1.a(new Object[0]) instanceof PlayerEntity) - || Prestige.i.a_boolean_(new Object[]{(PlayerEntity)var1.a(new Object[0]), 54363558999103L})) { - if (!(b.player.distanceTo(var1.a(new Object[0])) > (Float)this.e.getValue())) { - var1.b(new Object[]{var1.a_class_238(new Object[0]).expand(((Float)this.a.getValue()).floatValue() / 5.0)}); - var1.a_void_____(new Object[0]); + public void onBoundingBox(BoundingBoxEvent event) { + if (this.antiCheat.getValue().equals("None")) { + if (!event.getEntity().equals(mc.player)) { + if (!this.playerOnly.getValue() || event.getEntity() instanceof PlayerEntity) { + if (!(event.getEntity() instanceof PlayerEntity) + || Prestige.botFilter.isValidTarget((PlayerEntity)event.getEntity())) { + if (!(mc.player.distanceTo(event.getEntity()) > this.distance.getValue())) { + event.setBox(event.getBox().expand(this.expand.getValue().floatValue() / 5.0)); + event.cancel(); } } } @@ -101,21 +79,20 @@ public class Hitboxes extends Module implements RenderContract3 { } @Subscribe - public void a(BoolEvent var1) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE) { - if (((String)this.f.getValue()).equals("Grim/Vulcan")) { - if (this.j) { - var1.b(new Object[]{true}); + public void onSwingHand(SwingHandEvent event) { + if (event.getPhase() == EventPhase.PRE) { + if (this.antiCheat.getValue().equals("Grim/Vulcan")) { + if (this.sendingAttack) { + event.setSkipPost(true); } else { - HitResult var9 = b.crosshairTarget; - if (var9 != null && var9.getType() == Type.MISS) { - PlayerEntity var10 = CombatUtil.a_class_1657(new Object[]{16945855905304L}); - if (var10 != null && !(b.player.distanceTo(var10) > 3.0F) && ((Boolean)this.g.getValue() || b.player.canSee(var10))) { - if (!(Boolean)this.h.getValue() || !this.a_boolean_______________________(new Object[]{var10, 41274878725551L})) { - Box var11 = var10.getBoundingBox().expand(((Float)this.a.getValue()).floatValue() / 5.0); - if (!var11.raycast(b.player.getEyePos(), var9.getPos()).isEmpty()) { - this.i = true; - var1.a_void_____(new Object[0]); + HitResult crosshairHit = mc.crosshairTarget; + if (crosshairHit != null && crosshairHit.getType() == Type.MISS) { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null && !(mc.player.distanceTo(enemy) > 3.0F) && (this.ignoreWalls.getValue() || mc.player.canSee(enemy))) { + if (!this.skipShielding.getValue() || !this.isRaisingShield(enemy)) { + if (!enemy.getBoundingBox().expand(this.expand.getValue().floatValue() / 5.0).raycast(mc.player.getEyePos(), crosshairHit.getPos()).isEmpty()) { + this.hitPending = true; + event.cancel(); } } } @@ -126,140 +103,61 @@ public class Hitboxes extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 7477342050734L; - long var6 = var2 ^ 91260814807711L; - long var8 = var2 ^ 116550396994070L; - long var10 = var2 ^ 101816702374277L; - long var12 = var2 ^ 71343916077473L; - if (!((String)this.f.getValue()).equals("Grim/Vulcan")) { + public Rotation provideRotation() { + if (!this.antiCheat.getValue().equals("Grim/Vulcan")) { return null; - } else if (!this.i) { + } else if (!this.hitPending) { return null; } else { - HitResult var15 = b.crosshairTarget; - if (var15 != null && var15.getType() == Type.MISS) { - PlayerEntity var16 = CombatUtil.a_class_1657(new Object[]{var12}); - if (var16 != null && !(b.player.distanceTo(var16) > 3.0F) && ((Boolean)this.g.getValue() || b.player.canSee(var16))) { - if ((Boolean)this.h.getValue() && this.a_boolean_______________________(new Object[]{var16, var8})) { - this.i = false; + HitResult crosshairHit = mc.crosshairTarget; + if (crosshairHit != null && crosshairHit.getType() == Type.MISS) { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null && !(mc.player.distanceTo(enemy) > 3.0F) && (this.ignoreWalls.getValue() || mc.player.canSee(enemy))) { + if (this.skipShielding.getValue() && this.isRaisingShield(enemy)) { + this.hitPending = false; return null; } else { - Box var17 = var16.getBoundingBox().expand(((Float)this.a.getValue()).floatValue() / 5.0); - Vec3d var18 = var15.getPos(); - Vec3d var19 = new Vec3d( - MathHelper.clamp(var18.x, var17.minX, var17.maxX), - MathHelper.clamp(var18.y, var17.minY, var17.maxY), - MathHelper.clamp(var18.z, var17.minZ, var17.maxZ) + Box expandedBox = enemy.getBoundingBox().expand(this.expand.getValue().floatValue() / 5.0); + Vec3d missPos = crosshairHit.getPos(); + Vec3d aimPoint = new Vec3d( + MathHelper.clamp(missPos.x, expandedBox.minX, expandedBox.maxX), + MathHelper.clamp(missPos.y, expandedBox.minY, expandedBox.maxY), + MathHelper.clamp(missPos.z, expandedBox.minZ, expandedBox.maxZ) ); - RenderBatch var20 = Prestige.o.a_RenderBatch(new Object[]{var19, var10}); - var20 = WorldUtil.d_RenderBatch(new Object[]{var20, var19, var4}); - if (var20.a_boolean________________________________________(new Object[0])) { - return var20; + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + rotation = RotationUtil.addRandomJitter(rotation, aimPoint); + if (rotation.isClamped()) { + return rotation; } else { - this.i = false; - this.j = true; - InventoryUtil2.a_void_________(new Object[]{var16, var6}); - this.j = false; - return var20; + this.hitPending = false; + this.sendingAttack = true; + PlayerInteractions.attackEntity(enemy); + this.sendingAttack = false; + return rotation; } } } else { - this.i = false; + this.hitPending = false; return null; } } else { - this.i = false; + this.hitPending = false; return null; } } } - private boolean a_boolean_______________________(Object[] var1) { - PlayerEntity var4 = (PlayerEntity)var1[0]; - return var4 != null && var4.isUsingItem() && var4.getActiveItem().isOf(Items.SHIELD); + private boolean isRaisingShield(PlayerEntity player) { + return player != null && player.isUsingItem() && player.getActiveItem().isOf(Items.SHIELD); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/InstantCrossbow.java b/src/main/java/dev/zprestige/prestige/module/combat/InstantCrossbow.java index 4059f87..4fc3ec2 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/InstantCrossbow.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/InstantCrossbow.java @@ -5,12 +5,9 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper35; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.KeyBindingAccessor; import java.util.Set; import net.minecraft.item.CrossbowItem; import net.minecraft.item.ItemStack; @@ -22,71 +19,64 @@ public class InstantCrossbow extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private int a = -1; - private int c = -1; - private int e = -1; + private BoolSetting fromInventory; + private int previousSlot = -1; + private int crossbowSlot = -1; + private int crossbowInventorySlot = -1; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC, Gamemode.Crystal); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 54551600962049L; - if (b.player != null && b.world != null) { - this.j(new Object[]{var4}); + public void onEnable() { + if (mc.player != null && mc.world != null) { + this.swapToCrossbow(); } } @Subscribe - public void a(TickEvent19 var1) { - if (b.player != null && b.world != null) { - if (!b.player.isAlive()) { - this.l(new Object[0]); - this.m(new Object[]{51298390111178L}); + public void onClientTick(ClientTickEvent event) { + if (mc.player != null && mc.world != null) { + if (!mc.player.isAlive()) { + this.resetSlots(); + this.restoreUseKeyState(); } else { - boolean var13 = Prestige.u != null && Prestige.u.a_boolean____________________________________(new Object[]{89789443909602L}); - if (this.c != -1 && !var13 && b.player.getInventory().getStack(this.c).getItem() != Items.CROSSBOW) { - this.l(new Object[0]); + boolean swapsPending = Prestige.inventorySwapQueue != null && Prestige.inventorySwapQueue.hasPendingSwaps(); + if (this.crossbowSlot != -1 && !swapsPending && mc.player.getInventory().getStack(this.crossbowSlot).getItem() != Items.CROSSBOW) { + this.resetSlots(); } - if (b.currentScreen != null) { - this.m(new Object[]{51298390111178L}); + if (mc.currentScreen != null) { + this.restoreUseKeyState(); } else { - ItemStack var14 = b.player.getMainHandStack(); - if (var14.getItem() != Items.CROSSBOW && var13 && this.e != -1) { - this.m(new Object[]{51298390111178L}); - } else if (var14.getItem() != Items.CROSSBOW) { - this.m(new Object[]{51298390111178L}); - if (this.e != -1 && this.c != -1) { - int var10000 = this.e; - int var10001 = this.c; - Object[] var10004 = new Object[]{null, null, 133411734417951L}; - var10004[1] = var10001; - var10004[0] = var10000; - InventoryUtil.f(var10004); + ItemStack mainHandStack = mc.player.getMainHandStack(); + if (mainHandStack.getItem() != Items.CROSSBOW && swapsPending && this.crossbowInventorySlot != -1) { + this.restoreUseKeyState(); + } else if (mainHandStack.getItem() != Items.CROSSBOW) { + this.restoreUseKeyState(); + if (this.crossbowInventorySlot != -1 && this.crossbowSlot != -1) { + InventoryUtil.swapSlot(this.crossbowInventorySlot, this.crossbowSlot); } - this.l(new Object[0]); + this.resetSlots(); if (this.isEnabled()) { - this.toggle(new Object[]{115103427876780L}); + this.toggle(); } - } else if (CrossbowItem.isCharged(var14)) { - this.m(new Object[]{51298390111178L}); + } else if (CrossbowItem.isCharged(mainHandStack)) { + this.restoreUseKeyState(); } else { - int var15 = Math.max(1, CrossbowItem.getPullTime(var14, b.player)); - if (b.player.isUsingItem() && b.player.getItemUseTime() >= var15) { - this.m(new Object[]{51298390111178L}); + int pullTime = Math.max(1, CrossbowItem.getPullTime(mainHandStack, mc.player)); + if (mc.player.isUsingItem() && mc.player.getItemUseTime() >= pullTime) { + this.restoreUseKeyState(); } else { - b.options.useKey.setPressed(true); + mc.options.useKey.setPressed(true); } } } @@ -94,36 +84,26 @@ public class InstantCrossbow extends Module { } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 116859361725830L ^ var2; - long var4 = var2 ^ 6546394538230L; - long var6 = var2 ^ 103184032324901L; - long var8 = var2 ^ 104042659072158L; - if (b.player.getMainHandStack().getItem() != Items.CROSSBOW) { - for (int var11 = 0; var11 < 9; var11++) { - if (b.player.getInventory().getStack(var11).getItem() == Items.CROSSBOW) { - this.a = InventoryUtil.a_int_____(new Object[]{var6}); - this.c = var11; - this.e = -1; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var11; - InventoryUtil.a_void________(var10003); + private void swapToCrossbow() { + if (mc.player.getMainHandStack().getItem() != Items.CROSSBOW) { + for (int slot = 0; slot < 9; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == Items.CROSSBOW) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.crossbowSlot = slot; + this.crossbowInventorySlot = -1; + InventoryUtil.selectSlot(slot); return; } } - if ((Boolean)this.d.getValue()) { - for (int var14 = 9; var14 < 36; var14++) { - if (b.player.getInventory().getStack(var14).getItem() == Items.CROSSBOW) { - int var12 = InventoryUtil.a_int_____(new Object[]{var6}); - this.a = var12; - this.c = var12; - this.e = var14; - Object[] var10004 = new Object[]{null, null, var8}; - var10004[1] = var12; - var10004[0] = var14; - InventoryUtil.f(var10004); + if (this.fromInventory.getValue()) { + for (int inventorySlot = 9; inventorySlot < 36; inventorySlot++) { + if (mc.player.getInventory().getStack(inventorySlot).getItem() == Items.CROSSBOW) { + int selectedSlot = InventoryUtil.getSelectedSlot(); + this.previousSlot = selectedSlot; + this.crossbowSlot = selectedSlot; + this.crossbowInventorySlot = inventorySlot; + InventoryUtil.swapSlot(inventorySlot, selectedSlot); return; } } @@ -131,129 +111,42 @@ public class InstantCrossbow extends Module { } } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 116859361725830L ^ var2; - long var4 = var2 ^ 125562209891263L; - long var6 = var2 ^ 45521701166039L; - if (this.e != -1) { - int var10000 = this.e; - int var10001 = this.c; - Object[] var10004 = new Object[]{null, null, var6}; - var10004[1] = var10001; - var10004[0] = var10000; - InventoryUtil.f(var10004); - } else if (this.a != -1) { - int var9 = this.a; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var9; - InventoryUtil.a_void________(var10003); + private void restorePreviousSlot() { + if (this.crossbowInventorySlot != -1) { + InventoryUtil.swapSlot(this.crossbowInventorySlot, this.crossbowSlot); + } else if (this.previousSlot != -1) { + InventoryUtil.selectSlot(this.previousSlot); } - this.l(new Object[0]); + this.resetSlots(); } - private void l(Object[] var1) { - this.a = -1; - this.c = -1; - this.e = -1; + private void resetSlots() { + this.previousSlot = -1; + this.crossbowSlot = -1; + this.crossbowInventorySlot = -1; } - private void m(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 116859361725830L ^ var2; - long var4 = var2 ^ 62994112740952L; - Event.b(); - int var7 = new RenderHelper35(b.options.useKey).a(new Object[]{var4}).getCode(); - boolean var8; - if (var7 < 8) { - var8 = GLFW.glfwGetMouseButton(b.getWindow().getHandle(), var7) == 1; + private void restoreUseKeyState() { + int keyCode = new KeyBindingAccessor(mc.options.useKey).getBoundKey().getCode(); + boolean physicallyPressed; + if (keyCode < 8) { + physicallyPressed = GLFW.glfwGetMouseButton(mc.getWindow().getHandle(), keyCode) == 1; } else { - var8 = GLFW.glfwGetKey(b.getWindow().getHandle(), var7) == 1; + physicallyPressed = GLFW.glfwGetKey(mc.getWindow().getHandle(), keyCode) == 1; } - b.options.useKey.setPressed(var8); + mc.options.useKey.setPressed(physicallyPressed); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 9927914210479L; - long var6 = var2 ^ 32816452178731L; - if (b.player != null && b.world != null && b.player.isAlive()) { - this.k(new Object[]{var6}); + public void onDisable() { + if (mc.player != null && mc.world != null && mc.player.isAlive()) { + this.restorePreviousSlot(); } else { - this.l(new Object[0]); + this.resetSlots(); } - this.m(new Object[]{var4}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + this.restoreUseKeyState(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/InstantShield.java b/src/main/java/dev/zprestige/prestige/module/combat/InstantShield.java index ca79ab1..e72e337 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/InstantShield.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/InstantShield.java @@ -6,13 +6,10 @@ import dev.zprestige.prestige.KeybindSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderHelper35; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.KeyBindingAccessor; import java.util.Set; import net.minecraft.item.Items; import org.lwjgl.glfw.GLFW; @@ -22,100 +19,85 @@ public class InstantShield extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private KeybindSetting f; - private BoolSetting d; - private boolean i = false; - private int a = -1; - private int c = -1; - private int e = -1; + private KeybindSetting swapKey; + private BoolSetting fromInventory; + private boolean swapKeyWasDown = false; + private int previousSlot = -1; + private int shieldSlot = -1; + private int shieldInventorySlot = -1; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } @Subscribe - public void a(TickEvent19 var1) { - if (b.player != null && b.world != null) { - if (!b.player.isAlive()) { - this.l(new Object[0]); - this.m(new Object[]{27905760393643L}); + public void onClientTick(ClientTickEvent event) { + if (mc.player != null && mc.world != null) { + if (!mc.player.isAlive()) { + this.resetSlots(); + this.restoreUseKeyState(); } else { - if (this.c != -1 - && b.player.getInventory().getStack(this.c).getItem() != Items.SHIELD - && (Prestige.u == null || !Prestige.u.a_boolean____________________________________(new Object[]{89789443909602L}))) { - this.l(new Object[0]); + if (this.shieldSlot != -1 + && mc.player.getInventory().getStack(this.shieldSlot).getItem() != Items.SHIELD + && (Prestige.inventorySwapQueue == null || !Prestige.inventorySwapQueue.hasPendingSwaps())) { + this.resetSlots(); } - boolean var21 = (Integer)this.f.getValue() != -1 && this.f.isPressed(new Object[]{28844609523469L}); - boolean var22 = var21 && !this.i; - boolean var23 = !var21 && this.i; - this.i = var21; - if (b.currentScreen == null) { - if (this.f.isToggleMode()) { - if (var22 && this.a == -1) { - this.j(new Object[]{101409313690721L}); - } else if (var23 && this.a != -1) { - this.k(new Object[]{136057425675881L}); + boolean swapKeyDown = this.swapKey.getValue() != -1 && this.swapKey.isPressed(); + boolean swapKeyPressed = swapKeyDown && !this.swapKeyWasDown; + boolean swapKeyReleased = !swapKeyDown && this.swapKeyWasDown; + this.swapKeyWasDown = swapKeyDown; + if (mc.currentScreen == null) { + if (this.swapKey.isHoldMode()) { + if (swapKeyPressed && this.previousSlot == -1) { + this.swapToShield(); + } else if (swapKeyReleased && this.previousSlot != -1) { + this.restorePreviousSlot(); } - } else if (var22) { - if (this.a != -1) { - this.k(new Object[]{136057425675881L}); + } else if (swapKeyPressed) { + if (this.previousSlot != -1) { + this.restorePreviousSlot(); } else { - this.j(new Object[]{101409313690721L}); + this.swapToShield(); } } } - if (b.currentScreen == null && this.e != -1 && this.c != -1 && InventoryUtil.a_int_____(new Object[]{134339616728996L}) != this.c) { - int var10000 = this.e; - int var10001 = this.c; - Object[] var10004 = new Object[]{null, null, 133411734417951L}; - var10004[1] = var10001; - var10004[0] = var10000; - InventoryUtil.f(var10004); - this.l(new Object[0]); + if (mc.currentScreen == null && this.shieldInventorySlot != -1 && this.shieldSlot != -1 && InventoryUtil.getSelectedSlot() != this.shieldSlot) { + InventoryUtil.swapSlot(this.shieldInventorySlot, this.shieldSlot); + this.resetSlots(); } - if (b.currentScreen == null && this.d(new Object[]{129923587519811L})) { - b.options.useKey.setPressed(true); + if (mc.currentScreen == null && this.canBlockWithShield()) { + mc.options.useKey.setPressed(true); } else { - this.m(new Object[]{27905760393643L}); + this.restoreUseKeyState(); } } } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 52249015264320L ^ var2; - long var4 = var2 ^ 89868647590486L; - long var6 = var2 ^ 10516105942917L; - long var8 = var2 ^ 11992872632894L; - if (b.player.getMainHandStack().getItem() != Items.SHIELD) { - for (int var11 = 0; var11 < 9; var11++) { - if (b.player.getInventory().getStack(var11).getItem() == Items.SHIELD) { - this.a = InventoryUtil.a_int_____(new Object[]{var6}); - this.c = var11; - this.e = -1; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var11; - InventoryUtil.a_void________(var10003); + private void swapToShield() { + if (mc.player.getMainHandStack().getItem() != Items.SHIELD) { + for (int slot = 0; slot < 9; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == Items.SHIELD) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.shieldSlot = slot; + this.shieldInventorySlot = -1; + InventoryUtil.selectSlot(slot); return; } } - if ((Boolean)this.d.getValue()) { - for (int var14 = 9; var14 < 36; var14++) { - if (b.player.getInventory().getStack(var14).getItem() == Items.SHIELD) { - int var12 = InventoryUtil.a_int_____(new Object[]{var6}); - this.a = var12; - this.c = var12; - this.e = var14; - Object[] var10004 = new Object[]{null, null, var8}; - var10004[1] = var12; - var10004[0] = var14; - InventoryUtil.f(var10004); + if (this.fromInventory.getValue()) { + for (int inventorySlot = 9; inventorySlot < 36; inventorySlot++) { + if (mc.player.getInventory().getStack(inventorySlot).getItem() == Items.SHIELD) { + int selectedSlot = InventoryUtil.getSelectedSlot(); + this.previousSlot = selectedSlot; + this.shieldSlot = selectedSlot; + this.shieldInventorySlot = inventorySlot; + InventoryUtil.swapSlot(inventorySlot, selectedSlot); return; } } @@ -123,133 +105,44 @@ public class InstantShield extends Module { } } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 52249015264320L ^ var2; - long var4 = var2 ^ 129988397938782L; - long var6 = var2 ^ 49946886770742L; - if (this.e != -1) { - int var10000 = this.e; - int var10001 = this.c; - Object[] var10004 = new Object[]{null, null, var6}; - var10004[1] = var10001; - var10004[0] = var10000; - InventoryUtil.f(var10004); + private void restorePreviousSlot() { + if (this.shieldInventorySlot != -1) { + InventoryUtil.swapSlot(this.shieldInventorySlot, this.shieldSlot); } else { - int var9 = this.a; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var9; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(this.previousSlot); } - this.l(new Object[0]); + this.resetSlots(); } - private void l(Object[] var1) { - this.a = -1; - this.c = -1; - this.e = -1; + private void resetSlots() { + this.previousSlot = -1; + this.shieldSlot = -1; + this.shieldInventorySlot = -1; } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 52249015264320L ^ var2; - long var4 = var2 ^ 94922939943404L; - return b.player.getMainHandStack().getItem() == Items.SHIELD + private boolean canBlockWithShield() { + return mc.player.getMainHandStack().getItem() == Items.SHIELD ? true - : b.player.getOffHandStack().getItem() == Items.SHIELD && !InventoryUtil2.e(new Object[]{var4}); + : mc.player.getOffHandStack().getItem() == Items.SHIELD && !PlayerInteractions.isHoldingUsableItem(); } - private void m(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 52249015264320L ^ var2; - long var4 = var2 ^ 82743220821503L; - Event.b(); - int var7 = new RenderHelper35(b.options.useKey).a(new Object[]{var4}).getCode(); - boolean var8; - if (var7 < 8) { - var8 = GLFW.glfwGetMouseButton(b.getWindow().getHandle(), var7) == 1; + private void restoreUseKeyState() { + int keyCode = new KeyBindingAccessor(mc.options.useKey).getBoundKey().getCode(); + boolean physicallyPressed; + if (keyCode < 8) { + physicallyPressed = GLFW.glfwGetMouseButton(mc.getWindow().getHandle(), keyCode) == 1; } else { - var8 = GLFW.glfwGetKey(b.getWindow().getHandle(), var7) == 1; + physicallyPressed = GLFW.glfwGetKey(mc.getWindow().getHandle(), keyCode) == 1; } - b.options.useKey.setPressed(var8); + mc.options.useKey.setPressed(physicallyPressed); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 68998707433166L; - this.m(new Object[]{var4}); - this.l(new Object[0]); - this.i = false; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + this.restoreUseKeyState(); + this.resetSlots(); + this.swapKeyWasDown = false; } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/KeepSprint.java b/src/main/java/dev/zprestige/prestige/module/combat/KeepSprint.java index 346ad19..ff885fc 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/KeepSprint.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/KeepSprint.java @@ -4,14 +4,10 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.module.movement.WTap; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.entity.Entity; +import dev.zprestige.prestige.render.RandomUtil; import org.lwjgl.glfw.GLFW; public class KeepSprint extends Module { @@ -19,37 +15,34 @@ public class KeepSprint extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private RangeSetting a; - private boolean i = false; - private int c = -1; + private RangeSetting restoreDelay; + private boolean pendingSprintReset = false; + private int restoreTicks = -1; - private boolean d(Object[] var1) { - return GLFW.glfwGetKey(b.getWindow().getHandle(), 87) == 1; + private boolean isForwardKeyDown() { + return GLFW.glfwGetKey(mc.getWindow().getHandle(), 87) == 1; } @Subscribe - public void a(EntityEvent var1) { - if (b.player != null) { - Entity var7 = var1.a(new Object[0]); - if (var7 != null) { - if (b.player.isSprinting() && this.d(new Object[]{121227298295364L})) { - this.i = true; + public void onAttackEntity(AttackEntityEvent event) { + if (mc.player != null) { + if (event.getTarget() != null) { + if (mc.player.isSprinting() && this.isForwardKeyDown()) { + this.pendingSprintReset = true; } } } } - private boolean e(Object[] var1) { - Event.b(); - - for (Module var6 : (Iterable)(Prestige.moduleManager.getModules())) { - if (var6.getClass().equals(WTap.class)) { - if (!var6.isEnabled()) { + private boolean isWTapActive() { + for (Module candidate : (Iterable)(Prestige.moduleManager.getModules())) { + if (candidate.getClass().equals(WTap.class)) { + if (!candidate.isEnabled()) { return false; } - WTap var7 = (WTap)var6; - return var7.d(new Object[0]) || var7.e(new Object[0]); + WTap wTap = (WTap)candidate; + return wTap.isTapPending() || wTap.isForwardReleased(); } } @@ -57,43 +50,40 @@ public class KeepSprint extends Module { } @Subscribe - public void a(TickEvent19 var1) { - if (this.e(new Object[]{43084567827504L})) { - this.i = false; - this.c = -1; - } else if (this.c > 0) { - this.c--; + public void onClientTick(ClientTickEvent event) { + if (this.isWTapActive()) { + this.pendingSprintReset = false; + this.restoreTicks = -1; + } else if (this.restoreTicks > 0) { + this.restoreTicks--; } else { - if (this.c == 0) { - this.c = -1; - if (b.player != null && this.d(new Object[]{121227298295364L})) { - b.options.forwardKey.setPressed(true); - b.player.setSprinting(true); + if (this.restoreTicks == 0) { + this.restoreTicks = -1; + if (mc.player != null && this.isForwardKeyDown()) { + mc.options.forwardKey.setPressed(true); + mc.player.setSprinting(true); } } - if (this.i) { - this.i = false; - if (b.player != null) { - if (!b.options.sneakKey.isPressed() && !b.player.isSneaking()) { - if (this.d(new Object[]{121227298295364L})) { - if (!b.player.horizontalCollision) { - if (!b.player.isUsingItem()) { - if (b.player.getHungerManager().getFoodLevel() > 6) { - b.options.forwardKey.setPressed(false); - int var11 = Math.round(this.a.getLow()); - int var12 = Math.round(this.a.getHigh()); - int var10001; - if (var11 == var12) { - var10001 = var11; + if (this.pendingSprintReset) { + this.pendingSprintReset = false; + if (mc.player != null) { + if (!mc.options.sneakKey.isPressed() && !mc.player.isSneaking()) { + if (this.isForwardKeyDown()) { + if (!mc.player.horizontalCollision) { + if (!mc.player.isUsingItem()) { + if (mc.player.getHungerManager().getFoodLevel() > 6) { + mc.options.forwardKey.setPressed(false); + int minTicks = Math.round(this.restoreDelay.getLow()); + int maxTicks = Math.round(this.restoreDelay.getHigh()); + int delayTicks; + if (minTicks == maxTicks) { + delayTicks = minTicks; } else { - Object[] var10005 = new Object[]{null, null, 97028099236409L}; - var10005[1] = var12; - var10005[0] = var11; - var10001 = RenderUtil5.a_int__________________________(var10005); + delayTicks = RandomUtil.randomInt(minTicks, maxTicks); } - this.c = var10001; + this.restoreTicks = delayTicks; } } } @@ -103,72 +93,4 @@ public class KeepSprint extends Module { } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/KillAura.java b/src/main/java/dev/zprestige/prestige/module/combat/KillAura.java index 07f9def..9fa3a94 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/KillAura.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/KillAura.java @@ -10,28 +10,22 @@ import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent12; -import dev.zprestige.prestige.event.TickEvent27; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.AutoAttackEvent; +import dev.zprestige.prestige.event.Render3DEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.network.PacketManager; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderUtil5; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.RandomUtil; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.Entity; @@ -43,423 +37,257 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class KillAura extends Module implements RenderContract3 { - public static KillAura a; - private FloatSetting c; - private BoolSetting d; - private BoolSetting e; - private BoolSetting f; - private BoolSetting g; - private EnumSetting h; - private RangeSetting i; - private FloatSetting j; - private FloatSetting k; - private FloatSetting l; - private EnumSetting m; - private MultiSetting n; - private BoolSetting o; - private FloatSetting p; - private ColorSetting q; - private RenderHelper27 r = new RenderHelper27(26293358099357L); - private RenderHelper27 s = new RenderHelper27(26293358099357L); - private Entity t; - private static final String[] u = new String[]{"Head", "Neck", "Chest", "Waist", "Thighs", "Legs"}; - private static final double[] v = new double[]{0.95, 0.85, 0.7, 0.55, 0.35, 0.1}; +public class KillAura extends Module implements RotationProvider { + public static KillAura instance; + private FloatSetting reach; + private BoolSetting stickyTargeting; + private BoolSetting humanizedAim; + private BoolSetting playerOnly; + private BoolSetting weaponOnly; + private EnumSetting cooldownMode; + private RangeSetting cooldownRange; + private FloatSetting missChance; + private FloatSetting maxYaw; + private FloatSetting targetFov; + private EnumSetting onShielding; + private MultiSetting aimPoints; + private BoolSetting renderDot; + private FloatSetting dotSize; + private ColorSetting dotColor; + private StopWatch attackTimer = new StopWatch(); + private StopWatch releaseUseTimer = new StopWatch(); + private Entity currentTarget; + private static final String[] AIM_POINT_NAMES = new String[]{"Head", "Neck", "Chest", "Waist", "Thighs", "Legs"}; + private static final double[] AIM_POINT_HEIGHTS = new double[]{0.95, 0.85, 0.7, 0.55, 0.35, 0.1}; public KillAura() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - a = this; - this.i.setVisibility_RangeSetting(new Object[]{(Predicate)lpL161_0 -> ((String)this.h.getValue()).equals("Range"), 37043306203287L}); - this.q.setVisibility_ColorSetting(new Object[]{(Predicate)lpL159_0 -> (Boolean)this.o.getValue(), 119980880492450L}); - this.p.setVisibility_FloatSetting(new Object[]{(Predicate)lpL160_0 -> (Boolean)this.o.getValue(), 35046756052036L}); + instance = this; + this.cooldownRange.visibleWhen((Predicate)ignored -> this.cooldownMode.getValue().equals("Range")); + this.dotColor.visibleWhen((Predicate)ignored -> this.renderDot.getValue()); + this.dotSize.visibleWhen((Predicate)ignored -> this.renderDot.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 67472954705639L; - long var6 = var2 ^ 36160164621105L; - long var8 = var2 ^ 65603549542278L; - long var10 = var2 ^ 29247161167908L; - long var12 = var2 ^ 82777235594348L; - long var14 = var2 ^ 72189596612731L; - long var16 = var2 ^ 81856115773718L; - long var18 = var2 ^ 72467876329892L; - long var20 = var2 ^ 136278178789514L; - long var22 = var2 ^ 114164831697321L; - long var24 = var2 ^ 7477342050734L; - long var26 = var2 ^ 91260814807711L; - long var28 = var2 ^ 87165761547780L; - long var30 = var2 ^ 139097133863433L; - long var32 = var2 ^ 93805536655092L; - long var34 = var2 ^ 127186431202576L; - long var36 = var2 ^ 85547089512629L; - long var38 = var2 ^ 101816702374277L; - if (b.player.isUsingItem()) { + public Rotation provideRotation() { + if (mc.player.isUsingItem()) { return null; - } else if (AutoObbyCrystal.R) { + } else if (AutoObbyCrystal.sequenceActive) { return null; - } else if (Prestige.o.d_boolean______(new Object[0])) { + } else if (Prestige.silentRotationManager.hasActedThisTick()) { return null; - } else if (!InventoryUtil.a(new Object[]{b.player.getMainHandStack(), var8}) - && !(b.player.getMainHandStack().getItem() instanceof AxeItem) - && (Boolean)this.g.getValue()) { + } else if (!InventoryUtil.isSword(mc.player.getMainHandStack()) + && !(mc.player.getMainHandStack().getItem() instanceof AxeItem) + && this.weaponOnly.getValue()) { return null; } else { - String var42 = (String)this.h.getValue(); - - float var41 = switch (var42) { + float cooldownThreshold = switch (this.cooldownMode.getValue()) { case "Vanilla" -> 1.0F; - case "Range" -> this.i.randomInRange(new Object[]{var28}) / 100.0F; - default -> this.i.getLow() / 100.0F; + case "Range" -> this.cooldownRange.randomInRange() / 100.0F; + default -> this.cooldownRange.getLow() / 100.0F; }; - RenderHelper27 var10000 = this.r; - Object[] var10004 = new Object[]{null, var36}; - var10004[0] = 100.0F; - boolean var48 = !var10000.a(var10004) || b.player.getAttackCooldownProgress(0.0F) < var41 || !b.player.isOnGround() && b.player.fallDistance <= 0.0; - if (this.t != null) { - if (!this.t.isAlive()) { - this.t = null; + boolean attackNotReady = !this.attackTimer.hasElapsed(100.0F) || mc.player.getAttackCooldownProgress(0.0F) < cooldownThreshold || !mc.player.isOnGround() && mc.player.fallDistance <= 0.0; + if (this.currentTarget != null) { + if (!this.currentTarget.isAlive()) { + this.currentTarget = null; return null; } - Vec3d var49 = this.t.getEyePos(); - if (Math.sqrt(b.player.squaredDistanceTo(var49.x, var49.y, var49.z)) > 5.0) { - this.t = null; + Vec3d targetEyePos = this.currentTarget.getEyePos(); + if (Math.sqrt(mc.player.squaredDistanceTo(targetEyePos.x, targetEyePos.y, targetEyePos.z)) > 5.0) { + this.currentTarget = null; } - RenderBatch var44 = WorldUtil.a_RenderBatch_(new Object[]{var49, var16}); - RenderBatch var53 = new RenderBatch(b.player.getYaw(), b.player.getPitch()); - float var10002 = (Float)this.k.getValue() * 2.0F; - Object[] var10005 = new Object[]{null, null, null, var12}; - var10005[2] = var10002; - var10005[1] = var44; - var10005[0] = var53; - if (!WorldUtil.f(var10005)) { - this.t = null; + Rotation rotationToTarget = RotationUtil.getRotationTo(targetEyePos); + if (!RotationUtil.isWithinAngle(new Rotation(mc.player.getYaw(), mc.player.getPitch()), rotationToTarget, this.maxYaw.getValue() * 2.0F)) { + this.currentTarget = null; } } - if (!(Boolean)this.d.getValue() || this.t == null) { - boolean var55 = (Boolean)this.f.getValue(); - float var10003 = (Float)this.l.getValue(); - Object[] var10006 = new Object[]{null, null, var4}; - var10006[1] = var10003; - var10006[0] = var55; - this.t = this.a_class_1297_(var10006); + if (!this.stickyTargeting.getValue() || this.currentTarget == null) { + this.currentTarget = this.findTarget(this.playerOnly.getValue(), this.targetFov.getValue()); } - if (this.t == null) { + if (this.currentTarget == null) { return null; } else { - Vec3d var50 = this.a_class_243__________(new Object[]{this.t, var14}); - RenderBatch var51 = Prestige.o.a_RenderBatch(new Object[]{var50, var38}); - if ((Boolean)this.e.getValue() && !var51.a_boolean________________________________________(new Object[0])) { - var51 = WorldUtil.d_RenderBatch(new Object[]{var51, var50, var24}); + Vec3d aimPoint = this.getAimPoint(this.currentTarget); + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + if (this.humanizedAim.getValue() && !rotation.isClamped()) { + rotation = RotationUtil.addRandomJitter(rotation, aimPoint); } - if (var51.a(new Object[0]) - b.player.getYaw() > (Float)this.k.getValue() * 2.0F - || var51.a(new Object[0]) - b.player.getYaw() < -(Float)this.k.getValue() * 2.0F) { + if (rotation.getYaw() - mc.player.getYaw() > this.maxYaw.getValue() * 2.0F + || rotation.getYaw() - mc.player.getYaw() < -this.maxYaw.getValue() * 2.0F) { return null; - } else if (!b.player.canSee(this.t)) { + } else if (!mc.player.canSee(this.currentTarget)) { return null; - } else if (WorldUtil2.a(new Object[]{this.t, var22})) { + } else if (BlockUtil.isCobwebInLineOfSight(this.currentTarget)) { return null; - } else if (this.a_double_______(new Object[]{this.t, var20}) > ((Float)this.c.getValue()).floatValue()) { + } else if (this.getHitboxDistance(this.currentTarget) > this.reach.getValue().floatValue()) { return null; - } else if (var48) { + } else if (attackNotReady) { return null; - } else if (var51.a_boolean________________________________________(new Object[0])) { - return var51; + } else if (rotation.isClamped()) { + return rotation; } else { - if ((Float)this.j.getValue() > 0.0F) { - var10004 = new Object[]{null, null, var32}; - var10004[1] = 100.0F; - var10004[0] = 0.0F; - if (RenderUtil5.a(var10004) < (Float)this.j.getValue()) { - this.r.a_void_____________________(new Object[]{var10}); + if (this.missChance.getValue() > 0.0F) { + if (RandomUtil.randomFloat(0.0F, 100.0F) < this.missChance.getValue()) { + this.attackTimer.reset(); return null; } } - new TickEvent12().b_boolean__(new Object[]{var6}); - if (this.t instanceof PlayerEntity var45 && CombatUtil.b_boolean(new Object[]{var45, var30})) { - String var52 = (String)this.m.getValue(); - if (var52.equals("Skip")) { + new AutoAttackEvent().post(); + if (this.currentTarget instanceof PlayerEntity shieldingPlayer && TargetSelector.isBlockingWithShield(shieldingPlayer)) { + String shieldMode = this.onShielding.getValue(); + if (shieldMode.equals("Skip")) { return null; } - if (var52.equals("Prefer Axe") && !(b.player.getMainHandStack().getItem() instanceof AxeItem)) { - int var47 = this.d(new Object[]{var18}); - if (var47 != -1) { - PacketManager var54 = Prestige.t; - var10004 = new Object[]{null, var34}; - var10004[0] = var47; - var54.a(var10004); + if (shieldMode.equals("Prefer Axe") && !(mc.player.getMainHandStack().getItem() instanceof AxeItem)) { + int axeSlot = this.findAxeSlot(); + if (axeSlot != -1) { + Prestige.silentSlotManager.spoofSlot(axeSlot); } } } - InventoryUtil2.a_void_________(new Object[]{this.t, var26}); - this.r.a_void_____________________(new Object[]{var10}); - return var51; + PlayerInteractions.attackEntity(this.currentTarget); + this.attackTimer.reset(); + return rotation; } } } } - private int d(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 <= 8; var5++) { - if (b.player.getInventory().getStack(var5).getItem() instanceof AxeItem) { - return var5; + private int findAxeSlot() { + for (int slot = 0; slot <= 8; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() instanceof AxeItem) { + return slot; } } return -1; } - private Entity a_class_1297_(Object[] var1) { - boolean var2 = (Boolean)var1[0]; - float var5 = (Float)var1[1]; - long var3 = (Long)var1[2]; - var3 = 61843846160931L ^ var3; - long var6 = var3 ^ 101644536818423L; - long var8 = var3 ^ 135901068246850L; - long var10 = var3 ^ 99332469330366L; - long var12 = var3 ^ 85950663047336L; - long var14 = var3 ^ 85941729193540L; - Entity var17 = null; - Event.b(); - double var18 = Double.MAX_VALUE; - RenderBatch var20 = new RenderBatch(b.player.getYaw(), b.player.getPitch()); + private Entity findTarget(boolean onlyPlayers, float maxFov) { + Entity closest = null; + double closestDistanceSq = Double.MAX_VALUE; + Rotation playerRotation = new Rotation(mc.player.getYaw(), mc.player.getPitch()); - for (Entity var22 : b.world.getEntities()) { - if (var22 != b.player - && var22.isAlive() - && (!var2 || CombatUtil.a(new Object[]{var22, var10})) - && Prestige.i.a_boolean_(new Object[]{var22, var8}) - && (!(var22 instanceof PlayerEntity) || !Prestige.g.a(new Object[]{var22.getName().getString(), var6}))) { - Vec3d var23 = var22.getEyePos(); - double var24 = b.player.squaredDistanceTo(var23.x, var23.y, var23.z); - if (!(Math.sqrt(var24) > 5.0)) { - if (var5 < 360.0F) { - float var10000 = (float)var23.x; - float var10001 = (float)var23.y; - float var10002 = (float)var23.z; - Object[] var10005 = new Object[]{null, null, null, var14}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var10000; - RenderBatch var26 = WorldUtil.b_RenderBatch_____________(var10005); - var10005 = new Object[]{null, null, null, var12}; - var10005[2] = var5; - var10005[1] = var26; - var10005[0] = var20; - if (!WorldUtil.f(var10005)) { + for (Entity entity : mc.world.getEntities()) { + if (entity != mc.player + && entity.isAlive() + && (!onlyPlayers || TargetSelector.isPlayer(entity)) + && Prestige.botFilter.isValidTarget(entity) + && (!(entity instanceof PlayerEntity) || !Prestige.friendManager.isFriend(entity.getName().getString()))) { + Vec3d eyePos = entity.getEyePos(); + double distanceSq = mc.player.squaredDistanceTo(eyePos.x, eyePos.y, eyePos.z); + if (!(Math.sqrt(distanceSq) > 5.0)) { + if (maxFov < 360.0F) { + if (!RotationUtil.isWithinAngle(playerRotation, RotationUtil.getRotationToPoint((float)eyePos.x, (float)eyePos.y, (float)eyePos.z), maxFov)) { continue; } } - if (var24 < var18) { - var17 = var22; - var18 = var24; + if (distanceSq < closestDistanceSq) { + closest = entity; + closestDistanceSq = distanceSq; } } } } - return var17; + return closest; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); } - private double a_double_______(Object[] var1) { - Entity var4 = (Entity)var1[0]; - Vec3d var5 = b.player.getEyePos(); - Box var6 = var4.getBoundingBox(); - double var7 = MathHelper.clamp(var5.x, var6.minX, var6.maxX); - double var9 = MathHelper.clamp(var5.y, var6.minY, var6.maxY); - double var11 = MathHelper.clamp(var5.z, var6.minZ, var6.maxZ); - double var13 = var5.x - var7; - double var15 = var5.y - var9; - double var17 = var5.z - var11; - return Math.sqrt(var13 * var13 + var15 * var15 + var17 * var17); + private double getHitboxDistance(Entity entity) { + Vec3d eyePos = mc.player.getEyePos(); + Box box = entity.getBoundingBox(); + double nearestX = MathHelper.clamp(eyePos.x, box.minX, box.maxX); + double nearestY = MathHelper.clamp(eyePos.y, box.minY, box.maxY); + double nearestZ = MathHelper.clamp(eyePos.z, box.minZ, box.maxZ); + double dx = eyePos.x - nearestX; + double dy = eyePos.y - nearestY; + double dz = eyePos.z - nearestZ; + return Math.sqrt(dx * dx + dy * dy + dz * dz); } - private Vec3d a_class_243__________(Object[] var1) { - Entity var4 = (Entity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 61843846160931L ^ var2; - long var5 = var2 ^ 32535654448395L; - Event.b(); - Vec3d var8 = b.player.getEyePos(); - Box var9 = var4.getBoundingBox(); - double var10 = var9.maxY - var9.minY; - if (var10 <= 0.0) { - return var4.getEyePos(); + private Vec3d getAimPoint(Entity entity) { + Vec3d eyePos = mc.player.getEyePos(); + Box box = entity.getBoundingBox(); + double boxHeight = box.maxY - box.minY; + if (boxHeight <= 0.0) { + return entity.getEyePos(); } else { - double var12 = MathHelper.clamp(var8.x, var9.minX, var9.maxX); - double var14 = MathHelper.clamp(var8.z, var9.minZ, var9.maxZ); - double var16 = (var8.x - var12) * (var8.x - var12) + (var8.z - var14) * (var8.z - var14); - double var18 = Double.POSITIVE_INFINITY; - Vec3d var20 = null; + double nearestX = MathHelper.clamp(eyePos.x, box.minX, box.maxX); + double nearestZ = MathHelper.clamp(eyePos.z, box.minZ, box.maxZ); + double horizontalDistSq = (eyePos.x - nearestX) * (eyePos.x - nearestX) + (eyePos.z - nearestZ) * (eyePos.z - nearestZ); + double bestDistSq = Double.POSITIVE_INFINITY; + Vec3d bestPoint = null; - for (int var21 = 0; var21 < u.length; var21++) { - if (this.n.isSelected(new Object[]{u[var21], var5})) { - double var22 = var9.minY + v[var21] * var10; - double var24 = var8.y - var22; - double var26 = var16 + var24 * var24; - if (var26 < var18) { - var18 = var26; - var20 = new Vec3d(var12, var22, var14); + for (int index = 0; index < AIM_POINT_NAMES.length; index++) { + if (this.aimPoints.isSelected(AIM_POINT_NAMES[index])) { + double pointY = box.minY + AIM_POINT_HEIGHTS[index] * boxHeight; + double dy = eyePos.y - pointY; + double distSq = horizontalDistSq + dy * dy; + if (distSq < bestDistSq) { + bestDistSq = distSq; + bestPoint = new Vec3d(nearestX, pointY, nearestZ); } } } - return var20 != null ? var20 : var4.getEyePos(); + return bestPoint != null ? bestPoint : entity.getEyePos(); } } @Subscribe - public void a(PacketEvent2 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerActionC2SPacket var7 && var7.getAction() == Action.RELEASE_USE_ITEM) { - this.s.a_void_____________________(new Object[]{93540861878173L}); + public void onPacketSend(PacketSendEvent event) { + if (event.getPacket() instanceof PlayerActionC2SPacket actionPacket && actionPacket.getAction() == Action.RELEASE_USE_ITEM) { + this.releaseUseTimer.reset(); } } @Subscribe - public void a(TickEvent27 var1) { - if ((Boolean)this.o.getValue()) { - Entity var13 = this.t; - if (var13 != null && var13.isAlive()) { - Vec3d var14 = PositionUtil.c(new Object[]{var13, 91425777529078L}); - float var15 = MatrixStack.a_float_______________(new Object[]{601921721859L}); - double var16 = var13.getEyeY() - var13.getY(); - double var18 = var14.x + (var13.getX() - var14.x) * var15; - double var20 = var14.y + (var13.getY() - var14.y) * var15 + var16; - double var22 = var14.z + (var13.getZ() - var14.z) * var15; - float var24 = (Float)this.p.getValue(); - float var25 = (float)(var18 - var24); - float var26 = (float)(var20 - var24); - float var27 = (float)(var22 - var24); - float var28 = (float)(var18 + var24); - float var29 = (float)(var20 + var24); - float var30 = (float)(var22 + var24); - Color var31 = (Color)this.q.getValue(); - Color var32 = new Color(var31.getRed(), var31.getGreen(), var31.getBlue(), Math.min(255, var31.getAlpha() + 55)); - MatrixCameraData var10000 = var1.b; - RenderHelper8 var10001 = var1.a; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var31, 108390846498585L}; - var10011[7] = var30; - var10011[6] = var29; - var10011[5] = var28; - var10011[4] = var27; - var10011[3] = var26; - var10011[2] = var25; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.h(var10011); - var10000 = var1.b; - var10001 = var1.a; - var10011 = new Object[]{null, null, null, null, null, null, null, null, var32, 119015971454350L}; - var10011[7] = var30; - var10011[6] = var29; - var10011[5] = var28; - var10011[4] = var27; - var10011[3] = var26; - var10011[2] = var25; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); + public void onRender3D(Render3DEvent event) { + if (this.renderDot.getValue()) { + Entity target = this.currentTarget; + if (target != null && target.isAlive()) { + Vec3d lastPos = PositionUtil.getLastPos(target); + float tickDelta = Render2D.getTickDelta(); + double eyeHeight = target.getEyeY() - target.getY(); + double renderX = lastPos.x + (target.getX() - lastPos.x) * tickDelta; + double renderY = lastPos.y + (target.getY() - lastPos.y) * tickDelta + eyeHeight; + double renderZ = lastPos.z + (target.getZ() - lastPos.z) * tickDelta; + float radius = this.dotSize.getValue(); + float minX = (float)(renderX - radius); + float minY = (float)(renderY - radius); + float minZ = (float)(renderZ - radius); + float maxX = (float)(renderX + radius); + float maxY = (float)(renderY + radius); + float maxZ = (float)(renderZ + radius); + Color fillColor = this.dotColor.getValue(); + Color outlineColor = new Color(fillColor.getRed(), fillColor.getGreen(), fillColor.getBlue(), Math.min(255, fillColor.getAlpha() + 55)); + ShapeRenderer.drawFilledBox(event.context, event.renderer, minX, minY, minZ, maxX, maxY, maxZ, fillColor); + ShapeRenderer.drawBoxOutline(event.context, event.renderer, minX, minY, minZ, maxX, maxY, maxZ, outlineColor); } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/NoMissDelay.java b/src/main/java/dev/zprestige/prestige/module/combat/NoMissDelay.java index 25a3d02..f4e6d32 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/NoMissDelay.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/NoMissDelay.java @@ -7,14 +7,11 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.BoolEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent28; +import dev.zprestige.prestige.event.SwingHandEvent; +import dev.zprestige.prestige.event.ResetAttackCooldownEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderUtil5; +import dev.zprestige.prestige.render.RandomUtil; import dev.zprestige.prestige.type.EventPhase; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.player.PlayerEntity; @@ -23,61 +20,51 @@ import net.minecraft.util.hit.HitResult; import net.minecraft.util.hit.HitResult.Type; public class NoMissDelay extends Module { - private IntSetting a; - private BoolSetting d; - private FloatSetting c; - private boolean i = false; - private static final long l = 1273304670500028516L; + private IntSetting humanizePercent; + private BoolSetting inCombatOnly; + private FloatSetting range; + private boolean allowVanillaMiss = false; + private static final long PERCENT_ROLL_MAX = 1273304670500028516L; public NoMissDelay() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.c.setVisibility_FloatSetting(new Object[]{(Predicate)lpL368_0 -> (Boolean)this.d.getValue(), 35046756052036L}); + this.range.visibleWhen((Predicate)ignored -> this.inCombatOnly.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } @Subscribe - public void a(TickEvent28 var1) { - Event.b(); - HitResult var11 = b.crosshairTarget; - if (var11 != null) { - if ((InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L}) || b.player.getMainHandStack().getItem() instanceof AxeItem) - && var11.getType() == Type.MISS) { - if ((Boolean)this.d.getValue() && !this.d(new Object[]{6568117175539L})) { - this.i = true; + public void onResetAttackCooldown(ResetAttackCooldownEvent event) { + HitResult crosshairHit = mc.crosshairTarget; + if (crosshairHit != null) { + if ((InventoryUtil.isSword(mc.player.getMainHandStack()) || mc.player.getMainHandStack().getItem() instanceof AxeItem) + && crosshairHit.getType() == Type.MISS) { + if (this.inCombatOnly.getValue() && !this.isEnemyNearby()) { + this.allowVanillaMiss = true; return; } - int var10002 = (int)l; - Object[] var10005 = new Object[]{null, null, 97028099236409L}; - var10005[1] = var10002; - var10005[0] = 1; - this.i = RenderUtil5.a_int__________________________(var10005) <= (Integer)this.a.getValue(); - if (!this.i) { - var1.a_void_____(new Object[0]); + this.allowVanillaMiss = RandomUtil.randomInt(1, (int)PERCENT_ROLL_MAX) <= this.humanizePercent.getValue(); + if (!this.allowVanillaMiss) { + event.cancel(); } } } } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 38732078045089L ^ var2; - long var4 = var2 ^ 53166753329880L; - long var6 = var2 ^ 26056511006573L; - float var9 = (Float)this.c.getValue(); - float var10 = var9 * var9; - Event.b(); + private boolean isEnemyNearby() { + float radius = this.range.getValue(); + float radiusSq = radius * radius; - for (PlayerEntity var12 : b.world.getPlayers()) { - if (var12 != b.player - && var12.isAlive() - && Prestige.i.a_boolean_(new Object[]{var12, var6}) - && !Prestige.g.a(new Object[]{var12.getName().getString(), var4}) - && b.player.squaredDistanceTo(var12) <= var10) { + for (PlayerEntity player : mc.world.getPlayers()) { + if (player != mc.player + && player.isAlive() + && Prestige.botFilter.isValidTarget(player) + && !Prestige.friendManager.isFriend(player.getName().getString()) + && mc.player.squaredDistanceTo(player) <= radiusSq) { return true; } } @@ -86,85 +73,17 @@ public class NoMissDelay extends Module { } @Subscribe - public void a(BoolEvent var1) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.POST) { - HitResult var7 = b.crosshairTarget; - if (var7 != null) { - if ((InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L}) || b.player.getMainHandStack().getItem() instanceof AxeItem) - && var7.getType() == Type.MISS - && !this.i) { - b.player.handSwinging = false; - var1.a_void_____(new Object[0]); + public void onSwingHand(SwingHandEvent event) { + if (event.getPhase() == EventPhase.POST) { + HitResult crosshairHit = mc.crosshairTarget; + if (crosshairHit != null) { + if ((InventoryUtil.isSword(mc.player.getMainHandStack()) || mc.player.getMainHandStack().getItem() instanceof AxeItem) + && crosshairHit.getType() == Type.MISS + && !this.allowVanillaMiss) { + mc.player.handSwinging = false; + event.cancel(); } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/PearlFollow.java b/src/main/java/dev/zprestige/prestige/module/combat/PearlFollow.java index 06588b2..19de865 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/PearlFollow.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/PearlFollow.java @@ -7,18 +7,15 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.PearlFollowHelper; -import dev.zprestige.prestige.data.FloatDoubleIntData; -import dev.zprestige.prestige.data.VecIntDoubleData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.combat.PearlFollowSimulatedPearl; +import dev.zprestige.prestige.data.PearlThrowOption; +import dev.zprestige.prestige.data.PearlFollowLanding; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -31,110 +28,88 @@ import net.minecraft.util.Hand; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class PearlFollow extends Module implements RenderContract3 { +public class PearlFollow extends Module implements RotationProvider { public PearlFollow() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - public static boolean a; - private FloatSetting c; - private FloatSetting d; - private FloatSetting e; - private FloatSetting f; - private RangeSetting g; - private RangeSetting h; - private BoolSetting i; - private BoolSetting j; - private Set k = new HashSet(); - private RenderHelper27 l = new RenderHelper27(26293358099357L); - private RenderHelper27 m = new RenderHelper27(26293358099357L); - private int n = -1; - private Vec3d o = null; - private static final int p = 400; - private static final float q = 1.5F; - private static final float r = -85.0F; - private static final float s = 85.0F; - private static final float t = 2.0F; - private static final float u = 0.2F; - private static final float v = 2.2F; - private static final float w = 6.0F; - private static final int x = 3; - private static final double y = 0.25; + public static boolean active; + private FloatSetting throwerRange; + private FloatSetting minLandingDistance; + private FloatSetting landingRange; + private FloatSetting maxError; + private RangeSetting delay; + private RangeSetting swapBackDelay; + private BoolSetting onlyOnGround; + private BoolSetting targetOnly; + private Set seenPearlIds = new HashSet(); + private StopWatch throwTimer = new StopWatch(); + private StopWatch swapBackTimer = new StopWatch(); + private int previousSlot = -1; + private Vec3d pendingLanding = null; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal, Gamemode.Sword, Gamemode.UHC, Gamemode.Mace); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); - this.k.clear(); - this.o = null; - this.n = -1; - a = false; + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); + this.seenPearlIds.clear(); + this.pendingLanding = null; + this.previousSlot = -1; + active = false; } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - long var6 = var2 ^ 6195065515282L; - Event.b(); - Prestige.o.f(new Object[]{this, var4}); - if (this.n != -1 && b.player != null) { - int var10000 = this.n; - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + if (this.previousSlot != -1 && mc.player != null) { + InventoryUtil.selectSlot(this.previousSlot); } - this.k.clear(); - this.o = null; - this.n = -1; - a = false; + this.seenPearlIds.clear(); + this.pendingLanding = null; + this.previousSlot = -1; + active = false; } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null && b.player != null) { - if (this.n != -1 && this.m.b(new Object[]{this.h, 89714527855213L})) { - int var10000 = this.n; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - this.n = -1; + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { + if (this.previousSlot != -1 && this.swapBackTimer.hasElapsedRandom(this.swapBackDelay)) { + InventoryUtil.selectSlot(this.previousSlot); + this.previousSlot = -1; } - a = this.n != -1 || this.o != null; - HashSet var17 = new HashSet(); + active = this.previousSlot != -1 || this.pendingLanding != null; + HashSet currentIds = new HashSet(); - for (Entity var19 : b.world.getEntities()) { - if (var19 instanceof EnderPearlEntity var20) { - var17.add(var20.getId()); - if (!this.k.contains(var20.getId())) { - this.k.add(var20.getId()); - if (var20.getOwner() instanceof PlayerEntity var22 - && !var22.equals(b.player) - && !Prestige.g.a(new Object[]{var22.getName().getString(), 24848952222090L})) { - if ((Boolean)this.j.getValue()) { - PlayerEntity var23 = Prestige.n.a(new Object[0]); - if (var23 == null || !var22.getUuid().equals(var23.getUuid())) { + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EnderPearlEntity pearl) { + currentIds.add(pearl.getId()); + if (!this.seenPearlIds.contains(pearl.getId())) { + this.seenPearlIds.add(pearl.getId()); + if (pearl.getOwner() instanceof PlayerEntity thrower + && !thrower.equals(mc.player) + && !Prestige.friendManager.isFriend(thrower.getName().getString())) { + if (this.targetOnly.getValue()) { + PlayerEntity target = Prestige.targetTracker.getTarget(); + if (target == null || !thrower.getUuid().equals(target.getUuid())) { continue; } - } else if (b.player.distanceTo(var22) > (Float)this.c.getValue()) { + } else if (mc.player.distanceTo(thrower) > this.throwerRange.getValue()) { continue; } - Vec3d var26 = this.a_class_243___________(new Object[]{var20, 68894082660344L}); - if (var26 != null) { - double var24 = b.player.getEyePos().distanceTo(var26); - if (!(var24 < ((Float)this.d.getValue()).floatValue()) && !(var24 > ((Float)this.e.getValue()).floatValue())) { - this.o = var26; - this.l.a_void_____________________(new Object[]{93540861878173L}); - this.g.reroll(new Object[]{57083216809697L}); + Vec3d landing = this.predictLanding(pearl); + if (landing != null) { + double landingDistance = mc.player.getEyePos().distanceTo(landing); + if (!(landingDistance < this.minLandingDistance.getValue().floatValue()) && !(landingDistance > this.landingRange.getValue().floatValue())) { + this.pendingLanding = landing; + this.throwTimer.reset(); + this.delay.reroll(); break; } } @@ -143,330 +118,230 @@ public class PearlFollow extends Module implements RenderContract3 { } } - this.k.retainAll(var17); + this.seenPearlIds.retainAll(currentIds); } } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 6686850878648L; - long var6 = var2 ^ 29247161167908L; - long var8 = var2 ^ 128670251638447L; - long var10 = var2 ^ 33065978990036L; - long var12 = var2 ^ 120434008667598L; - long var14 = var2 ^ 102840094869659L; - long var16 = var2 ^ 136752692109656L; - long var18 = var2 ^ 58982489950237L; - if (this.o == null) { + public Rotation provideRotation() { + if (this.pendingLanding == null) { return null; - } else if (b.player == null || b.world == null) { + } else if (mc.player == null || mc.world == null) { return null; - } else if (b.currentScreen != null || !b.isWindowFocused()) { + } else if (mc.currentScreen != null || !mc.isWindowFocused()) { return null; - } else if ((Boolean)this.i.getValue() && !b.player.isOnGround()) { + } else if (this.onlyOnGround.getValue() && !mc.player.isOnGround()) { return null; - } else if (!this.l.b(new Object[]{this.g, var10})) { + } else if (!this.throwTimer.hasElapsedRandom(this.delay)) { return null; - } else if (InventoryUtil.a_Integer(new Object[]{Items.ENDER_PEARL, var8}) == null) { - this.o = null; + } else if (InventoryUtil.findHotbarSlot(Items.ENDER_PEARL) == null) { + this.pendingLanding = null; return null; } else { - RenderBatch var21 = this.b_RenderBatch___(new Object[]{b.player.getEyePos(), this.o, var4}); - if (var21 == null) { - this.o = null; + Rotation throwRotation = this.findThrowRotation(mc.player.getEyePos(), this.pendingLanding); + if (throwRotation == null) { + this.pendingLanding = null; return null; } else { - float var22 = var21.a(new Object[0]); - float var23 = var21.b(new Object[0]); - Integer var24 = InventoryUtil.a_Integer(new Object[]{Items.ENDER_PEARL, var8}); - if (var24 == null) { - this.o = null; + float yaw = throwRotation.getYaw(); + float pitch = throwRotation.getPitch(); + Integer pearlSlot = InventoryUtil.findHotbarSlot(Items.ENDER_PEARL); + if (pearlSlot == null) { + this.pendingLanding = null; return null; } else { - int var25 = InventoryUtil.a_int_____(new Object[]{var18}); - boolean var26 = var25 != var24; - if (var26) { - int var10000 = var24; - Object[] var10003 = new Object[]{null, var12}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + int selectedSlot = InventoryUtil.getSelectedSlot(); + boolean swapped = selectedSlot != pearlSlot; + if (swapped) { + InventoryUtil.selectSlot(pearlSlot); } - float var27 = b.player.getYaw(); - float var28 = b.player.getPitch(); - b.player.setYaw(var22); - b.player.setPitch(var23); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var14}); - b.player.setYaw(var27); - b.player.setPitch(var28); - if (var26 && this.n == -1) { - this.n = var25; + float oldYaw = mc.player.getYaw(); + float oldPitch = mc.player.getPitch(); + mc.player.setYaw(yaw); + mc.player.setPitch(pitch); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + mc.player.setYaw(oldYaw); + mc.player.setPitch(oldPitch); + if (swapped && this.previousSlot == -1) { + this.previousSlot = selectedSlot; } - if (this.n != -1) { - this.m.a_void_____________________(new Object[]{var6}); - this.h.reroll(new Object[]{var16}); + if (this.previousSlot != -1) { + this.swapBackTimer.reset(); + this.swapBackDelay.reroll(); } - this.o = null; - return new RenderBatch(var22, var23); + this.pendingLanding = null; + return new Rotation(yaw, pitch); } } } } - private Vec3d a_class_243___________(Object[] var1) { - EnderPearlEntity var2 = (EnderPearlEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 139836379310563L ^ var3; - long var5 = var3 ^ 109236779591203L; - PearlFollowHelper var8 = new PearlFollowHelper(b.world, b.player, Items.ENDER_PEARL.getDefaultStack(), var5); - var8.setPosition(var2.getX(), var2.getY(), var2.getZ()); - Event.b(); - var8.setVelocity(var2.getVelocity()); - int var9 = 0; + private Vec3d predictLanding(EnderPearlEntity pearl) { + PearlFollowSimulatedPearl simulated = new PearlFollowSimulatedPearl(mc.world, mc.player, Items.ENDER_PEARL.getDefaultStack()); + simulated.setPosition(pearl.getX(), pearl.getY(), pearl.getZ()); + simulated.setVelocity(pearl.getVelocity()); + int ticks = 0; - while (!var8.a && var9++ < 400) { - var8.tick(); + while (!simulated.landed && ticks++ < 400) { + simulated.tick(); } - return var8.a ? new Vec3d(var8.getX(), var8.getY(), var8.getZ()) : null; + return simulated.landed ? new Vec3d(simulated.getX(), simulated.getY(), simulated.getZ()) : null; } - private RenderBatch b_RenderBatch___(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - Vec3d var5 = (Vec3d)var1[1]; - long var2 = (Long)var1[2]; - var2 = 139836379310563L ^ var2; - long var6 = var2 ^ 55011785276453L; - long var8 = var2 ^ 77919603929415L; - long var10 = var2 ^ 72423269842006L; - long var12 = var2 ^ 28060685596332L; - long var14 = var2 ^ 123673287515116L; - long var16 = var2 ^ 78711687918216L; - Event.b(); - double var19 = var5.x - var4.x; - double var21 = var5.z - var4.z; - float var23 = (float)Math.toDegrees(Math.atan2(-var19, var21)); - ArrayList var24 = new ArrayList(); - ArrayList var25 = new ArrayList(); + private Rotation findThrowRotation(Vec3d origin, Vec3d target) { + float yaw = (float)Math.toDegrees(Math.atan2(-(target.x - origin.x), target.z - origin.z)); + ArrayList sweep = new ArrayList(); + ArrayList candidates = new ArrayList(); - for (float var26 = -85.0F; var26 <= 85.0F; var26 += 2.0F) { - Object[] var10007 = new Object[]{null, null, null, null, var14}; - var10007[3] = var26; - var10007[2] = var23; - var10007[1] = var5; - var10007[0] = var4; - FloatDoubleIntData var27 = this.a_FloatDoubleIntData(var10007); - var24.add(var27); - if (var27 != null) { - var25.add(var27); + for (float pitch = -85.0F; pitch <= 85.0F; pitch += 2.0F) { + PearlThrowOption option = this.evaluateThrow(origin, target, yaw, pitch); + sweep.add(option); + if (option != null) { + candidates.add(option); } } - if (var25.isEmpty()) { + if (candidates.isEmpty()) { return null; } else { - double var33 = ((Float)this.f.getValue()).floatValue(); - List var28 = this.b_List____(new Object[]{var24, var6}); - Object[] var10005 = new Object[]{null, null, var10}; - var10005[1] = var33; - var10005[0] = var25; - FloatDoubleIntData var29 = this.c(var10005); + double errorLimit = this.maxError.getValue().floatValue(); + List minima = this.selectBestMinima(sweep); + PearlThrowOption fastest = this.pickFastestOption(candidates, errorLimit); - for (FloatDoubleIntData var31 : (Iterable)(var28)) { - Object[] var10008 = new Object[]{null, null, null, var31, var25, var12}; - var10008[2] = var23; - var10008[1] = var5; - var10008[0] = var4; - this.j(var10008); + for (PearlThrowOption minimum : (Iterable)(minima)) { + this.refineAroundPitch(origin, target, yaw, minimum, candidates); } - if (var29 != null && !this.d_boolean___(new Object[]{var28, var29, var16})) { - Object[] var36 = new Object[]{null, null, null, var29, var25, var12}; - var36[2] = var23; - var36[1] = var5; - var36[0] = var4; - this.j(var36); + if (fastest != null && !this.containsPitch(minima, fastest)) { + this.refineAroundPitch(origin, target, yaw, fastest, candidates); } - var10005 = new Object[]{null, null, var8}; - var10005[1] = var33; - var10005[0] = var25; - FloatDoubleIntData var34 = this.b_FloatDoubleIntData(var10005); - return var34 == null ? null : new RenderBatch(var23, var34.bt()); + PearlThrowOption best = this.pickBestOption(candidates, errorLimit); + return best == null ? null : new Rotation(yaw, best.pitch()); } } - private List b_List____(Object[] var1) { - List var4 = (List)var1[0]; - long var2 = (Long)var1[1]; - var2 = 139836379310563L ^ var2; - long var5 = var2 ^ 96929552012370L; - Event.b(); - ArrayList var8 = new ArrayList(); + private List selectBestMinima(List sweep) { + ArrayList minima = new ArrayList(); - for (int var9 = 0; var9 < var4.size(); var9++) { - FloatDoubleIntData var10 = (FloatDoubleIntData)var4.get(var9); - if (var10 != null) { - double var11 = var9 > 0 && var4.get(var9 - 1) != null ? ((FloatDoubleIntData)var4.get(var9 - 1)).bu() : Double.POSITIVE_INFINITY; - double var13 = var9 + 1 < var4.size() && var4.get(var9 + 1) != null ? ((FloatDoubleIntData)var4.get(var9 + 1)).bu() : Double.POSITIVE_INFINITY; - if (var10.bu() <= var11 && var10.bu() <= var13) { - var8.add(var10); + for (int index = 0; index < sweep.size(); index++) { + PearlThrowOption option = (PearlThrowOption)sweep.get(index); + if (option != null) { + double prevDistance = index > 0 && sweep.get(index - 1) != null ? ((PearlThrowOption)sweep.get(index - 1)).distanceToTarget() : Double.POSITIVE_INFINITY; + double nextDistance = index + 1 < sweep.size() && sweep.get(index + 1) != null ? ((PearlThrowOption)sweep.get(index + 1)).distanceToTarget() : Double.POSITIVE_INFINITY; + if (option.distanceToTarget() <= prevDistance && option.distanceToTarget() <= nextDistance) { + minima.add(option); } } } - ArrayList var16 = new ArrayList(); + ArrayList selected = new ArrayList(); - while (var16.size() < 3) { - FloatDoubleIntData var17 = null; + while (selected.size() < 3) { + PearlThrowOption best = null; - for (FloatDoubleIntData var12 : (Iterable)(var8)) { - if (!this.a_boolean________________________(new Object[]{var16, var12, var5}) && (var17 == null || var12.bu() < var17.bu())) { - var17 = var12; + for (PearlThrowOption candidate : (Iterable)(minima)) { + if (!this.hasNearbyPitch(selected, candidate) && (best == null || candidate.distanceToTarget() < best.distanceToTarget())) { + best = candidate; } } - if (var17 == null) { + if (best == null) { break; } - var16.add(var17); + selected.add(best); } - return var16; + return selected; } - private void j(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - Vec3d var5 = (Vec3d)var1[1]; - float var6 = (Float)var1[2]; - FloatDoubleIntData var3 = (FloatDoubleIntData)var1[3]; - List var4 = (List)var1[4]; - long var7 = (Long)var1[5]; - var7 = 139836379310563L ^ var7; - long var9 = var7 ^ 25090072478883L; - Event.b(); - int var12 = (int)Math.ceil(11.0); + private void refineAroundPitch(Vec3d origin, Vec3d target, float yaw, PearlThrowOption seed, List candidates) { + int steps = (int)Math.ceil(11.0); - for (int var13 = -var12; var13 <= var12; var13++) { - float var14 = var3.bt() + var13 * 0.2F; - if (!(var14 < -85.0F) && !(var14 > 85.0F)) { - Object[] var10007 = new Object[]{null, null, null, null, var9}; - var10007[3] = var14; - var10007[2] = var6; - var10007[1] = var5; - var10007[0] = var2; - FloatDoubleIntData var15 = this.a_FloatDoubleIntData(var10007); - if (var15 != null) { - var4.add(var15); + for (int step = -steps; step <= steps; step++) { + float pitch = seed.pitch() + step * 0.2F; + if (!(pitch < -85.0F) && !(pitch > 85.0F)) { + PearlThrowOption option = this.evaluateThrow(origin, target, yaw, pitch); + if (option != null) { + candidates.add(option); } } } } - private FloatDoubleIntData a_FloatDoubleIntData(Object[] var1) { - Vec3d var7 = (Vec3d)var1[0]; - Vec3d var6 = (Vec3d)var1[1]; - float var4 = (Float)var1[2]; - float var5 = (Float)var1[3]; - long var2 = (Long)var1[4]; - var2 = 139836379310563L ^ var2; - long var8 = var2 ^ 94050514695118L; - Object[] var10006 = new Object[]{null, null, null, var8}; - var10006[2] = var5; - var10006[1] = var4; - var10006[0] = var7; - VecIntDoubleData var10 = this.a_VecIntDoubleData(var10006); - return var10 == null ? null : new FloatDoubleIntData(var5, var10.bq().distanceTo(var6), var10.br(), var10.bs()); + private PearlThrowOption evaluateThrow(Vec3d origin, Vec3d target, float yaw, float pitch) { + PearlFollowLanding landing = this.simulateThrow(origin, yaw, pitch); + return landing == null ? null : new PearlThrowOption(pitch, landing.landingPos().distanceTo(target), landing.flightTicks(), landing.peakY()); } - private FloatDoubleIntData b_FloatDoubleIntData(Object[] var1) { - List var6 = (List)var1[0]; - double var2 = (Double)var1[1]; - long var4 = (Long)var1[2]; - var4 = 139836379310563L ^ var4; - long var7 = var4 ^ 83751684597940L; - Event.b(); - double var10 = Double.POSITIVE_INFINITY; + private PearlThrowOption pickBestOption(List candidates, double errorLimit) { + double minDistance = Double.POSITIVE_INFINITY; - for (FloatDoubleIntData var13 : (Iterable)(var6)) { - if (var13.bu() <= var2) { - var10 = Math.min(var10, var13.bu()); + for (PearlThrowOption option : (Iterable)(candidates)) { + if (option.distanceToTarget() <= errorLimit) { + minDistance = Math.min(minDistance, option.distanceToTarget()); } } - if (!Double.isFinite(var10)) { + if (!Double.isFinite(minDistance)) { return null; } else { - double var18 = Math.min(var2, var10 + 0.25); - FloatDoubleIntData var14 = null; + double threshold = Math.min(errorLimit, minDistance + 0.25); + PearlThrowOption best = null; - for (FloatDoubleIntData var16 : (Iterable)(var6)) { - if (var16.bu() <= var18) { - var14 = this.d(new Object[]{var14, var16, var7}); + for (PearlThrowOption candidate : (Iterable)(candidates)) { + if (candidate.distanceToTarget() <= threshold) { + best = this.choosePreferred(best, candidate); } } - return var14; + return best; } } - private FloatDoubleIntData c(Object[] var1) { - List var6 = (List)var1[0]; - double var2 = (Double)var1[1]; - long var4 = (Long)var1[2]; - var4 = 139836379310563L ^ var4; - long var7 = var4 ^ 82651218011557L; - Event.b(); - FloatDoubleIntData var10 = null; + private PearlThrowOption pickFastestOption(List candidates, double errorLimit) { + PearlThrowOption best = null; - for (FloatDoubleIntData var12 : (Iterable)(var6)) { - if (var12.bu() <= var2) { - var10 = this.d(new Object[]{var10, var12, var7}); + for (PearlThrowOption option : (Iterable)(candidates)) { + if (option.distanceToTarget() <= errorLimit) { + best = this.choosePreferred(best, option); } } - return var10; + return best; } - private FloatDoubleIntData d(Object[] var1) { - FloatDoubleIntData var5 = (FloatDoubleIntData)var1[0]; - FloatDoubleIntData var4 = (FloatDoubleIntData)var1[1]; - if (var5 == null) { - return var4; + private PearlThrowOption choosePreferred(PearlThrowOption current, PearlThrowOption challenger) { + if (current == null) { + return challenger; } else { - int var7 = Integer.compare(var4.bv(), var5.bv()); - if (var7 != 0) { - return var7 < 0 ? var4 : var5; + int tickCompare = Integer.compare(challenger.flightTicks(), current.flightTicks()); + if (tickCompare != 0) { + return tickCompare < 0 ? challenger : current; } else { - int var8 = Double.compare(var4.bw(), var5.bw()); - if (var8 != 0) { - return var8 < 0 ? var4 : var5; + int peakCompare = Double.compare(challenger.peakY(), current.peakY()); + if (peakCompare != 0) { + return peakCompare < 0 ? challenger : current; } else { - int var9 = Double.compare(var4.bu(), var5.bu()); - if (var9 != 0) { - return var9 < 0 ? var4 : var5; + int distanceCompare = Double.compare(challenger.distanceToTarget(), current.distanceToTarget()); + if (distanceCompare != 0) { + return distanceCompare < 0 ? challenger : current; } else { - return var4.bt() > var5.bt() ? var4 : var5; + return challenger.pitch() > current.pitch() ? challenger : current; } } } } } - private boolean a_boolean________________________(Object[] var1) { - List var5 = (List)var1[0]; - FloatDoubleIntData var2 = (FloatDoubleIntData)var1[1]; - long var3 = (Long)var1[2]; - var3 = 139836379310563L ^ var3; - long var6 = var3 ^ 11517251334472L; - Event.b(); - - for (FloatDoubleIntData var10 : (Iterable)(var5)) { - if (this.e(new Object[]{var10, var2, var6})) { + private boolean hasNearbyPitch(List selected, PearlThrowOption option) { + for (PearlThrowOption existing : (Iterable)(selected)) { + if (this.arePitchesClose(existing, option)) { return true; } } @@ -474,13 +349,9 @@ public class PearlFollow extends Module implements RenderContract3 { return false; } - private boolean d_boolean___(Object[] var1) { - List var5 = (List)var1[0]; - FloatDoubleIntData var2 = (FloatDoubleIntData)var1[1]; - Event.b(); - - for (FloatDoubleIntData var8 : (Iterable)(var5)) { - if (Math.abs(var8.bt() - var2.bt()) < 0.1F) { + private boolean containsPitch(List options, PearlThrowOption option) { + for (PearlThrowOption existing : (Iterable)(options)) { + if (Math.abs(existing.pitch() - option.pitch()) < 0.1F) { return true; } } @@ -488,105 +359,28 @@ public class PearlFollow extends Module implements RenderContract3 { return false; } - private boolean e(Object[] var1) { - FloatDoubleIntData var5 = (FloatDoubleIntData)var1[0]; - FloatDoubleIntData var4 = (FloatDoubleIntData)var1[1]; - return var5 != null && var4 != null && Math.abs(var5.bt() - var4.bt()) < 6.0F; + private boolean arePitchesClose(PearlThrowOption first, PearlThrowOption second) { + return first != null && second != null && Math.abs(first.pitch() - second.pitch()) < 6.0F; } - private VecIntDoubleData a_VecIntDoubleData(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - float var5 = (Float)var1[1]; - float var6 = (Float)var1[2]; - long var2 = (Long)var1[3]; - var2 = 139836379310563L ^ var2; - long var7 = var2 ^ 54547659135736L; - Event.b(); - float var10 = var5 * (float) (Math.PI / 180.0); - float var11 = var6 * (float) (Math.PI / 180.0); - double var12 = -MathHelper.sin(var10) * MathHelper.cos(var11); - double var14 = -MathHelper.sin(var11); - double var16 = MathHelper.cos(var10) * MathHelper.cos(var11); - Vec3d var18 = new Vec3d(var12, var14, var16).normalize().multiply(1.5); - PearlFollowHelper var19 = new PearlFollowHelper(b.world, b.player, Items.ENDER_PEARL.getDefaultStack(), var7); - var19.setPosition(var4.x, var4.y, var4.z); - var19.setVelocity(var18); - int var20 = 0; + private PearlFollowLanding simulateThrow(Vec3d origin, float yaw, float pitch) { + float yawRad = yaw * (float) (Math.PI / 180.0); + float pitchRad = pitch * (float) (Math.PI / 180.0); + double dirX = -MathHelper.sin(yawRad) * MathHelper.cos(pitchRad); + double dirY = -MathHelper.sin(pitchRad); + double dirZ = MathHelper.cos(yawRad) * MathHelper.cos(pitchRad); + Vec3d velocity = new Vec3d(dirX, dirY, dirZ).normalize().multiply(1.5); + PearlFollowSimulatedPearl simulated = new PearlFollowSimulatedPearl(mc.world, mc.player, Items.ENDER_PEARL.getDefaultStack()); + simulated.setPosition(origin.x, origin.y, origin.z); + simulated.setVelocity(velocity); + int ticks = 0; - double var21; - for (var21 = var4.y; !var19.a && var20 < 400; var21 = Math.max(var21, var19.getY())) { - var19.tick(); - var20++; + double peakY; + for (peakY = origin.y; !simulated.landed && ticks < 400; peakY = Math.max(peakY, simulated.getY())) { + simulated.tick(); + ticks++; } - return var19.a ? new VecIntDoubleData(new Vec3d(var19.getX(), var19.getY(), var19.getZ()), var20, var21) : null; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + return simulated.landed ? new PearlFollowLanding(new Vec3d(simulated.getX(), simulated.getY(), simulated.getZ()), ticks, peakY) : null; } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/PredictDoubleHand.java b/src/main/java/dev/zprestige/prestige/module/combat/PredictDoubleHand.java index 9c40435..587fd87 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/PredictDoubleHand.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/PredictDoubleHand.java @@ -6,16 +6,14 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.combat.CombatUtil2; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent24; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.combat.ThreatAssessor; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.FrameEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper26; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.type.BlockBreakType; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.ThreatAssessment; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.type.ThreatType; import java.util.EnumSet; import java.util.Set; import net.minecraft.entity.player.PlayerEntity; @@ -28,102 +26,86 @@ public class PredictDoubleHand extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private MultiSetting a; - private MultiSetting c; - private RangeSetting d; - private FloatSetting e; - private RenderHelper27 f = new RenderHelper27(26293358099357L); - private long g = Long.MIN_VALUE; + private MultiSetting triggers; + private MultiSetting pause; + private RangeSetting reswapDelay; + private FloatSetting sensitivity; + private StopWatch reswapTimer = new StopWatch(); + private long lastCheckedTick = Long.MIN_VALUE; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Subscribe - public void a(PacketEvent2 var1) { - if ((!this.c.isSelected(new Object[]{"Auto Crystal", 47850572908778L}) || !AutoCrystal.a) - && (!this.c.isSelected(new Object[]{"Auto Hit Crystal", 47850572908778L}) || !AutoHitCrystal.a)) { - if (this.a.isSelected(new Object[]{"Pearl", 47850572908778L}) - && var1.a(new Object[0]) instanceof PlayerInteractItemC2SPacket - && b.player.getMainHandStack().getItem() == Items.ENDER_PEARL - && !InventoryUtil.l(new Object[]{Items.TOTEM_OF_UNDYING, 65539821781598L})) { - Integer var13 = InventoryUtil.a_Integer(new Object[]{Items.TOTEM_OF_UNDYING, 64376993919254L}); - if (var13 != null) { - int var10000 = var13; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + public void onPacketSend(PacketSendEvent event) { + if ((!this.pause.isSelected("Auto Crystal") || !AutoCrystal.active) + && (!this.pause.isSelected("Auto Hit Crystal") || !AutoHitCrystal.active)) { + if (this.triggers.isSelected("Pearl") + && event.getPacket() instanceof PlayerInteractItemC2SPacket + && mc.player.getMainHandStack().getItem() == Items.ENDER_PEARL + && !InventoryUtil.isHolding(Items.TOTEM_OF_UNDYING)) { + Integer totemSlot = InventoryUtil.findHotbarSlot(Items.TOTEM_OF_UNDYING); + if (totemSlot != null) { + InventoryUtil.selectSlot(totemSlot); } } } } @Subscribe - public void a(TickEvent24 var1) { - if ((!this.c.isSelected(new Object[]{"Auto Crystal", 47850572908778L}) || !AutoCrystal.a) - && (!this.c.isSelected(new Object[]{"Auto Hit Crystal", 47850572908778L}) || !AutoHitCrystal.a)) { - if (this.f.b(new Object[]{this.d, 89714527855213L}) && b.currentScreen == null && b.isWindowFocused()) { - long var23 = b.world.getTime(); - if (var23 != this.g) { - this.g = var23; - if (!InventoryUtil.l(new Object[]{Items.TOTEM_OF_UNDYING, 65539821781598L})) { - Integer var25 = InventoryUtil.a_Integer(new Object[]{Items.TOTEM_OF_UNDYING, 64376993919254L}); - if (var25 != null) { - PlayerEntity var26 = CombatUtil.a_class_1657(new Object[]{16945855905304L}); - if (var26 != null) { - float var27 = b.player.getHealth() + b.player.getAbsorptionAmount(); - if (!(b.player.distanceTo(var26) > 10.0F)) { - if (!this.c.isSelected(new Object[]{"Shield", 47850572908778L}) - || !InventoryUtil.l(new Object[]{Items.SHIELD, 65539821781598L}) - || !b.player.isUsingItem()) { - EnumSet var28 = EnumSet.noneOf(BlockBreakType.class); - if (this.a.isSelected(new Object[]{"Anchors", 47850572908778L})) { - var28.add(BlockBreakType.ANCHOR); + public void onFrame(FrameEvent event) { + if ((!this.pause.isSelected("Auto Crystal") || !AutoCrystal.active) + && (!this.pause.isSelected("Auto Hit Crystal") || !AutoHitCrystal.active)) { + if (this.reswapTimer.hasElapsedRandom(this.reswapDelay) && mc.currentScreen == null && mc.isWindowFocused()) { + long worldTime = mc.world.getTime(); + if (worldTime != this.lastCheckedTick) { + this.lastCheckedTick = worldTime; + if (!InventoryUtil.isHolding(Items.TOTEM_OF_UNDYING)) { + Integer totemSlot = InventoryUtil.findHotbarSlot(Items.TOTEM_OF_UNDYING); + if (totemSlot != null) { + PlayerEntity enemy = TargetSelector.getClosestEnemy(); + if (enemy != null) { + float health = mc.player.getHealth() + mc.player.getAbsorptionAmount(); + if (!(mc.player.distanceTo(enemy) > 10.0F)) { + if (!this.pause.isSelected("Shield") + || !InventoryUtil.isHolding(Items.SHIELD) + || !mc.player.isUsingItem()) { + EnumSet threatTypes = EnumSet.noneOf(ThreatType.class); + if (this.triggers.isSelected("Anchors")) { + threatTypes.add(ThreatType.ANCHOR); } - if (this.a.isSelected(new Object[]{"Crystals", 47850572908778L})) { - var28.add(BlockBreakType.CRYSTAL); + if (this.triggers.isSelected("Crystals")) { + threatTypes.add(ThreatType.CRYSTAL); } - if (this.a.isSelected(new Object[]{"Obsidian", 47850572908778L})) { - var28.add(BlockBreakType.OBSIDIAN); + if (this.triggers.isSelected("Obsidian")) { + threatTypes.add(ThreatType.OBSIDIAN); } - if (this.a.isSelected(new Object[]{"Mace", 47850572908778L})) { - var28.add(BlockBreakType.MACE); + if (this.triggers.isSelected("Mace")) { + threatTypes.add(ThreatType.MACE); } - if (!var28.isEmpty()) { - float var10002 = (Float)this.e.getValue(); - Object[] var10005 = new Object[]{null, null, null, 71151030853651L}; - var10005[2] = var10002; - var10005[1] = var28; - var10005[0] = var26; - RenderHelper26 var29 = CombatUtil2.a(var10005); - if (var29.a(new Object[0])) { - Object[] var10004 = new Object[]{null, 114604007714030L}; - var10004[0] = var27; - if (var29.b(var10004)) { - int var30 = var25; - var10004 = new Object[]{null, 24777133508117L}; - var10004[0] = var30; - this.j(var10004); + if (!threatTypes.isEmpty()) { + ThreatAssessment threat = ThreatAssessor.findBiggestThreat(enemy, threatTypes, this.sensitivity.getValue()); + if (threat.hasThreat()) { + if (threat.isLethal(health)) { + this.switchToTotem(totemSlot); return; } } } - if (this.a.isSelected(new Object[]{"Sword Pop", 47850572908778L}) + if (this.triggers.isSelected("Sword Pop") && ( - InventoryUtil.a(new Object[]{var26.getMainHandStack(), 127680976181311L}) - || var26.getMainHandStack().getItem() instanceof AxeItem + InventoryUtil.isSword(enemy.getMainHandStack()) + || enemy.getMainHandStack().getItem() instanceof AxeItem ) - && var27 < 1.0F) { - int var10001 = var25; - Object[] var31 = new Object[]{null, 24777133508117L}; - var31[0] = var10001; - this.j(var31); + && health < 1.0F) { + this.switchToTotem(totemSlot); } } } @@ -135,87 +117,11 @@ public class PredictDoubleHand extends Module { } } - private void j(Object[] var1) { - int var2 = (Integer)var1[0]; - long var3 = (Long)var1[1]; - var3 = 3180947340199L ^ var3; - long var5 = var3 ^ 72015106646575L; - long var7 = var3 ^ 59847319054277L; - long var9 = var3 ^ 43459832312659L; - if (!b.player.isUsingItem()) { - Object[] var10003 = new Object[]{null, var7}; - var10003[0] = var2; - InventoryUtil.a_void________(var10003); - this.d.reroll(new Object[]{var9}); - this.f.a_void_____________________(new Object[]{var5}); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + private void switchToTotem(int totemSlot) { + if (!mc.player.isUsingItem()) { + InventoryUtil.selectSlot(totemSlot); + this.reswapDelay.reroll(); + this.reswapTimer.reset(); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/SafeAnchor.java b/src/main/java/dev/zprestige/prestige/module/combat/SafeAnchor.java index 21defe2..c21b9d6 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/SafeAnchor.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/SafeAnchor.java @@ -9,26 +9,23 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.inventory.ArmorUtil; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.inventory.AnchorUseGuard; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.math.MathUtil3; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.SafeAnchorHelper; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.math.BlockChangeTracker; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.DelayTimer; import dev.zprestige.prestige.world.PositionUtil; import dev.zprestige.prestige.world.RaycastUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.util.ArrayList; import java.util.HashMap; import java.util.Set; @@ -36,7 +33,6 @@ import java.util.function.Predicate; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; @@ -47,116 +43,97 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class SafeAnchor extends Module implements RenderContract3 { - private EnumSetting a; - private BoolSetting d; - private FloatSetting c; - private FloatSetting e; - private EnumSetting f; - private RangeSetting g; - private EnumSetting h; - private EnumSetting i; - private IntSetting j; - private FloatSetting k; - private HashMap l = new HashMap(); - private HashMap m = new HashMap(); - private BlockPos n; - private int o; - private ArrayList p = new ArrayList(); - private ArrayList q = new ArrayList(); - private RenderHelper27 r = new RenderHelper27(26293358099357L); - private static boolean s; +public class SafeAnchor extends Module implements RotationProvider { + private EnumSetting mode; + private BoolSetting onlyOwn; + private FloatSetting minDamage; + private FloatSetting maxDamage; + private EnumSetting coverTiming; + private RangeSetting delay; + private EnumSetting swap; + private EnumSetting block; + private IntSetting limit; + private FloatSetting fov; + private HashMap coverCounts = new HashMap(); + private HashMap reactionTimers = new HashMap(); + private BlockPos lastPlacedAnchor; + private int lastAnchorCharges; + private ArrayList nearbyAnchors = new ArrayList(); + private ArrayList ownAnchors = new ArrayList(); + private StopWatch delayTimer = new StopWatch(); + private static boolean coverPending; public SafeAnchor() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.f.setVisibility_EnumSetting(new Object[]{(Predicate)lpL386_0 -> ((String)this.a.getValue()).equals("Legit"), 90319707064974L}); - this.k.setVisibility_FloatSetting(new Object[]{(Predicate)lpL385_0 -> ((String)this.a.getValue()).equals("Blatant"), 35046756052036L}); - this.d.setVisibility_BoolSetting(new Object[]{(Predicate)lpL387_0 -> ((String)this.a.getValue()).equals("Blatant"), 73196168581295L}); + this.coverTiming.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Legit")); + this.fov.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Blatant")); + this.onlyOwn.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Blatant")); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } - public static boolean d(Object[] var0) { - return s; + public static boolean isCoverPending() { + return coverPending; } @Subscribe - public void a(TickEvent3 var1) { - this.l.clear(); - this.m.clear(); - this.p.clear(); - this.q.clear(); - this.n = null; - this.o = 0; - s = false; + public void onGameJoin(GameJoinEvent event) { + this.coverCounts.clear(); + this.reactionTimers.clear(); + this.nearbyAnchors.clear(); + this.ownAnchors.clear(); + this.lastPlacedAnchor = null; + this.lastAnchorCharges = 0; + coverPending = false; } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 119956318131507L ^ var2; - long var4 = var2 ^ 107042677122919L; - long var6 = var2 ^ 134344802069301L; - long var8 = var2 ^ 111951408962199L; - long var10 = var2 ^ 113720823272615L; - long var12 = var2 ^ 41048373857916L; - long var14 = var2 ^ 8397830927899L; - long var16 = var2 ^ 59436072296438L; - long var18 = var2 ^ 105288676554375L; - long var20 = var2 ^ 17395971078820L; - long var22 = var2 ^ 96835133630541L; - long var24 = var2 ^ 31428524456361L; - Event.b(); - s = false; - if (((String)this.a.getValue()).equalsIgnoreCase("Legit")) { - if (this.n == null) { + private void updateCoverPending() { + coverPending = false; + if (this.mode.getValue().equalsIgnoreCase("Legit")) { + if (this.lastPlacedAnchor == null) { return; } - if (!WorldUtil2.b(new Object[]{this.n, Blocks.RESPAWN_ANCHOR, var10}) - || PositionUtil.b(new Object[]{var18}).distanceTo(this.n.toCenterPos()) > InventoryUtil2.b_float_____(new Object[]{var12}) - || b.player.getY() < this.n.getY() - || (Integer)this.l.getOrDefault(this.n, 0) >= (Integer)this.j.getValue()) { - this.o = 0; + if (!BlockUtil.isOf(this.lastPlacedAnchor, Blocks.RESPAWN_ANCHOR) + || PositionUtil.getPlayerPos().distanceTo(this.lastPlacedAnchor.toCenterPos()) > PlayerInteractions.getReachDistance() + || mc.player.getY() < this.lastPlacedAnchor.getY() + || (Integer)this.coverCounts.getOrDefault(this.lastPlacedAnchor, 0) >= this.limit.getValue()) { + this.lastAnchorCharges = 0; return; } - int var27 = WorldUtil2.a_int______________________________(new Object[]{this.n, var6}); - if (var27 > 0 && this.o == 0) { - this.r.a_void_____________________(new Object[]{var4}); - this.g.reroll(new Object[]{var14}); + int charges = BlockUtil.getAnchorCharges(this.lastPlacedAnchor); + if (charges > 0 && this.lastAnchorCharges == 0) { + this.delayTimer.reset(); + this.delay.reroll(); } - this.o = var27; - if (!((String)this.f.getValue()).equals("Before Charge") && var27 == 0) { + this.lastAnchorCharges = charges; + if (!this.coverTiming.getValue().equals("Before Charge") && charges == 0) { return; } - RenderHelper27 var10000 = this.r; - float var10001 = this.g.getRolled(new Object[0]) + 250.0F; - Object[] var10004 = new Object[]{null, var16}; - var10004[0] = var10001; - if (var10000.a(var10004)) { + if (this.delayTimer.hasElapsed(this.delay.getRolled() + 250.0F)) { return; } - if (((String)this.h.getValue()).equals("None") - && !InventoryUtil.l(new Object[]{(((String)this.i.getValue()).equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN).asItem(), var20})) { + if (this.swap.getValue().equals("None") + && !InventoryUtil.isHolding((this.block.getValue().equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN).asItem())) { return; } - s = Prestige.f.k(new Object[]{b.player, this.n.toCenterPos(), var22}) >= ((Float)this.c.getValue()).floatValue(); + coverPending = Prestige.damageCalculator.getAnchorDamage(mc.player, this.lastPlacedAnchor.toCenterPos()) >= this.minDamage.getValue().floatValue(); } else { - for (BlockPos var28 : (Iterable)(this.m.keySet())) { - if (WorldUtil2.b(new Object[]{var28, Blocks.RESPAWN_ANCHOR, var10}) - && (!(Boolean)this.d.getValue() || this.q.contains(var28)) - && (Integer)this.l.getOrDefault(var28, 0) < (Integer)this.j.getValue()) { - SafeAnchorHelper var29 = (SafeAnchorHelper)this.m.get(var28); - boolean var30 = var29 != null && !var29.a(new Object[]{var24}) || !this.r.b(new Object[]{this.g, var8}); - if (var30 && Prestige.f.k(new Object[]{b.player, var28.toCenterPos(), var22}) >= ((Float)this.c.getValue()).floatValue()) { - s = true; + for (BlockPos anchorPos : (Iterable)(this.reactionTimers.keySet())) { + if (BlockUtil.isOf(anchorPos, Blocks.RESPAWN_ANCHOR) + && (!this.onlyOwn.getValue() || this.ownAnchors.contains(anchorPos)) + && (Integer)this.coverCounts.getOrDefault(anchorPos, 0) < this.limit.getValue()) { + DelayTimer reactionTimer = (DelayTimer)this.reactionTimers.get(anchorPos); + if ((reactionTimer != null && !reactionTimer.hasElapsed() || !this.delayTimer.hasElapsedRandom(this.delay)) && Prestige.damageCalculator.getAnchorDamage(mc.player, anchorPos.toCenterPos()) >= this.minDamage.getValue().floatValue()) { + coverPending = true; return; } } @@ -165,88 +142,76 @@ public class SafeAnchor extends Module implements RenderContract3 { } @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - this.j(new Object[]{98202227174857L}); - if ((Boolean)this.d.getValue()) { - this.q.removeIf(lpL384_0 -> b.world.getBlockState(((net.minecraft.util.math.BlockPos)lpL384_0)).getBlock() != Blocks.RESPAWN_ANCHOR); + public void onClientTick(ClientTickEvent event) { + this.updateCoverPending(); + if (this.onlyOwn.getValue()) { + this.ownAnchors.removeIf(ownAnchorPos -> mc.world.getBlockState(((net.minecraft.util.math.BlockPos)ownAnchorPos)).getBlock() != Blocks.RESPAWN_ANCHOR); } - this.l.keySet().removeIf(lpL383_0 -> !WorldUtil2.b(new Object[]{((net.minecraft.util.math.BlockPos)lpL383_0), Blocks.RESPAWN_ANCHOR, 91415361137757L})); - this.m.keySet().removeIf(lpL382_0 -> !WorldUtil2.b(new Object[]{((net.minecraft.util.math.BlockPos)lpL382_0), Blocks.RESPAWN_ANCHOR, 91415361137757L})); - if (((String)this.a.getValue()).equalsIgnoreCase("Legit") && b.currentScreen == null && !b.player.isUsingItem() && b.player.isOnGround()) { - if (!Prestige.o.d_boolean______(new Object[0])) { - if (this.n != null) { - if (WorldUtil2.b(new Object[]{this.n, Blocks.RESPAWN_ANCHOR, 91415361137757L}) + this.coverCounts.keySet().removeIf(coveredAnchorPos -> !BlockUtil.isOf(((net.minecraft.util.math.BlockPos)coveredAnchorPos), Blocks.RESPAWN_ANCHOR)); + this.reactionTimers.keySet().removeIf(timedAnchorPos -> !BlockUtil.isOf(((net.minecraft.util.math.BlockPos)timedAnchorPos), Blocks.RESPAWN_ANCHOR)); + if (this.mode.getValue().equalsIgnoreCase("Legit") && mc.currentScreen == null && !mc.player.isUsingItem() && mc.player.isOnGround()) { + if (!Prestige.silentRotationManager.hasActedThisTick()) { + if (this.lastPlacedAnchor != null) { + if (BlockUtil.isOf(this.lastPlacedAnchor, Blocks.RESPAWN_ANCHOR) && !( - PositionUtil.b(new Object[]{118247215910525L}).distanceTo(this.n.toCenterPos()) - > InventoryUtil2.b_float_____(new Object[]{18814856656518L}) + PositionUtil.getPlayerPos().distanceTo(this.lastPlacedAnchor.toCenterPos()) + > PlayerInteractions.getReachDistance() )) { - if (this.r.b(new Object[]{this.g, 89714527855213L})) { - BlockPos var29 = this.n; - if (!(b.player.getY() < var29.getY())) { - Block var30 = ((String)this.i.getValue()).equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN; - if (!((String)this.h.getValue()).equals("None") || InventoryUtil.l(new Object[]{var30.asItem(), 65539821781598L})) { - if (b.crosshairTarget instanceof BlockHitResult var31) { - if (!MathUtil3.a_boolean_______(new Object[]{var31.getBlockPos(), 44262730353436L}) - && !MathUtil3.b_boolean_____(new Object[]{var31.getBlockPos(), 57098141355368L})) { - BlockPos var37 = var31.getBlockPos(); - if (!var29.equals(var37) - && (Integer)this.l.getOrDefault(var29, 0) < (Integer)this.j.getValue() + if (this.delayTimer.hasElapsedRandom(this.delay)) { + BlockPos anchorPos = this.lastPlacedAnchor; + if (!(mc.player.getY() < anchorPos.getY())) { + Block coverBlock = this.block.getValue().equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN; + if (!this.swap.getValue().equals("None") || InventoryUtil.isHolding(coverBlock.asItem())) { + if (mc.crosshairTarget instanceof BlockHitResult crosshairHit) { + if (!BlockChangeTracker.isRecentlyExploded(crosshairHit.getBlockPos()) + && !BlockChangeTracker.isRecentlyPlaced(crosshairHit.getBlockPos())) { + BlockPos hitPos = crosshairHit.getBlockPos(); + if (!anchorPos.equals(hitPos) + && (Integer)this.coverCounts.getOrDefault(anchorPos, 0) < this.limit.getValue() && ( - !((String)this.f.getValue()).equals("After Charge") - || WorldUtil2.a_int______________________________(new Object[]{var29, 86201794204623L}) != 0 + !this.coverTiming.getValue().equals("After Charge") + || BlockUtil.getAnchorCharges(anchorPos) != 0 )) { if (!( - Prestige.f.k(new Object[]{b.player, var29.toCenterPos(), 119141635395767L}) - < ((Float)this.c.getValue()).floatValue() + Prestige.damageCalculator.getAnchorDamage(mc.player, anchorPos.toCenterPos()) + < this.minDamage.getValue().floatValue() )) { if (( - !WorldUtil2.b(new Object[]{var31.getBlockPos(), Blocks.FIRE, 91415361137757L}) - && !WorldUtil2.b( - new Object[]{ - var31.getBlockPos(), - WorldUtil2.a_class_2248_(new Object[]{12315318725950L}), - 91415361137757L - } + !BlockUtil.isOf(crosshairHit.getBlockPos(), Blocks.FIRE) + && !BlockUtil.isOf( + crosshairHit.getBlockPos(), + BlockUtil.getShortGrass() ) - ? var37.getY() < var29.getY() - : var37.getY() <= var29.getY() + ? hitPos.getY() < anchorPos.getY() + : hitPos.getY() <= anchorPos.getY() ) - && var37.getY() >= var29.getY() - 1) { + && hitPos.getY() >= anchorPos.getY() - 1) { if (!( - b.player.squaredDistanceTo(var29.toCenterPos()) > b.player.squaredDistanceTo(this.n.toCenterPos()) + mc.player.squaredDistanceTo(anchorPos.toCenterPos()) > mc.player.squaredDistanceTo(this.lastPlacedAnchor.toCenterPos()) )) { if (!( - var29.getSquaredDistance(this.n.toCenterPos()) - > b.player.squaredDistanceTo(this.n.toCenterPos()) + anchorPos.getSquaredDistance(this.lastPlacedAnchor.toCenterPos()) + > mc.player.squaredDistanceTo(this.lastPlacedAnchor.toCenterPos()) )) { - BlockPos var33 = !WorldUtil2.b(new Object[]{var37, Blocks.FIRE, 91415361137757L}) - && !WorldUtil2.b( - new Object[]{ - var37, WorldUtil2.a_class_2248_(new Object[]{12315318725950L}), 91415361137757L - } + BlockPos coverPos = !BlockUtil.isOf(hitPos, Blocks.FIRE) + && !BlockUtil.isOf( + hitPos, BlockUtil.getShortGrass() ) - ? var37.add( - var31.getSide().getOffsetX(), - var31.getSide().getOffsetY(), - var31.getSide().getOffsetZ() + ? hitPos.add( + crosshairHit.getSide().getOffsetX(), + crosshairHit.getSide().getOffsetY(), + crosshairHit.getSide().getOffsetZ() ) - : var37; - BlockState var34 = b.world.getBlockState(var33); - b.world.setBlockState(var33, var30.getDefaultState()); - double var35 = Prestige.f.k(new Object[]{b.player, var29.toCenterPos(), 119141635395767L}); - b.world.setBlockState(var33, var34); - if (!(var35 > ((Float)this.e.getValue()).floatValue())) { - this.l.merge(var29, 1, (java.util.function.BiFunction)(a_, b_) -> Integer.sum((Integer)a_, (Integer)b_)); - Prestige.o.b(new Object[0]); - Runnable var10001 = () -> InventoryUtil2.a(new Object[]{var31, 96519249476482L}); - boolean var10002 = ((String)this.h.getValue()).equals("Silent"); - Object[] var10005 = new Object[]{null, null, null, 135286962703597L}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var30; - InventoryUtil.k(var10005); + : hitPos; + BlockState previousState = mc.world.getBlockState(coverPos); + mc.world.setBlockState(coverPos, coverBlock.getDefaultState()); + double coveredDamage = Prestige.damageCalculator.getAnchorDamage(mc.player, anchorPos.toCenterPos()); + mc.world.setBlockState(coverPos, previousState); + if (!(coveredDamage > this.maxDamage.getValue().floatValue())) { + this.coverCounts.merge(anchorPos, 1, (java.util.function.BiFunction)(oldCount, increment) -> Integer.sum((Integer)oldCount, (Integer)increment)); + Prestige.silentRotationManager.clearRotation(); + InventoryUtil.runWithBlock(coverBlock, () -> PlayerInteractions.interactBlock(crosshairHit), this.swap.getValue().equals("Silent")); } } } @@ -259,7 +224,7 @@ public class SafeAnchor extends Module implements RenderContract3 { } } } else { - this.n = null; + this.lastPlacedAnchor = null; } } } @@ -267,156 +232,125 @@ public class SafeAnchor extends Module implements RenderContract3 { } @Subscribe - public void a(TickEvent5 var1) { - if (ArmorUtil.a(new Object[]{12659099461385L})) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (AnchorUseGuard.shouldCancelItemUse()) { + event.cancel(); } } @Subscribe - public void a(PacketEvent2 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket var13) { - ItemStack var18 = var13.getHand().equals(Hand.MAIN_HAND) ? b.player.getMainHandStack() : b.player.getOffHandStack(); - if (var18.getItem() == Items.RESPAWN_ANCHOR) { - BlockHitResult var15 = var13.getBlockHitResult(); - BlockPos var16 = var15.getBlockPos().add(var15.getSide().getOffsetX(), var15.getSide().getOffsetY(), var15.getSide().getOffsetZ()); - if (!(Boolean)this.d.getValue() || this.q.contains(var16)) { + public void onPacketSend(PacketSendEvent event) { + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket interactPacket) { + if ((interactPacket.getHand().equals(Hand.MAIN_HAND) ? mc.player.getMainHandStack() : mc.player.getOffHandStack()).getItem() == Items.RESPAWN_ANCHOR) { + BlockHitResult hitResult = interactPacket.getBlockHitResult(); + BlockPos placePos = hitResult.getBlockPos().add(hitResult.getSide().getOffsetX(), hitResult.getSide().getOffsetY(), hitResult.getSide().getOffsetZ()); + if (!this.onlyOwn.getValue() || this.ownAnchors.contains(placePos)) { return; } - this.q + this.ownAnchors .add( - !WorldUtil2.b(new Object[]{var15.getBlockPos(), Blocks.RESPAWN_ANCHOR, 91415361137757L}) - && !WorldUtil2.b(new Object[]{var15.getBlockPos(), Blocks.FIRE, 91415361137757L}) - && !WorldUtil2.b(new Object[]{var15.getBlockPos(), WorldUtil2.a_class_2248_(new Object[]{12315318725950L}), 91415361137757L}) - ? var16 - : var15.getBlockPos() + !BlockUtil.isOf(hitResult.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && !BlockUtil.isOf(hitResult.getBlockPos(), Blocks.FIRE) + && !BlockUtil.isOf(hitResult.getBlockPos(), BlockUtil.getShortGrass()) + ? placePos + : hitResult.getBlockPos() ); } } - if (((String)this.a.getValue()).equalsIgnoreCase("Legit")) { - if (var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket var17) { - ItemStack var20 = var17.getHand().equals(Hand.MAIN_HAND) ? b.player.getMainHandStack() : b.player.getOffHandStack(); - if (var20.getItem() == Items.RESPAWN_ANCHOR) { - BlockHitResult var21 = var17.getBlockHitResult(); - BlockPos var22 = var21.getBlockPos().add(var21.getSide().getOffsetX(), var21.getSide().getOffsetY(), var21.getSide().getOffsetZ()); - this.n = !WorldUtil2.b(new Object[]{var21.getBlockPos(), Blocks.RESPAWN_ANCHOR, 91415361137757L}) - && !WorldUtil2.b(new Object[]{var21.getBlockPos(), Blocks.FIRE, 91415361137757L}) - && !WorldUtil2.b(new Object[]{var21.getBlockPos(), WorldUtil2.a_class_2248_(new Object[]{12315318725950L}), 91415361137757L}) - ? var22 - : var21.getBlockPos(); - this.o = 0; - this.r.a_void_____________________(new Object[]{93540861878173L}); - this.g.reroll(new Object[]{57083216809697L}); + if (this.mode.getValue().equalsIgnoreCase("Legit")) { + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket legitPacket) { + if ((legitPacket.getHand().equals(Hand.MAIN_HAND) ? mc.player.getMainHandStack() : mc.player.getOffHandStack()).getItem() == Items.RESPAWN_ANCHOR) { + BlockHitResult legitHit = legitPacket.getBlockHitResult(); + BlockPos legitPlacePos = legitHit.getBlockPos().add(legitHit.getSide().getOffsetX(), legitHit.getSide().getOffsetY(), legitHit.getSide().getOffsetZ()); + this.lastPlacedAnchor = !BlockUtil.isOf(legitHit.getBlockPos(), Blocks.RESPAWN_ANCHOR) + && !BlockUtil.isOf(legitHit.getBlockPos(), Blocks.FIRE) + && !BlockUtil.isOf(legitHit.getBlockPos(), BlockUtil.getShortGrass()) + ? legitPlacePos + : legitHit.getBlockPos(); + this.lastAnchorCharges = 0; + this.delayTimer.reset(); + this.delay.reroll(); } } } } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); - this.l.clear(); - this.m.clear(); - this.p.clear(); - this.n = null; - this.o = 0; - s = false; + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + this.coverCounts.clear(); + this.reactionTimers.clear(); + this.nearbyAnchors.clear(); + this.lastPlacedAnchor = null; + this.lastAnchorCharges = 0; + coverPending = false; } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 85123560351320L; - long var6 = var2 ^ 29247161167908L; - long var8 = var2 ^ 136752692109656L; - long var10 = var2 ^ 39587186614724L; - long var12 = var2 ^ 127616945565159L; - long var14 = var2 ^ 39382126296846L; - long var16 = var2 ^ 116785209433731L; - long var18 = var2 ^ 23045327291459L; - long var20 = var2 ^ 784510322407L; - long var22 = var2 ^ 75440226304702L; - long var24 = var2 ^ 33065978990036L; - long var26 = var2 ^ 114122501858469L; - long var28 = var2 ^ 136772110525137L; - long var30 = var2 ^ 103998936193343L; - long var32 = var2 ^ 101816702374277L; - long var34 = var2 ^ 57726443201364L; - long var36 = var2 ^ 113623159615210L; - long var38 = var2 ^ 33191619103831L; - if (Prestige.o.d_boolean______(new Object[0])) { + public Rotation provideRotation() { + if (Prestige.silentRotationManager.hasActedThisTick()) { return null; - } else if (!((String)this.a.getValue()).equalsIgnoreCase("Blatant")) { + } else if (!this.mode.getValue().equalsIgnoreCase("Blatant")) { return null; - } else if (b.currentScreen == null && !b.player.isUsingItem()) { - if (!this.r.b(new Object[]{this.g, var24})) { + } else if (mc.currentScreen == null && !mc.player.isUsingItem()) { + if (!this.delayTimer.hasElapsedRandom(this.delay)) { return null; - } else if (((String)this.h.getValue()).equals("None") - && !InventoryUtil.l(new Object[]{((String)this.i.getValue()).equals("Glowstone") ? Blocks.GLOWSTONE.asItem() : Blocks.OBSIDIAN.asItem(), var12}) + } else if (this.swap.getValue().equals("None") + && !InventoryUtil.isHolding((net.minecraft.item.Item)(this.block.getValue().equals("Glowstone") ? Blocks.GLOWSTONE.asItem() : Blocks.OBSIDIAN.asItem())) ) { return null; } else { - Block var41 = ((String)this.i.getValue()).equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN; - short var10000 = 18321; - this.p.clear(); - Object[] var10004 = new Object[]{ - null, (Predicate)lpL380_0 -> WorldUtil2.b(new Object[]{((net.minecraft.util.math.BlockPos)lpL380_0), Blocks.RESPAWN_ANCHOR, 91415361137757L}), var22 - }; - var10004[0] = 10; + Block coverBlock = this.block.getValue().equals("Glowstone") ? Blocks.GLOWSTONE : Blocks.OBSIDIAN; + this.nearbyAnchors.clear(); - for (BlockPos var43 : (Iterable)(WorldUtil2.a_List___(var10004))) { - if (PositionUtil.b(new Object[]{var10}).distanceTo(var43.toCenterPos()) <= 10.0) { - this.p.add(var43); - this.m.computeIfAbsent(var43, lpL379_0 -> new SafeAnchorHelper(this.g.randomInRange(new Object[]{877569900989L}), 74389771242761L)); + for (BlockPos scannedPos : (Iterable)(BlockUtil.getBlocksInRadius(10, (Predicate)pos -> BlockUtil.isOf(pos, Blocks.RESPAWN_ANCHOR)))) { + if (PositionUtil.getPlayerPos().distanceTo(scannedPos.toCenterPos()) <= 10.0) { + this.nearbyAnchors.add(scannedPos); + this.reactionTimers.computeIfAbsent(scannedPos, ignored -> new DelayTimer(this.delay.randomInRange())); } } - HitResult var60 = null; - RenderBatch var61 = null; - BlockPos var44 = null; - double var45 = Double.MAX_VALUE; + HitResult bestHit = null; + Rotation bestRotation = null; + BlockPos bestAnchorPos = null; + double bestCoveredDamage = Double.MAX_VALUE; - for (BlockPos var48 : (Iterable)(this.p)) { - if (this.q.contains(var48) || !(Boolean)this.d.getValue()) { - SafeAnchorHelper var49 = (SafeAnchorHelper)this.m.get(var48); - if (var49 != null - && var49.a(new Object[]{var36}) - && !(Prestige.f.k(new Object[]{b.player, var48.toCenterPos(), var14}) < ((Float)this.c.getValue()).floatValue()) - && (Integer)this.l.getOrDefault(var48, 0) < (Integer)this.j.getValue()) { - for (int var50 = -5; var50 <= 5; var50++) { - for (int var51 = -5; var51 <= 5; var51++) { + for (BlockPos anchorPos : (Iterable)(this.nearbyAnchors)) { + if (this.ownAnchors.contains(anchorPos) || !this.onlyOwn.getValue()) { + DelayTimer reactionTimer = (DelayTimer)this.reactionTimers.get(anchorPos); + if (reactionTimer != null + && reactionTimer.hasElapsed() + && !(Prestige.damageCalculator.getAnchorDamage(mc.player, anchorPos.toCenterPos()) < this.minDamage.getValue().floatValue()) + && (Integer)this.coverCounts.getOrDefault(anchorPos, 0) < this.limit.getValue()) { + for (int dx = -5; dx <= 5; dx++) { + for (int dz = -5; dz <= 5; dz++) { if (!( - PositionUtil.b(new Object[]{var10}).distanceTo(var48.toCenterPos()) > InventoryUtil2.b_float_____(new Object[]{var30}) + PositionUtil.getPlayerPos().distanceTo(anchorPos.toCenterPos()) > PlayerInteractions.getReachDistance() )) { - BlockPos var52 = var48.add(var50, -1, var51); - if (WorldUtil2.e(new Object[]{var52, var18}) && !WorldUtil2.g(new Object[]{var52.up(), var20})) { - BlockPos var53 = var48.add(var50, 0, var51); - double var54 = Prestige.f.l(new Object[]{b.player, var48.toCenterPos(), var53, var41.getDefaultState(), var38}); - if (!(var54 > ((Float)this.e.getValue()).floatValue())) { - Vec3d var56 = RaycastUtil.b(new Object[]{var52, var4}); - if (var56 != null) { - RenderBatch var57 = Prestige.o.a_RenderBatch(new Object[]{var56, var32}); - float var58 = MathHelper.wrapDegrees(var57.a(new Object[0]) - b.player.getYaw()); - if (!(var58 > (Float)this.k.getValue()) && !(var58 < -(Float)this.k.getValue())) { - HitResult var59 = WorldUtil.a_class_239_(new Object[]{var57, var16}); - if (!(var59.getPos().distanceTo(var56) > 0.5) && (var60 == null || var54 < var45)) { - var60 = var59; - var45 = var54; - var61 = var57; - var44 = var48; + BlockPos supportPos = anchorPos.add(dx, -1, dz); + if (BlockUtil.isClickableBlock(supportPos) && !BlockUtil.hasEntityAt(supportPos.up())) { + BlockPos coverPos = anchorPos.add(dx, 0, dz); + double coveredDamage = Prestige.damageCalculator.getAnchorDamage(mc.player, anchorPos.toCenterPos(), coverPos, coverBlock.getDefaultState()); + if (!(coveredDamage > this.maxDamage.getValue().floatValue())) { + Vec3d aimPoint = RaycastUtil.getVisibleTopPoint(supportPos); + if (aimPoint != null) { + Rotation rotation = Prestige.silentRotationManager.getRotationTowards(aimPoint); + float yawDelta = MathHelper.wrapDegrees(rotation.getYaw() - mc.player.getYaw()); + if (!(yawDelta > this.fov.getValue()) && !(yawDelta < -this.fov.getValue())) { + HitResult rayHit = RotationUtil.raycastRotation(rotation); + if (!(rayHit.getPos().distanceTo(aimPoint) > 0.5) && (bestHit == null || coveredDamage < bestCoveredDamage)) { + bestHit = rayHit; + bestCoveredDamage = coveredDamage; + bestRotation = rotation; + bestAnchorPos = anchorPos; } } } @@ -429,32 +363,26 @@ public class SafeAnchor extends Module implements RenderContract3 { } } - if (var60 == null) { + if (bestHit == null) { return null; - } else if (var61.a_boolean________________________________________(new Object[0])) { - return var61; + } else if (bestRotation.isClamped()) { + return bestRotation; } else { - HitResult var62 = var60; + HitResult hitToPlace = bestHit; if (!( - var62 instanceof BlockHitResult var63 + hitToPlace instanceof BlockHitResult blockHit && ( - MathUtil3.a_boolean_______(new Object[]{var63.getBlockPos(), var26}) - || MathUtil3.b_boolean_____(new Object[]{var63.getBlockPos(), var28}) + BlockChangeTracker.isRecentlyExploded(blockHit.getBlockPos()) + || BlockChangeTracker.isRecentlyPlaced(blockHit.getBlockPos()) ) )) { - Runnable var10001 = () -> InventoryUtil2.a(new Object[]{(BlockHitResult)var62, 96519249476482L}); - boolean var10002 = ((String)this.h.getValue()).equals("Silent"); - Object[] var10005 = new Object[]{null, null, null, var34}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var41; - InventoryUtil.k(var10005); - this.l.merge(var44, 1, (java.util.function.BiFunction)(a_, b_) -> Integer.sum((Integer)a_, (Integer)b_)); - this.r.a_void_____________________(new Object[]{var6}); - this.g.reroll(new Object[]{var8}); - return var61; + InventoryUtil.runWithBlock(coverBlock, () -> PlayerInteractions.interactBlock((BlockHitResult)hitToPlace), this.swap.getValue().equals("Silent")); + this.coverCounts.merge(bestAnchorPos, 1, (java.util.function.BiFunction)(oldCount, increment) -> Integer.sum((Integer)oldCount, (Integer)increment)); + this.delayTimer.reset(); + this.delay.reroll(); + return bestRotation; } else { - return var61; + return bestRotation; } } } @@ -464,82 +392,13 @@ public class SafeAnchor extends Module implements RenderContract3 { } @Subscribe - public void a(PacketEvent var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof BlockUpdateS2CPacket var5) { - if (var5.getState() == null || var5.getState().getBlock() == Blocks.RESPAWN_ANCHOR) { + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof BlockUpdateS2CPacket blockUpdate) { + if (blockUpdate.getState() == null || blockUpdate.getState().getBlock() == Blocks.RESPAWN_ANCHOR) { return; } - this.q.remove(var5.getPos()); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + this.ownAnchors.remove(blockUpdate.getPos()); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/SilentAim.java b/src/main/java/dev/zprestige/prestige/module/combat/SilentAim.java index 2a4b7c3..3211956 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/SilentAim.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/SilentAim.java @@ -8,27 +8,21 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.BoolEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.IntEvent4; -import dev.zprestige.prestige.event.TickEvent10; -import dev.zprestige.prestige.event.TickEvent12; -import dev.zprestige.prestige.event.TickEvent27; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.SwingHandEvent; +import dev.zprestige.prestige.event.MouseButtonEvent; +import dev.zprestige.prestige.event.HandleBlockBreakingEvent; +import dev.zprestige.prestige.event.AutoAttackEvent; +import dev.zprestige.prestige.event.Render3DEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.ShapeRenderer; import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.util.BindManager; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.Entity; @@ -39,92 +33,79 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class SilentAim extends Module implements RenderContract3 { - private BoolSetting d; - private BoolSetting a; - private BoolSetting c; - private FloatSetting e; - private FloatSetting f; - private MultiSetting g; - private BoolSetting h; - private FloatSetting i; - private ColorSetting j; - private boolean k = false; - private boolean l = false; - private Vec3d m = null; - private Entity n = null; - private static final String[] o = new String[]{"Head", "Neck", "Body", "Arms", "Thighs", "Legs", "Feet"}; - private static final double[] p = new double[]{0.95, 0.85, 0.7, 0.65, 0.35, 0.2, 0.05}; +public class SilentAim extends Module implements RotationProvider { + private BoolSetting playerOnly; + private BoolSetting weaponOnly; + private BoolSetting continuousTracking; + private FloatSetting maxYaw; + private FloatSetting maxPitch; + private MultiSetting aimPoints; + private BoolSetting renderDot; + private FloatSetting dotSize; + private ColorSetting dotColor; + private boolean hitPending = false; + private boolean sendingAttack = false; + private Vec3d lastAimPoint = null; + private Entity pendingTarget = null; + private static final String[] AIM_POINT_NAMES = new String[]{"Head", "Neck", "Body", "Arms", "Thighs", "Legs", "Feet"}; + private static final double[] AIM_POINT_HEIGHTS = new double[]{0.95, 0.85, 0.7, 0.65, 0.35, 0.2, 0.05}; public SilentAim() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.j.setVisibility_ColorSetting(new Object[]{(Predicate)lpL394_0 -> (Boolean)this.h.getValue(), 119980880492450L}); - this.i.setVisibility_FloatSetting(new Object[]{(Predicate)lpL395_0 -> (Boolean)this.h.getValue(), 35046756052036L}); + this.dotColor.visibleWhen((Predicate)ignored -> this.renderDot.getValue()); + this.dotSize.visibleWhen((Predicate)ignored -> this.renderDot.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal, Gamemode.Mace); } - private boolean d(Object[] var1) { - return KillAura.a != null && KillAura.a.isEnabled(); + private boolean isKillAuraActive() { + return KillAura.instance != null && KillAura.instance.isEnabled(); } - private boolean a_boolean_________________________(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - long var3 = (Long)var1[1]; - var3 = 22842548124311L ^ var3; - long var5 = var3 ^ 59167800334406L; - float var10000 = var2.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var5}; - var10003[0] = var10000; - return Math.abs(WorldUtil.b_float_____________________(var10003)) > (Float)this.e.getValue() - || Math.abs(var2.b(new Object[0]) - b.player.getPitch()) > (Float)this.f.getValue(); + private boolean exceedsAngleLimits(Rotation rotation) { + return Math.abs(RotationUtil.wrapDegrees(rotation.getYaw() - mc.player.getYaw())) > this.maxYaw.getValue() + || Math.abs(rotation.getPitch() - mc.player.getPitch()) > this.maxPitch.getValue(); } - private Entity a_class_1297__(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 22842548124311L ^ var2; - long var4 = var2 ^ 112637578291482L; - long var6 = var2 ^ 71774879138066L; - long var8 = var2 ^ 118837828270020L; - Entity var11 = this.d.getValue() ? CombatUtil.a_class_1657(new Object[]{var6}) : CombatUtil.a_class_1297(new Object[]{var8}); - return (Entity)(var11 != null - && var11.isAlive() - && !(b.player.distanceTo((Entity)var11) > 3.0F) - && b.player.canSee((Entity)var11) - && !WorldUtil2.a(new Object[]{var11, var4}) - ? var11 + private Entity findTarget() { + Entity candidate = this.playerOnly.getValue() ? TargetSelector.getClosestEnemy() : TargetSelector.getClosestEntity(); + return (Entity)(candidate != null + && candidate.isAlive() + && !(mc.player.distanceTo(candidate) > 3.0F) + && mc.player.canSee(candidate) + && !BlockUtil.isCobwebInLineOfSight(candidate) + ? candidate : null); } @Subscribe - public void a(BoolEvent var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE) { - if (this.l) { - var1.b(new Object[]{true}); - } else if (!this.d(new Object[]{62715097032096L})) { - if (InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L}) - || b.player.getMainHandStack().getItem() instanceof AxeItem - || InventoryUtil.o(new Object[]{b.player.getMainHandStack(), 133561865349436L}) - || !(Boolean)this.a.getValue()) { - HitResult var19 = b.crosshairTarget; - if (var19 != null + public void onSwingHand(SwingHandEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (event.getPhase() == EventPhase.PRE) { + if (this.sendingAttack) { + event.setSkipPost(true); + } else if (!this.isKillAuraActive()) { + if (InventoryUtil.isSword(mc.player.getMainHandStack()) + || mc.player.getMainHandStack().getItem() instanceof AxeItem + || InventoryUtil.isMace(mc.player.getMainHandStack()) + || !this.weaponOnly.getValue()) { + HitResult crosshairHit = mc.crosshairTarget; + if (crosshairHit != null && ( - var19.getType() == Type.MISS - || var19.getType() == Type.BLOCK && InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L}) + crosshairHit.getType() == Type.MISS + || crosshairHit.getType() == Type.BLOCK && InventoryUtil.isSword(mc.player.getMainHandStack()) )) { - Entity var20 = this.a_class_1297__(new Object[]{99955001984413L}); - if (var20 != null) { - RenderBatch var21 = WorldUtil.a_RenderBatch_( - new Object[]{this.a_class_243____________(new Object[]{var20, 18962153507676L}), 6563042098863L} - ); - if (!this.a_boolean_________________________(new Object[]{var21, 70854682346336L})) { - this.n = var20; - this.k = true; - var1.a_void_____(new Object[0]); + Entity target = this.findTarget(); + if (target != null) { + if (!this.exceedsAngleLimits(RotationUtil.getRotationTo( + this.getAimPoint(target) + ))) { + this.pendingTarget = target; + this.hitPending = true; + event.cancel(); } } } @@ -135,87 +116,71 @@ public class SilentAim extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 136623400771732L; - long var6 = var2 ^ 76064937642809L; - long var8 = var2 ^ 23511072369188L; - long var10 = var2 ^ 130306898807321L; - long var12 = var2 ^ 104129184818405L; - Event.b(); - Entity var15 = this.n; - this.n = null; - if (var15 != null && !var15.isAlive()) { - var15 = null; + public Rotation provideRotation() { + Entity target = this.pendingTarget; + this.pendingTarget = null; + if (target != null && !target.isAlive()) { + target = null; } - if (this.d(new Object[]{var10})) { - this.k = false; - this.m = null; + if (this.isKillAuraActive()) { + this.hitPending = false; + this.lastAimPoint = null; return null; } else { - if ((Boolean)this.c.getValue()) { - if (var15 == null) { - var15 = this.a_class_1297__(new Object[]{var8}); + if (this.continuousTracking.getValue()) { + if (target == null) { + target = this.findTarget(); } - RenderBatch var16 = var15 != null ? this.b_RenderBatch____(new Object[]{var15, var4}) : null; - if (var16 != null) { - this.m = this.a_class_243____________(new Object[]{var15, var12}); - if (this.k) { - this.k = false; - this.j(new Object[]{var15, var6}); + Rotation trackingRotation = target != null ? this.computeAimRotation(target) : null; + if (trackingRotation != null) { + this.lastAimPoint = this.getAimPoint(target); + if (this.hitPending) { + this.hitPending = false; + this.attackTarget(target); } - return var16; + return trackingRotation; } - this.m = null; + this.lastAimPoint = null; } - if (!this.k) { + if (!this.hitPending) { return null; } else { - this.k = false; - if (var15 == null) { + this.hitPending = false; + if (target == null) { return null; } else { - RenderBatch var17 = this.b_RenderBatch____(new Object[]{var15, var4}); - if (var17 == null) { + Rotation hitRotation = this.computeAimRotation(target); + if (hitRotation == null) { return null; } else { - this.m = this.a_class_243____________(new Object[]{var15, var12}); - this.j(new Object[]{var15, var6}); - return var17; + this.lastAimPoint = this.getAimPoint(target); + this.attackTarget(target); + return hitRotation; } } } } } - private RenderBatch b_RenderBatch____(Object[] var1) { - Entity var2 = (Entity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 22842548124311L ^ var3; - long var5 = var3 ^ 16842690077610L; - long var7 = var3 ^ 91460942048645L; - long var9 = var3 ^ 59580249833190L; - long var11 = var3 ^ 38443984227093L; - long var13 = var3 ^ 113798511916762L; - long var15 = var3 ^ 103868017335430L; - if (!InventoryUtil.a(new Object[]{b.player.getMainHandStack(), var7}) - && !(b.player.getMainHandStack().getItem() instanceof AxeItem) - && !InventoryUtil.o(new Object[]{b.player.getMainHandStack(), var15}) - && (Boolean)this.a.getValue()) { + private Rotation computeAimRotation(Entity target) { + if (!InventoryUtil.isSword(mc.player.getMainHandStack()) + && !(mc.player.getMainHandStack().getItem() instanceof AxeItem) + && !InventoryUtil.isMace(mc.player.getMainHandStack()) + && this.weaponOnly.getValue()) { return null; } else { - HitResult var18 = b.crosshairTarget; - if ((Boolean)this.c.getValue() - || var18 != null - && (var18.getType() == Type.MISS || var18.getType() == Type.BLOCK && InventoryUtil.a(new Object[]{b.player.getMainHandStack(), var7}))) { - if (var2 != null && var2.isAlive() && !(b.player.distanceTo(var2) > 3.0F) && b.player.canSee(var2) && !WorldUtil2.a(new Object[]{var2, var5})) { - RenderBatch var19 = WorldUtil.a_RenderBatch_(new Object[]{this.a_class_243____________(new Object[]{var2, var9}), var11}); - return this.a_boolean_________________________(new Object[]{var19, var13}) ? null : var19; + HitResult crosshairHit = mc.crosshairTarget; + if (this.continuousTracking.getValue() + || crosshairHit != null + && (crosshairHit.getType() == Type.MISS || crosshairHit.getType() == Type.BLOCK && InventoryUtil.isSword(mc.player.getMainHandStack()))) { + if (target != null && target.isAlive() && !(mc.player.distanceTo(target) > 3.0F) && mc.player.canSee(target) && !BlockUtil.isCobwebInLineOfSight(target)) { + Rotation rotation = RotationUtil.getRotationTo(this.getAimPoint(target)); + return this.exceedsAngleLimits(rotation) ? null : rotation; } else { return null; } @@ -225,81 +190,66 @@ public class SilentAim extends Module implements RenderContract3 { } } - private Vec3d a_class_243____________(Object[] var1) { - Entity var4 = (Entity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 22842548124311L ^ var2; - long var5 = var2 ^ 51117056424225L; - Event.b(); - Vec3d var8 = b.player.getEyePos(); - Box var9 = var4.getBoundingBox(); - double var10 = var9.maxY - var9.minY; - if (var10 <= 0.0) { - return var4.getEyePos(); + private Vec3d getAimPoint(Entity entity) { + Vec3d eyePos = mc.player.getEyePos(); + Box box = entity.getBoundingBox(); + double boxHeight = box.maxY - box.minY; + if (boxHeight <= 0.0) { + return entity.getEyePos(); } else { - double var12 = MathHelper.clamp(var8.x, var9.minX, var9.maxX); - double var14 = MathHelper.clamp(var8.z, var9.minZ, var9.maxZ); - double var16 = (var8.x - var12) * (var8.x - var12) + (var8.z - var14) * (var8.z - var14); - double var18 = Double.POSITIVE_INFINITY; - Vec3d var20 = null; + double nearestX = MathHelper.clamp(eyePos.x, box.minX, box.maxX); + double nearestZ = MathHelper.clamp(eyePos.z, box.minZ, box.maxZ); + double horizontalDistSq = (eyePos.x - nearestX) * (eyePos.x - nearestX) + (eyePos.z - nearestZ) * (eyePos.z - nearestZ); + double bestDistSq = Double.POSITIVE_INFINITY; + Vec3d bestPoint = null; - for (int var21 = 0; var21 < o.length; var21++) { - if (this.g.isSelected(new Object[]{o[var21], var5})) { - double var22 = var9.minY + p[var21] * var10; - double var24 = var8.y - var22; - double var26 = var16 + var24 * var24; - if (var26 < var18) { - var18 = var26; - var20 = new Vec3d(var12, var22, var14); + for (int index = 0; index < AIM_POINT_NAMES.length; index++) { + if (this.aimPoints.isSelected(AIM_POINT_NAMES[index])) { + double pointY = box.minY + AIM_POINT_HEIGHTS[index] * boxHeight; + double dy = eyePos.y - pointY; + double distSq = horizontalDistSq + dy * dy; + if (distSq < bestDistSq) { + bestDistSq = distSq; + bestPoint = new Vec3d(nearestX, pointY, nearestZ); } } } - return var20 != null ? var20 : var4.getEyePos(); + return bestPoint != null ? bestPoint : entity.getEyePos(); } } - private void j(Object[] var1) { - Entity var4 = (Entity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 22842548124311L ^ var2; - long var5 = var2 ^ 124294200138399L; - long var7 = var2 ^ 3195960238897L; - if (var4 != null) { - new TickEvent12().b_boolean__(new Object[]{var5}); - this.l = true; - InventoryUtil2.a_void_________(new Object[]{var4, var7}); - this.l = false; + private void attackTarget(Entity target) { + if (target != null) { + new AutoAttackEvent().post(); + this.sendingAttack = true; + PlayerInteractions.attackEntity(target); + this.sendingAttack = false; } } @Subscribe - public void a(IntEvent4 var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - if (!this.d(new Object[]{62715097032096L})) { - if (var1.a(new Object[0]) == 0 && var1.b(new Object[0]) == 1) { - BindManager var10000 = Prestige.q; - int var10001 = var1.a(new Object[0]); - Object[] var10004 = new Object[]{null, 128352941745080L}; - var10004[0] = var10001; - if (!var10000.a(var10004)) { - HitResult var19 = b.crosshairTarget; - if (var19 != null && var19.getType() == Type.BLOCK && InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L})) { - Entity var20 = this.a_class_1297__(new Object[]{99955001984413L}); - if (var20 == null) { + public void onMouseButton(MouseButtonEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (!this.isKillAuraActive()) { + if (event.getButton() == 0 && event.getAction() == 1) { + if (!Prestige.simulatedClickManager.isSimulated(event.getButton())) { + HitResult crosshairHit = mc.crosshairTarget; + if (crosshairHit != null && crosshairHit.getType() == Type.BLOCK && InventoryUtil.isSword(mc.player.getMainHandStack())) { + Entity target = this.findTarget(); + if (target == null) { return; } - RenderBatch var21 = WorldUtil.a_RenderBatch_( - new Object[]{this.a_class_243____________(new Object[]{var20, 18962153507676L}), 6563042098863L} - ); - if (this.a_boolean_________________________(new Object[]{var21, 70854682346336L})) { + if (this.exceedsAngleLimits(RotationUtil.getRotationTo( + this.getAimPoint(target) + ))) { return; } - this.n = var20; - this.k = true; - var1.a_void_____(new Object[0]); + this.pendingTarget = target; + this.hitPending = true; + event.cancel(); } } } @@ -308,185 +258,63 @@ public class SilentAim extends Module implements RenderContract3 { } @Subscribe - public void a(TickEvent10 var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - if (!this.d(new Object[]{62715097032096L})) { - HitResult var17 = b.crosshairTarget; - if (var17 != null && var17.getType() == Type.BLOCK && InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L})) { - Entity var18 = this.a_class_1297__(new Object[]{99955001984413L}); - if (var18 == null) { + public void onHandleBlockBreaking(HandleBlockBreakingEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (!this.isKillAuraActive()) { + HitResult crosshairHit = mc.crosshairTarget; + if (crosshairHit != null && crosshairHit.getType() == Type.BLOCK && InventoryUtil.isSword(mc.player.getMainHandStack())) { + Entity target = this.findTarget(); + if (target == null) { return; } - RenderBatch var19 = WorldUtil.a_RenderBatch_( - new Object[]{this.a_class_243____________(new Object[]{var18, 18962153507676L}), 6563042098863L} - ); - if (this.a_boolean_________________________(new Object[]{var19, 70854682346336L})) { + if (this.exceedsAngleLimits(RotationUtil.getRotationTo( + this.getAimPoint(target) + ))) { return; } - var1.a_void_____(new Object[0]); + event.cancel(); } } } } @Subscribe - public void a(TickEvent27 var1) { - if ((Boolean)this.h.getValue()) { - Vec3d var9 = this.m; - if (var9 != null) { - float var10 = (Float)this.i.getValue(); - float var11 = (float)(var9.x - var10); - float var12 = (float)(var9.y - var10); - float var13 = (float)(var9.z - var10); - float var14 = (float)(var9.x + var10); - float var15 = (float)(var9.y + var10); - float var16 = (float)(var9.z + var10); - Color var17 = (Color)this.j.getValue(); - Color var18 = new Color(var17.getRed(), var17.getGreen(), var17.getBlue(), Math.min(255, var17.getAlpha() + 55)); - MatrixCameraData var10000 = var1.b; - RenderHelper8 var10001 = var1.a; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var17, 108390846498585L}; - var10011[7] = var16; - var10011[6] = var15; - var10011[5] = var14; - var10011[4] = var13; - var10011[3] = var12; - var10011[2] = var11; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.h(var10011); - var10000 = var1.b; - var10001 = var1.a; - var10011 = new Object[]{null, null, null, null, null, null, null, null, var18, 119015971454350L}; - var10011[7] = var16; - var10011[6] = var15; - var10011[5] = var14; - var10011[4] = var13; - var10011[3] = var12; - var10011[2] = var11; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); + public void onRender3D(Render3DEvent event) { + if (this.renderDot.getValue()) { + Vec3d aimPoint = this.lastAimPoint; + if (aimPoint != null) { + float radius = this.dotSize.getValue(); + float minX = (float)(aimPoint.x - radius); + float minY = (float)(aimPoint.y - radius); + float minZ = (float)(aimPoint.z - radius); + float maxX = (float)(aimPoint.x + radius); + float maxY = (float)(aimPoint.y + radius); + float maxZ = (float)(aimPoint.z + radius); + Color fillColor = this.dotColor.getValue(); + Color outlineColor = new Color(fillColor.getRed(), fillColor.getGreen(), fillColor.getBlue(), Math.min(255, fillColor.getAlpha() + 55)); + ShapeRenderer.drawFilledBox(event.context, event.renderer, minX, minY, minZ, maxX, maxY, maxZ, fillColor); + ShapeRenderer.drawBoxOutline(event.context, event.renderer, minX, minY, minZ, maxX, maxY, maxZ, outlineColor); } } } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - this.m = null; - this.n = null; - this.k = false; - this.l = false; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + this.lastAimPoint = null; + this.pendingTarget = null; + this.hitPending = false; + this.sendingAttack = false; + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - this.m = null; - this.n = null; - this.k = false; - this.l = false; - Prestige.o.f(new Object[]{this, var4}); - } - - private static String b(byte[] var0) { - int var1 = 0; - int var2; - char[] var3 = new char[var2 = var0.length]; - - for (int var4 = 0; var4 < var2; var4++) { - int var5; - if ((var5 = 255 & var0[var4]) < 192) { - var3[var1++] = (char)var5; - } else if (var5 < 224) { - char var6 = (char)((char)(var5 & 31) << 6); - byte var8 = var0[++var4]; - var6 = (char)(var6 | (char)(var8 & 63)); - var3[var1++] = var6; - } else if (var4 < var2 - 2) { - char var12 = (char)((char)(var5 & 15) << '\f'); - byte var9 = var0[++var4]; - var12 = (char)(var12 | (char)(var9 & 63) << 6); - var9 = var0[++var4]; - var12 = (char)(var12 | (char)(var9 & 63)); - var3[var1++] = var12; - } - } - - return new String(var3, 0, var1); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + this.lastAimPoint = null; + this.pendingTarget = null; + this.hitPending = false; + this.sendingAttack = false; + Prestige.silentRotationManager.removeRotationProvider(this); } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/SwapHit.java b/src/main/java/dev/zprestige/prestige/module/combat/SwapHit.java index bacacc4..3207467 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/SwapHit.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/SwapHit.java @@ -4,15 +4,12 @@ import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent7; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.DoAttackEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.StopWatch; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Items; @@ -23,52 +20,42 @@ public class SwapHit extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private FloatSetting a; - private FloatSetting c; - private BoolSetting e; - private BoolSetting f; - private RenderHelper27 g = new RenderHelper27(26293358099357L); - private RenderHelper27 h = new RenderHelper27(26293358099357L); - private int i = -1; - private int j = 0; + private BoolSetting totemOnly; + private FloatSetting swapDelay; + private FloatSetting swapBackDelay; + private BoolSetting shieldAware; + private BoolSetting preferAxe; + private StopWatch swapTimer = new StopWatch(); + private StopWatch swapBackTimer = new StopWatch(); + private int previousSlot = -1; + private int swapStage = 0; @Override - public void onEnable(Object[] var1) { - this.i = -1; - this.j = 0; + public void onEnable() { + this.previousSlot = -1; + this.swapStage = 0; } @Override - public void onDisable(Object[] var1) { - this.i = -1; - this.j = 0; + public void onDisable() { + this.previousSlot = -1; + this.swapStage = 0; } - private int a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 41753668174394L ^ var2; - long var4 = var2 ^ 17418996245654L; - Event.b(); - - for (int var7 = 0; var7 <= 8; var7++) { - if (InventoryUtil.a(new Object[]{b.player.getInventory().getStack(var7), var4})) { - return var7; + private int findSwordSlot() { + for (int slot = 0; slot <= 8; slot++) { + if (InventoryUtil.isSword(mc.player.getInventory().getStack(slot))) { + return slot; } } return -1; } - private int d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 41753668174394L ^ var2; - long var4 = var2 ^ 117644960216816L; - Event.b(); - - for (int var7 = 0; var7 <= 8; var7++) { - if (InventoryUtil.b(new Object[]{b.player.getInventory().getStack(var7), var4})) { - return var7; + private int findAxeSlot() { + for (int slot = 0; slot <= 8; slot++) { + if (InventoryUtil.isAxe(mc.player.getInventory().getStack(slot))) { + return slot; } } @@ -76,41 +63,39 @@ public class SwapHit extends Module { } @Subscribe - public void a(TickEvent7 var1) { - if (b.player != null && b.world != null) { - if (b.isWindowFocused() && b.currentScreen == null) { - if (!InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L})) { - if (!(Boolean)this.d.getValue() || b.player.getMainHandStack().getItem() == Items.TOTEM_OF_UNDYING) { - if (b.crosshairTarget instanceof EntityHitResult var19) { - if (var19.getEntity() instanceof PlayerEntity var21) { - int var22; - if ((Boolean)this.e.getValue() && CombatUtil.b_boolean(new Object[]{var21, 53913050824112L})) { - if (!(Boolean)this.f.getValue()) { + public void onDoAttack(DoAttackEvent event) { + if (mc.player != null && mc.world != null) { + if (mc.isWindowFocused() && mc.currentScreen == null) { + if (!InventoryUtil.isSword(mc.player.getMainHandStack())) { + if (!this.totemOnly.getValue() || mc.player.getMainHandStack().getItem() == Items.TOTEM_OF_UNDYING) { + if (mc.crosshairTarget instanceof EntityHitResult entityHit) { + if (entityHit.getEntity() instanceof PlayerEntity target) { + int weaponSlot; + if (this.shieldAware.getValue() && TargetSelector.isBlockingWithShield(target)) { + if (!this.preferAxe.getValue()) { return; } - int var25 = this.d(new Object[]{45107933241511L}); - if (var25 == -1) { + int axeSlot = this.findAxeSlot(); + if (axeSlot == -1) { return; } - var22 = var25; + weaponSlot = axeSlot; } else { - int var23 = this.a(new Object[]{103415004855955L}); - if (var23 == -1) { + int swordSlot = this.findSwordSlot(); + if (swordSlot == -1) { return; } - var22 = var23; + weaponSlot = swordSlot; } - var1.a_void_____(new Object[0]); - this.i = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var22; - InventoryUtil.a_void________(var10003); - this.j = 1; - this.g.a_void_____________________(new Object[]{93540861878173L}); + event.cancel(); + this.previousSlot = InventoryUtil.getSelectedSlot(); + InventoryUtil.selectSlot(weaponSlot); + this.swapStage = 1; + this.swapTimer.reset(); } } } @@ -120,118 +105,39 @@ public class SwapHit extends Module { } @Subscribe - public void a(TickEvent19 var1) { - if (this.j != 0) { - if (b.player != null && b.world != null) { - if (this.j == 1) { - RenderHelper27 var10000 = this.g; - float var10001 = (Float)this.a.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (!var10000.a(var10004)) { + public void onClientTick(ClientTickEvent event) { + if (this.swapStage != 0) { + if (mc.player != null && mc.world != null) { + if (this.swapStage == 1) { + if (!this.swapTimer.hasElapsed(this.swapDelay.getValue())) { return; } - if (b.crosshairTarget instanceof EntityHitResult var13) { - Entity var15 = var13.getEntity(); - if (var15 != null) { - InventoryUtil2.a_void_________(new Object[]{var15, 31382773185830L}); + if (mc.crosshairTarget instanceof EntityHitResult entityHit) { + Entity target = entityHit.getEntity(); + if (target != null) { + PlayerInteractions.attackEntity(target); } } - this.j = 2; - this.h.a_void_____________________(new Object[]{93540861878173L}); - } else if (this.j == 2) { - RenderHelper27 var16 = this.h; - float var18 = (Float)this.c.getValue(); - Object[] var19 = new Object[]{null, 2505922520844L}; - var19[0] = var18; - if (!var16.a(var19)) { + this.swapStage = 2; + this.swapBackTimer.reset(); + } else if (this.swapStage == 2) { + if (!this.swapBackTimer.hasElapsed(this.swapBackDelay.getValue())) { return; } - if (this.i != -1) { - int var17 = this.i; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var17; - InventoryUtil.a_void________(var10003); - this.i = -1; + if (this.previousSlot != -1) { + InventoryUtil.selectSlot(this.previousSlot); + this.previousSlot = -1; } - this.j = 0; + this.swapStage = 0; } } else { - this.j = 0; - this.i = -1; + this.swapStage = 0; + this.previousSlot = -1; } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/TotemHit.java b/src/main/java/dev/zprestige/prestige/module/combat/TotemHit.java index 6d3bdfb..2c50482 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/TotemHit.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/TotemHit.java @@ -2,12 +2,9 @@ package dev.zprestige.prestige.module.combat; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.Event; +import dev.zprestige.prestige.event.AttackEntityEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Items; @@ -17,106 +14,31 @@ public class TotemHit extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private static final long l = -2304674206878531576L; + private static final long LAST_HOTBAR_SLOT = -2304674206878531576L; @Subscribe - public void a(EntityEvent var1) { - Event.b(); - Entity var9 = var1.a(new Object[0]); - if (var9 != null) { - if (var9 instanceof PlayerEntity) { - if (b.player.getMainHandStack().getItem() == Items.TOTEM_OF_UNDYING) { - Integer var10 = null; + public void onAttackEntity(AttackEntityEvent event) { + Entity target = event.getTarget(); + if (target != null) { + if (target instanceof PlayerEntity) { + if (mc.player.getMainHandStack().getItem() == Items.TOTEM_OF_UNDYING) { + Integer swordSlot = null; - for (int var11 = 0; var11 <= (int)l; var11++) { - if (InventoryUtil.a(new Object[]{b.player.getInventory().getStack(var11), 127680976181311L})) { - var10 = var11; + for (int slot = 0; slot <= (int)LAST_HOTBAR_SLOT; slot++) { + if (InventoryUtil.isSword(mc.player.getInventory().getStack(slot))) { + swordSlot = slot; break; } } - if (var10 == null) { + if (swordSlot == null) { return; } - var1.a_void_____(new Object[0]); - int var10000 = var10; - Runnable var10001 = () -> InventoryUtil2.a_void_________(new Object[]{var1.a(new Object[0]), 31382773185830L}); - Object[] var10005 = new Object[]{null, null, null, 53805837885570L}; - var10005[2] = true; - var10005[1] = var10001; - var10005[0] = var10000; - InventoryUtil.b_void__(var10005); + event.cancel(); + InventoryUtil.runWithSlot(swordSlot, () -> PlayerInteractions.attackEntity(event.getTarget()), true); } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/Triggerbot.java b/src/main/java/dev/zprestige/prestige/module/combat/Triggerbot.java index 9a99ab2..71d3b85 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/Triggerbot.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/Triggerbot.java @@ -8,26 +8,22 @@ import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.TickEvent12; -import dev.zprestige.prestige.event.TickEvent15; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.AutoAttackEvent; +import dev.zprestige.prestige.event.ExtendedReachAttackEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.inventory.InventoryUtil3; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.inventory.DeathLootDetector; import dev.zprestige.prestige.module.spear.ExtendedReach; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper36; -import dev.zprestige.prestige.render.RenderUtil5; -import dev.zprestige.prestige.util.BindManager; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.MouseAccessor; +import dev.zprestige.prestige.render.RandomUtil; +import dev.zprestige.prestige.util.SimulatedClickManager; import java.util.Set; import java.util.function.Predicate; -import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.entity.Entity; import net.minecraft.entity.decoration.EndCrystalEntity; import net.minecraft.entity.player.PlayerEntity; @@ -41,335 +37,274 @@ import net.minecraft.util.hit.HitResult.Type; import org.lwjgl.glfw.GLFW; public class Triggerbot extends Module { - private MultiSetting a; - private BoolSetting d; - private FloatSetting c; - private MultiSetting e; - private MultiSetting f; - private BoolSetting g; - private BoolSetting h; - private BoolSetting i; - private BoolSetting j; - private RangeSetting k; - private RangeSetting l; - private BoolSetting m; - private FloatSetting n; - private RangeSetting o; - private RenderHelper27 p = new RenderHelper27(26293358099357L); - private RenderHelper27 q = new RenderHelper27(26293358099357L); - private int r = -1; - private int s = -1; - private boolean t = false; - private boolean u = false; - private long v = System.nanoTime(); - private double w = 20.0; - private int x = -1; - private long y = 0L; + private MultiSetting targets; + private BoolSetting stickyTarget; + private FloatSetting stickyRange; + private MultiSetting swordSettings; + private MultiSetting crystalSettings; + private BoolSetting requireLeftClick; + private BoolSetting pauseInScreen; + private BoolSetting ignoreFriends; + private BoolSetting debugTargets; + private RangeSetting delay; + private RangeSetting cooldown; + private BoolSetting tpsSync; + private FloatSetting missChance; + private RangeSetting customCooldown; + private StopWatch delayTimer = new StopWatch(); + private StopWatch customCooldownTimer = new StopWatch(); + private int stickyTargetId = -1; + private int trackedTargetId = -1; + private boolean trackedTargetMissed = false; + private boolean trackedViaExtendedReach = false; + private long lastTickNanos = System.nanoTime(); + private double estimatedTps = 20.0; + private int lastDebugEntityId = -1; + private long lastDebugTime = 0L; public Triggerbot() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.l - .setVisibility_RangeSetting( - new Object[]{ - (Predicate)lpL339_0 -> this.a.isSelected(new Object[]{"Any", 47850572908778L}) - || this.a.isSelected(new Object[]{"Players", 47850572908778L}), - 37043306203287L - } + this.cooldown + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Any") + || this.targets.isSelected("Players") ); - this.n - .setVisibility_FloatSetting( - new Object[]{ - (Predicate)lpL337_0 -> this.a.isSelected(new Object[]{"Any", 47850572908778L}) - || this.a.isSelected(new Object[]{"Players", 47850572908778L}), - 35046756052036L - } + this.missChance + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Any") + || this.targets.isSelected("Players") ); - this.f - .setVisibility_MultiSetting( - new Object[]{ - (Predicate)lpL340_0 -> this.a.isSelected(new Object[]{"Any", 47850572908778L}) - || this.a.isSelected(new Object[]{"Crystals", 47850572908778L}), - 18435058659860L - } + this.crystalSettings + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Any") + || this.targets.isSelected("Crystals") ); - this.m - .setVisibility_BoolSetting( - new Object[]{ - (Predicate)lpL338_0 -> this.a.isSelected(new Object[]{"Any", 47850572908778L}) - || this.a.isSelected(new Object[]{"Players", 47850572908778L}), - 73196168581295L - } + this.tpsSync + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Any") + || this.targets.isSelected("Players") ); - this.d - .setVisibility_BoolSetting( - new Object[]{ - (Predicate)lpL343_0 -> this.a.isSelected(new Object[]{"Any", 47850572908778L}) - || this.a.isSelected(new Object[]{"Players", 47850572908778L}), - 73196168581295L - } + this.stickyTarget + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Any") + || this.targets.isSelected("Players") ); - this.c - .setVisibility_FloatSetting( - new Object[]{ - (Predicate)lpL342_0 -> (Boolean)this.d.getValue() - && (this.a.isSelected(new Object[]{"Any", 47850572908778L}) || this.a.isSelected(new Object[]{"Players", 47850572908778L})), - 35046756052036L - } + this.stickyRange + .visibleWhen( + (Predicate)ignored -> this.stickyTarget.getValue() + && (this.targets.isSelected("Any") || this.targets.isSelected("Players")) ); - this.o - .setVisibility_RangeSetting( - new Object[]{ - (Predicate)lpL336_0 -> ( - this.a.isSelected(new Object[]{"Any", 47850572908778L}) || this.a.isSelected(new Object[]{"Players", 47850572908778L}) + this.customCooldown + .visibleWhen( + (Predicate)ignored -> ( + this.targets.isSelected("Any") || this.targets.isSelected("Players") ) - && !this.e.isSelected(new Object[]{"Weapon Only", 47850572908778L}), - 37043306203287L - } + && !this.swordSettings.isSelected("Weapon Only") ); - this.e - .setVisibility_MultiSetting( - new Object[]{ - (Predicate)lpL341_0 -> this.a.isSelected(new Object[]{"Any", 47850572908778L}) - || this.a.isSelected(new Object[]{"Players", 47850572908778L}), - 18435058659860L - } + this.swordSettings + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Any") + || this.targets.isSelected("Players") ); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } - public void j(Object[] var1) { - long var5 = System.nanoTime(); - Event.b(); - long var7 = var5 - this.v; - if (var7 > 0L) { - double var9 = var7 / 1.0E9; - this.w = Math.min(20.0, 1.0 / var9); + public void updateTpsEstimate() { + long now = System.nanoTime(); + long elapsedNanos = now - this.lastTickNanos; + if (elapsedNanos > 0L) { + this.estimatedTps = Math.min(20.0, 1.0 / (elapsedNanos / 1.0E9)); } - this.v = var5; + this.lastTickNanos = now; } - private double a(Object[] var1) { - float var2 = (Float)var1[0]; - double var5 = Math.clamp(this.w, 10.0, 20.0); - return var2 + (1.0F - var2) * ((20.0 - var5) / 10.0); + private double applyTpsSync(float threshold) { + return threshold + (1.0F - threshold) * ((20.0 - Math.clamp(this.estimatedTps, 10.0, 20.0)) / 10.0); } @Override - public void onDisable(Object[] var1) { - this.r = -1; - this.k(new Object[0]); + public void onDisable() { + this.stickyTargetId = -1; + this.resetMissTracking(); } @Subscribe - public void a(TickEvent3 var1) { - this.r = -1; - this.k(new Object[0]); + public void onGameJoin(GameJoinEvent event) { + this.stickyTargetId = -1; + this.resetMissTracking(); } @Subscribe - public void a(PacketEvent var1) { - if (var1.a(new Object[0]) instanceof PlayerRespawnS2CPacket) { - this.r = -1; - this.k(new Object[0]); + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof PlayerRespawnS2CPacket) { + this.stickyTargetId = -1; + this.resetMissTracking(); } } - private void k(Object[] var1) { - this.s = -1; - this.t = false; - this.u = false; + private void resetMissTracking() { + this.trackedTargetId = -1; + this.trackedTargetMissed = false; + this.trackedViaExtendedReach = false; } - private void l(Object[] var1) { - Entity var2 = (Entity)var1[0]; - boolean var5 = (Boolean)var1[1]; - long var3 = (Long)var1[2]; - var3 = 103472504357851L ^ var3; - long var6 = var3 ^ 8429549668212L; - if (!CombatUtil.a(new Object[]{var2, var6})) { - this.k(new Object[0]); + private void updateTrackedTarget(Entity target, boolean viaExtendedReach) { + if (!TargetSelector.isPlayer(target)) { + this.resetMissTracking(); } else { - if (var2.getId() != this.s || var5 != this.u) { - this.s = var2.getId(); - this.t = false; - this.u = var5; + if (target.getId() != this.trackedTargetId || viaExtendedReach != this.trackedViaExtendedReach) { + this.trackedTargetId = target.getId(); + this.trackedTargetMissed = false; + this.trackedViaExtendedReach = viaExtendedReach; } } } @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - this.j(new Object[]{87087843766798L}); - if (b.player != null && b.world != null) { - if (this.r != -1) { - Entity var45 = b.world.getEntityById(this.r); - if (var45 == null || !var45.isAlive() || b.player.distanceTo(var45) > (Float)this.c.getValue()) { - this.r = -1; + public void onClientTick(ClientTickEvent event) { + this.updateTpsEstimate(); + if (mc.player != null && mc.world != null) { + if (this.stickyTargetId != -1) { + Entity stickyEntity = mc.world.getEntityById(this.stickyTargetId); + if (stickyEntity == null || !stickyEntity.isAlive() || mc.player.distanceTo(stickyEntity) > this.stickyRange.getValue()) { + this.stickyTargetId = -1; } } - if (b.crosshairTarget == null) { - this.k(new Object[0]); - } else if ((!(Boolean)this.h.getValue() || b.currentScreen == null) && b.isWindowFocused() && !b.player.isUsingItem()) { - if (!InventoryUtil2.d(new Object[]{89063551742447L})) { - if ((Boolean)this.g.getValue() && GLFW.glfwGetMouseButton(b.getWindow().getHandle(), 0) != 1) { - this.k(new Object[0]); + if (mc.crosshairTarget == null) { + this.resetMissTracking(); + } else if ((!this.pauseInScreen.getValue() || mc.currentScreen == null) && mc.isWindowFocused() && !mc.player.isUsingItem()) { + if (!PlayerInteractions.isBlocking()) { + if (this.requireLeftClick.getValue() && GLFW.glfwGetMouseButton(mc.getWindow().getHandle(), 0) != 1) { + this.resetMissTracking(); } else { - Entity var53 = null; - if (this.t) { - if (this.u) { - var53 = ExtendedReach.a_class_1297____(new Object[]{30287626816250L}); - if (var53 == null || var53.getId() != this.s) { - this.k(new Object[0]); - var53 = null; + Entity retainedReachTarget = null; + if (this.trackedTargetMissed) { + if (this.trackedViaExtendedReach) { + retainedReachTarget = ExtendedReach.findExtendedReachTarget(); + if (retainedReachTarget == null || retainedReachTarget.getId() != this.trackedTargetId) { + this.resetMissTracking(); + retainedReachTarget = null; } - } else if (!(b.crosshairTarget instanceof EntityHitResult var46 && var46.getEntity().getId() == this.s)) { - this.k(new Object[0]); + } else if (!(mc.crosshairTarget instanceof EntityHitResult entityHit && entityHit.getEntity().getId() == this.trackedTargetId)) { + this.resetMissTracking(); } } - if (this.p.b(new Object[]{this.k, 89714527855213L})) { - Entity var54 = var53 != null ? var53 : ExtendedReach.a_class_1297____(new Object[]{30287626816250L}); - HitResult var55 = b.crosshairTarget; - if ((var55 == null || !var55.getType().equals(Type.ENTITY)) && var54 == null) { - this.k(new Object[0]); - this.k.reroll(new Object[]{57083216809697L}); - this.p.a_void_____________________(new Object[]{93540861878173L}); + if (this.delayTimer.hasElapsedRandom(this.delay)) { + Entity reachTarget = retainedReachTarget != null ? retainedReachTarget : ExtendedReach.findExtendedReachTarget(); + HitResult crosshairHit = mc.crosshairTarget; + if ((crosshairHit == null || !crosshairHit.getType().equals(Type.ENTITY)) && reachTarget == null) { + this.resetMissTracking(); + this.delay.reroll(); + this.delayTimer.reset(); } else { - Entity var48 = var54 != null ? var54 : ((EntityHitResult)var55).getEntity(); - int var10002 = var54 != null ? 1 : 0; - Object[] var10005 = new Object[]{null, null, 80328563351148L}; - var10005[1] = Boolean.valueOf(var10002 != 0); - var10005[0] = var48; - this.l(var10005); - if (!this.a_boolean__________________________(new Object[]{var48, 14676090267098L})) { - this.k(new Object[0]); - if ((Boolean)this.j.getValue()) { - this.m(new Object[]{var48, 82527965575973L}); + Entity target = reachTarget != null ? reachTarget : ((EntityHitResult)crosshairHit).getEntity(); + this.updateTrackedTarget(target, Boolean.valueOf((reachTarget != null ? 1 : 0) != 0)); + if (!this.isAttackable(target)) { + this.resetMissTracking(); + if (this.debugTargets.getValue()) { + this.logRejection(target); } } else { - boolean var49 = InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L}) - || b.player.getMainHandStack().getItem() instanceof AxeItem - || InventoryUtil.o(new Object[]{b.player.getMainHandStack(), 133561865349436L}); - if (!(var48 instanceof PlayerEntity) - && (!this.a.isSelected(new Object[]{"Any", 47850572908778L}) || var48 instanceof EndCrystalEntity) - || !this.e.isSelected(new Object[]{"Weapon Only", 47850572908778L}) - || var49) { - if (!(var48 instanceof EndCrystalEntity) - || !this.f.isSelected(new Object[]{"Crystal Only", 47850572908778L}) - || b.player.getMainHandStack().getItem() == Items.END_CRYSTAL) { - float var50 = this.l.randomInRange(new Object[]{877569900989L}) / 100.0F; - if ((Boolean)this.m.getValue()) { - Object[] var10004 = new Object[]{null, 24963920917395L}; - var10004[0] = var50; - var50 = (float)this.a(var10004); + boolean holdingWeapon = InventoryUtil.isSword(mc.player.getMainHandStack()) + || mc.player.getMainHandStack().getItem() instanceof AxeItem + || InventoryUtil.isMace(mc.player.getMainHandStack()); + if (!(target instanceof PlayerEntity) + && (!this.targets.isSelected("Any") || target instanceof EndCrystalEntity) + || !this.swordSettings.isSelected("Weapon Only") + || holdingWeapon) { + if (!(target instanceof EndCrystalEntity) + || !this.crystalSettings.isSelected("Crystal Only") + || mc.player.getMainHandStack().getItem() == Items.END_CRYSTAL) { + float cooldownThreshold = this.cooldown.randomInRange() / 100.0F; + if (this.tpsSync.getValue()) { + cooldownThreshold = (float)this.applyTpsSync(cooldownThreshold); } - if (!(var48 instanceof EndCrystalEntity)) { - if (this.e.isSelected(new Object[]{"Weapon Only", 47850572908778L})) { - if (b.player.getAttackCooldownProgress(0.0F) < var50) { + if (!(target instanceof EndCrystalEntity)) { + if (this.swordSettings.isSelected("Weapon Only")) { + if (mc.player.getAttackCooldownProgress(0.0F) < cooldownThreshold) { return; } - } else if (!this.q.b(new Object[]{this.o, 89714527855213L})) { + } else if (!this.customCooldownTimer.hasElapsedRandom(this.customCooldown)) { return; } } - if (!this.f.isSelected(new Object[]{"On Ground Only", 47850572908778L}) - || !(var48 instanceof EndCrystalEntity) - || b.player.isOnGround()) { - if (!(var48 instanceof PlayerEntity) - || !CombatUtil.b_boolean(new Object[]{(PlayerEntity)var48, 53913050824112L}) - || b.player.getMainHandStack().getItem() instanceof AxeItem) { - if (var48 instanceof PlayerEntity - && var49 - && !b.player.isOnGround() - && b.player.fallDistance > 0.0 - && b.player.getVelocity().y <= 0.0) { - boolean var56 = true; + if (!this.crystalSettings.isSelected("On Ground Only") + || !(target instanceof EndCrystalEntity) + || mc.player.isOnGround()) { + if (!(target instanceof PlayerEntity) + || !TargetSelector.isBlockingWithShield((PlayerEntity)target) + || mc.player.getMainHandStack().getItem() instanceof AxeItem) { + if (target instanceof PlayerEntity + && holdingWeapon + && !mc.player.isOnGround() + && mc.player.fallDistance > 0.0 + && mc.player.getVelocity().y <= 0.0) { } else { - boolean var10000 = false; } - if (!this.e.isSelected(new Object[]{"Criticals Timing", 47850572908778L}) - || !(var48 instanceof PlayerEntity) - || !var49 - || b.player.isOnGround() - || !(b.player.fallDistance <= 0.0) && !(b.player.getVelocity().y >= 0.0)) { - if (!this.e.isSelected(new Object[]{"Crit Only", 47850572908778L}) - || !(var48 instanceof PlayerEntity) - || !var49 - || !b.player.isOnGround() && !(b.player.fallDistance <= 0.0) && !(b.player.getVelocity().y >= 0.0)) { - if (!this.f.isSelected(new Object[]{"Pause On Kill", 47850572908778L}) - || !(var48 instanceof EndCrystalEntity) - || !InventoryUtil3.a(new Object[]{var48.getBlockPos(), 64853648109405L})) { - if ((Boolean)this.d.getValue() && var48 instanceof PlayerEntity) { - int var52 = var48.getId(); - if (this.r == -1) { - this.r = var52; - } else if (var52 != this.r) { + if (!this.swordSettings.isSelected("Criticals Timing") + || !(target instanceof PlayerEntity) + || !holdingWeapon + || mc.player.isOnGround() + || !(mc.player.fallDistance <= 0.0) && !(mc.player.getVelocity().y >= 0.0)) { + if (!this.swordSettings.isSelected("Crit Only") + || !(target instanceof PlayerEntity) + || !holdingWeapon + || !mc.player.isOnGround() && !(mc.player.fallDistance <= 0.0) && !(mc.player.getVelocity().y >= 0.0)) { + if (!this.crystalSettings.isSelected("Pause On Kill") + || !(target instanceof EndCrystalEntity) + || !DeathLootDetector.isLootNearby(target.getBlockPos())) { + if (this.stickyTarget.getValue() && target instanceof PlayerEntity) { + int targetId = target.getId(); + if (this.stickyTargetId == -1) { + this.stickyTargetId = targetId; + } else if (targetId != this.stickyTargetId) { return; } } - if (var48 instanceof PlayerEntity) { - if ((Float)this.n.getValue() <= 0.0F) { - this.t = false; + if (target instanceof PlayerEntity) { + if (this.missChance.getValue() <= 0.0F) { + this.trackedTargetMissed = false; } else { - if (this.t) { + if (this.trackedTargetMissed) { return; } - Object[] var62 = new Object[]{null, null, 29524726012237L}; - var62[1] = 100.0F; - var62[0] = 0.0F; - if (RenderUtil5.a(var62) < (Float)this.n.getValue()) { - this.t = true; - this.k.reroll(new Object[]{57083216809697L}); - this.p.a_void_____________________(new Object[]{93540861878173L}); + if (RandomUtil.randomFloat(0.0F, 100.0F) < this.missChance.getValue()) { + this.trackedTargetMissed = true; + this.delay.reroll(); + this.delayTimer.reset(); return; } } } - if (var48 instanceof PlayerEntity) { - new TickEvent12().b_boolean__(new Object[]{122499962143880L}); + if (target instanceof PlayerEntity) { + new AutoAttackEvent().post(); } - if (var54 != null) { - new TickEvent15().b_boolean__(new Object[]{122499962143880L}); - RenderHelper36 var57 = new RenderHelper36(b.mouse); - long var10001 = b.getWindow().getHandle(); - var10002 = BindManager.e; - Object[] var10007 = new Object[]{null, null, null, null, 105573767579112L}; - var10007[3] = 0; - var10007[2] = 1; - var10007[1] = var10002; - var10007[0] = var10001; - var57.a(var10007); - var57 = new RenderHelper36(b.mouse); - var10001 = b.getWindow().getHandle(); - var10002 = BindManager.e; - var10007 = new Object[]{null, null, null, null, 105573767579112L}; - var10007[3] = 0; - var10007[2] = 0; - var10007[1] = var10002; - var10007[0] = var10001; - var57.a(var10007); + if (reachTarget != null) { + new ExtendedReachAttackEvent().post(); + new MouseAccessor(mc.mouse).invokeMouseButton(mc.getWindow().getHandle(), SimulatedClickManager.attackButton, 1, 0); + new MouseAccessor(mc.mouse).invokeMouseButton(mc.getWindow().getHandle(), SimulatedClickManager.attackButton, 0, 0); } else { - InventoryUtil2.a_void_________(new Object[]{var48, 31382773185830L}); + PlayerInteractions.attackEntity(target); } - this.k.reroll(new Object[]{57083216809697L}); - this.p.a_void_____________________(new Object[]{93540861878173L}); - this.o.reroll(new Object[]{57083216809697L}); - this.q.a_void_____________________(new Object[]{93540861878173L}); + this.delay.reroll(); + this.delayTimer.reset(); + this.customCooldown.reroll(); + this.customCooldownTimer.reset(); } } } @@ -384,160 +319,78 @@ public class Triggerbot extends Module { } } } else { - this.k(new Object[0]); + this.resetMissTracking(); } } - private boolean a_boolean__________________________(Object[] var1) { - Entity var2 = (Entity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 103472504357851L ^ var3; - long var5 = var3 ^ 76806933710731L; - long var7 = var3 ^ 74755248897218L; - long var9 = var3 ^ 132798486605547L; - if ((Boolean)this.i.getValue() && var2 instanceof PlayerEntity var12 && Prestige.g.a(new Object[]{var12.getName().getString(), var5})) { + private boolean isAttackable(Entity entity) { + if (this.ignoreFriends.getValue() && entity instanceof PlayerEntity player && Prestige.friendManager.isFriend(player.getName().getString())) { return false; } else { - return !(var2 instanceof PlayerEntity var14 && (var14.isSpectator() || var14.isDead() || var14.isRemoved() || var14.getAbilities().invulnerable)) - ? var2 != null - && var2 != b.player - && (this.e.isSelected(new Object[]{"Attack Invisibles", var9}) || !var2.isInvisible()) + return !(entity instanceof PlayerEntity playerTarget && (playerTarget.isSpectator() || playerTarget.isDead() || playerTarget.isRemoved() || playerTarget.getAbilities().invulnerable)) + ? entity != null + && entity != mc.player + && (this.swordSettings.isSelected("Attack Invisibles") || !entity.isInvisible()) && ( - this.a.isSelected(new Object[]{"Any", var9}) - || this.a.isSelected(new Object[]{"Players", var9}) && CombatUtil.a(new Object[]{var2, var7}) - || this.a.isSelected(new Object[]{"Crystals", var9}) && var2 instanceof EndCrystalEntity + this.targets.isSelected("Any") + || this.targets.isSelected("Players") && TargetSelector.isPlayer(entity) + || this.targets.isSelected("Crystals") && entity instanceof EndCrystalEntity ) : false; } } - private void m(Object[] var1) { - Entity var4 = (Entity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 103472504357851L ^ var2; - long var5 = var2 ^ 3904179263860L; - long var7 = var2 ^ 68794901409812L; - Event.b(); - long var10 = System.currentTimeMillis(); - if (var4.getId() != this.x || var10 - this.y >= 3000L) { - this.x = var4.getId(); - this.y = var10; - String var12 = var4.getName().getString(); - String var13 = var4.getClass().getSimpleName(); - StringBuilder var14 = new StringBuilder(); - if (!(var4 instanceof PlayerEntity var15)) { - var14.append("not-a-player-type "); + private void logRejection(Entity entity) { + long now = System.currentTimeMillis(); + if (entity.getId() != this.lastDebugEntityId || now - this.lastDebugTime >= 3000L) { + this.lastDebugEntityId = entity.getId(); + this.lastDebugTime = now; + String entityName = entity.getName().getString(); + String className = entity.getClass().getSimpleName(); + StringBuilder reasons = new StringBuilder(); + if (!(entity instanceof PlayerEntity player)) { + reasons.append("not-a-player-type "); } else { - if ((Boolean)this.i.getValue() && Prestige.g.a(new Object[]{var12, var5})) { - var14.append("friend "); + if (this.ignoreFriends.getValue() && Prestige.friendManager.isFriend(entityName)) { + reasons.append("friend "); } - if (var15.isSpectator()) { - var14.append("spectator "); + if (player.isSpectator()) { + reasons.append("spectator "); } - if (var15.isDead()) { - var14.append("dead "); + if (player.isDead()) { + reasons.append("dead "); } - if (var15.isRemoved()) { - var14.append("removed "); + if (player.isRemoved()) { + reasons.append("removed "); } - if (var15.getAbilities().invulnerable) { - var14.append("invulnerable "); + if (player.getAbilities().invulnerable) { + reasons.append("invulnerable "); } - if (!this.a.isSelected(new Object[]{"Any", var7}) && !this.a.isSelected(new Object[]{"Players", var7})) { - var14.append("targets-filter "); + if (!this.targets.isSelected("Any") && !this.targets.isSelected("Players")) { + reasons.append("targets-filter "); } - var14.append("uuid-v").append(var15.getUuid().version()).append(' '); + reasons.append("uuid-v").append(player.getUuid().version()).append(' '); } - if (var4 instanceof EndCrystalEntity && !this.a.isSelected(new Object[]{"Crystals", var7}) && !this.a.isSelected(new Object[]{"Any", var7})) { - var14.append("crystals-off "); + if (entity instanceof EndCrystalEntity && !this.targets.isSelected("Crystals") && !this.targets.isSelected("Any")) { + reasons.append("crystals-off "); } - if (!this.e.isSelected(new Object[]{"Attack Invisibles", var7}) && var4.isInvisible()) { - var14.append("invisible "); + if (!this.swordSettings.isSelected("Attack Invisibles") && entity.isInvisible()) { + reasons.append("invisible "); } - if (var14.length() == 0) { - var14.append("unknown"); + if (reasons.length() == 0) { + reasons.append("unknown"); } - ClientPlayerEntity var10000 = b.player; - String var16 = String.valueOf(var14); - var10000.sendMessage(Text.literal("§7[Triggerbot] §f" + var12 + " §8(" + var13 + ") §crejected:§7 " + var16), false); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + mc.player.sendMessage(Text.literal("§7[Triggerbot] §f" + entityName + " §8(" + className + ") §crejected:§7 " + String.valueOf(reasons)), false); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/combat/XbowCart.java b/src/main/java/dev/zprestige/prestige/module/combat/XbowCart.java index 0512aa1..5ef4083 100644 --- a/src/main/java/dev/zprestige/prestige/module/combat/XbowCart.java +++ b/src/main/java/dev/zprestige/prestige/module/combat/XbowCart.java @@ -7,16 +7,13 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.type.CartState; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.type.XbowCartState; +import dev.zprestige.prestige.world.RotationUtil; import java.util.Set; import java.util.function.Predicate; import net.minecraft.component.DataComponentTypes; @@ -35,292 +32,234 @@ import net.minecraft.world.RaycastContext; import net.minecraft.world.RaycastContext.FluidHandling; import net.minecraft.world.RaycastContext.ShapeType; -public class XbowCart extends Module implements RenderContract3 { - private IntSetting a; - private BoolSetting d; - private FloatSetting c; - private static final Item[] e = new Item[]{Items.RAIL, Items.POWERED_RAIL, Items.DETECTOR_RAIL, Items.ACTIVATOR_RAIL}; - private CartState f = CartState.IDLE; - private int g; - private int h; - private int i; - private BlockPos j; - private int k = -1; - private int l = 0; - private int m = 0; - private int n = 0; - private int o = 0; - private int p = -1; - private RenderBatch q; +public class XbowCart extends Module implements RotationProvider { + private IntSetting switchDelay; + private BoolSetting silentAim; + private FloatSetting silentAimFov; + private static final Item[] RAIL_ITEMS = new Item[]{Items.RAIL, Items.POWERED_RAIL, Items.DETECTOR_RAIL, Items.ACTIVATOR_RAIL}; + private XbowCartState state = XbowCartState.IDLE; + private int railX; + private int railY; + private int railZ; + private BlockPos firePos; + private int previousSlot = -1; + private int delayTicks = 0; + private int railRetryTicks = 0; + private int elapsedTicks = 0; + private int aimWaitTicks = 0; + private int pulledCartSlot = -1; + private Rotation shotRotation; public XbowCart() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.c.setVisibility_FloatSetting(new Object[]{(Predicate)lpL358_0 -> (Boolean)this.d.getValue(), 35046756052036L}); + this.silentAimFov.visibleWhen((Predicate)ignored -> this.silentAim.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Cart); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 136621126230743L; - long var6 = var2 ^ 47128962125542L; - long var8 = var2 ^ 93334552156450L; - long var10 = var2 ^ 6654513203874L; - long var12 = var2 ^ 32457309120265L; - long var14 = var2 ^ 91082959635357L; - long var16 = var2 ^ 84081701449888L; - Event.b(); - this.j(new Object[0]); - this.k = InventoryUtil.a_int_____(new Object[]{var10}); - if (this.f(new Object[]{var12}) == -1) { - this.k(new Object[]{var6}); - } else if (this.d_int____(new Object[]{var8}) == -1) { - this.k(new Object[]{var6}); - } else if (this.a_Integer___(new Object[]{var16}) == null) { - this.k(new Object[]{var6}); - } else if (this.e(new Object[]{var4}) == -1) { - this.k(new Object[]{var6}); + public void onEnable() { + this.resetState(); + this.previousSlot = InventoryUtil.getSelectedSlot(); + if (this.findLoadedCrossbowSlot() == -1) { + this.abort(); + } else if (this.findRailSlot() == -1) { + this.abort(); + } else if (this.findOrPullCartSlot() == null) { + this.abort(); + } else if (this.findFlintAndSteelSlot() == -1) { + this.abort(); } else { - this.f = CartState.SWITCH_RAIL; - Prestige.o.e(new Object[]{this, var14}); + this.state = XbowCartState.SWITCH_RAIL; + Prestige.silentRotationManager.addRotationProvider(this); } } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); - this.j(new Object[0]); + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + this.resetState(); } - private void j(Object[] var1) { - this.f = CartState.IDLE; - this.j = null; - this.k = -1; - this.l = 0; - this.m = 0; - this.n = 0; - this.o = 0; - this.p = -1; - this.q = null; + private void resetState() { + this.state = XbowCartState.IDLE; + this.firePos = null; + this.previousSlot = -1; + this.delayTicks = 0; + this.railRetryTicks = 0; + this.elapsedTicks = 0; + this.aimWaitTicks = 0; + this.pulledCartSlot = -1; + this.shotRotation = null; } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 53810106211380L ^ var2; - long var4 = var2 ^ 88056286525842L; - this.m(new Object[]{var4}); + private void abort() { + this.disableSelf(); } - private void l(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 53810106211380L ^ var2; - long var4 = var2 ^ 132265930987886L; - long var6 = var2 ^ 119095194322271L; - if (this.k != -1) { - int var10000 = this.k; - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + private void finishAndSwitchBack() { + if (this.previousSlot != -1) { + InventoryUtil.selectSlot(this.previousSlot); } - this.m(new Object[]{var4}); + this.disableSelf(); } - private void m(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 53810106211380L ^ var2; - long var4 = var2 ^ 121253479255518L; + private void disableSelf() { if (this.isEnabled()) { - this.toggle(new Object[]{var4}); + this.toggle(); } } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null && b.player != null) { - if (this.f != CartState.IDLE) { - if (++this.n > 80) { - this.k(new Object[]{95649723638752L}); + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { + if (this.state != XbowCartState.IDLE) { + if (++this.elapsedTicks > 80) { + this.abort(); } else { - switch (this.f) { + switch (this.state) { case SWITCH_RAIL: - int var36 = this.d_int____(new Object[]{44805536396324L}); - if (var36 == -1) { - this.k(new Object[]{95649723638752L}); + int railSlot = this.findRailSlot(); + if (railSlot == -1) { + this.abort(); return; } - if (b.crosshairTarget instanceof BlockHitResult var37 && var37.getSide() == Direction.UP) { - BlockPos var38 = var37.getBlockPos(); - this.g = var38.getX(); - this.h = var38.getY() + 1; - this.i = var38.getZ(); - if (!b.world.getBlockState(var38.up()).isReplaceable()) { - this.k(new Object[]{95649723638752L}); + if (mc.crosshairTarget instanceof BlockHitResult crosshairHit && crosshairHit.getSide() == Direction.UP) { + BlockPos basePos = crosshairHit.getBlockPos(); + this.railX = basePos.getX(); + this.railY = basePos.getY() + 1; + this.railZ = basePos.getZ(); + if (!mc.world.getBlockState(basePos.up()).isReplaceable()) { + this.abort(); return; } - double var40 = this.g + 0.5; - double var41 = this.h + 0.5; - double var46 = this.i + 0.5; - Object[] var48 = new Object[]{null, null, null, 12947405432978L}; - var48[2] = var46; - var48[1] = var41; - var48[0] = var40; - if (!this.d(var48)) { - this.k(new Object[]{95649723638752L}); + if (!this.isInReach(this.railX + 0.5, this.railY + 0.5, this.railZ + 0.5)) { + this.abort(); return; } - Object[] var47 = new Object[]{null, 37392877673079L}; - var47[0] = var36; - InventoryUtil.a_void________(var47); - this.n( - new Object[]{ - new BlockHitResult(new Vec3d(this.g + 0.5, var38.getY() + 1.0, this.i + 0.5), Direction.UP, var38, false), - 31783843004644L - } + InventoryUtil.selectSlot(railSlot); + this.interactBlockAndSwing( + new BlockHitResult(new Vec3d(this.railX + 0.5, basePos.getY() + 1.0, this.railZ + 0.5), Direction.UP, basePos, false) ); - this.l = (Integer)this.a.getValue(); - this.f = CartState.SWITCH_CART; + this.delayTicks = this.switchDelay.getValue(); + this.state = XbowCartState.SWITCH_CART; break; } - if (++this.m > 10) { - this.k(new Object[]{95649723638752L}); + if (++this.railRetryTicks > 10) { + this.abort(); } return; case SWITCH_CART: - if (this.l > 0) { - this.l--; + if (this.delayTicks > 0) { + this.delayTicks--; return; } - Integer var35 = this.a_Integer___(new Object[]{53171514072486L}); - if (var35 == null) { - this.k(new Object[]{95649723638752L}); + Integer cartSlot = this.findOrPullCartSlot(); + if (cartSlot == null) { + this.abort(); return; } - if (b.player.getInventory().getStack(var35).getItem() != Items.TNT_MINECART) { + if (mc.player.getInventory().getStack(cartSlot).getItem() != Items.TNT_MINECART) { return; } - double var10001 = this.g + 0.5; - double var10002 = this.h + 0.5; - double var44 = this.i + 0.5; - Object[] var10006 = new Object[]{null, null, null, 12947405432978L}; - var10006[2] = var44; - var10006[1] = var10002; - var10006[0] = var10001; - if (!this.d(var10006)) { - this.k(new Object[]{95649723638752L}); + if (!this.isInReach(this.railX + 0.5, this.railY + 0.5, this.railZ + 0.5)) { + this.abort(); return; } - int var39 = var35; - Object[] var45 = new Object[]{null, 37392877673079L}; - var45[0] = var39; - InventoryUtil.a_void________(var45); - InventoryUtil2.a( - new Object[]{ - new BlockHitResult( - new Vec3d(this.g + 0.5, this.h + 0.125, this.i + 0.5), Direction.UP, new BlockPos(this.g, this.h, this.i), false - ), - 96519249476482L - } + InventoryUtil.selectSlot(cartSlot); + PlayerInteractions.interactBlock( + new BlockHitResult( + new Vec3d(this.railX + 0.5, this.railY + 0.125, this.railZ + 0.5), Direction.UP, new BlockPos(this.railX, this.railY, this.railZ), false + ) ); - this.l = (Integer)this.a.getValue(); - this.f = CartState.SWITCH_FIRE; + this.delayTicks = this.switchDelay.getValue(); + this.state = XbowCartState.SWITCH_FIRE; break; case SWITCH_FIRE: - if (this.l > 0) { - this.l--; + if (this.delayTicks > 0) { + this.delayTicks--; return; } - if (this.j == null) { - this.j = this.a_class_2338_____(new Object[]{10211909878244L}); - if (this.j == null) { - this.k(new Object[]{95649723638752L}); + if (this.firePos == null) { + this.firePos = this.findFirePos(); + if (this.firePos == null) { + this.abort(); return; } } - int var34 = this.e(new Object[]{423783403473L}); - if (var34 == -1) { - this.k(new Object[]{95649723638752L}); + int flintSlot = this.findFlintAndSteelSlot(); + if (flintSlot == -1) { + this.abort(); return; } - BlockPos var30 = this.j.down(); - Object[] var43 = new Object[]{null, 37392877673079L}; - var43[0] = var34; - InventoryUtil.a_void________(var43); - this.n( - new Object[]{ - new BlockHitResult(new Vec3d(var30.getX() + 0.5, var30.getY() + 1.0, var30.getZ() + 0.5), Direction.UP, var30, false), - 31783843004644L - } + BlockPos fireBase = this.firePos.down(); + InventoryUtil.selectSlot(flintSlot); + this.interactBlockAndSwing( + new BlockHitResult(new Vec3d(fireBase.getX() + 0.5, fireBase.getY() + 1.0, fireBase.getZ() + 0.5), Direction.UP, fireBase, false) ); - this.l = (Integer)this.a.getValue(); - this.f = CartState.SWITCH_XBOW; + this.delayTicks = this.switchDelay.getValue(); + this.state = XbowCartState.SWITCH_XBOW; break; case SWITCH_XBOW: - if (this.l > 0) { - this.l--; + if (this.delayTicks > 0) { + this.delayTicks--; return; } - int var33 = this.f(new Object[]{107366408669711L}); - if (var33 == -1) { - this.k(new Object[]{95649723638752L}); + int crossbowSlot = this.findLoadedCrossbowSlot(); + if (crossbowSlot == -1) { + this.abort(); return; } - Object[] var42 = new Object[]{null, 37392877673079L}; - var42[0] = var33; - InventoryUtil.a_void________(var42); - this.o = 0; - this.f = CartState.FIRE; + InventoryUtil.selectSlot(crossbowSlot); + this.aimWaitTicks = 0; + this.state = XbowCartState.FIRE; break; case FIRE: - if (this.q == null) { - this.k(new Object[]{95649723638752L}); + if (this.shotRotation == null) { + this.abort(); return; } - if (InventoryUtil.l(new Object[]{Items.CROSSBOW, 65539821781598L})) { - RenderBatch var29 = Prestige.o.c(new Object[0]); - if (var29 != null && var29.a_boolean________________________________________(new Object[0]) && this.o++ < 5) { + if (InventoryUtil.isHolding(Items.CROSSBOW)) { + Rotation activeRotation = Prestige.silentRotationManager.getActiveRotation(); + if (activeRotation != null && activeRotation.isClamped() && this.aimWaitTicks++ < 5) { return; } - b.interactionManager.interactItem(b.player, Hand.MAIN_HAND); - Prestige.o.g(new Object[]{true}); - this.l(new Object[]{139241022833436L}); + mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND); + Prestige.silentRotationManager.setActedThisTick(true); + this.finishAndSwitchBack(); } else { - int var32 = this.f(new Object[]{107366408669711L}); - if (var32 == -1) { - this.k(new Object[]{95649723638752L}); + int reselectCrossbowSlot = this.findLoadedCrossbowSlot(); + if (reselectCrossbowSlot == -1) { + this.abort(); return; } - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var32; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(reselectCrossbowSlot); } } } @@ -328,161 +267,138 @@ public class XbowCart extends Module implements RenderContract3 { } } - private Vec3d a_class_243_____________(Object[] var1) { - Vec3d var4 = b.player.getEyePos(); - Vec3d var5 = new Vec3d(this.g + 0.5, this.h + 0.45, this.i + 0.5); - double var6 = var4.distanceTo(var5); - int var8 = (int)Math.ceil(var6 / 3.15); - double var9 = 0.05 * var8 * (var8 + 1) / 2.0; - return var5.add(0.0, var9, 0.0); + private Vec3d getCartAimPoint() { + Vec3d eyePos = mc.player.getEyePos(); + Vec3d cartCenter = new Vec3d(this.railX + 0.5, this.railY + 0.45, this.railZ + 0.5); + int flightTicks = (int)Math.ceil(eyePos.distanceTo(cartCenter) / 3.15); + return cartCenter.add(0.0, 0.05 * flightTicks * (flightTicks + 1) / 2.0, 0.0); } - private RenderBatch b_RenderBatch_____(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - Event.b(); - Vec3d var6 = b.player.getEyePos(); - double var7 = var4.x - var6.x; - double var9 = var4.y - (var6.y - 0.1); - double var11 = var4.z - var6.z; - double var13 = Math.sqrt(var7 * var7 + var9 * var9 + var11 * var11); - if (var13 < 1.0E-6) { + private Rotation computeRotationTo(Vec3d target) { + Vec3d eyePos = mc.player.getEyePos(); + double dx = target.x - eyePos.x; + double dy = target.y - (eyePos.y - 0.1); + double dz = target.z - eyePos.z; + double distance = Math.sqrt(dx * dx + dy * dy + dz * dz); + if (distance < 1.0E-6) { return null; } else { - float var15 = (float)(Math.toDegrees(Math.atan2(var11, var7)) - 90.0); - float var16 = (float)(-Math.toDegrees(Math.asin(var9 / var13))); - return new RenderBatch(var15, var16); + return new Rotation((float)(Math.toDegrees(Math.atan2(dz, dx)) - 90.0), (float)(-Math.toDegrees(Math.asin(dy / distance)))); } } - private boolean a_boolean___________________________(Object[] var1) { - float var5 = (Float)var1[0]; - float var6 = (Float)var1[1]; - BlockPos var2 = (BlockPos)var1[2]; - Vec3d var8 = b.player.getEyePos(); - double var9 = var8.x; - double var11 = var8.y - 0.1; - double var13 = var8.z; - Event.b(); - double var15 = Math.toRadians(var5); - double var17 = Math.toRadians(var6); - double var19 = -Math.sin(var15) * Math.cos(var17); - double var21 = -Math.sin(var17); - double var23 = Math.cos(var15) * Math.cos(var17); - double var25 = Math.sqrt(var19 * var19 + var21 * var21 + var23 * var23); - var19 = var19 / var25 * 3.15; - var21 = var21 / var25 * 3.15; - var23 = var23 / var25 * 3.15; - var19 += b.player.getVelocity().x; - var23 += b.player.getVelocity().z; - if (!b.player.isOnGround()) { - var21 += b.player.getVelocity().y; + private boolean doesShotIgniteCart(float yaw, float pitch, BlockPos fireBlock) { + Vec3d eyePos = mc.player.getEyePos(); + double posX = eyePos.x; + double posY = eyePos.y - 0.1; + double posZ = eyePos.z; + double yawRad = Math.toRadians(yaw); + double pitchRad = Math.toRadians(pitch); + double motionX = -Math.sin(yawRad) * Math.cos(pitchRad); + double motionY = -Math.sin(pitchRad); + double motionZ = Math.cos(yawRad) * Math.cos(pitchRad); + double length = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); + motionX = motionX / length * 3.15; + motionY = motionY / length * 3.15; + motionZ = motionZ / length * 3.15; + motionX += mc.player.getVelocity().x; + motionZ += mc.player.getVelocity().z; + if (!mc.player.isOnGround()) { + motionY += mc.player.getVelocity().y; } - Box var27 = new Box(this.g + 0.01, this.h + 0.0625, this.i + 0.01, this.g + 0.99, this.h + 0.7625, this.i + 0.99); - BlockPos var28 = new BlockPos(this.g, this.h, this.i); - boolean var29 = false; + Box cartBox = new Box(this.railX + 0.01, this.railY + 0.0625, this.railZ + 0.01, this.railX + 0.99, this.railY + 0.7625, this.railZ + 0.99); + BlockPos cartPos = new BlockPos(this.railX, this.railY, this.railZ); + boolean passedFire = false; - for (int var30 = 0; var30 < 60; var30++) { - Vec3d var31 = new Vec3d(var9, var11, var13); - double var32 = Math.sqrt(var19 * var19 + var21 * var21 + var23 * var23); - int var34 = Math.max(1, (int)Math.ceil(var32 / 0.25)); + for (int tick = 0; tick < 60; tick++) { + Vec3d tickStart = new Vec3d(posX, posY, posZ); + int substeps = Math.max(1, (int)Math.ceil(Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ) / 0.25)); - for (int var35 = 0; var35 < var34; var35++) { - var9 += var19 / var34; - var11 += var21 / var34; - var13 += var23 / var34; - if (!var29 && var2 != null && new Box(var2).contains(var9, var11, var13)) { - var29 = true; + for (int substep = 0; substep < substeps; substep++) { + posX += motionX / substeps; + posY += motionY / substeps; + posZ += motionZ / substeps; + if (!passedFire && fireBlock != null && new Box(fireBlock).contains(posX, posY, posZ)) { + passedFire = true; } - if (var27.contains(var9, var11, var13)) { - return var29; + if (cartBox.contains(posX, posY, posZ)) { + return passedFire; } } - Vec3d var42 = new Vec3d(var9, var11, var13); - BlockHitResult var36 = b.world.raycast(new RaycastContext(var31, var42, ShapeType.OUTLINE, FluidHandling.NONE, b.player)); - if (var36 != null && var36.getType() == Type.BLOCK && !var36.getBlockPos().equals(var28)) { + Vec3d tickEnd = new Vec3d(posX, posY, posZ); + BlockHitResult blockHit = mc.world.raycast(new RaycastContext(tickStart, tickEnd, ShapeType.OUTLINE, FluidHandling.NONE, mc.player)); + if (blockHit != null && blockHit.getType() == Type.BLOCK && !blockHit.getBlockPos().equals(cartPos)) { return false; } - if (var11 < this.h - 3) { + if (posY < this.railY - 3) { return false; } - var19 *= 0.99; - var23 *= 0.99; - var21 = var21 * 0.99 - 0.05; + motionX *= 0.99; + motionZ *= 0.99; + motionY = motionY * 0.99 - 0.05; } return false; } - private BlockPos a_class_2338_____(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 53810106211380L ^ var2; - long var4 = var2 ^ 41734967734239L; - long var6 = var2 ^ 131231891155085L; - long var8 = var2 ^ 55523399873858L; - Event.b(); - RenderBatch var11 = this.b_RenderBatch_____(new Object[]{this.a_class_243_____________(new Object[]{var6}), var4}); - if (var11 == null) { + private BlockPos findFirePos() { + Rotation aimRotation = this.computeRotationTo(this.getCartAimPoint()); + if (aimRotation == null) { return null; } else { - Vec3d var12 = b.player.getEyePos(); - double var13 = var12.x; - double var15 = var12.y - 0.1; - double var17 = var12.z; - double var19 = Math.toRadians(var11.a(new Object[0])); - double var21 = Math.toRadians(var11.b(new Object[0])); - double var23 = -Math.sin(var19) * Math.cos(var21); - double var25 = -Math.sin(var21); - double var27 = Math.cos(var19) * Math.cos(var21); - double var29 = Math.sqrt(var23 * var23 + var25 * var25 + var27 * var27); - var23 = var23 / var29 * 3.15; - var25 = var25 / var29 * 3.15; - var27 = var27 / var29 * 3.15; - var23 += b.player.getVelocity().x; - var27 += b.player.getVelocity().z; - if (!b.player.isOnGround()) { - var25 += b.player.getVelocity().y; + Vec3d eyePos = mc.player.getEyePos(); + double posX = eyePos.x; + double posY = eyePos.y - 0.1; + double posZ = eyePos.z; + double yawRad = Math.toRadians(aimRotation.getYaw()); + double pitchRad = Math.toRadians(aimRotation.getPitch()); + double motionX = -Math.sin(yawRad) * Math.cos(pitchRad); + double motionY = -Math.sin(pitchRad); + double motionZ = Math.cos(yawRad) * Math.cos(pitchRad); + double length = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); + motionX = motionX / length * 3.15; + motionY = motionY / length * 3.15; + motionZ = motionZ / length * 3.15; + motionX += mc.player.getVelocity().x; + motionZ += mc.player.getVelocity().z; + if (!mc.player.isOnGround()) { + motionY += mc.player.getVelocity().y; } - BlockPos var31 = new BlockPos(this.g, this.h, this.i); - Box var32 = b.player.getBoundingBox().expand(0.3); + BlockPos cartPos = new BlockPos(this.railX, this.railY, this.railZ); + Box playerBox = mc.player.getBoundingBox().expand(0.3); - for (int var33 = 0; var33 < 60; var33++) { - double var34 = Math.sqrt(var23 * var23 + var25 * var25 + var27 * var27); - int var36 = Math.max(1, (int)Math.ceil(var34 / 0.25)); + for (int tick = 0; tick < 60; tick++) { + int substeps = Math.max(1, (int)Math.ceil(Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ) / 0.25)); - for (int var37 = 0; var37 < var36; var37++) { - var13 += var23 / var36; - var15 += var25 / var36; - var17 += var27 / var36; - BlockPos var38 = BlockPos.ofFloored(var13, var15, var17); - if (var38.equals(var31) || var38.equals(var31.up())) { + for (int substep = 0; substep < substeps; substep++) { + posX += motionX / substeps; + posY += motionY / substeps; + posZ += motionZ / substeps; + BlockPos candidate = BlockPos.ofFloored(posX, posY, posZ); + if (candidate.equals(cartPos) || candidate.equals(cartPos.up())) { return null; } - if (!var32.intersects(new Box(var38))) { - double var10001 = var38.getX() + 0.5; - double var10002 = var38.getY(); - double var10003 = var38.getZ() + 0.5; - Object[] var10006 = new Object[]{null, null, null, var8}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - if (this.d(var10006) - && b.world.getBlockState(var38).isReplaceable() - && b.world.getBlockState(var38.down()).isSideSolidFullSquare(b.world, var38.down(), Direction.UP)) { - return var38; + if (!playerBox.intersects(new Box(candidate))) { + double centerX = candidate.getX() + 0.5; + double baseY = candidate.getY(); + if (this.isInReach(centerX, baseY, candidate.getZ() + 0.5) + && mc.world.getBlockState(candidate).isReplaceable() + && mc.world.getBlockState(candidate.down()).isSideSolidFullSquare(mc.world, candidate.down(), Direction.UP)) { + return candidate; } } } - var23 *= 0.99; - var27 *= 0.99; - var25 = var25 * 0.99 - 0.05; + motionX *= 0.99; + motionZ *= 0.99; + motionY = motionY * 0.99 - 0.05; } return null; @@ -490,53 +406,34 @@ public class XbowCart extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 92112613088694L; - long var6 = var2 ^ 51598816251400L; - long var8 = var2 ^ 1551560694500L; - long var10 = var2 ^ 101816702374277L; - long var12 = var2 ^ 112432525177874L; - if (b.player == null || b.world == null || !(Boolean)this.d.getValue()) { + public Rotation provideRotation() { + if (mc.player == null || mc.world == null || !this.silentAim.getValue()) { return null; - } else if (this.f != CartState.SWITCH_XBOW && this.f != CartState.FIRE) { - Vec3d var18 = null; - if (this.f == CartState.SWITCH_CART) { - var18 = new Vec3d(this.g + 0.5, this.h + 0.5, this.i + 0.5); - } else if (this.f == CartState.SWITCH_FIRE && this.j != null) { - var18 = this.j.toCenterPos(); + } else if (this.state != XbowCartState.SWITCH_XBOW && this.state != XbowCartState.FIRE) { + Vec3d placeTarget = null; + if (this.state == XbowCartState.SWITCH_CART) { + placeTarget = new Vec3d(this.railX + 0.5, this.railY + 0.5, this.railZ + 0.5); + } else if (this.state == XbowCartState.SWITCH_FIRE && this.firePos != null) { + placeTarget = this.firePos.toCenterPos(); } - if (var18 != null) { - RenderBatch var19 = Prestige.o.a_RenderBatch(new Object[]{var18, var10}); - if (var19 != null) { - float var20 = var19.a(new Object[0]) - b.player.getYaw(); - Object[] var21 = new Object[]{null, var6}; - var21[0] = var20; - float var17 = Math.abs(WorldUtil.b_float_____________________(var21)); - if (var17 <= (Float)this.c.getValue()) { - return var19; + if (placeTarget != null) { + Rotation placeRotation = Prestige.silentRotationManager.getRotationTowards(placeTarget); + if (placeRotation != null) { + if (Math.abs(RotationUtil.wrapDegrees(placeRotation.getYaw() - mc.player.getYaw())) <= this.silentAimFov.getValue()) { + return placeRotation; } } } return null; } else { - RenderBatch var15 = this.b_RenderBatch_____(new Object[]{this.a_class_243_____________(new Object[]{var8}), var4}); - if (var15 != null) { - float var10001 = var15.a(new Object[0]); - float var10002 = var15.b(new Object[0]); - Object[] var10006 = new Object[]{null, null, this.j, var12}; - var10006[1] = var10002; - var10006[0] = var10001; - if (this.a_boolean___________________________(var10006)) { - this.q = var15; - float var10000 = var15.a(new Object[0]) - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var10000; - float var16 = Math.abs(WorldUtil.b_float_____________________(var10003)); - if (var16 <= (Float)this.c.getValue()) { - return var15; + Rotation shotAim = this.computeRotationTo(this.getCartAimPoint()); + if (shotAim != null) { + if (this.doesShotIgniteCart(shotAim.getYaw(), shotAim.getPitch(), this.firePos)) { + this.shotRotation = shotAim; + if (Math.abs(RotationUtil.wrapDegrees(shotAim.getYaw() - mc.player.getYaw())) <= this.silentAimFov.getValue()) { + return shotAim; } } } @@ -545,39 +442,29 @@ public class XbowCart extends Module implements RenderContract3 { } } - private void n(Object[] var1) { - BlockHitResult var4 = (BlockHitResult)var1[0]; - if (b.interactionManager.interactBlock(b.player, Hand.MAIN_HAND, var4).isAccepted()) { - b.player.swingHand(Hand.MAIN_HAND); - Prestige.o.g(new Object[]{true}); + private void interactBlockAndSwing(BlockHitResult hitResult) { + if (mc.interactionManager.interactBlock(mc.player, Hand.MAIN_HAND, hitResult).isAccepted()) { + mc.player.swingHand(Hand.MAIN_HAND); + Prestige.silentRotationManager.setActedThisTick(true); } } - private boolean d(Object[] var1) { - double var2 = (Double)var1[0]; - double var4 = (Double)var1[1]; - double var6 = (Double)var1[2]; - long var8 = (Long)var1[3]; - var8 = 53810106211380L ^ var8; - long var10 = var8 ^ 46362110231072L; - Event.b(); - Vec3d var13 = b.player.getEyePos(); - double var14 = InventoryUtil2.b_float_____(new Object[]{var10}); - double var16 = var2 - var13.x; - double var18 = var4 - var13.y; - double var20 = var6 - var13.z; - return var16 * var16 + var18 * var18 + var20 * var20 <= var14 * var14; + private boolean isInReach(double targetX, double targetY, double targetZ) { + Vec3d eyePos = mc.player.getEyePos(); + double reach = PlayerInteractions.getReachDistance(); + double dx = targetX - eyePos.x; + double dy = targetY - eyePos.y; + double dz = targetZ - eyePos.z; + return dx * dx + dy * dy + dz * dz <= reach * reach; } - private int d_int____(Object[] var1) { - Event.b(); + private int findRailSlot() { + for (int slot = 0; slot < 9; slot++) { + Item item = mc.player.getInventory().getStack(slot).getItem(); - for (int var5 = 0; var5 < 9; var5++) { - Item var6 = b.player.getInventory().getStack(var5).getItem(); - - for (Item var10 : e) { - if (var6 == var10) { - return var5; + for (Item railItem : RAIL_ITEMS) { + if (item == railItem) { + return slot; } } } @@ -585,29 +472,25 @@ public class XbowCart extends Module implements RenderContract3 { return -1; } - private int e(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 < 9; var5++) { - if (b.player.getInventory().getStack(var5).getItem() == Items.FLINT_AND_STEEL) { - return var5; + private int findFlintAndSteelSlot() { + for (int slot = 0; slot < 9; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == Items.FLINT_AND_STEEL) { + return slot; } } return -1; } - private int f(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 < 9; var5++) { - ItemStack var6 = b.player.getInventory().getStack(var5); - if (var6.getItem() == Items.CROSSBOW) { - ChargedProjectilesComponent var7 = var6.get(DataComponentTypes.CHARGED_PROJECTILES); - if (var7 != null) { - for (ItemStack var9 : var7.getProjectiles()) { - if (var9.getItem() == Items.ARROW || var9.getItem() == Items.SPECTRAL_ARROW) { - return var5; + private int findLoadedCrossbowSlot() { + for (int slot = 0; slot < 9; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack.getItem() == Items.CROSSBOW) { + ChargedProjectilesComponent chargedProjectiles = stack.get(DataComponentTypes.CHARGED_PROJECTILES); + if (chargedProjectiles != null) { + for (ItemStack projectile : chargedProjectiles.getProjectiles()) { + if (projectile.getItem() == Items.ARROW || projectile.getItem() == Items.SPECTRAL_ARROW) { + return slot; } } } @@ -617,128 +500,50 @@ public class XbowCart extends Module implements RenderContract3 { return -1; } - private Integer a_Integer___(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 53810106211380L ^ var2; - long var4 = var2 ^ 63942377074820L; - long var6 = var2 ^ 134712459994678L; - long var8 = var2 ^ 89072967738992L; - long var10 = var2 ^ 134127642260365L; - Event.b(); - Integer var13 = InventoryUtil.a_Integer(new Object[]{Items.TNT_MINECART, var4}); - if (var13 != null) { - this.p = -1; - return var13; + private Integer findOrPullCartSlot() { + Integer hotbarCartSlot = InventoryUtil.findHotbarSlot(Items.TNT_MINECART); + if (hotbarCartSlot != null) { + this.pulledCartSlot = -1; + return hotbarCartSlot; } else { - int var14 = -1; + int inventoryCartSlot = -1; - for (int var15 = 9; var15 < 36; var15++) { - if (b.player.getInventory().getStack(var15).getItem() == Items.TNT_MINECART) { - var14 = var15; + for (int inventoryIndex = 9; inventoryIndex < 36; inventoryIndex++) { + if (mc.player.getInventory().getStack(inventoryIndex).getItem() == Items.TNT_MINECART) { + inventoryCartSlot = inventoryIndex; break; } } - if (var14 == -1) { + if (inventoryCartSlot == -1) { return null; } else { - int var19 = InventoryUtil.a_int_____(new Object[]{var6}); - int var16 = -1; + int selectedSlot = InventoryUtil.getSelectedSlot(); + int emptyHotbarSlot = -1; - for (int var17 = 0; var17 < 9; var17++) { - if (var17 != var19 && b.player.getInventory().getStack(var17).isEmpty()) { - var16 = var17; + for (int hotbarIndex = 0; hotbarIndex < 9; hotbarIndex++) { + if (hotbarIndex != selectedSlot && mc.player.getInventory().getStack(hotbarIndex).isEmpty()) { + emptyHotbarSlot = hotbarIndex; break; } } - if (var16 == -1) { + if (emptyHotbarSlot == -1) { return null; } else { - if (this.p != -1) { - if (Prestige.u != null && Prestige.u.a_boolean____________________________________(new Object[]{var8})) { - return this.p; + if (this.pulledCartSlot != -1) { + if (Prestige.inventorySwapQueue != null && Prestige.inventorySwapQueue.hasPendingSwaps()) { + return this.pulledCartSlot; } - this.p = -1; + this.pulledCartSlot = -1; } - Object[] var10004 = new Object[]{null, null, var10}; - var10004[1] = var16; - var10004[0] = var14; - InventoryUtil.f(var10004); - this.p = var16; - return var16; + InventoryUtil.swapSlot(inventoryCartSlot, emptyHotbarSlot); + this.pulledCartSlot = emptyHotbarSlot; + return emptyHotbarSlot; } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/AutoMace.java b/src/main/java/dev/zprestige/prestige/module/mace/AutoMace.java index a93487d..7640bb0 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/AutoMace.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/AutoMace.java @@ -9,20 +9,17 @@ import dev.zprestige.prestige.KeybindSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.EntityEvent2; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent7; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.BoundingBoxEvent; +import dev.zprestige.prestige.event.DoAttackEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import dev.zprestige.prestige.world.WorldUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; +import dev.zprestige.prestige.world.BlockUtil; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -32,7 +29,6 @@ import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.AxeItem; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.screen.slot.SlotActionType; @@ -40,276 +36,210 @@ import net.minecraft.util.Hand; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.math.Vec3d; -public class AutoMace extends Module implements RenderContract3 { - private FloatSetting a; - private FloatSetting c; - private BoolSetting d; - private EnumSetting e; - private KeybindSetting f; - private FloatSetting g; - private BoolSetting h; - private FloatSetting i; - private IntSetting j; - private BoolSetting k; - private BoolSetting l; - private BoolSetting m; - private FloatSetting n; - private BoolSetting o; - private BoolSetting p; - private IntSetting q; - private BoolSetting r; - private FloatSetting s; - private RenderHelper27 t = new RenderHelper27(26293358099357L); - private RenderHelper27 u = new RenderHelper27(26293358099357L); - private RenderHelper27 v = new RenderHelper27(26293358099357L); - private RenderHelper27 w = new RenderHelper27(26293358099357L); - private boolean x; - private boolean y; - private int z = -1; - private boolean A; - private boolean B; - private PlayerEntity C; - private RenderBatch D; - private long E; - private int F = -1; +public class AutoMace extends Module implements RotationProvider { + private FloatSetting horizontalTargetDist; + private FloatSetting minFallDistance; + private BoolSetting stunSlam; + private EnumSetting stunSlamMode; + private KeybindSetting stunSlamBind; + private FloatSetting chance; + private BoolSetting scaleWithFall; + private FloatSetting stunMinFall; + private IntSetting axeHoldDelay; + private BoolSetting breachCheck; + private BoolSetting trigger; + private BoolSetting silentAim; + private FloatSetting maxYaw; + private BoolSetting takeoffElytra; + private BoolSetting swapBack; + private IntSetting swapBackDelay; + private BoolSetting expandHitbox; + private FloatSetting hitboxExpansion; + private StopWatch attackTimer = new StopWatch(); + private StopWatch stunSlamTimer = new StopWatch(); + private StopWatch swapBackTimer = new StopWatch(); + private StopWatch savedSlotTimer = new StopWatch(); + private boolean stunSlamQueued; + private boolean attackingInternally; + private int previousSlot = -1; + private boolean swapBackPending; + private boolean equippedChestplateThisTick; + private PlayerEntity pendingAxeTarget; + private Rotation pendingAxeRotation; + private long axeHoldStartTime; + private int pendingMaceSlot = -1; public AutoMace() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.g - .setVisibility_FloatSetting( - new Object[]{(Predicate)lpL239_0 -> (Boolean)this.d.getValue() && ((String)this.e.getValue()).equals("Chance"), 35046756052036L} + this.chance + .visibleWhen( + (Predicate)ignoredChance -> this.stunSlam.getValue() && this.stunSlamMode.getValue().equals("Chance") ); - this.i.setVisibility_FloatSetting(new Object[]{(Predicate)lpL237_0 -> (Boolean)this.d.getValue(), 35046756052036L}); - this.e.setVisibility_EnumSetting(new Object[]{(Predicate)lpL241_0 -> (Boolean)this.d.getValue(), 90319707064974L}); - this.j.setVisibility_IntSetting(new Object[]{(Predicate)lpL236_0 -> (Boolean)this.d.getValue(), 98265949679296L}); - this.m.setVisibility_BoolSetting(new Object[]{(Predicate)lpL235_0 -> (Boolean)this.l.getValue(), 73196168581295L}); - this.n - .setVisibility_FloatSetting(new Object[]{(Predicate)lpL234_0 -> (Boolean)this.l.getValue() && (Boolean)this.m.getValue(), 35046756052036L}); - this.s.setVisibility_FloatSetting(new Object[]{(Predicate)lpL232_0 -> (Boolean)this.r.getValue(), 35046756052036L}); - this.h - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL238_0 -> (Boolean)this.d.getValue() && ((String)this.e.getValue()).equals("Chance"), 73196168581295L} + this.stunMinFall.visibleWhen((Predicate)ignoredStunMinFall -> this.stunSlam.getValue()); + this.stunSlamMode.visibleWhen((Predicate)ignoredStunSlamMode -> this.stunSlam.getValue()); + this.axeHoldDelay.visibleWhen((Predicate)ignoredAxeHoldDelay -> this.stunSlam.getValue()); + this.silentAim.visibleWhen((Predicate)ignoredSilentAim -> this.trigger.getValue()); + this.maxYaw + .visibleWhen((Predicate)ignoredMaxYaw -> this.trigger.getValue() && this.silentAim.getValue()); + this.hitboxExpansion.visibleWhen((Predicate)ignoredHitboxExpansion -> this.expandHitbox.getValue()); + this.scaleWithFall + .visibleWhen( + (Predicate)ignoredScaleWithFall -> this.stunSlam.getValue() && this.stunSlamMode.getValue().equals("Chance") ); - this.f - .setVisibility_KeybindSetting( - new Object[]{(Predicate)lpL240_0 -> (Boolean)this.d.getValue() && ((String)this.e.getValue()).equals("Hold Key"), 112715924896781L} + this.stunSlamBind + .visibleWhen( + (Predicate)ignoredStunSlamBind -> this.stunSlam.getValue() && this.stunSlamMode.getValue().equals("Hold Key") ); - this.q.setVisibility_IntSetting(new Object[]{(Predicate)lpL233_0 -> (Boolean)this.p.getValue(), 98265949679296L}); + this.swapBackDelay.visibleWhen((Predicate)ignoredSwapBackDelay -> this.swapBack.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140428399156587L; - long var6 = var2 ^ 56416153325822L; - long var8 = var2 ^ 29247161167908L; - long var10 = var2 ^ 120434008667598L; - long var12 = var2 ^ 83290274247234L; - long var14 = var2 ^ 81856115773718L; - long var16 = var2 ^ 38214632243944L; - long var18 = var2 ^ 58982489950237L; - long var20 = var2 ^ 96244338737809L; - long var22 = var2 ^ 114164831697321L; - long var24 = var2 ^ 126398332382536L; - long var26 = var2 ^ 30935657995700L; - long var28 = var2 ^ 91260814807711L; - long var30 = var2 ^ 139097133863433L; - long var32 = var2 ^ 73223711775706L; - long var34 = var2 ^ 85547089512629L; - long var36 = var2 ^ 17011823071369L; - long var38 = var2 ^ 48633155378565L; - long var40 = var2 ^ 108664097687836L; - long var42 = var2 ^ 6262656534595L; - Event.b(); - this.B = false; - if (this.z != -1 && !this.A) { - RenderHelper27 var10000 = this.w; - Object[] var10004 = new Object[]{null, var34}; - var10004[0] = 2000.0F; - if (var10000.a(var10004)) { - this.m(new Object[0]); + public Rotation provideRotation() { + this.equippedChestplateThisTick = false; + if (this.previousSlot != -1 && !this.swapBackPending) { + if (this.savedSlotTimer.hasElapsed(2000.0F)) { + this.clearSavedSlot(); } } - if (this.z != -1 && this.A && !this.x && this.C == null) { - RenderHelper27 var60 = this.v; - float var10001 = ((Integer)this.q.getValue()).intValue(); - Object[] var71 = new Object[]{null, var34}; - var71[0] = var10001; - if (var60.a(var71)) { - this.l(new Object[]{var36}); + if (this.previousSlot != -1 && this.swapBackPending && !this.stunSlamQueued && this.pendingAxeTarget == null) { + StopWatch swapBackStopWatch = this.swapBackTimer; + float swapBackDelayMs = this.swapBackDelay.getValue().intValue(); + if (swapBackStopWatch.hasElapsed(swapBackDelayMs)) { + this.swapBackToSavedSlot(); } } - if (this.C != null && !(Boolean)this.d.getValue()) { - int var45 = this.p.getValue() && this.z != -1 ? this.z : this.F; - this.j(new Object[]{var32}); - this.m(new Object[0]); - if (var45 >= 0 && InventoryUtil.a_int_____(new Object[]{var18}) != var45) { - Object[] var10003 = new Object[]{null, var10}; - var10003[0] = var45; - InventoryUtil.a_void________(var10003); + if (this.pendingAxeTarget != null && !this.stunSlam.getValue()) { + int returnSlot = this.swapBack.getValue() && this.previousSlot != -1 ? this.previousSlot : this.pendingMaceSlot; + this.clearPendingStunSlam(); + this.clearSavedSlot(); + if (returnSlot >= 0 && InventoryUtil.getSelectedSlot() != returnSlot) { + InventoryUtil.selectSlot(returnSlot); } } - if (this.C != null) { - return this.c(new Object[]{var24}); - } else if (this.f(new Object[]{var40})) { + if (this.pendingAxeTarget != null) { + return this.processPendingStunSlam(); + } else if (this.swapElytraForChestplate()) { return null; } else { - int var51 = this.e_int___(new Object[]{var20}); - if (var51 == -1) { - this.x = false; + int maceSlot = this.findBestMaceSlot(); + if (maceSlot == -1) { + this.stunSlamQueued = false; return null; - } else if (b.player.fallDistance <= ((Float)this.c.getValue()).floatValue()) { + } else if (mc.player.fallDistance <= this.minFallDistance.getValue().floatValue()) { return null; - } else if ((Boolean)this.d.getValue() && this.x) { - int var52 = this.d_int_____(new Object[]{var42}); - if (var52 == -1) { - this.x = false; + } else if (this.stunSlam.getValue() && this.stunSlamQueued) { + int axeSlot = this.findAxeSlot(); + if (axeSlot == -1) { + this.stunSlamQueued = false; return null; } else { - RenderBatch var57 = null; - PlayerEntity var53; - if (b.crosshairTarget instanceof EntityHitResult var58 && var58.getEntity() instanceof PlayerEntity) { - var53 = (PlayerEntity)var58.getEntity(); + Rotation stunRotation = null; + PlayerEntity stunTarget; + if (mc.crosshairTarget instanceof EntityHitResult stunCrosshairHit && stunCrosshairHit.getEntity() instanceof PlayerEntity) { + stunTarget = (PlayerEntity)stunCrosshairHit.getEntity(); } else { - float var66 = (Float)this.n.getValue(); - Object[] var70 = new Object[]{null, var38}; - var70[0] = var66; - var53 = CombatUtil.b(var70); - if (var53 == null || b.player.distanceTo(var53) > 3.0F || !b.player.canSee(var53) || WorldUtil2.a(new Object[]{var53, var22})) { - this.x = false; + stunTarget = TargetSelector.getClosestEnemyInFov(this.maxYaw.getValue()); + if (stunTarget == null || mc.player.distanceTo(stunTarget) > 3.0F || !mc.player.canSee(stunTarget) || BlockUtil.isCobwebInLineOfSight(stunTarget)) { + this.stunSlamQueued = false; return null; } - var57 = WorldUtil.a_RenderBatch_(new Object[]{var53.getEyePos(), var14}); - if (var57.a(new Object[0]) - b.player.getYaw() > (Float)this.n.getValue() - || var57.a(new Object[0]) - b.player.getYaw() < -(Float)this.n.getValue()) { - this.x = false; + stunRotation = RotationUtil.getRotationTo(stunTarget.getEyePos()); + if (stunRotation.getYaw() - mc.player.getYaw() > this.maxYaw.getValue() + || stunRotation.getYaw() - mc.player.getYaw() < -this.maxYaw.getValue()) { + this.stunSlamQueued = false; return null; } } - if (!this.e(new Object[]{var12})) { - this.x = false; + if (!this.hasFallenEnoughToStun()) { + this.stunSlamQueued = false; return null; } else { - this.x = false; - Object[] var77 = new Object[]{null, null, null, null, var4}; - var77[3] = var51; - var77[2] = var52; - var77[1] = var57; - var77[0] = var53; - return this.b_RenderBatch______(var77); + this.stunSlamQueued = false; + return this.startStunSlam(stunTarget, stunRotation, axeSlot, maceSlot); } } } else { - if (b.crosshairTarget instanceof EntityHitResult var46 && var46.getEntity() instanceof PlayerEntity var47) { - if ((Boolean)this.l.getValue()) { - RenderHelper27 var64 = this.t; - Object[] var74 = new Object[]{null, var34}; - var74[0] = 800.0F; - if (var64.a(var74)) { - if (CombatUtil.b_boolean(new Object[]{var47, var30}) && !ShieldDrain.d(new Object[0]) && (Boolean)this.d.getValue()) { - var64 = this.u; - var74 = new Object[]{null, var34}; - var74[0] = 800.0F; - if (var64.a(var74) && this.d(new Object[]{var26}) && this.e(new Object[]{var12})) { - int var56 = this.d_int_____(new Object[]{var42}); - if (var56 != -1) { - Object[] var76 = new Object[]{null, null, null, null, var4}; - var76[3] = var51; - var76[2] = var56; - var76[1] = null; - var76[0] = var47; - return this.b_RenderBatch______(var76); + if (mc.crosshairTarget instanceof EntityHitResult crosshairHit && crosshairHit.getEntity() instanceof PlayerEntity hitPlayer) { + if (this.trigger.getValue()) { + if (this.attackTimer.hasElapsed(800.0F)) { + if (TargetSelector.isBlockingWithShield(hitPlayer) && !ShieldDrain.isDraining() && this.stunSlam.getValue()) { + if (this.stunSlamTimer.hasElapsed(800.0F) && this.shouldStunSlam() && this.hasFallenEnoughToStun()) { + int crosshairAxeSlot = this.findAxeSlot(); + if (crosshairAxeSlot != -1) { + return this.startStunSlam(hitPlayer, null, crosshairAxeSlot, maceSlot); } } } - if (PositionUtil.a_boolean________________________________________________(new Object[]{var16})) { + if (PositionUtil.isPlayerGliding()) { return null; } - this.y = true; - if (InventoryUtil.a_int_____(new Object[]{var18}) != var51) { - this.k(new Object[]{var6}); - Object[] var69 = new Object[]{null, var10}; - var69[0] = var51; - InventoryUtil.a_void________(var69); + this.attackingInternally = true; + if (InventoryUtil.getSelectedSlot() != maceSlot) { + this.savePreviousSlot(); + InventoryUtil.selectSlot(maceSlot); } - InventoryUtil2.a_void_________(new Object[]{var47, var28}); - this.y = false; - this.t.a_void_____________________(new Object[]{var8}); - if ((Boolean)this.p.getValue() && this.z != -1) { - this.v.a_void_____________________(new Object[]{var8}); - this.A = true; + PlayerInteractions.attackEntity(hitPlayer); + this.attackingInternally = false; + this.attackTimer.reset(); + if (this.swapBack.getValue() && this.previousSlot != -1) { + this.swapBackTimer.reset(); + this.swapBackPending = true; } } } } else { - if ((Boolean)this.l.getValue() && (Boolean)this.m.getValue()) { - RenderHelper27 var61 = this.t; - Object[] var72 = new Object[]{null, var34}; - var72[0] = 800.0F; - if (var61.a(var72)) { - float var62 = (Float)this.n.getValue(); - Object[] var67 = new Object[]{null, var38}; - var67[0] = var62; - PlayerEntity var55 = CombatUtil.b(var67); - if (var55 != null && !(b.player.distanceTo(var55) > 3.0F) && b.player.canSee(var55) && !WorldUtil2.a(new Object[]{var55, var22})) { - RenderBatch var49 = WorldUtil.a_RenderBatch_(new Object[]{var55.getEyePos(), var14}); - if (!(var49.a(new Object[0]) - b.player.getYaw() > (Float)this.n.getValue()) - && !(var49.a(new Object[0]) - b.player.getYaw() < -(Float)this.n.getValue())) { - if (!this.x - && CombatUtil.b_boolean(new Object[]{var55, var30}) - && !ShieldDrain.d(new Object[0]) - && (Boolean)this.d.getValue()) { - var61 = this.u; - var72 = new Object[]{null, var34}; - var72[0] = 800.0F; - if (var61.a(var72) && this.d(new Object[]{var26}) && this.e(new Object[]{var12})) { - int var50 = this.d_int_____(new Object[]{var42}); - if (var50 == -1) { - this.x = false; + if (this.trigger.getValue() && this.silentAim.getValue()) { + if (this.attackTimer.hasElapsed(800.0F)) { + PlayerEntity aimTarget = TargetSelector.getClosestEnemyInFov(this.maxYaw.getValue()); + if (aimTarget != null && !(mc.player.distanceTo(aimTarget) > 3.0F) && mc.player.canSee(aimTarget) && !BlockUtil.isCobwebInLineOfSight(aimTarget)) { + Rotation aimRotation = RotationUtil.getRotationTo(aimTarget.getEyePos()); + if (!(aimRotation.getYaw() - mc.player.getYaw() > this.maxYaw.getValue()) + && !(aimRotation.getYaw() - mc.player.getYaw() < -this.maxYaw.getValue())) { + if (!this.stunSlamQueued + && TargetSelector.isBlockingWithShield(aimTarget) + && !ShieldDrain.isDraining() + && this.stunSlam.getValue()) { + if (this.stunSlamTimer.hasElapsed(800.0F) && this.shouldStunSlam() && this.hasFallenEnoughToStun()) { + int aimAxeSlot = this.findAxeSlot(); + if (aimAxeSlot == -1) { + this.stunSlamQueued = false; return null; } - Object[] var10007 = new Object[]{null, null, null, null, var4}; - var10007[3] = var51; - var10007[2] = var50; - var10007[1] = var49; - var10007[0] = var55; - return this.b_RenderBatch______(var10007); + return this.startStunSlam(aimTarget, aimRotation, aimAxeSlot, maceSlot); } } - if (PositionUtil.a_boolean________________________________________________(new Object[]{var16})) { + if (PositionUtil.isPlayerGliding()) { return null; } - if (InventoryUtil.a_int_____(new Object[]{var18}) != var51) { - this.k(new Object[]{var6}); - var67 = new Object[]{null, var10}; - var67[0] = var51; - InventoryUtil.a_void________(var67); + if (InventoryUtil.getSelectedSlot() != maceSlot) { + this.savePreviousSlot(); + InventoryUtil.selectSlot(maceSlot); } - InventoryUtil2.a_void_________(new Object[]{var55, var28}); - this.t.a_void_____________________(new Object[]{var8}); - if ((Boolean)this.p.getValue() && this.z != -1) { - this.v.a_void_____________________(new Object[]{var8}); - this.A = true; + PlayerInteractions.attackEntity(aimTarget); + this.attackTimer.reset(); + if (this.swapBack.getValue() && this.previousSlot != -1) { + this.swapBackTimer.reset(); + this.swapBackPending = true; } - return var49; + return aimRotation; } return null; @@ -319,7 +249,7 @@ public class AutoMace extends Module implements RenderContract3 { } } - this.x = false; + this.stunSlamQueued = false; } return null; @@ -327,324 +257,216 @@ public class AutoMace extends Module implements RenderContract3 { } } - private RenderBatch b_RenderBatch______(Object[] var1) { - PlayerEntity var3 = (PlayerEntity)var1[0]; - RenderBatch var5 = (RenderBatch)var1[1]; - int var4 = (Integer)var1[2]; - int var2 = (Integer)var1[3]; - long var6 = (Long)var1[4]; - var6 = 101230168494241L ^ var6; - long var8 = var6 ^ 123871765208917L; - long var10 = var6 ^ 18580500749620L; - long var12 = var6 ^ 62881916009966L; - long var14 = var6 ^ 85907108329476L; - long var16 = var6 ^ 24247686546903L; - if (InventoryUtil.a_int_____(new Object[]{var16}) != var4) { - this.k(new Object[]{var10}); - Object[] var10003 = new Object[]{null, var14}; - var10003[0] = var4; - InventoryUtil.a_void________(var10003); + private Rotation startStunSlam(PlayerEntity target, Rotation rotation, int axeSlot, int maceSlot) { + if (InventoryUtil.getSelectedSlot() != axeSlot) { + this.savePreviousSlot(); + InventoryUtil.selectSlot(axeSlot); } - int var19 = (Integer)this.j.getValue(); - if (var19 <= 0) { - this.y = true; - InventoryUtil2.a_void_________(new Object[]{var3, var8}); - this.y = false; - this.u.a_void_____________________(new Object[]{var12}); - return var5; + int holdTicks = this.axeHoldDelay.getValue(); + if (holdTicks <= 0) { + this.attackingInternally = true; + PlayerInteractions.attackEntity(target); + this.attackingInternally = false; + this.stunSlamTimer.reset(); + return rotation; } else { - this.C = var3; - this.D = var5; - this.F = var2; - this.E = System.currentTimeMillis(); - return var5; + this.pendingAxeTarget = target; + this.pendingAxeRotation = rotation; + this.pendingMaceSlot = maceSlot; + this.axeHoldStartTime = System.currentTimeMillis(); + return rotation; } } - private RenderBatch c(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 101230168494241L ^ var2; - long var4 = var2 ^ 138419480735606L; - long var6 = var2 ^ 57714582392269L; - long var8 = var2 ^ 119282564081203L; - long var10 = var2 ^ 74133849655335L; - long var12 = var2 ^ 29965816231412L; - if (this.C != null && this.C.isAlive() && b.player != null && b.world != null && !(b.player.distanceTo(this.C) > 6.0F)) { - long var23 = System.currentTimeMillis() - this.E; - long var17 = ((Integer)this.j.getValue()).intValue() * 50L; - if (var23 < var17) { - return this.D; + private Rotation processPendingStunSlam() { + if (this.pendingAxeTarget != null && this.pendingAxeTarget.isAlive() && mc.player != null && mc.world != null && !(mc.player.distanceTo(this.pendingAxeTarget) > 6.0F)) { + if ((System.currentTimeMillis() - this.axeHoldStartTime) < (this.axeHoldDelay.getValue().intValue() * 50L)) { + return this.pendingAxeRotation; } else { - PlayerEntity var19 = this.C; - RenderBatch var20 = this.D; - int var21 = this.F; - this.y = true; - InventoryUtil2.a_void_________(new Object[]{var19, var4}); - this.y = false; - this.u.a_void_____________________(new Object[]{var6}); - if (var21 >= 0 && InventoryUtil.a_int_____(new Object[]{var12}) != var21) { - Object[] var24 = new Object[]{null, var10}; - var24[0] = var21; - InventoryUtil.a_void________(var24); + PlayerEntity target = this.pendingAxeTarget; + Rotation rotation = this.pendingAxeRotation; + int maceSlot = this.pendingMaceSlot; + this.attackingInternally = true; + PlayerInteractions.attackEntity(target); + this.attackingInternally = false; + this.stunSlamTimer.reset(); + if (maceSlot >= 0 && InventoryUtil.getSelectedSlot() != maceSlot) { + InventoryUtil.selectSlot(maceSlot); } - this.j(new Object[]{var8}); - return var20; + this.clearPendingStunSlam(); + return rotation; } } else { - int var15 = this.p.getValue() && this.z != -1 ? this.z : this.F; - this.j(new Object[]{var8}); - this.m(new Object[0]); - if (var15 >= 0 && InventoryUtil.a_int_____(new Object[]{var12}) != var15) { - Object[] var10003 = new Object[]{null, var10}; - var10003[0] = var15; - InventoryUtil.a_void________(var10003); + int returnSlot = this.swapBack.getValue() && this.previousSlot != -1 ? this.previousSlot : this.pendingMaceSlot; + this.clearPendingStunSlam(); + this.clearSavedSlot(); + if (returnSlot >= 0 && InventoryUtil.getSelectedSlot() != returnSlot) { + InventoryUtil.selectSlot(returnSlot); } return null; } } - private void j(Object[] var1) { - this.C = null; - this.D = null; - this.E = 0L; - this.F = -1; + private void clearPendingStunSlam() { + this.pendingAxeTarget = null; + this.pendingAxeRotation = null; + this.axeHoldStartTime = 0L; + this.pendingMaceSlot = -1; } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 101230168494241L ^ var2; - long var4 = var2 ^ 129500618322043L; - long var6 = var2 ^ 100033993115714L; - if ((Boolean)this.p.getValue() && this.z == -1) { - if (!this.B) { - this.z = InventoryUtil.a_int_____(new Object[]{var6}); - this.w.a_void_____________________(new Object[]{var4}); + private void savePreviousSlot() { + if (this.swapBack.getValue() && this.previousSlot == -1) { + if (!this.equippedChestplateThisTick) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.savedSlotTimer.reset(); } } } - private void l(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 101230168494241L ^ var2; - long var4 = var2 ^ 69136522556902L; - long var6 = var2 ^ 113031959578677L; - Event.b(); - int var9 = this.z; - this.m(new Object[0]); - if (var9 >= 0 && InventoryUtil.a_int_____(new Object[]{var6}) != var9) { - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var9; - InventoryUtil.a_void________(var10003); + private void swapBackToSavedSlot() { + int savedSlot = this.previousSlot; + this.clearSavedSlot(); + if (savedSlot >= 0 && InventoryUtil.getSelectedSlot() != savedSlot) { + InventoryUtil.selectSlot(savedSlot); } } - private void m(Object[] var1) { - this.z = -1; - this.A = false; + private void clearSavedSlot() { + this.previousSlot = -1; + this.swapBackPending = false; } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 101230168494241L ^ var2; - long var4 = var2 ^ 23651832737185L; - if (!(Boolean)this.d.getValue()) { + private boolean shouldStunSlam() { + if (!this.stunSlam.getValue()) { return false; - } else if (!((String)this.e.getValue()).equals("Hold Key")) { - float var7 = (Float)this.g.getValue(); - if ((Boolean)this.h.getValue()) { - float var8 = (float)b.player.fallDistance; - float var9 = Math.max((Float)this.c.getValue(), (Float)this.i.getValue()); - float var10 = 10.0F; - float var11 = Math.max(0.0F, Math.min(1.0F, (var8 - var9) / var10)); - var7 *= var11; + } else if (!this.stunSlamMode.getValue().equals("Hold Key")) { + float rollChance = this.chance.getValue(); + if (this.scaleWithFall.getValue()) { + float fallScale = Math.max(0.0F, Math.min(1.0F, (((float)mc.player.fallDistance) - Math.max(this.minFallDistance.getValue(), this.stunMinFall.getValue())) / 10.0F)); + rollChance *= fallScale; } - return Math.random() * 100.0 < var7; + return Math.random() * 100.0 < rollChance; } else { - return (Integer)this.f.getValue() != -1 && this.f.isPressed(new Object[]{var4}); + return this.stunSlamBind.getValue() != -1 && this.stunSlamBind.isPressed(); } } - private boolean e(Object[] var1) { - Event.b(); - float var5 = Math.max((Float)this.c.getValue(), (Float)this.i.getValue()); - return b.player.fallDistance >= var5; + private boolean hasFallenEnoughToStun() { + float requiredFall = Math.max(this.minFallDistance.getValue(), this.stunMinFall.getValue()); + return mc.player.fallDistance >= requiredFall; } @Subscribe - public void a(EntityEvent2 var1) { - if ((Boolean)this.r.getValue() && !(b.player.fallDistance <= ((Float)this.c.getValue()).floatValue())) { - float var10001 = (Float)this.a.getValue(); - Object[] var10004 = new Object[]{null, 112864609174293L}; - var10004[0] = var10001; - PlayerEntity var7 = this.a_class_1657__(var10004); - if (var7 != null && var7.equals(var1.a(new Object[0]))) { - var1.b(new Object[]{var1.a_class_238(new Object[0]).expand(((Float)this.s.getValue()).floatValue() / 5.0)}); - var1.a_void_____(new Object[0]); + public void onBoundingBox(BoundingBoxEvent event) { + if (this.expandHitbox.getValue() && !(mc.player.fallDistance <= this.minFallDistance.getValue().floatValue())) { + PlayerEntity target = this.findClosestHorizontalTarget(this.horizontalTargetDist.getValue()); + if (target != null && target.equals(event.getEntity())) { + event.setBox(event.getBox().expand(this.hitboxExpansion.getValue().floatValue() / 5.0)); + event.cancel(); } } } @Subscribe - public void a(TickEvent7 var1) { - if (!this.y) { - float var10001 = (Float)this.a.getValue(); - Object[] var10004 = new Object[]{null, 112864609174293L}; - var10004[0] = var10001; - PlayerEntity var27 = this.a_class_1657__(var10004); - if (!this.x - && b.player.fallDistance > ((Float)this.c.getValue()).floatValue() - && var27 != null - && CombatUtil.b_boolean(new Object[]{var27, 53913050824112L}) - && b.player.getMainHandStack().getItem() instanceof AxeItem - && (Boolean)this.d.getValue()) { - RenderHelper27 var10000 = this.u; - var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 800.0F; - if (var10000.a(var10004) && this.d(new Object[]{91982287942157L}) && this.e(new Object[]{4716013247995L})) { - int var28 = this.d_int_____(new Object[]{81607265740794L}); - if (var28 != -1) { - this.x = true; + public void onDoAttack(DoAttackEvent event) { + if (!this.attackingInternally) { + PlayerEntity target = this.findClosestHorizontalTarget(this.horizontalTargetDist.getValue()); + if (!this.stunSlamQueued + && mc.player.fallDistance > this.minFallDistance.getValue().floatValue() + && target != null + && TargetSelector.isBlockingWithShield(target) + && mc.player.getMainHandStack().getItem() instanceof AxeItem + && this.stunSlam.getValue()) { + if (this.stunSlamTimer.hasElapsed(800.0F) && this.shouldStunSlam() && this.hasFallenEnoughToStun()) { + if (this.findAxeSlot() != -1) { + this.stunSlamQueued = true; return; } } } - int var29 = this.e_int___(new Object[]{26397655543080L}); - if (var29 != -1 - && InventoryUtil.a_int_____(new Object[]{134339616728996L}) != var29 - && b.crosshairTarget instanceof EntityHitResult - && !(b.player.fallDistance <= ((Float)this.c.getValue()).floatValue())) { - this.k(new Object[]{137189438111559L}); - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var29; - InventoryUtil.a_void________(var10003); - if ((Boolean)this.p.getValue() && this.z != -1) { - this.v.a_void_____________________(new Object[]{93540861878173L}); - this.A = true; + int maceSlot = this.findBestMaceSlot(); + if (maceSlot != -1 + && InventoryUtil.getSelectedSlot() != maceSlot + && mc.crosshairTarget instanceof EntityHitResult + && !(mc.player.fallDistance <= this.minFallDistance.getValue().floatValue())) { + this.savePreviousSlot(); + InventoryUtil.selectSlot(maceSlot); + if (this.swapBack.getValue() && this.previousSlot != -1) { + this.swapBackTimer.reset(); + this.swapBackPending = true; } } } } - private PlayerEntity a_class_1657__(Object[] var1) { - float var4 = (Float)var1[0]; - long var2 = (Long)var1[1]; - var2 = 101230168494241L ^ var2; - long var5 = var2 ^ 48579069850174L; - Event.b(); - float var8 = var4 * var4; - PlayerEntity var9 = null; - double var10 = Double.MAX_VALUE; + private PlayerEntity findClosestHorizontalTarget(float maxDistance) { + float maxDistanceSq = maxDistance * maxDistance; + PlayerEntity closest = null; + double closestDistanceSq = Double.MAX_VALUE; - for (PlayerEntity var13 : b.world.getPlayers()) { - if (var13.isAlive() && !var13.equals(b.player) && !Prestige.g.a(new Object[]{var13.getName().getString(), var5})) { - Vec3d var14 = new Vec3d(var13.getX(), b.player.getY(), var13.getZ()); - double var15 = b.player.squaredDistanceTo(var14); - if (!(var15 > var8) && var15 < var10) { - var10 = var15; - var9 = var13; + for (PlayerEntity player : mc.world.getPlayers()) { + if (player.isAlive() && !player.equals(mc.player) && !Prestige.friendManager.isFriend(player.getName().getString())) { + Vec3d levelPos = new Vec3d(player.getX(), mc.player.getY(), player.getZ()); + double distanceSq = mc.player.squaredDistanceTo(levelPos); + if (!(distanceSq > maxDistanceSq) && distanceSq < closestDistanceSq) { + closestDistanceSq = distanceSq; + closest = player; } } } - return var9; + return closest; } - private boolean f(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 101230168494241L ^ var2; - long var4 = var2 ^ 26293542614289L; - long var6 = var2 ^ 70674685774772L; - long var8 = var2 ^ 61559715348545L; - long var10 = var2 ^ 40682094155035L; - long var12 = var2 ^ 83302105925394L; - long var14 = var2 ^ 91592635755635L; - long var16 = var2 ^ 109184437211430L; - long var18 = var2 ^ 30806212746069L; - if (!(Boolean)this.o.getValue()) { + private boolean swapElytraForChestplate() { + if (!this.takeoffElytra.getValue()) { return false; - } else if (b.player.fallDistance < ((Float)this.c.getValue()).floatValue()) { + } else if (mc.player.fallDistance < this.minFallDistance.getValue().floatValue()) { return false; } else { - float var10001 = (Float)this.a.getValue(); - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - PlayerEntity var21 = this.a_class_1657__(var10004); - if (var21 == null) { + PlayerEntity target = this.findClosestHorizontalTarget(this.horizontalTargetDist.getValue()); + if (target == null) { return false; - } else if (!var21.isAlive() || b.player.distanceTo(var21) > (CombatUtil.b_boolean(new Object[]{var21, var6}) ? 8.0F : 6.0F)) { + } else if (!target.isAlive() || mc.player.distanceTo(target) > (TargetSelector.isBlockingWithShield(target) ? 8.0F : 6.0F)) { return false; - } else if (!PositionUtil.a_boolean________________________________________________(new Object[]{var18})) { + } else if (!PositionUtil.isPlayerGliding()) { return false; - } else if (b.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { + } else if (mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { return false; } else { - Integer var22 = InventoryUtil.a_Integer(new Object[]{Items.NETHERITE_CHESTPLATE, var12}); - if (var22 != null) { - int var33 = var22; - Object[] var34 = new Object[]{null, var14}; - var34[0] = var33; - InventoryUtil.a_void________(var34); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var16}); - this.B = true; + Integer chestplateSlot = InventoryUtil.findHotbarSlot(Items.NETHERITE_CHESTPLATE); + if (chestplateSlot != null) { + InventoryUtil.selectSlot(chestplateSlot); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.equippedChestplateThisTick = true; return false; } else { - var22 = InventoryUtil.a_Integer(new Object[]{Items.DIAMOND_CHESTPLATE, var12}); - if (var22 != null) { - int var32 = var22; - Object[] var10003 = new Object[]{null, var14}; - var10003[0] = var32; - InventoryUtil.a_void________(var10003); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var16}); - this.B = true; + chestplateSlot = InventoryUtil.findHotbarSlot(Items.DIAMOND_CHESTPLATE); + if (chestplateSlot != null) { + InventoryUtil.selectSlot(chestplateSlot); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.equippedChestplateThisTick = true; return false; } else { - Item var10000 = Items.NETHERITE_CHESTPLATE; - var10004 = new Object[]{null, null, var8}; - var10004[1] = false; - var10004[0] = var10000; - List var23 = InventoryUtil.a_List(var10004); - if (!var23.isEmpty()) { - int var28 = (Integer)var23.getFirst(); - short var31 = 19837; - Object[] var40 = new Object[]{null, null, SlotActionType.PICKUP, var10}; - var40[1] = 0; - var40[0] = var28; - InventoryUtil.e(var40); - Object[] var38 = new Object[]{null, null, SlotActionType.PICKUP, var10}; - var38[1] = 0; - var38[0] = 6; - InventoryUtil.e(var38); - var38 = new Object[]{null, null, SlotActionType.PICKUP, var10}; - var38[1] = 0; - var38[0] = var28; - InventoryUtil.e(var38); + List inventorySlots = InventoryUtil.findInventorySlots(Items.NETHERITE_CHESTPLATE, false); + if (!inventorySlots.isEmpty()) { + int netheriteSlot = (Integer)inventorySlots.getFirst(); + InventoryUtil.clickSlot(netheriteSlot, 0, SlotActionType.PICKUP); + InventoryUtil.clickSlot(6, 0, SlotActionType.PICKUP); + InventoryUtil.clickSlot(netheriteSlot, 0, SlotActionType.PICKUP); return true; } else { - var10000 = Items.DIAMOND_CHESTPLATE; - var10004 = new Object[]{null, null, var8}; - var10004[1] = false; - var10004[0] = var10000; - var23 = InventoryUtil.a_List(var10004); - if (!var23.isEmpty()) { - int var24 = (Integer)var23.getFirst(); - short var30 = 6361; - Object[] var10006 = new Object[]{null, null, SlotActionType.PICKUP, var10}; - var10006[1] = 0; - var10006[0] = var24; - InventoryUtil.e(var10006); - Object[] var10005 = new Object[]{null, null, SlotActionType.PICKUP, var10}; - var10005[1] = 0; - var10005[0] = 6; - InventoryUtil.e(var10005); - var10005 = new Object[]{null, null, SlotActionType.PICKUP, var10}; - var10005[1] = 0; - var10005[0] = var24; - InventoryUtil.e(var10005); + inventorySlots = InventoryUtil.findInventorySlots(Items.DIAMOND_CHESTPLATE, false); + if (!inventorySlots.isEmpty()) { + int diamondSlot = (Integer)inventorySlots.getFirst(); + InventoryUtil.clickSlot(diamondSlot, 0, SlotActionType.PICKUP); + InventoryUtil.clickSlot(6, 0, SlotActionType.PICKUP); + InventoryUtil.clickSlot(diamondSlot, 0, SlotActionType.PICKUP); return true; } else { return false; @@ -657,168 +479,79 @@ public class AutoMace extends Module implements RenderContract3 { } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - long var6 = var2 ^ 46945699070726L; - Prestige.o.f(new Object[]{this, var4}); - this.j(new Object[]{var6}); - this.m(new Object[0]); - this.B = false; + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + this.clearPendingStunSlam(); + this.clearSavedSlot(); + this.equippedChestplateThisTick = false; } - public int d_int_____(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 <= 8; var5++) { - if (b.player.getInventory().getStack(var5).getItem() instanceof AxeItem) { - return var5; + public int findAxeSlot() { + for (int slot = 0; slot <= 8; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() instanceof AxeItem) { + return slot; } } return -1; } - public int e_int___(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 101230168494241L ^ var2; - long var4 = var2 ^ 118720742219636L; - long var6 = var2 ^ 80160213370881L; - long var8 = var2 ^ 67525900522677L; - ArrayList var11 = new ArrayList(); - Event.b(); + public int findBestMaceSlot() { + ArrayList maceSlots = new ArrayList(); - for (int var12 = 0; var12 <= 8; var12++) { - if (InventoryUtil.o(new Object[]{b.player.getInventory().getStack(var12), var8})) { - var11.add(var12); + for (int slot = 0; slot <= 8; slot++) { + if (InventoryUtil.isMace(mc.player.getInventory().getStack(slot))) { + maceSlots.add(slot); } } - int var18 = -1; - int var13 = -1; + int bestLevel = -1; + int bestSlot = -1; - for (int var15 : (Iterable)(var11)) { - int var10000; - if ((Boolean)this.k.getValue() && b.player.fallDistance <= 7.0) { - Object[] var19 = new Object[]{null, var4}; - var19[0] = var15; - var10000 = this.c_int_(var19); + for (int maceSlot : (Iterable)(maceSlots)) { + int enchantLevel; + if (this.breachCheck.getValue() && mc.player.fallDistance <= 7.0) { + enchantLevel = this.getBreachLevel(maceSlot); } else { - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = var15; - var10000 = this.a_int___________(var10004); + enchantLevel = this.getDensityLevel(maceSlot); } - int var16 = var10000; - if (var16 > var18) { - var18 = var16; - var13 = var15; + int level = enchantLevel; + if (level > bestLevel) { + bestLevel = level; + bestSlot = maceSlot; } } - return var13; + return bestSlot; } - public int a_int___________(Object[] var1) { - int var4 = (Integer)var1[0]; - Event.b(); - ItemStack var6 = b.player.getInventory().getStack(var4); - if (var6 != null) { - float var7 = EnchantmentHelper.getLevel( - b.world.getRegistryManager().getOptional(Enchantments.DENSITY.getRegistryRef()).get().getEntry(Enchantments.DENSITY.getValue()).get(), var6 + public int getDensityLevel(int slot) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack != null) { + float level = EnchantmentHelper.getLevel( + mc.world.getRegistryManager().getOptional(Enchantments.DENSITY.getRegistryRef()).get().getEntry(Enchantments.DENSITY.getValue()).get(), stack ); - return (int)var7; + return (int)level; } else { return 0; } } - public int c_int_(Object[] var1) { - int var4 = (Integer)var1[0]; - Event.b(); - ItemStack var6 = b.player.getInventory().getStack(var4); - if (var6 != null) { - float var7 = EnchantmentHelper.getLevel( - b.world.getRegistryManager().getOptional(Enchantments.BREACH.getRegistryRef()).get().getEntry(Enchantments.BREACH.getValue()).get(), var6 + public int getBreachLevel(int slot) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack != null) { + float level = EnchantmentHelper.getLevel( + mc.world.getRegistryManager().getOptional(Enchantments.BREACH.getRegistryRef()).get().getEntry(Enchantments.BREACH.getValue()).get(), stack ); - return (int)var7; + return (int)level; } else { return 0; } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/AutoPearlCatch.java b/src/main/java/dev/zprestige/prestige/module/mace/AutoPearlCatch.java index 1c36989..c38df83 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/AutoPearlCatch.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/AutoPearlCatch.java @@ -6,18 +6,15 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.Entity; @@ -27,91 +24,72 @@ import net.minecraft.item.Items; import net.minecraft.util.Hand; import net.minecraft.util.math.Vec3d; -public class AutoPearlCatch extends Module implements RenderContract3 { - private static final float a = 1500.0F; - private FloatSetting c; - private FloatSetting d; - private BoolSetting e; - private FloatSetting f; - private boolean i; - private boolean g; - private RenderHelper27 h = new RenderHelper27(26293358099357L); - private boolean j; - private boolean k; - private float l; - private RenderBatch m; - private boolean n; - private boolean o; - private boolean p; - private boolean q; - private boolean r; - private Object s; - private Object t; - private int u = Integer.MIN_VALUE; +public class AutoPearlCatch extends Module implements RotationProvider { + private FloatSetting windChargeDelay; + private FloatSetting movingDelay; + private BoolSetting legitRotate; + private FloatSetting smoothing; + private boolean pearlThrown; + private boolean windChargeThrown; + private StopWatch pearlTimer = new StopWatch(); + private boolean pearlAimReady; + private boolean windChargeReady; + private float originalPitch; + private Rotation lockedRotation; + private boolean rotationSynced; + private boolean rotationApplied; + private boolean itemUsed; + private boolean releasePending; + private boolean disableAfterRelease; + private Object lockWorld; + private Object trackedWorld; + private int lastUseTick = Integer.MIN_VALUE; public AutoPearlCatch() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.f.setVisibility_FloatSetting(new Object[]{(Predicate)lpL281_0 -> (Boolean)this.e.getValue(), 35046756052036L}); + this.smoothing.visibleWhen((Predicate)ignored -> this.legitRotate.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Subscribe - public void a(TickEvent24 var1) { - if (this.t != b.world) { - this.l(new Object[]{37059407413720L}); + public void onFrame(FrameEvent event) { + if (this.trackedWorld != mc.world) { + this.resetState(); } - if ((Boolean)this.e.getValue()) { - if (this.e(new Object[]{99450130826774L})) { - this.j(new Object[]{102974567466914L}); + if (this.legitRotate.getValue()) { + if (this.isUseKeyActive()) { + this.pauseForItemUse(); } else { - if (!this.i) { - RenderBatch var10000 = new RenderBatch(b.player.getYaw(), -90.0F); - float var10001 = (Float)this.f.getValue() / 2.0F; - Object[] var10006 = new Object[]{null, null, null, null, 8666705888841L}; - var10006[3] = 0.2F; - var10006[2] = 0.0F; - var10006[1] = var10001; - var10006[0] = var10000; - if (WorldUtil.d(var10006)) { - this.j = true; + if (!this.pearlThrown) { + if (RotationUtil.smoothRotatePitch(new Rotation(mc.player.getYaw(), -90.0F), this.smoothing.getValue() / 2.0F, 0.0F, 0.2F)) { + this.pearlAimReady = true; } } else { - boolean var17 = b.player.getVelocity().x != 0.0 || b.player.getVelocity().z != 0.0; - RenderHelper27 var18 = this.h; - float var20 = var17 ? (Float)this.d.getValue() : (Float)this.c.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var20; - if (!var18.a(var10004)) { + boolean moving = mc.player.getVelocity().x != 0.0 || mc.player.getVelocity().z != 0.0; + if (!this.pearlTimer.hasElapsed(moving ? this.movingDelay.getValue() : this.windChargeDelay.getValue())) { return; } - if (this.g) { - if (this.p) { + if (this.windChargeThrown) { + if (this.itemUsed) { return; } - RenderBatch var19 = new RenderBatch(b.player.getYaw(), this.l); - var20 = (Float)this.f.getValue() / 2.0F; - Object[] var22 = new Object[]{null, null, null, null, 8666705888841L}; - var22[3] = 0.2F; - var22[2] = 0.0F; - var22[1] = var20; - var22[0] = var19; - if (WorldUtil.d(var22)) { - this.toggle(new Object[]{115103427876780L}); + if (RotationUtil.smoothRotatePitch(new Rotation(mc.player.getYaw(), this.originalPitch), this.smoothing.getValue() / 2.0F, 0.0F, 0.2F)) { + this.toggle(); } } else { - this.k = true; + this.windChargeReady = true; } } } @@ -119,165 +97,137 @@ public class AutoPearlCatch extends Module implements RenderContract3 { } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 43040229079061L; - long var6 = var2 ^ 29247161167908L; - long var8 = var2 ^ 24161452190127L; - long var10 = var2 ^ 25270889892669L; - long var12 = var2 ^ 121213098552929L; - long var14 = var2 ^ 5698422053585L; - long var16 = var2 ^ 77504906702022L; - long var18 = var2 ^ 104047174863691L; - long var20 = var2 ^ 19985254393883L; - long var22 = var2 ^ 98738783120770L; - long var24 = var2 ^ 85547089512629L; - long var26 = var2 ^ 111078947484959L; - long var28 = var2 ^ 55397201460281L; - if (this.t != b.world) { - this.l(new Object[]{var12}); + public Rotation provideRotation() { + if (this.trackedWorld != mc.world) { + this.resetState(); } - boolean var31 = this.e(new Object[]{var8}); - if (!Prestige.o.c_boolean____(new Object[]{var16})) { - this.l(new Object[]{var12}); + boolean usingItem = this.isUseKeyActive(); + if (!Prestige.silentRotationManager.canRotate()) { + this.resetState(); return null; - } else if (var31) { - this.j(new Object[]{var20}); - return !this.p && !this.q ? null : this.m; - } else if (this.m == null || !this.p && !this.q) { - if (b.isWindowFocused() && b.currentScreen == null) { - if ((Boolean)this.e.getValue()) { - int var44 = this.i ? -1 : this.d_int______(new Object[]{var22}); - int var45 = this.e_int____(new Object[]{var18}); - if ((this.i || var44 != -1) && var45 != -1) { - if (this.j) { - RenderBatch var47 = this.b_RenderBatch_______(new Object[]{new RenderBatch(b.player.getYaw(), -90.0F), var14}); - Object[] var70 = new Object[]{null, var10}; - var70[0] = var44; - if (this.a_boolean____________________________(var70)) { - this.i = true; - this.j = false; - this.h.a_void_____________________(new Object[]{var6}); + } else if (usingItem) { + this.pauseForItemUse(); + return !this.itemUsed && !this.releasePending ? null : this.lockedRotation; + } else if (this.lockedRotation == null || !this.itemUsed && !this.releasePending) { + if (mc.isWindowFocused() && mc.currentScreen == null) { + if (this.legitRotate.getValue()) { + int legitPearlSlot = this.pearlThrown ? -1 : this.findPearlSlot(); + int legitWindChargeSlot = this.findWindChargeSlot(); + if ((this.pearlThrown || legitPearlSlot != -1) && legitWindChargeSlot != -1) { + if (this.pearlAimReady) { + Rotation legitPearlRotation = this.lockRotation(new Rotation(mc.player.getYaw(), -90.0F)); + if (this.throwFromSlot(legitPearlSlot)) { + this.pearlThrown = true; + this.pearlAimReady = false; + this.pearlTimer.reset(); } - return var47; + return legitPearlRotation; } else { - if (this.k) { - EnderPearlEntity var46 = null; - int var49 = Integer.MAX_VALUE; + if (this.windChargeReady) { + EnderPearlEntity legitPearl = null; + int legitYoungestAge = Integer.MAX_VALUE; - for (Entity var55 : b.world.getEntities()) { - if (var55 instanceof EnderPearlEntity var60 && var60.getOwner() == b.player && var60.age < var49) { - var49 = var60.age; - var46 = var60; + for (Entity legitEntity : mc.world.getEntities()) { + if (legitEntity instanceof EnderPearlEntity legitOwnPearl && legitOwnPearl.getOwner() == mc.player && legitOwnPearl.age < legitYoungestAge) { + legitYoungestAge = legitOwnPearl.age; + legitPearl = legitOwnPearl; } } - if (var46 == null) { - for (Entity var56 : b.world.getEntities()) { - if (var56 instanceof EnderPearlEntity var61) { - if (var61.getOwner() == b.player) { - var46 = var61; + if (legitPearl == null) { + for (Entity legitFallbackEntity : mc.world.getEntities()) { + if (legitFallbackEntity instanceof EnderPearlEntity legitFallbackPearl) { + if (legitFallbackPearl.getOwner() == mc.player) { + legitPearl = legitFallbackPearl; } break; } } } - if (var46 != null) { - Vec3d var52 = b.player.getVelocity(); - float var57 = b.player.getYaw(); - double var62 = Math.toRadians(var57); - Vec3d var40 = new Vec3d(-Math.sin(var62), 0.0, Math.cos(var62)).normalize(); - float var65 = (float)(var52.x * var40.x + var52.z * var40.z); - RenderBatch var66 = this.b_RenderBatch_______( - new Object[]{new RenderBatch(b.player.getYaw(), -90.0F + var65 * 1.6F), var14} + if (legitPearl != null) { + Vec3d legitVelocity = mc.player.getVelocity(); + double legitYawRadians = Math.toRadians(mc.player.getYaw()); + Vec3d legitForward = new Vec3d(-Math.sin(legitYawRadians), 0.0, Math.cos(legitYawRadians)).normalize(); + float legitForwardSpeed = (float)(legitVelocity.x * legitForward.x + legitVelocity.z * legitForward.z); + Rotation legitWindRotation = this.lockRotation( + new Rotation(mc.player.getYaw(), -90.0F + legitForwardSpeed * 1.6F) ); - Object[] var69 = new Object[]{null, var10}; - var69[0] = var45; - if (this.a_boolean____________________________(var69)) { - this.g = true; - this.k = false; + if (this.throwFromSlot(legitWindChargeSlot)) { + this.windChargeThrown = true; + this.windChargeReady = false; } - return new RenderBatch(var66.a(new Object[0]), var66.b(new Object[0])); + return new Rotation(legitWindRotation.getYaw(), legitWindRotation.getPitch()); } - if (this.d(new Object[]{var26})) { - this.toggle(new Object[]{var4}); + if (this.hasPearlTimedOut()) { + this.toggle(); } } return null; } } else { - this.toggle(new Object[]{var4}); + this.toggle(); return null; } } else { - boolean var32 = b.player.getVelocity().x != 0.0 || b.player.getVelocity().z != 0.0; - int var33 = this.i ? -1 : this.d_int______(new Object[]{var22}); - int var34 = this.e_int____(new Object[]{var18}); - if ((this.i || var33 != -1) && var34 != -1) { - if (!this.i) { - RenderBatch var48 = this.b_RenderBatch_______(new Object[]{new RenderBatch(b.player.getYaw(), -90.0F), var14}); - Object[] var68 = new Object[]{null, var10}; - var68[0] = var33; - if (this.a_boolean____________________________(var68)) { - this.i = true; - this.h.a_void_____________________(new Object[]{var6}); + boolean moving = mc.player.getVelocity().x != 0.0 || mc.player.getVelocity().z != 0.0; + int pearlSlot = this.pearlThrown ? -1 : this.findPearlSlot(); + int windChargeSlot = this.findWindChargeSlot(); + if ((this.pearlThrown || pearlSlot != -1) && windChargeSlot != -1) { + if (!this.pearlThrown) { + Rotation pearlRotation = this.lockRotation(new Rotation(mc.player.getYaw(), -90.0F)); + if (this.throwFromSlot(pearlSlot)) { + this.pearlThrown = true; + this.pearlTimer.reset(); } - return var48; + return pearlRotation; } else { - RenderHelper27 var10000 = this.h; - float var10001 = var32 ? (Float)this.d.getValue() : (Float)this.c.getValue(); - Object[] var10004 = new Object[]{null, var24}; - var10004[0] = var10001; - if (!var10000.a(var10004)) { - return new RenderBatch(b.player.getYaw(), -90.0F); + if (!this.pearlTimer.hasElapsed(moving ? this.movingDelay.getValue() : this.windChargeDelay.getValue())) { + return new Rotation(mc.player.getYaw(), -90.0F); } else { - EnderPearlEntity var35 = null; - int var36 = Integer.MAX_VALUE; + EnderPearlEntity pearl = null; + int youngestAge = Integer.MAX_VALUE; - for (Entity var38 : b.world.getEntities()) { - if (var38 instanceof EnderPearlEntity var39 && var39.getOwner() == b.player && var39.age < var36) { - var36 = var39.age; - var35 = var39; + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EnderPearlEntity ownPearl && ownPearl.getOwner() == mc.player && ownPearl.age < youngestAge) { + youngestAge = ownPearl.age; + pearl = ownPearl; } } - if (var35 == null) { - for (Entity var58 : b.world.getEntities()) { - if (var58 instanceof EnderPearlEntity var63) { - if (var63.getOwner() == b.player) { - var35 = var63; + if (pearl == null) { + for (Entity fallbackEntity : mc.world.getEntities()) { + if (fallbackEntity instanceof EnderPearlEntity fallbackPearl) { + if (fallbackPearl.getOwner() == mc.player) { + pearl = fallbackPearl; } break; } } } - if (var35 != null) { - Vec3d var54 = b.player.getVelocity(); - float var59 = b.player.getYaw(); - double var64 = Math.toRadians(var59); - Vec3d var41 = new Vec3d(-Math.sin(var64), 0.0, Math.cos(var64)).normalize(); - float var42 = (float)(var54.x * var41.x + var54.z * var41.z); - RenderBatch var43 = this.b_RenderBatch_______( - new Object[]{new RenderBatch(b.player.getYaw(), -90.0F + var42 * 1.6F), var14} + if (pearl != null) { + Vec3d velocity = mc.player.getVelocity(); + double yawRadians = Math.toRadians(mc.player.getYaw()); + Vec3d forward = new Vec3d(-Math.sin(yawRadians), 0.0, Math.cos(yawRadians)).normalize(); + float forwardSpeed = (float)(velocity.x * forward.x + velocity.z * forward.z); + Rotation windRotation = this.lockRotation( + new Rotation(mc.player.getYaw(), -90.0F + forwardSpeed * 1.6F) ); - var10004 = new Object[]{null, var10}; - var10004[0] = var34; - if (this.a_boolean____________________________(var10004)) { - this.r = true; + if (this.throwFromSlot(windChargeSlot)) { + this.disableAfterRelease = true; } - return new RenderBatch(var43.a(new Object[0]), var43.b(new Object[0])); + return new Rotation(windRotation.getYaw(), windRotation.getPitch()); } else { - if (this.d(new Object[]{var26})) { - this.toggle(new Object[]{var4}); + if (this.hasPearlTimedOut()) { + this.toggle(); } return null; @@ -285,306 +235,196 @@ public class AutoPearlCatch extends Module implements RenderContract3 { } } } else { - this.toggle(new Object[]{var4}); + this.toggle(); return null; } } } else { - if (!this.p && !this.q) { - this.k(new Object[]{var28}); + if (!this.itemUsed && !this.releasePending) { + this.releaseRotationLock(); } return null; } } else { - return this.m; + return this.lockedRotation; } } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 10306347614701L ^ var2; - long var4 = var2 ^ 36922976468039L; - float var6 = Math.max((Float)this.c.getValue(), (Float)this.d.getValue()); - RenderHelper27 var10000 = this.h; - float var10001 = var6 + 1500.0F; - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - return var10000.a(var10004); + private boolean hasPearlTimedOut() { + float longestDelay = Math.max(this.windChargeDelay.getValue(), this.movingDelay.getValue()); + return this.pearlTimer.hasElapsed(longestDelay + 1500.0F); } - private boolean e(Object[] var1) { - Event.b(); - int var5 = b.player.age; - if (b.player.isUsingItem() || b.options.useKey.isPressed()) { - this.u = var5; + private boolean isUseKeyActive() { + int currentAge = mc.player.age; + if (mc.player.isUsingItem() || mc.options.useKey.isPressed()) { + this.lastUseTick = currentAge; return true; - } else if (this.u == Integer.MIN_VALUE) { + } else if (this.lastUseTick == Integer.MIN_VALUE) { return false; } else { - int var6 = var5 - this.u; - if (var6 >= 0 && var6 <= 1) { + int ticksSinceUse = currentAge - this.lastUseTick; + if (ticksSinceUse >= 0 && ticksSinceUse <= 1) { return true; } else { - this.u = Integer.MIN_VALUE; + this.lastUseTick = Integer.MIN_VALUE; return false; } } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 10306347614701L ^ var2; - long var4 = var2 ^ 45151469622735L; - if (!this.p && !this.q) { - this.k(new Object[]{var4}); + private void pauseForItemUse() { + if (!this.itemUsed && !this.releasePending) { + this.releaseRotationLock(); } - this.j = false; - this.k = false; + this.pearlAimReady = false; + this.windChargeReady = false; } - private RenderBatch b_RenderBatch_______(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 10306347614701L ^ var2; - long var5 = var2 ^ 114490896329760L; - if (this.m == null) { - this.m = new RenderBatch(var4.a(new Object[0]), var4.b(new Object[0])); - this.n = false; - this.o = false; - this.p = false; - this.s = b.world; + private Rotation lockRotation(Rotation rotation) { + if (this.lockedRotation == null) { + this.lockedRotation = new Rotation(rotation.getYaw(), rotation.getPitch()); + this.rotationSynced = false; + this.rotationApplied = false; + this.itemUsed = false; + this.lockWorld = mc.world; } - Prestige.o.a_boolean_____________________________________________(new Object[]{this, this.m, var5}); - return this.m; + Prestige.silentRotationManager.tryLockRotation(this, this.lockedRotation); + return this.lockedRotation; } - private boolean a_boolean____________________________(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - var2 = 10306347614701L ^ var2; - long var5 = var2 ^ 125536761560862L; - if (this.m != null && this.n && !this.p && !Prestige.o.d_boolean______(new Object[0])) { - Object[] var10003 = new Object[]{null, var5}; - var10003[0] = var4; - InventoryUtil.a_void________(var10003); - float var8 = b.player.getYaw(); - float var9 = b.player.getPitch(); + private boolean throwFromSlot(int slot) { + if (this.lockedRotation != null && this.rotationSynced && !this.itemUsed && !Prestige.silentRotationManager.hasActedThisTick()) { + InventoryUtil.selectSlot(slot); + float previousYaw = mc.player.getYaw(); + float previousPitch = mc.player.getPitch(); - boolean var10; + boolean accepted; try { - b.player.setYaw(this.m.a(new Object[0])); - b.player.setPitch(this.m.b(new Object[0])); - var10 = b.interactionManager.interactItem(b.player, Hand.MAIN_HAND).isAccepted(); - Prestige.o.g(new Object[]{true}); - this.p = true; - if (var10) { - b.player.swingHand(Hand.MAIN_HAND); + mc.player.setYaw(this.lockedRotation.getYaw()); + mc.player.setPitch(this.lockedRotation.getPitch()); + accepted = mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND).isAccepted(); + Prestige.silentRotationManager.setActedThisTick(true); + this.itemUsed = true; + if (accepted) { + mc.player.swingHand(Hand.MAIN_HAND); } } finally { - b.player.setYaw(var8); - b.player.setPitch(var9); + mc.player.setYaw(previousYaw); + mc.player.setPitch(previousPitch); } - return var10; + return accepted; } else { return false; } } @Subscribe - public void a(FloatEvent2 var1) { - if (this.m != null) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE) { - if (!Prestige.o.a_boolean_____________________________________________(new Object[]{this, this.m, 48219934824613L})) { - this.o = false; + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (this.lockedRotation != null) { + if (event.getPhase() == EventPhase.PRE) { + if (!Prestige.silentRotationManager.tryLockRotation(this, this.lockedRotation)) { + this.rotationApplied = false; } else { - var1.b(new Object[]{this.m.a(new Object[0])}); - var1.c(new Object[]{this.m.b(new Object[0])}); - this.o = true; + event.setYaw(this.lockedRotation.getYaw()); + event.setPitch(this.lockedRotation.getPitch()); + this.rotationApplied = true; } - } else if (var1.a_EventPhase(new Object[0]) == EventPhase.POST && this.o) { - this.o = false; - if (Prestige.o.b_boolean_______(new Object[]{this, 14074758807540L})) { - if (this.p) { - this.p = false; - this.q = true; - } else if (this.q) { - this.q = false; - boolean var13 = this.r; - this.k(new Object[]{138438170727296L}); - if (var13 && this.isEnabled()) { - this.toggle(new Object[]{115103427876780L}); + } else if (event.getPhase() == EventPhase.POST && this.rotationApplied) { + this.rotationApplied = false; + if (Prestige.silentRotationManager.isLockHeldBy(this)) { + if (this.itemUsed) { + this.itemUsed = false; + this.releasePending = true; + } else if (this.releasePending) { + this.releasePending = false; + boolean shouldDisable = this.disableAfterRelease; + this.releaseRotationLock(); + if (shouldDisable && this.isEnabled()) { + this.toggle(); } } else { - this.n = true; + this.rotationSynced = true; } } } } } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 10306347614701L ^ var2; - long var4 = var2 ^ 108193674557785L; - Prestige.o.c_void___(new Object[]{this, var4}); - this.m = null; - this.s = null; - this.n = false; - this.o = false; - this.p = false; - this.q = false; - this.r = false; + private void releaseRotationLock() { + Prestige.silentRotationManager.releaseLock(this); + this.lockedRotation = null; + this.lockWorld = null; + this.rotationSynced = false; + this.rotationApplied = false; + this.itemUsed = false; + this.releasePending = false; + this.disableAfterRelease = false; } - private void l(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 10306347614701L ^ var2; - long var4 = var2 ^ 138504629182376L; - long var6 = var2 ^ 93473908560821L; - boolean var9 = this.t != b.world; - this.k(new Object[]{var6}); - this.i = false; - this.g = false; - this.j = false; - this.k = false; - this.h.a_void_____________________(new Object[]{var4}); - this.t = b.world; - if (var9) { - this.u = Integer.MIN_VALUE; + private void resetState() { + boolean worldChanged = this.trackedWorld != mc.world; + this.releaseRotationLock(); + this.pearlThrown = false; + this.windChargeThrown = false; + this.pearlAimReady = false; + this.windChargeReady = false; + this.pearlTimer.reset(); + this.trackedWorld = mc.world; + if (worldChanged) { + this.lastUseTick = Integer.MIN_VALUE; } - if (b.player != null) { - this.l = b.player.getPitch(); + if (mc.player != null) { + this.originalPitch = mc.player.getPitch(); } } @Subscribe - public void a(TickEvent3 var1) { - this.u = Integer.MIN_VALUE; - this.l(new Object[]{37059407413720L}); + public void onGameJoin(GameJoinEvent event) { + this.lastUseTick = Integer.MIN_VALUE; + this.resetState(); } - private int d_int______(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 < 9; var5++) { - if (!b.player.getInventory().getStack(var5).isEmpty() && b.player.getInventory().getStack(var5).getItem() == Items.ENDER_PEARL) { - return var5; + private int findPearlSlot() { + for (int slot = 0; slot < 9; slot++) { + if (!mc.player.getInventory().getStack(slot).isEmpty() && mc.player.getInventory().getStack(slot).getItem() == Items.ENDER_PEARL) { + return slot; } } return -1; } - private int e_int____(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 10306347614701L ^ var2; - long var4 = var2 ^ 32528850572091L; - Event.b(); - - for (int var7 = 0; var7 < 9; var7++) { - if (!b.player.getInventory().getStack(var7).isEmpty() && f(new Object[]{b.player.getInventory().getStack(var7), var4})) { - return var7; + private int findWindChargeSlot() { + for (int slot = 0; slot < 9; slot++) { + if (!mc.player.getInventory().getStack(slot).isEmpty() && isWindCharge(mc.player.getInventory().getStack(slot))) { + return slot; } } return -1; } - public static boolean f(Object[] var0) { - ItemStack var1 = (ItemStack)var0[0]; - return var1.getItem().equals(Items.WIND_CHARGE); + public static boolean isWindCharge(ItemStack stack) { + return stack.getItem().equals(Items.WIND_CHARGE); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - long var6 = var2 ^ 102906042232030L; - Prestige.o.e(new Object[]{this, var4}); - this.l(new Object[]{var6}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); + this.resetState(); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - long var6 = var2 ^ 99269417657573L; - this.k(new Object[]{var6}); - this.t = null; - this.u = Integer.MIN_VALUE; - Prestige.o.f(new Object[]{this, var4}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + this.releaseRotationLock(); + this.trackedWorld = null; + this.lastUseTick = Integer.MIN_VALUE; + Prestige.silentRotationManager.removeRotationProvider(this); } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/AutoReMace.java b/src/main/java/dev/zprestige/prestige/module/mace/AutoReMace.java index 4ea8cca..f6b03b0 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/AutoReMace.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/AutoReMace.java @@ -4,17 +4,13 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent24; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.FrameEvent; import dev.zprestige.prestige.inventory.InventoryUtil; import dev.zprestige.prestige.module.combat.AutoElytra; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.RotationUtil; import java.util.Set; import net.minecraft.entity.player.PlayerEntity; @@ -23,172 +19,72 @@ public class AutoReMace extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; - private FloatSetting c; - private RenderHelper27 d = new RenderHelper27(26293358099357L); - private boolean i; - private PlayerEntity e; + private FloatSetting rotationSmoothing; + private FloatSetting aboveThem; + private StopWatch reMaceTimer = new StopWatch(); + private boolean reMacing; + private PlayerEntity target; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Subscribe - public void a(TickEvent24 var1) { - if (this.i) { - if (this.e != null && this.e.isAlive() && !(b.player.distanceTo(this.e) > 100.0F)) { + public void onFrame(FrameEvent event) { + if (this.reMacing) { + if (this.target != null && this.target.isAlive() && !(mc.player.distanceTo(this.target) > 100.0F)) { label67: { - RenderHelper27 var10000 = this.d; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 1000.0F; - if (var10000.a(var10004)) { - if (b.player.isOnGround()) { + if (this.reMaceTimer.hasElapsed(1000.0F)) { + if (mc.player.isOnGround()) { break label67; } - var10000 = this.d; - var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 5000.0F; - if (var10000.a(var10004)) { + if (this.reMaceTimer.hasElapsed(5000.0F)) { break label67; } } - var10000 = this.d; - var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 100.0F; - if (!var10000.a(var10004)) { + if (!this.reMaceTimer.hasElapsed(100.0F)) { return; } - var10000 = this.d; - var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 600.0F; - if (!var10000.a(var10004)) { - if (!AutoElytra.v.isEnabled()) { - AutoElytra.v.toggle(new Object[]{115103427876780L}); + if (!this.reMaceTimer.hasElapsed(600.0F)) { + if (!AutoElytra.instance.isEnabled()) { + AutoElytra.instance.toggle(); } - RenderBatch var18 = WorldUtil.a_RenderBatch_( - new Object[]{ - PositionUtil.a(new Object[]{this.e, 67736483458412L}).add(0.0, ((Float)this.c.getValue()).floatValue(), 0.0), 6563042098863L - } - ); - float var23 = (Float)this.a.getValue() / 2.0F; - Object[] var28 = new Object[]{null, null, null, null, 40447786406815L}; - var28[3] = 0.5F; - var28[2] = 0.0F; - var28[1] = var23; - var28[0] = var18; - WorldUtil.c(var28); + RotationUtil.smoothRotate(RotationUtil.getRotationTo( + PositionUtil.getEntityPos(this.target).add(0.0, this.aboveThem.getValue().floatValue(), 0.0) + ), this.rotationSmoothing.getValue() / 2.0F, 0.0F, 0.5F); return; } - var10000 = this.d; - var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 1400.0F; - if (!var10000.a(var10004)) { - RenderBatch var17 = WorldUtil.a_RenderBatch_(new Object[]{this.e.getEyePos(), 6563042098863L}); - float var10001 = (Float)this.a.getValue() / 2.0F; - Object[] var10006 = new Object[]{null, null, null, null, 40447786406815L}; - var10006[3] = 0.5F; - var10006[2] = 0.0F; - var10006[1] = var10001; - var10006[0] = var17; - WorldUtil.c(var10006); + if (!this.reMaceTimer.hasElapsed(1400.0F)) { + RotationUtil.smoothRotate(RotationUtil.getRotationTo(this.target.getEyePos()), this.rotationSmoothing.getValue() / 2.0F, 0.0F, 0.5F); return; } - if (PositionUtil.a_double___________(new Object[]{b.player, 111298775242240L}) < 1.0) { - this.i = false; + if (PositionUtil.getHeightAboveGround(mc.player) < 1.0) { + this.reMacing = false; } return; } - this.i = false; + this.reMacing = false; } else { - this.i = false; + this.reMacing = false; } } } @Subscribe - public void a(EntityEvent var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerEntity var10 && InventoryUtil.o(new Object[]{b.player.getMainHandStack(), 133561865349436L})) { - this.e = var10; - this.i = true; - this.d.a_void_____________________(new Object[]{93540861878173L}); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public void onAttackEntity(AttackEntityEvent event) { + if (event.getTarget() instanceof PlayerEntity attackedPlayer && InventoryUtil.isMace(mc.player.getMainHandStack())) { + this.target = attackedPlayer; + this.reMacing = true; + this.reMaceTimer.reset(); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/BreachSwap.java b/src/main/java/dev/zprestige/prestige/module/mace/BreachSwap.java index db7f293..e1053e2 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/BreachSwap.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/BreachSwap.java @@ -4,14 +4,11 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent12; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent7; +import dev.zprestige.prestige.event.AutoAttackEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.DoAttackEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.RandomUtil; import java.util.ArrayList; import java.util.Set; import net.minecraft.enchantment.EnchantmentHelper; @@ -23,47 +20,42 @@ public class BreachSwap extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; - private int c = -1; - private int d = 0; - private static final long l = 5554404204296011784L; + private FloatSetting chance; + private int previousSlot = -1; + private int swapBackTicks = 0; + private static final long LAST_HOTBAR_SLOT = 5554404204296011784L; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Subscribe - public void a(TickEvent19 var1) { - if (this.d == 0) { - if (this.c != -1) { - int var10000 = this.c; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - this.c = -1; + public void onClientTick(ClientTickEvent event) { + if (this.swapBackTicks == 0) { + if (this.previousSlot != -1) { + InventoryUtil.selectSlot(this.previousSlot); + this.previousSlot = -1; } } else { - this.d--; + this.swapBackTicks--; } } @Subscribe - public void a(TickEvent12 var1) { - if (RenderUtil5.a.nextFloat() * 100.0F > (Float)this.a.getValue()) { - this.d = 1; + public void onAutoAttack(AutoAttackEvent event) { + if (RandomUtil.RANDOM.nextFloat() * 100.0F > this.chance.getValue()) { + this.swapBackTicks = 1; } - if (this.d <= 0) { - if (!(b.player.fallDistance > 1.5)) { - if (this.c == -1 && InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L})) { - this.c = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - int var13 = this.a(new Object[]{2715653746745L}); - if (var13 != -1) { - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var13; - InventoryUtil.a_void________(var10003); - this.d = 1; + if (this.swapBackTicks <= 0) { + if (!(mc.player.fallDistance > 1.5)) { + if (this.previousSlot == -1 && InventoryUtil.isSword(mc.player.getMainHandStack())) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + int maceSlot = this.findBestBreachMaceSlot(); + if (maceSlot != -1) { + InventoryUtil.selectSlot(maceSlot); + this.swapBackTicks = 1; } } } @@ -71,136 +63,57 @@ public class BreachSwap extends Module { } @Subscribe - public void a(TickEvent7 var1) { - if (RenderUtil5.a.nextFloat() * 100.0F > (Float)this.a.getValue()) { - this.d = 1; + public void onDoAttack(DoAttackEvent event) { + if (RandomUtil.RANDOM.nextFloat() * 100.0F > this.chance.getValue()) { + this.swapBackTicks = 1; } - if (this.d <= 0) { - if (!(b.player.fallDistance > 1.5)) { - if (this.c == -1 && InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L})) { - this.c = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - int var13 = this.a(new Object[]{2715653746745L}); - if (var13 != -1) { - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var13; - InventoryUtil.a_void________(var10003); - this.d = 1; + if (this.swapBackTicks <= 0) { + if (!(mc.player.fallDistance > 1.5)) { + if (this.previousSlot == -1 && InventoryUtil.isSword(mc.player.getMainHandStack())) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + int maceSlot = this.findBestBreachMaceSlot(); + if (maceSlot != -1) { + InventoryUtil.selectSlot(maceSlot); + this.swapBackTicks = 1; } } } } } - public int a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 115104592900024L ^ var2; - long var4 = var2 ^ 130817381454573L; - long var6 = var2 ^ 21641841522365L; - Event.b(); - ArrayList var9 = new ArrayList(); + public int findBestBreachMaceSlot() { + ArrayList maceSlots = new ArrayList(); - for (int var10 = 0; var10 <= (int)l; var10++) { - if (InventoryUtil.o(new Object[]{b.player.getInventory().getStack(var10), var6})) { - var9.add(var10); + for (int slot = 0; slot <= (int)LAST_HOTBAR_SLOT; slot++) { + if (InventoryUtil.isMace(mc.player.getInventory().getStack(slot))) { + maceSlots.add(slot); } } - int var16 = -1; - int var11 = -1; + int bestLevel = -1; + int bestSlot = -1; - for (int var13 : (Iterable)(var9)) { - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var13; - int var14 = this.c(var10004); - if (var14 > var16) { - var16 = var14; - var11 = var13; + for (int maceSlot : (Iterable)(maceSlots)) { + int level = this.getBreachLevel(maceSlot); + if (level > bestLevel) { + bestLevel = level; + bestSlot = maceSlot; } } - return var11; + return bestSlot; } - public int c(Object[] var1) { - int var4 = (Integer)var1[0]; - Event.b(); - ItemStack var6 = b.player.getInventory().getStack(var4); - if (var6 != null) { - float var7 = EnchantmentHelper.getLevel( - b.world.getRegistryManager().getOptional(Enchantments.BREACH.getRegistryRef()).get().getEntry(Enchantments.BREACH.getValue()).get(), var6 + public int getBreachLevel(int slot) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack != null) { + float level = EnchantmentHelper.getLevel( + mc.world.getRegistryManager().getOptional(Enchantments.BREACH.getRegistryRef()).get().getEntry(Enchantments.BREACH.getValue()).get(), stack ); - return (int)var7; + return (int)level; } else { return 0; } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/DiagonalPearlCatch.java b/src/main/java/dev/zprestige/prestige/module/mace/DiagonalPearlCatch.java index bdd1cb8..4d5e960 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/DiagonalPearlCatch.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/DiagonalPearlCatch.java @@ -7,22 +7,19 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.math.MathHelper2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper3; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.math.MotionState; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.PearlThrowSolution; import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.type.PearlState; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.type.DiagonalPearlState; +import dev.zprestige.prestige.world.RotationUtil; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -33,596 +30,395 @@ import net.minecraft.util.Hand; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class DiagonalPearlCatch extends Module implements RenderContract3 { +public class DiagonalPearlCatch extends Module implements RotationProvider { public DiagonalPearlCatch() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private EnumSetting a; - private FloatSetting c; - private BoolSetting d; - private FloatSetting e; - private static final double f = 0.4; - private static final int g = 15; - private static final int h = 30; - private static final float i = 1.5F; - private static final double j = 0.03; - private static final double k = 0.99; - private static final float l = 1.5F; - private static final double m = 0.99; - private static final double n = 0.0; - private static final double o = 0.08; - private static final double p = 0.98; - private static final double q = 0.91; - private PearlState r = PearlState.IDLE; - private int s; - private List t; - private RenderHelper3 u; - private RenderHelper27 v = new RenderHelper27(26293358099357L); - private boolean w; - private RenderBatch x; - private boolean y; - private boolean z; - private boolean A; - private boolean B; - private Object C; - private Object D; + private EnumSetting mode; + private FloatSetting windChargeDelay; + private BoolSetting silentAim; + private FloatSetting maxYawDelta; + private DiagonalPearlState state = DiagonalPearlState.IDLE; + private int ticksUntilWindCharge; + private List pearlPath; + private PearlThrowSolution solution; + private StopWatch pearlTimer = new StopWatch(); + private boolean macroPearlThrown; + private Rotation lockedRotation; + private boolean rotationSynced; + private boolean rotationApplied; + private boolean itemUsed; + private boolean disableAfterRelease; + private Object lockWorld; + private Object trackedWorld; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 6523796846702L; - long var6 = var2 ^ 91082959635357L; - this.j(new Object[]{var4}); - Prestige.o.e(new Object[]{this, var6}); + public void onEnable() { + this.resetState(); + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - long var6 = var2 ^ 103824891961869L; - this.j(new Object[]{var6}); - this.D = null; - Prestige.o.f(new Object[]{this, var4}); + public void onDisable() { + this.resetState(); + this.trackedWorld = null; + Prestige.silentRotationManager.removeRotationProvider(this); } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 8283165051676L ^ var2; - long var4 = var2 ^ 55084400404693L; - long var6 = var2 ^ 47650255962601L; - this.r = PearlState.IDLE; - this.s = 0; - this.t = null; - this.u = null; - this.w = false; - this.v.a_void_____________________(new Object[]{var6}); - this.n(new Object[]{var4}); - this.D = b.world; + private void resetState() { + this.state = DiagonalPearlState.IDLE; + this.ticksUntilWindCharge = 0; + this.pearlPath = null; + this.solution = null; + this.macroPearlThrown = false; + this.pearlTimer.reset(); + this.releaseRotationLock(); + this.trackedWorld = mc.world; } @Subscribe - public void a(TickEvent3 var1) { - this.j(new Object[]{133924836660584L}); + public void onGameJoin(GameJoinEvent event) { + this.resetState(); } @Subscribe - public void a(TickEvent19 var1) { - if (this.D != b.world) { - this.j(new Object[]{133924836660584L}); + public void onClientTick(ClientTickEvent event) { + if (this.trackedWorld != mc.world) { + this.resetState(); } - if (!Prestige.o.c_boolean____(new Object[]{10956647187327L})) { - this.j(new Object[]{133924836660584L}); - } else if (b.player != null && b.world != null && b.isWindowFocused() && b.currentScreen == null) { - int var19 = this.a_int____________( - new Object[]{(Predicate)lpL178_0 -> !((net.minecraft.item.ItemStack)lpL178_0).isEmpty() && InventoryUtil.p(new Object[]{((net.minecraft.item.ItemStack)lpL178_0), 96613578214009L}), 5535161176176L} + if (!Prestige.silentRotationManager.canRotate()) { + this.resetState(); + } else if (mc.player != null && mc.world != null && mc.isWindowFocused() && mc.currentScreen == null) { + int windChargeSlot = this.findHotbarSlot( + (Predicate)windChargeCandidate -> !windChargeCandidate.isEmpty() && InventoryUtil.isWindCharge(windChargeCandidate) ); - if (var19 == -1) { - this.toggle(new Object[]{115103427876780L}); + if (windChargeSlot == -1) { + this.toggle(); } else { - boolean var20 = ((String)this.a.getValue()).equals("Macro") ? !this.w : this.r == PearlState.IDLE || this.r == PearlState.THROW_PEARL; - int var21 = -1; - if (var20) { - var21 = this.a_int____________( - new Object[]{(Predicate)lpL177_0 -> !((net.minecraft.item.ItemStack)lpL177_0).isEmpty() && ((net.minecraft.item.ItemStack)lpL177_0).getItem() == Items.ENDER_PEARL, 5535161176176L} + boolean needsPearl = this.mode.getValue().equals("Macro") ? !this.macroPearlThrown : this.state == DiagonalPearlState.IDLE || this.state == DiagonalPearlState.THROW_PEARL; + int pearlSlot = -1; + if (needsPearl) { + pearlSlot = this.findHotbarSlot( + (Predicate)pearlCandidate -> !pearlCandidate.isEmpty() && pearlCandidate.getItem() == Items.ENDER_PEARL ); - if (var21 == -1) { - this.toggle(new Object[]{115103427876780L}); + if (pearlSlot == -1) { + this.toggle(); return; } } - if (((String)this.a.getValue()).equals("Macro")) { - Object[] var10005 = new Object[]{null, null, 127774237691672L}; - var10005[1] = var19; - var10005[0] = var21; - this.k(var10005); + if (this.mode.getValue().equals("Macro")) { + this.runMacroMode(pearlSlot, windChargeSlot); } else { - Object[] var22 = new Object[]{null, null, 47972324523133L}; - var22[1] = var19; - var22[0] = var21; - this.l(var22); + this.runTrajectoryMode(pearlSlot, windChargeSlot); } } } else { - if (!this.A) { - this.n(new Object[]{83958210688673L}); + if (!this.itemUsed) { + this.releaseRotationLock(); } } } - private void k(Object[] var1) { - int var5 = (Integer)var1[0]; - int var2 = (Integer)var1[1]; - long var3 = (Long)var1[2]; - var3 = 8283165051676L ^ var3; - long var6 = var3 ^ 117878007009866L; - long var8 = var3 ^ 42530859703193L; - long var10 = var3 ^ 99418377255359L; - long var12 = var3 ^ 125319185949448L; - if (!this.w) { - Object[] var15 = new Object[]{null, this.d(new Object[]{var10}), var6}; - var15[0] = var5; - if (this.d_boolean____(var15)) { - this.w = true; - this.v.a_void_____________________(new Object[]{var8}); + private void runMacroMode(int pearlSlot, int windChargeSlot) { + if (!this.macroPearlThrown) { + if (this.throwFromSlot(pearlSlot, this.getViewRotation())) { + this.macroPearlThrown = true; + this.pearlTimer.reset(); } } else { - RenderHelper27 var10000 = this.v; - float var10001 = (Float)this.c.getValue(); - Object[] var10004 = new Object[]{null, var12}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - Object[] var10005 = new Object[]{null, this.d(new Object[]{var10}), var6}; - var10005[0] = var2; - if (this.d_boolean____(var10005)) { - this.B = true; + if (this.pearlTimer.hasElapsed(this.windChargeDelay.getValue())) { + if (this.throwFromSlot(windChargeSlot, this.getViewRotation())) { + this.disableAfterRelease = true; } } } } - private void l(Object[] var1) { - int var4 = (Integer)var1[0]; - int var5 = (Integer)var1[1]; - long var2 = (Long)var1[2]; - var2 = 8283165051676L ^ var2; - long var6 = var2 ^ 75344005472461L; - long var8 = var2 ^ 136401377843702L; - long var10 = var2 ^ 57866965492015L; - long var12 = var2 ^ 83079234818822L; - long var14 = var2 ^ 6592948816602L; - switch (this.r) { + private void runTrajectoryMode(int pearlSlot, int windChargeSlot) { + switch (this.state) { case IDLE: - if (!this.a_boolean_____________________________(new Object[]{this.d(new Object[]{var14}), var12})) { - this.toggle(new Object[]{var6}); + if (!this.solveIntercept(this.getViewRotation())) { + this.toggle(); return; } - this.r = PearlState.THROW_PEARL; + this.state = DiagonalPearlState.THROW_PEARL; break; case THROW_PEARL: - if (this.y - && !this.A - && !Prestige.o.d_boolean______(new Object[0]) - && !this.a_boolean_____________________________(new Object[]{this.x, var12})) { - this.toggle(new Object[]{var6}); + if (this.rotationSynced + && !this.itemUsed + && !Prestige.silentRotationManager.hasActedThisTick() + && !this.solveIntercept(this.lockedRotation)) { + this.toggle(); return; } - Object[] var10005 = new Object[]{null, this.d(new Object[]{var14}), var10}; - var10005[0] = var4; - if (this.d_boolean____(var10005)) { - this.s = this.u.a; - this.r = this.s > 0 ? PearlState.WAIT_FOR_LAUNCH : PearlState.THROW_WIND_CHARGE; + if (this.throwFromSlot(pearlSlot, this.getViewRotation())) { + this.ticksUntilWindCharge = this.solution.throwTick; + this.state = this.ticksUntilWindCharge > 0 ? DiagonalPearlState.WAIT_FOR_LAUNCH : DiagonalPearlState.THROW_WIND_CHARGE; } break; case WAIT_FOR_LAUNCH: - if (--this.s <= 0) { - this.r = PearlState.THROW_WIND_CHARGE; - Object[] var17 = new Object[]{null, var8}; - var17[0] = var5; - this.m(var17); + if (--this.ticksUntilWindCharge <= 0) { + this.state = DiagonalPearlState.THROW_WIND_CHARGE; + this.throwWindCharge(windChargeSlot); } break; case THROW_WIND_CHARGE: - Object[] var10004 = new Object[]{null, var8}; - var10004[0] = var5; - this.m(var10004); + this.throwWindCharge(windChargeSlot); } } - private void m(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - var2 = 8283165051676L ^ var2; - long var5 = var2 ^ 69271851807271L; - long var7 = var2 ^ 87032334136261L; - long var9 = var2 ^ 6839964455270L; - Event.b(); - Object[] var10006 = new Object[]{null, this.c(new Object[]{var9}), var7}; - var10006[0] = var4; - boolean var12 = this.d_boolean____(var10006); - if (!var12 && !this.A) { - this.toggle(new Object[]{var5}); + private void throwWindCharge(int windChargeSlot) { + if (!this.throwFromSlot(windChargeSlot, this.getWindChargeRotation()) && !this.itemUsed) { + this.toggle(); } else { - this.B = true; + this.disableAfterRelease = true; } } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 77504906702022L; - long var6 = var2 ^ 59679664126673L; - long var8 = var2 ^ 138119825400010L; - long var10 = var2 ^ 112547392999938L; - long var12 = var2 ^ 5545949845198L; - long var14 = var2 ^ 112194596139339L; - long var16 = var2 ^ 33109972671316L; - if (this.D != b.world) { - this.j(new Object[]{var6}); + public Rotation provideRotation() { + if (this.trackedWorld != mc.world) { + this.resetState(); } - if (!Prestige.o.c_boolean____(new Object[]{var4})) { - this.j(new Object[]{var6}); + if (!Prestige.silentRotationManager.canRotate()) { + this.resetState(); return null; - } else if (this.x != null) { - return this.x; - } else if (!((String)this.a.getValue()).equals("Macro")) { - if (this.r == PearlState.THROW_PEARL) { - return this.e(new Object[]{this.d(new Object[]{var10}), var12}); - } else if (this.r == PearlState.WAIT_FOR_LAUNCH) { - RenderBatch var20 = this.b_RenderBatch________(new Object[]{var8}); - return var20 == null && this.s > 2 ? null : this.e(new Object[]{var20 != null ? var20 : this.d(new Object[]{var10}), var12}); + } else if (this.lockedRotation != null) { + return this.lockedRotation; + } else if (!this.mode.getValue().equals("Macro")) { + if (this.state == DiagonalPearlState.THROW_PEARL) { + return this.lockRotation(this.getViewRotation()); + } else if (this.state == DiagonalPearlState.WAIT_FOR_LAUNCH) { + Rotation interceptRotation = this.getInterceptRotation(); + return interceptRotation == null && this.ticksUntilWindCharge > 2 ? null : this.lockRotation((Rotation)(interceptRotation != null ? interceptRotation : this.getViewRotation())); } else { - return this.r == PearlState.THROW_WIND_CHARGE ? this.e(new Object[]{this.c(new Object[]{var16}), var12}) : null; + return this.state == DiagonalPearlState.THROW_WIND_CHARGE ? this.lockRotation(this.getWindChargeRotation()) : null; } } else { - boolean var19 = !this.w || this.v.a_float__________________(new Object[]{var14}) + 55.0F >= (Float)this.c.getValue(); - return var19 ? this.e(new Object[]{this.d(new Object[]{var10}), var12}) : null; + return (!this.macroPearlThrown || this.pearlTimer.getElapsed() + 55.0F >= this.windChargeDelay.getValue()) ? this.lockRotation(this.getViewRotation()) : null; } } - private RenderBatch b_RenderBatch________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 8283165051676L ^ var2; - long var4 = var2 ^ 93440723412446L; - if (!((String)this.a.getValue()).equals("Trajectory")) { + private Rotation getInterceptRotation() { + if (!this.mode.getValue().equals("Trajectory")) { return null; - } else if (!(Boolean)this.d.getValue()) { + } else if (!this.silentAim.getValue()) { return null; - } else if (b.player == null) { + } else if (mc.player == null) { return null; - } else if (this.u == null) { + } else if (this.solution == null) { return null; - } else if (this.r != PearlState.WAIT_FOR_LAUNCH && this.r != PearlState.THROW_WIND_CHARGE) { + } else if (this.state != DiagonalPearlState.WAIT_FOR_LAUNCH && this.state != DiagonalPearlState.THROW_WIND_CHARGE) { return null; } else { - float var10000 = this.u.b - b.player.getYaw(); - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var10000; - float var7 = Math.abs(WorldUtil.b_float_____________________(var10003)); - return var7 > this.e.getValue() ? null : new RenderBatch(this.u.b, this.u.c); + return Math.abs(RotationUtil.wrapDegrees(this.solution.yaw - mc.player.getYaw())) > this.maxYawDelta.getValue() ? null : new Rotation(this.solution.yaw, this.solution.pitch); } } - private RenderBatch c(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 8283165051676L ^ var2; - long var4 = var2 ^ 109998677274754L; - long var6 = var2 ^ 140505230197322L; - Event.b(); - RenderBatch var9 = this.b_RenderBatch________(new Object[]{var4}); - return var9 != null ? var9 : this.d(new Object[]{var6}); + private Rotation getWindChargeRotation() { + Rotation interceptRotation = this.getInterceptRotation(); + return interceptRotation != null ? interceptRotation : this.getViewRotation(); } - private RenderBatch d(Object[] var1) { - return new RenderBatch(b.player.getYaw(), b.player.getPitch()); + private Rotation getViewRotation() { + return new Rotation(mc.player.getYaw(), mc.player.getPitch()); } - private boolean a_boolean_____________________________(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - long var3 = (Long)var1[1]; - var3 = 8283165051676L ^ var3; - long var5 = var3 ^ 68799133388487L; - long var7 = var3 ^ 125197213067628L; - long var9 = var3 ^ 130960080118814L; - Vec3d var11 = b.player.getEyePos(); - Vec3d var12 = b.player.getVelocity(); - boolean var13 = b.player.isOnGround(); - Object[] var10007 = new Object[]{null, null, null, null, var5}; - var10007[3] = 17; - var10007[2] = var13; - var10007[1] = var12; - var10007[0] = var11; - List var14 = this.b_List_____(var10007); - MathHelper2 var15 = (MathHelper2)var14.get(0); - float var10003 = var2.a(new Object[0]); - float var10004 = var2.b(new Object[0]); - var10007 = new Object[]{null, null, null, var7}; - var10007[2] = var10004; - var10007[1] = var10003; - var10007[0] = var15; - this.t = this.c_List(var10007); - this.u = this.a_RenderHelper3(new Object[]{var14, this.t, var9}); - return this.u != null; + private boolean solveIntercept(Rotation pearlRotation) { + List playerStates = this.simulatePlayerMotion(mc.player.getEyePos(), mc.player.getVelocity(), mc.player.isOnGround(), 17); + this.pearlPath = this.simulatePearlPath((MotionState)playerStates.get(0), pearlRotation.getYaw(), pearlRotation.getPitch()); + this.solution = this.findBestIntercept(playerStates, this.pearlPath); + return this.solution != null; } - private boolean d_boolean____(Object[] var1) { - int var2 = (Integer)var1[0]; - RenderBatch var3 = (RenderBatch)var1[1]; - long var4 = (Long)var1[2]; - var4 = 8283165051676L ^ var4; - long var6 = var4 ^ 67080602797861L; - long var8 = var4 ^ 14304432405104L; - long var10 = var4 ^ 94015048426533L; - if (Prestige.o.d_boolean______(new Object[0])) { + private boolean throwFromSlot(int slot, Rotation rotation) { + if (Prestige.silentRotationManager.hasActedThisTick()) { return false; } else { - RenderBatch var13 = this.e(new Object[]{var3, var10}); - if (this.y && !this.A) { - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var2; - InventoryUtil.a_void________(var10003); - float var14 = b.player.getYaw(); - float var15 = b.player.getPitch(); + Rotation throwRotation = this.lockRotation(rotation); + if (this.rotationSynced && !this.itemUsed) { + InventoryUtil.selectSlot(slot); + float previousYaw = mc.player.getYaw(); + float previousPitch = mc.player.getPitch(); - boolean var17; + boolean success; try { - b.player.setYaw(var13.a(new Object[0])); - b.player.setPitch(var13.b(new Object[0])); - boolean var16 = InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var8}); - this.A = true; - var17 = var16; + mc.player.setYaw(throwRotation.getYaw()); + mc.player.setPitch(throwRotation.getPitch()); + boolean used = PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.itemUsed = true; + success = used; } finally { - b.player.setYaw(var14); - b.player.setPitch(var15); + mc.player.setYaw(previousYaw); + mc.player.setPitch(previousPitch); } - return var17; + return success; } else { return false; } } } - private RenderBatch e(Object[] var1) { - RenderBatch var4 = (RenderBatch)var1[0]; - long var2 = (Long)var1[1]; - var2 = 8283165051676L ^ var2; - long var5 = var2 ^ 113053407013582L; - long var7 = var2 ^ 48851467604954L; - if (this.x == null) { - float var10 = var4.a(new Object[0]); - if (b.player != null) { - float var10000 = b.player.getYaw(); - float var10001 = var10 - b.player.getYaw(); - Object[] var10004 = new Object[]{null, var7}; - var10004[0] = var10001; - var10 = var10000 + WorldUtil.b_float_____________________(var10004); + private Rotation lockRotation(Rotation requestedRotation) { + if (this.lockedRotation == null) { + float adjustedYaw = requestedRotation.getYaw(); + if (mc.player != null) { + adjustedYaw = mc.player.getYaw() + RotationUtil.wrapDegrees(adjustedYaw - mc.player.getYaw()); } - this.x = new RenderBatch(var10, var4.b(new Object[0])); - this.y = false; - this.z = false; - this.A = false; - this.C = b.world; + this.lockedRotation = new Rotation(adjustedYaw, requestedRotation.getPitch()); + this.rotationSynced = false; + this.rotationApplied = false; + this.itemUsed = false; + this.lockWorld = mc.world; } - Prestige.o.a_boolean_____________________________________________(new Object[]{this, this.x, var5}); - return this.x; + Prestige.silentRotationManager.tryLockRotation(this, this.lockedRotation); + return this.lockedRotation; } @Subscribe - public void a(FloatEvent2 var1) { - if (this.x != null) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE) { - if (!Prestige.o.a_boolean_____________________________________________(new Object[]{this, this.x, 48219934824613L})) { - this.z = false; + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (this.lockedRotation != null) { + if (event.getPhase() == EventPhase.PRE) { + if (!Prestige.silentRotationManager.tryLockRotation(this, this.lockedRotation)) { + this.rotationApplied = false; } else { - var1.b(new Object[]{this.x.a(new Object[0])}); - var1.c(new Object[]{this.x.b(new Object[0])}); - this.z = true; + event.setYaw(this.lockedRotation.getYaw()); + event.setPitch(this.lockedRotation.getPitch()); + this.rotationApplied = true; } - } else if (var1.a_EventPhase(new Object[0]) == EventPhase.POST && this.z) { - this.z = false; - if (Prestige.o.b_boolean_______(new Object[]{this, 14074758807540L})) { - if (this.A) { - boolean var13 = this.B; - this.n(new Object[]{83958210688673L}); - if (var13 && this.isEnabled()) { - this.toggle(new Object[]{115103427876780L}); + } else if (event.getPhase() == EventPhase.POST && this.rotationApplied) { + this.rotationApplied = false; + if (Prestige.silentRotationManager.isLockHeldBy(this)) { + if (this.itemUsed) { + boolean shouldDisable = this.disableAfterRelease; + this.releaseRotationLock(); + if (shouldDisable && this.isEnabled()) { + this.toggle(); } } else { - this.y = true; + this.rotationSynced = true; } } } } } - private void n(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 8283165051676L ^ var2; - long var4 = var2 ^ 102277432628873L; - Prestige.o.c_void___(new Object[]{this, var4}); - this.x = null; - this.C = null; - this.y = false; - this.z = false; - this.A = false; - this.B = false; + private void releaseRotationLock() { + Prestige.silentRotationManager.releaseLock(this); + this.lockedRotation = null; + this.lockWorld = null; + this.rotationSynced = false; + this.rotationApplied = false; + this.itemUsed = false; + this.disableAfterRelease = false; } - private int a_int____________(Object[] var1) { - Predicate var2 = (Predicate)var1[0]; - Event.b(); - - for (int var6 = 0; var6 < 9; var6++) { - ItemStack var7 = b.player.getInventory().getStack(var6); - if (var2.test(var7)) { - return var6; + private int findHotbarSlot(Predicate filter) { + for (int slot = 0; slot < 9; slot++) { + if (filter.test(mc.player.getInventory().getStack(slot))) { + return slot; } } return -1; } - private static Vec3d a_class_243______________(Object[] var0) { - Vec3d var3 = (Vec3d)var0[0]; - double var1 = (Double)var0[1]; - Vec3d var4 = (Vec3d)var0[2]; - boolean var7 = (Boolean)var0[3]; - return var3.multiply(var1).add(var4.x, var7 ? 0.0 : var4.y, var4.z); + private static Vec3d computeLaunchVelocity(Vec3d direction, double speed, Vec3d shooterVelocity, boolean shooterOnGround) { + return direction.multiply(speed).add(shooterVelocity.x, shooterOnGround ? 0.0 : shooterVelocity.y, shooterVelocity.z); } - private List b_List_____(Object[] var1) { - Vec3d var3 = (Vec3d)var1[0]; - Vec3d var5 = (Vec3d)var1[1]; - boolean var4 = (Boolean)var1[2]; - int var2 = (Integer)var1[3]; - Event.b(); - ArrayList var9 = new ArrayList(var2 + 1); - Vec3d var10 = var3; - Vec3d var11 = var5; - var9.add(new MathHelper2(var3, var5, var4)); + private List simulatePlayerMotion(Vec3d startPos, Vec3d startVelocity, boolean onGround, int ticks) { + ArrayList states = new ArrayList(ticks + 1); + Vec3d pos = startPos; + Vec3d velocity = startVelocity; + states.add(new MotionState(startPos, startVelocity, onGround)); - for (int var13 = 0; var13 < var2; var13++) { - var10 = var10.add(var11); - double var14 = (var11.y - 0.08) * 0.98; - double var16 = var11.x * 0.91; - double var18 = var11.z * 0.91; - var11 = new Vec3d(var16, var14, var18); - var9.add(new MathHelper2(var10, var11, false)); + for (int tick = 0; tick < ticks; tick++) { + pos = pos.add(velocity); + velocity = new Vec3d(velocity.x * 0.91, (velocity.y - 0.08) * 0.98, velocity.z * 0.91); + states.add(new MotionState(pos, velocity, false)); } - return var9; + return states; } - private List c_List(Object[] var1) { - MathHelper2 var2 = (MathHelper2)var1[0]; - float var3 = (Float)var1[1]; - float var6 = (Float)var1[2]; - long var4 = (Long)var1[3]; - var4 = 8283165051676L ^ var4; - long var7 = var4 ^ 11475859869302L; - long var9 = var4 ^ 105762616860040L; - ArrayList var13 = new ArrayList(31); - Object[] var10004 = new Object[]{null, null, var9}; - var10004[1] = var6; - var10004[0] = var3; - Vec3d var14 = b_class_243____(var10004); - Vec3d var10002 = var2.b; - boolean var10003 = var2.c; - Object[] var10006 = new Object[]{null, null, null, null, var7}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = 1.5; - var10006[0] = var14; - Vec3d var15 = a_class_243______________(var10006); - Vec3d var16 = var2.a; - var13.add(var16); + private List simulatePearlPath(MotionState shooter, float yaw, float pitch) { + ArrayList path = new ArrayList(31); + Vec3d velocity = computeLaunchVelocity(directionFromRotation(yaw, pitch), 1.5, shooter.velocity, shooter.onGround); + Vec3d pos = shooter.pos; + path.add(pos); - for (int var17 = 0; var17 < 30; var17++) { - var16 = var16.add(var15); - var15 = var15.multiply(0.99).subtract(0.0, 0.03, 0.0); - var13.add(var16); - if (var16.y < var2.a.y - 256.0) { + for (int tick = 0; tick < 30; tick++) { + pos = pos.add(velocity); + velocity = velocity.multiply(0.99).subtract(0.0, 0.03, 0.0); + path.add(pos); + if (pos.y < shooter.pos.y - 256.0) { break; } } - return var13; + return path; } - private List d_List(Object[] var1) { - MathHelper2 var6 = (MathHelper2)var1[0]; - float var7 = (Float)var1[1]; - float var2 = (Float)var1[2]; - int var5 = (Integer)var1[3]; - long var3 = (Long)var1[4]; - var3 = 8283165051676L ^ var3; - long var8 = var3 ^ 103555905484689L; - long var10 = var3 ^ 57663514584175L; - Event.b(); - ArrayList var13 = new ArrayList(var5 + 1); - Object[] var10004 = new Object[]{null, null, var10}; - var10004[1] = var2; - var10004[0] = var7; - Vec3d var14 = b_class_243____(var10004); - Vec3d var10002 = var6.b; - boolean var10003 = var6.c; - Object[] var10006 = new Object[]{null, null, null, null, var8}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = 1.5; - var10006[0] = var14; - Vec3d var15 = a_class_243______________(var10006); - Vec3d var16 = var6.a; - var13.add(var16); + private List simulateWindChargePath(MotionState shooter, float yaw, float pitch, int ticks) { + ArrayList path = new ArrayList(ticks + 1); + Vec3d velocity = computeLaunchVelocity(directionFromRotation(yaw, pitch), 1.5, shooter.velocity, shooter.onGround); + Vec3d pos = shooter.pos; + path.add(pos); - for (int var17 = 0; var17 < var5; var17++) { - var16 = var16.add(var15); - var15 = var15.multiply(0.99); - var13.add(var16); + for (int tick = 0; tick < ticks; tick++) { + pos = pos.add(velocity); + velocity = velocity.multiply(0.99); + path.add(pos); } - return var13; + return path; } - private RenderHelper3 a_RenderHelper3(Object[] var1) { - List var4 = (List)var1[0]; - List var5 = (List)var1[1]; - long var2 = (Long)var1[2]; - var2 = 8283165051676L ^ var2; - long var6 = var2 ^ 76212563303480L; - long var8 = var2 ^ 75153131281404L; - RenderHelper3 var11 = null; - Event.b(); - double var12 = Double.MAX_VALUE; - int var15 = var5.size(); - int var16 = var4.size(); + private PearlThrowSolution findBestIntercept(List playerStates, List pearlPositions) { + PearlThrowSolution best = null; + double bestMiss = Double.MAX_VALUE; + int pearlTickCount = pearlPositions.size(); + int stateCount = playerStates.size(); - for (int var17 = 2; var17 <= 15 && var17 < var15 - 1 && var17 < var16; var17++) { - MathHelper2 var18 = (MathHelper2)var4.get(var17); + for (int throwTick = 2; throwTick <= 15 && throwTick < pearlTickCount - 1 && throwTick < stateCount; throwTick++) { + MotionState throwState = (MotionState)playerStates.get(throwTick); - for (int var19 = var17 + 1; var19 < var15; var19++) { - Vec3d var20 = (Vec3d)var5.get(var19); - int var21 = var19 - var17; - Vec3d var22 = var20.subtract(var18.a); - if (!(var22.lengthSquared() < 1.0E-6)) { - Vec3d var23 = var18.c ? new Vec3d(var18.b.x, 0.0, var18.b.z) : var18.b; - Vec3d var24 = var22.subtract(var23.multiply(var21)); - float var25 = (float)Math.toDegrees(Math.atan2(-var24.x, var24.z)); - double var26 = Math.sqrt(var24.x * var24.x + var24.z * var24.z); - float var28 = (float)Math.toDegrees(-Math.atan2(var24.y, var26)); + for (int pearlTick = throwTick + 1; pearlTick < pearlTickCount; pearlTick++) { + Vec3d pearlPos = (Vec3d)pearlPositions.get(pearlTick); + int flightTicks = pearlTick - throwTick; + Vec3d toPearl = pearlPos.subtract(throwState.pos); + if (!(toPearl.lengthSquared() < 1.0E-6)) { + Vec3d aimVector = toPearl.subtract((throwState.onGround ? new Vec3d(throwState.velocity.x, 0.0, throwState.velocity.z) : throwState.velocity).multiply(flightTicks)); + float baseYaw = (float)Math.toDegrees(Math.atan2(-aimVector.x, aimVector.z)); + double horizontalDist = Math.sqrt(aimVector.x * aimVector.x + aimVector.z * aimVector.z); + float basePitch = (float)Math.toDegrees(-Math.atan2(aimVector.y, horizontalDist)); - for (float var29 = var28 - 5.0F; var29 <= var28 + 5.0F; var29 += 0.5F) { - for (float var30 = var25 - 5.0F; var30 <= var25 + 5.0F; var30 += 0.5F) { - Object[] var10009 = new Object[]{null, null, null, null, null, null, var8}; - var10009[5] = var29; - var10009[4] = var30; - var10009[3] = var21; - var10009[2] = var17; - var10009[1] = var5; - var10009[0] = var18; - RenderHelper3 var31 = this.b_RenderHelper3(var10009); - if (var31 != null && var31.d < var12) { - var12 = var31.d; - var11 = var31; + for (float pitch = basePitch - 5.0F; pitch <= basePitch + 5.0F; pitch += 0.5F) { + for (float yaw = baseYaw - 5.0F; yaw <= baseYaw + 5.0F; yaw += 0.5F) { + PearlThrowSolution candidate = this.evaluateIntercept(throwState, pearlPositions, throwTick, flightTicks, yaw, pitch); + if (candidate != null && candidate.missDistance < bestMiss) { + bestMiss = candidate.missDistance; + best = candidate; } } } @@ -630,185 +426,78 @@ public class DiagonalPearlCatch extends Module implements RenderContract3 { } } - if (var11 == null) { + if (best == null) { return null; } else { - MathHelper2 var33 = (MathHelper2)var4.get(var11.a); + MotionState refineState = (MotionState)playerStates.get(best.throwTick); - for (float var34 = var11.c - 0.5F; var34 <= var11.c + 0.5F; var34 += 0.05F) { - for (float var35 = var11.b - 1.0F; var35 <= var11.b + 1.0F; var35 += 0.1F) { - int var10003 = var11.a; - Object[] var10008 = new Object[]{null, null, null, null, null, var6}; - var10008[4] = var34; - var10008[3] = var35; - var10008[2] = var10003; - var10008[1] = var5; - var10008[0] = var33; - RenderHelper3 var36 = this.c_RenderHelper3(var10008); - if (var36 != null && var36.d < var11.d) { - var11 = var36; + for (float refinePitch = best.pitch - 0.5F; refinePitch <= best.pitch + 0.5F; refinePitch += 0.05F) { + for (float refineYaw = best.yaw - 1.0F; refineYaw <= best.yaw + 1.0F; refineYaw += 0.1F) { + PearlThrowSolution refined = this.evaluateRefinedIntercept(refineState, pearlPositions, best.throwTick, refineYaw, refinePitch); + if (refined != null && refined.missDistance < best.missDistance) { + best = refined; } } } - return var11.d > 0.4 ? null : var11; + return best.missDistance > 0.4 ? null : best; } } - private RenderHelper3 b_RenderHelper3(Object[] var1) { - MathHelper2 var9 = (MathHelper2)var1[0]; - List var3 = (List)var1[1]; - int var2 = (Integer)var1[2]; - int var6 = (Integer)var1[3]; - float var4 = (Float)var1[4]; - float var5 = (Float)var1[5]; - long var7 = (Long)var1[6]; - var7 = 8283165051676L ^ var7; - long var10 = var7 ^ 25146424176489L; - Event.b(); - int var10005 = var6 + 4; - Object[] var10008 = new Object[]{null, null, null, null, var10}; - var10008[3] = var10005; - var10008[2] = var5; - var10008[1] = var4; - var10008[0] = var9; - List var13 = this.d_List(var10008); - double var14 = Double.MAX_VALUE; - int var16 = var2; + private PearlThrowSolution evaluateIntercept(MotionState throwState, List pearlPositions, int throwTick, int flightTicks, float yaw, float pitch) { + List windPath = this.simulateWindChargePath(throwState, yaw, pitch, flightTicks + 4); + double bestDistanceSq = Double.MAX_VALUE; + int closestTick = throwTick; - for (int var17 = 1; var17 < var13.size(); var17++) { - int var18 = var2 + var17; - if (var18 >= var3.size()) { + for (int step = 1; step < windPath.size(); step++) { + int pearlTick = throwTick + step; + if (pearlTick >= pearlPositions.size()) { break; } - double var19 = ((Vec3d)var13.get(var17)).squaredDistanceTo((Vec3d)var3.get(var18)); - if (var19 < var14) { - var14 = var19; - var16 = var18; + double distanceSq = ((Vec3d)windPath.get(step)).squaredDistanceTo((Vec3d)pearlPositions.get(pearlTick)); + if (distanceSq < bestDistanceSq) { + bestDistanceSq = distanceSq; + closestTick = pearlTick; } } - return var14 == Double.MAX_VALUE ? null : new RenderHelper3(var2, var4, var5, Math.sqrt(var14), var16); + return bestDistanceSq == Double.MAX_VALUE ? null : new PearlThrowSolution(throwTick, yaw, pitch, Math.sqrt(bestDistanceSq), closestTick); } - private RenderHelper3 c_RenderHelper3(Object[] var1) { - MathHelper2 var4 = (MathHelper2)var1[0]; - List var3 = (List)var1[1]; - int var8 = (Integer)var1[2]; - float var7 = (Float)var1[3]; - float var2 = (Float)var1[4]; - long var5 = (Long)var1[5]; - var5 = 8283165051676L ^ var5; - long var9 = var5 ^ 26215253338285L; - Event.b(); - int var12 = var3.size() - var8; - if (var12 <= 1) { + private PearlThrowSolution evaluateRefinedIntercept(MotionState throwState, List pearlPositions, int throwTick, float yaw, float pitch) { + int remainingTicks = pearlPositions.size() - throwTick; + if (remainingTicks <= 1) { return null; } else { - Object[] var10007 = new Object[]{null, null, null, null, var9}; - var10007[3] = var12; - var10007[2] = var2; - var10007[1] = var7; - var10007[0] = var4; - List var13 = this.d_List(var10007); - double var14 = Double.MAX_VALUE; - int var16 = var8; + List windPath = this.simulateWindChargePath(throwState, yaw, pitch, remainingTicks); + double bestDistanceSq = Double.MAX_VALUE; + int closestTick = throwTick; - for (int var17 = 1; var17 < var13.size(); var17++) { - int var18 = var8 + var17; - if (var18 >= var3.size()) { + for (int step = 1; step < windPath.size(); step++) { + int pearlTick = throwTick + step; + if (pearlTick >= pearlPositions.size()) { break; } - double var19 = ((Vec3d)var13.get(var17)).squaredDistanceTo((Vec3d)var3.get(var18)); - if (var19 < var14) { - var14 = var19; - var16 = var18; + double distanceSq = ((Vec3d)windPath.get(step)).squaredDistanceTo((Vec3d)pearlPositions.get(pearlTick)); + if (distanceSq < bestDistanceSq) { + bestDistanceSq = distanceSq; + closestTick = pearlTick; } } - return var14 == Double.MAX_VALUE ? null : new RenderHelper3(var8, var7, var2, Math.sqrt(var14), var16); + return bestDistanceSq == Double.MAX_VALUE ? null : new PearlThrowSolution(throwTick, yaw, pitch, Math.sqrt(bestDistanceSq), closestTick); } } - private static Vec3d b_class_243____(Object[] var0) { - float var1 = (Float)var0[0]; - float var4 = (Float)var0[1]; - float var5 = (float)Math.toRadians(var1); - float var6 = (float)Math.toRadians(var4); - double var7 = -MathHelper.sin(var5) * MathHelper.cos(var6); - double var9 = -MathHelper.sin(var6); - double var11 = MathHelper.cos(var5) * MathHelper.cos(var6); - double var13 = Math.sqrt(var7 * var7 + var9 * var9 + var11 * var11); - return var13 < 1.0E-9 ? new Vec3d(0.0, 0.0, 1.0) : new Vec3d(var7 / var13, var9 / var13, var11 / var13); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static Vec3d directionFromRotation(float yaw, float pitch) { + float yawRad = (float)Math.toRadians(yaw); + float pitchRad = (float)Math.toRadians(pitch); + double dirX = -MathHelper.sin(yawRad) * MathHelper.cos(pitchRad); + double dirY = -MathHelper.sin(pitchRad); + double dirZ = MathHelper.cos(yawRad) * MathHelper.cos(pitchRad); + double length = Math.sqrt(dirX * dirX + dirY * dirY + dirZ * dirZ); + return length < 1.0E-9 ? new Vec3d(0.0, 0.0, 1.0) : new Vec3d(dirX / length, dirY / length, dirZ / length); } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/ElytraWindCharge.java b/src/main/java/dev/zprestige/prestige/module/mace/ElytraWindCharge.java index b6d46b1..ce1c915 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/ElytraWindCharge.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/ElytraWindCharge.java @@ -4,150 +4,113 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent5; +import dev.zprestige.prestige.event.DoItemUseEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import dev.zprestige.prestige.world.PositionUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import net.minecraft.client.util.InputUtil; import net.minecraft.entity.EquipmentSlot; -import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket; import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket.Mode; import net.minecraft.util.Hand; import net.minecraft.util.math.Vec3d; -public class ElytraWindCharge extends Module implements RenderContract3 { +public class ElytraWindCharge extends Module implements RotationProvider { public ElytraWindCharge() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private boolean i; - private int a = 0; - private RenderHelper27 c = new RenderHelper27(26293358099357L); - private RenderHelper27 d = new RenderHelper27(26293358099357L); - private boolean e; - private static final long l = -1612205855334203384L; + private boolean equippingElytra; + private int slotToRestore = 0; + private StopWatch glideTimer = new StopWatch(); + private StopWatch windChargeTimer = new StopWatch(); + private static final long LAST_HOTBAR_SLOT = -1612205855334203384L; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Subscribe - public void a(TickEvent5 var1) { - if (!this.i) { - if (InventoryUtil.l(new Object[]{Items.NETHERITE_CHESTPLATE, 65539821781598L}) - || InventoryUtil.l(new Object[]{Items.DIAMOND_CHESTPLATE, 65539821781598L})) { - this.toggle(new Object[]{115103427876780L}); + public void onDoItemUse(DoItemUseEvent event) { + if (!this.equippingElytra) { + if (InventoryUtil.isHolding(Items.NETHERITE_CHESTPLATE) + || InventoryUtil.isHolding(Items.DIAMOND_CHESTPLATE)) { + this.toggle(); } } } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140072483835707L; - long var6 = var2 ^ 29247161167908L; - long var8 = var2 ^ 128670251638447L; - long var10 = var2 ^ 114949303762359L; - long var12 = var2 ^ 120434008667598L; - long var14 = var2 ^ 102840094869659L; - long var16 = var2 ^ 38214632243944L; - long var18 = var2 ^ 85547089512629L; - long var20 = var2 ^ 4277139717926L; - long var22 = var2 ^ 58982489950237L; - long var24 = var2 ^ 127616945565159L; - long var26 = var2 ^ 46949571541433L; - if (b.currentScreen == null && b.isWindowFocused()) { - this.i = false; - if (this.a != -1) { - int var44 = this.a; - Object[] var45 = new Object[]{null, var12}; - var45[0] = var44; - InventoryUtil.a_void________(var45); - this.a = -1; + public Rotation provideRotation() { + if (mc.currentScreen == null && mc.isWindowFocused()) { + this.equippingElytra = false; + if (this.slotToRestore != -1) { + InventoryUtil.selectSlot(this.slotToRestore); + this.slotToRestore = -1; return null; - } else if (b.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { - if (InventoryUtil.l(new Object[]{Items.ELYTRA, var24})) { - this.i = true; - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var14}); + } else if (mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { + if (InventoryUtil.isHolding(Items.ELYTRA)) { + this.equippingElytra = true; + PlayerInteractions.interactItem(Hand.MAIN_HAND); } else { - Integer var41 = InventoryUtil.a_Integer(new Object[]{Items.ELYTRA, var8}); - if (var41 != null) { - int var43 = var41; - Object[] var10003 = new Object[]{null, var12}; - var10003[0] = var43; - InventoryUtil.a_void________(var10003); + Integer elytraSlot = InventoryUtil.findHotbarSlot(Items.ELYTRA); + if (elytraSlot != null) { + InventoryUtil.selectSlot(elytraSlot); } } return null; - } else if (b.player.isOnGround()) { - b.options.jumpKey.setPressed(true); + } else if (mc.player.isOnGround()) { + mc.options.jumpKey.setPressed(true); return null; } else { - b.options.jumpKey.setPressed(false); - if (!PositionUtil.a_boolean________________________________________________(new Object[]{var16})) { - if (!b.player.isOnGround()) { - RenderHelper27 var42 = this.c; - Object[] var46 = new Object[]{null, var18}; - var46[0] = 400.0F; - if (var42.a(var46)) { - InventoryUtil2.b_void___(new Object[]{var10}); - b.player.networkHandler.sendPacket(new ClientCommandC2SPacket(b.player, Mode.START_FALL_FLYING)); - b.options.jumpKey.setPressed(true); - this.c.a_void_____________________(new Object[]{var6}); + mc.options.jumpKey.setPressed(false); + if (!PositionUtil.isPlayerGliding()) { + if (!mc.player.isOnGround()) { + if (this.glideTimer.hasElapsed(400.0F)) { + PlayerInteractions.startGliding(); + mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, Mode.START_FALL_FLYING)); + mc.options.jumpKey.setPressed(true); + this.glideTimer.reset(); } } return null; } else { - RenderHelper27 var10000 = this.d; - Object[] var10004 = new Object[]{null, var18}; - var10004[0] = 400.0F; - if (!var10000.a(var10004)) { + if (!this.windChargeTimer.hasElapsed(400.0F)) { return null; } else { - Vec3d var29 = b.player.getVelocity(); - float var30 = b.player.getYaw(); - double var31 = Math.toRadians(var30); - Vec3d var33 = new Vec3d(-Math.sin(var31), 0.0, Math.cos(var31)).normalize(); - float var34 = (float)(var29.x * var33.x + var29.z * var33.z); - float var35 = 0.4F; - float var36 = 1.2F; - float var37 = Math.max(0.0F, Math.min(1.0F, var34)); - float var38 = var36 - (var36 - var35) * var37; - if (PositionUtil.a_double___________(new Object[]{b.player, var26}) > var38) { + Vec3d velocity = mc.player.getVelocity(); + double yawRadians = Math.toRadians(mc.player.getYaw()); + Vec3d forward = new Vec3d(-Math.sin(yawRadians), 0.0, Math.cos(yawRadians)).normalize(); + float forwardSpeed = (float)(velocity.x * forward.x + velocity.z * forward.z); + float minTriggerHeight = 0.4F; + float maxTriggerHeight = 1.2F; + float triggerHeight = maxTriggerHeight - (maxTriggerHeight - minTriggerHeight) * Math.max(0.0F, Math.min(1.0F, forwardSpeed)); + if (PositionUtil.getHeightAboveGround(mc.player) > triggerHeight) { return null; } else { - float var39 = 87.0F + RenderUtil5.a.nextFloat() * 3.0F; - int var40 = this.d(new Object[]{var20}); - if (var40 == -1) { + float throwPitch = 87.0F + RandomUtil.RANDOM.nextFloat() * 3.0F; + int windChargeSlot = this.findWindChargeSlot(); + if (windChargeSlot == -1) { return null; } else { - this.a = InventoryUtil.a_int_____(new Object[]{var22}); - Runnable var10001 = () -> { - float var5 = b.player.getPitch(); - b.player.setPitch(var39); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - b.player.setPitch(var5); - }; - Object[] var10005 = new Object[]{null, null, null, var4}; - var10005[2] = false; - var10005[1] = var10001; - var10005[0] = var40; - InventoryUtil.b_void__(var10005); - this.d.a_void_____________________(new Object[]{var6}); - return new RenderBatch(b.player.getYaw(), var39); + this.slotToRestore = InventoryUtil.getSelectedSlot(); + InventoryUtil.runWithSlot(windChargeSlot, () -> { + float previousPitch = mc.player.getPitch(); + mc.player.setPitch(throwPitch); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + mc.player.setPitch(previousPitch); + }, false); + this.windChargeTimer.reset(); + return new Rotation(mc.player.getYaw(), throwPitch); } } } @@ -159,101 +122,25 @@ public class ElytraWindCharge extends Module implements RenderContract3 { } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Event.b(); - Prestige.o.f(new Object[]{this, var4}); - if (!InputUtil.isKeyPressed(b.getWindow(), b.options.jumpKey.getDefaultKey().getCode())) { - b.options.jumpKey.setPressed(false); + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + if (!InputUtil.isKeyPressed(mc.getWindow(), mc.options.jumpKey.getDefaultKey().getCode())) { + mc.options.jumpKey.setPressed(false); } } - private int d(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 <= (int)l; var5++) { - ItemStack var6 = b.player.getInventory().getStack(var5); - if (var6.getItem().equals(Items.WIND_CHARGE)) { - return var5; + private int findWindChargeSlot() { + for (int slot = 0; slot <= (int)LAST_HOTBAR_SLOT; slot++) { + if (mc.player.getInventory().getStack(slot).getItem().equals(Items.WIND_CHARGE)) { + return slot; } } return -1; } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/FastPearlCatch.java b/src/main/java/dev/zprestige/prestige/module/mace/FastPearlCatch.java index df18e3a..7cc6121 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/FastPearlCatch.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/FastPearlCatch.java @@ -7,21 +7,18 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.event.TickEvent3; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.event.GameJoinEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.network.NetworkUtil; +import dev.zprestige.prestige.network.PacketSender; import dev.zprestige.prestige.reflect.MethodAccessor; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.type.PearlStage; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.type.FastPearlCatchStage; +import dev.zprestige.prestige.world.RotationUtil; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.Entity; @@ -35,738 +32,545 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; -public class FastPearlCatch extends Module implements RenderContract3 { - private static final float a = 1500.0F; - private EnumSetting c; - private FloatSetting d; - private FloatSetting e; - private FloatSetting f; - private FloatSetting g; - private BoolSetting h; - private BoolSetting i; - private FloatSetting j; - private boolean k; - private boolean l; - private RenderHelper27 m = new RenderHelper27(26293358099357L); - private boolean n; - private boolean o; - private float p; - private float q; - private RenderBatch r; - private boolean s; - private boolean t; - private boolean u; - private boolean v; - private Object w; - private Object x; - private int y = Integer.MIN_VALUE; - private PearlStage z = PearlStage.PREP; - private int A; - private int B = -1; +public class FastPearlCatch extends Module implements RotationProvider { + private EnumSetting mode; + private FloatSetting pearlAngle; + private FloatSetting offhandPearlAngle; + private FloatSetting offhandWindChargeAngle; + private FloatSetting windChargeAngle; + private BoolSetting swapBack; + private BoolSetting legitRotate; + private FloatSetting smoothing; + private boolean pearlThrown; + private boolean windChargeThrown; + private StopWatch pearlTimer = new StopWatch(); + private boolean pearlAimReady; + private boolean windChargeReady; + private float originalPitch; + private float originalYaw; + private Rotation lockedRotation; + private boolean rotationSynced; + private boolean rotationApplied; + private boolean itemUsed; + private boolean disableAfterRelease; + private Object lockWorld; + private Object trackedWorld; + private int lastUseTick = Integer.MIN_VALUE; + private FastPearlCatchStage offhandStage = FastPearlCatchStage.PREP; + private int originalSlot; + private int offhandSwapSlot = -1; public FastPearlCatch() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.d.setVisibility_FloatSetting(new Object[]{(Predicate)lpL208_0 -> ((String)this.c.getValue()).equals("Swap"), 35046756052036L}); - this.f.setVisibility_FloatSetting(new Object[]{(Predicate)lpL206_0 -> ((String)this.c.getValue()).equals("Offhand"), 35046756052036L}); - this.e.setVisibility_FloatSetting(new Object[]{(Predicate)lpL207_0 -> ((String)this.c.getValue()).equals("Offhand"), 35046756052036L}); - this.i.setVisibility_BoolSetting(new Object[]{(Predicate)lpL204_0 -> ((String)this.c.getValue()).equals("Swap"), 73196168581295L}); - this.j.setVisibility_FloatSetting(new Object[]{(Predicate)lpL203_0 -> (Boolean)this.i.getValue(), 35046756052036L}); - this.h.setVisibility_BoolSetting(new Object[]{(Predicate)lpL205_0 -> ((String)this.c.getValue()).equals("Swap"), 73196168581295L}); + this.pearlAngle.visibleWhen((Predicate)ignoredPearlAngle -> this.mode.getValue().equals("Swap")); + this.offhandWindChargeAngle.visibleWhen((Predicate)ignoredOffhandWindChargeAngle -> this.mode.getValue().equals("Offhand")); + this.offhandPearlAngle.visibleWhen((Predicate)ignoredOffhandPearlAngle -> this.mode.getValue().equals("Offhand")); + this.legitRotate.visibleWhen((Predicate)ignoredLegitRotate -> this.mode.getValue().equals("Swap")); + this.smoothing.visibleWhen((Predicate)ignoredSmoothing -> this.legitRotate.getValue()); + this.swapBack.visibleWhen((Predicate)ignoredSwapBack -> this.mode.getValue().equals("Swap")); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Subscribe - public void a(TickEvent24 var1) { - if (this.x != b.world) { - this.m(new Object[]{18978719144907L}); + public void onFrame(FrameEvent event) { + if (this.trackedWorld != mc.world) { + this.resetState(); } - if ((Boolean)this.i.getValue() && ((String)this.c.getValue()).equals("Swap")) { - if (this.e(new Object[]{138411142906974L})) { - this.k(new Object[]{49387181425026L}); + if (this.legitRotate.getValue() && this.mode.getValue().equals("Swap")) { + if (this.isUseKeyActive()) { + this.pauseForItemUse(); } else { - if (!this.k) { - RenderBatch var10000 = new RenderBatch(this.q, -(Float)this.d.getValue()); - float var10001 = (Float)this.j.getValue() / 2.0F; - Object[] var10006 = new Object[]{null, null, null, null, 40447786406815L}; - var10006[3] = 0.2F; - var10006[2] = 0.0F; - var10006[1] = var10001; - var10006[0] = var10000; - if (WorldUtil.c(var10006)) { - this.n = true; + if (!this.pearlThrown) { + if (RotationUtil.smoothRotate(new Rotation(this.originalYaw, -this.pearlAngle.getValue()), this.smoothing.getValue() / 2.0F, 0.0F, 0.2F)) { + this.pearlAimReady = true; } - } else if (this.l) { - if (this.u) { + } else if (this.windChargeThrown) { + if (this.itemUsed) { return; } - RenderBatch var2 = new RenderBatch(this.q, this.p); - float var3 = (Float)this.j.getValue() / 2.0F; - Object[] var4 = new Object[]{null, null, null, null, 40447786406815L}; - var4[3] = 0.2F; - var4[2] = 0.0F; - var4[1] = var3; - var4[0] = var2; - if (WorldUtil.c(var4)) { - this.toggle(new Object[]{115103427876780L}); + if (RotationUtil.smoothRotate(new Rotation(this.originalYaw, this.originalPitch), this.smoothing.getValue() / 2.0F, 0.0F, 0.2F)) { + this.toggle(); } } else { - this.o = true; + this.windChargeReady = true; } } } } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 43040229079061L; - long var6 = var2 ^ 52277468023920L; - long var8 = var2 ^ 29247161167908L; - long var10 = var2 ^ 77721887434032L; - long var12 = var2 ^ 55425823108071L; - long var14 = var2 ^ 120434008667598L; - long var16 = var2 ^ 102640691698968L; - long var18 = var2 ^ 109265412501051L; - long var20 = var2 ^ 30056340190671L; - long var22 = var2 ^ 13724982201792L; - long var24 = var2 ^ 77504906702022L; - long var26 = var2 ^ 106126499036750L; - long var28 = var2 ^ 90200738560140L; - long var30 = var2 ^ 104214641439858L; - if (this.x != b.world) { - this.m(new Object[]{var30}); + public Rotation provideRotation() { + if (this.trackedWorld != mc.world) { + this.resetState(); } - boolean var33 = this.e(new Object[]{var12}); - if (!Prestige.o.c_boolean____(new Object[]{var24})) { - this.m(new Object[]{var30}); + boolean usingItem = this.isUseKeyActive(); + if (!Prestige.silentRotationManager.canRotate()) { + this.resetState(); return null; - } else if (var33) { - this.k(new Object[]{var18}); - return this.u ? this.r : null; - } else if (this.r != null && this.u) { - return this.r; - } else if (b.isWindowFocused() && b.currentScreen == null) { - if ((Boolean)this.i.getValue() && ((String)this.c.getValue()).equals("Swap")) { - int var45 = this.k ? -1 : this.d_int_______(new Object[]{var6}); - int var46 = this.e_int_____(new Object[]{var16}); - if ((this.k || var45 != -1) && var46 != -1) { - if (this.n) { - RenderBatch var49 = this.c(new Object[]{new RenderBatch(this.q, -(Float)this.d.getValue()), var20}); - Object[] var73 = new Object[]{null, Hand.MAIN_HAND, var28}; - var73[0] = var45; - if (this.a_boolean______________________________(var73)) { - this.k = true; - this.n = false; - this.m.a_void_____________________(new Object[]{var8}); + } else if (usingItem) { + this.pauseForItemUse(); + return this.itemUsed ? this.lockedRotation : null; + } else if (this.lockedRotation != null && this.itemUsed) { + return this.lockedRotation; + } else if (mc.isWindowFocused() && mc.currentScreen == null) { + if (this.legitRotate.getValue() && this.mode.getValue().equals("Swap")) { + int legitPearlSlot = this.pearlThrown ? -1 : this.findPearlSlot(); + int legitWindChargeSlot = this.findWindChargeSlot(); + if ((this.pearlThrown || legitPearlSlot != -1) && legitWindChargeSlot != -1) { + if (this.pearlAimReady) { + Rotation legitPearlRotation = this.lockRotation(new Rotation(this.originalYaw, -this.pearlAngle.getValue())); + if (this.throwFromSlot(legitPearlSlot, Hand.MAIN_HAND)) { + this.pearlThrown = true; + this.pearlAimReady = false; + this.pearlTimer.reset(); } - return var49; + return legitPearlRotation; } else { - if (this.o) { - EnderPearlEntity var48 = null; - int var50 = Integer.MAX_VALUE; + if (this.windChargeReady) { + EnderPearlEntity legitPearl = null; + int legitYoungestAge = Integer.MAX_VALUE; - for (Entity var58 : b.world.getEntities()) { - if (var58 instanceof EnderPearlEntity var63 && var63.getOwner() == b.player && var63.age < var50) { - var50 = var63.age; - var48 = var63; + for (Entity legitEntity : mc.world.getEntities()) { + if (legitEntity instanceof EnderPearlEntity legitOwnPearl && legitOwnPearl.getOwner() == mc.player && legitOwnPearl.age < legitYoungestAge) { + legitYoungestAge = legitOwnPearl.age; + legitPearl = legitOwnPearl; } } - if (var48 == null) { - for (Entity var59 : b.world.getEntities()) { - if (var59 instanceof EnderPearlEntity var64) { - if (var64.getOwner() == b.player) { - var48 = var64; + if (legitPearl == null) { + for (Entity legitFallbackEntity : mc.world.getEntities()) { + if (legitFallbackEntity instanceof EnderPearlEntity legitFallbackPearl) { + if (legitFallbackPearl.getOwner() == mc.player) { + legitPearl = legitFallbackPearl; } break; } } } - if (var48 != null) { - Vec3d var55 = b.player.getVelocity(); - float var60 = this.q; - double var65 = Math.toRadians(var60); - Vec3d var66 = new Vec3d(-Math.sin(var65), 0.0, Math.cos(var65)).normalize(); - float var67 = (float)(var55.x * var66.x + var55.z * var66.z); - RenderBatch var68 = this.c(new Object[]{new RenderBatch(this.q, -(Float)this.g.getValue() + var67 * 1.6F), var20}); - Object[] var72 = new Object[]{null, Hand.MAIN_HAND, var28}; - var72[0] = var46; - if (this.a_boolean______________________________(var72)) { - this.l = true; - this.o = false; - if ((Boolean)this.h.getValue() && this.A != var46) { - int var69 = this.A; - Object[] var70 = new Object[]{null, var14}; - var70[0] = var69; - InventoryUtil.a_void________(var70); + if (legitPearl != null) { + Vec3d legitVelocity = mc.player.getVelocity(); + double legitYawRadians = Math.toRadians(this.originalYaw); + Vec3d legitForward = new Vec3d(-Math.sin(legitYawRadians), 0.0, Math.cos(legitYawRadians)).normalize(); + float legitForwardSpeed = (float)(legitVelocity.x * legitForward.x + legitVelocity.z * legitForward.z); + Rotation legitWindRotation = this.lockRotation(new Rotation(this.originalYaw, -this.windChargeAngle.getValue() + legitForwardSpeed * 1.6F)); + if (this.throwFromSlot(legitWindChargeSlot, Hand.MAIN_HAND)) { + this.windChargeThrown = true; + this.windChargeReady = false; + if (this.swapBack.getValue() && this.originalSlot != legitWindChargeSlot) { + InventoryUtil.selectSlot(this.originalSlot); } } - return new RenderBatch(var68.a(new Object[0]), var68.b(new Object[0])); + return new Rotation(legitWindRotation.getYaw(), legitWindRotation.getPitch()); } - if (this.d(new Object[]{var26})) { - this.toggle(new Object[]{var4}); + if (this.hasPearlTimedOut()) { + this.toggle(); } } return null; } } else { - this.toggle(new Object[]{var4}); + this.toggle(); return null; } - } else if (((String)this.c.getValue()).equals("Offhand")) { - return this.b_RenderBatch_________(new Object[]{var10}); + } else if (this.mode.getValue().equals("Offhand")) { + return this.runOffhandMode(); } else { - int var34 = this.k ? -1 : this.d_int_______(new Object[]{var6}); - int var35 = this.e_int_____(new Object[]{var16}); - if ((this.k || var34 != -1) && var35 != -1) { - if (!this.k) { - RenderBatch var47 = this.c(new Object[]{new RenderBatch(this.q, -(Float)this.d.getValue()), var20}); - Object[] var71 = new Object[]{null, Hand.MAIN_HAND, var28}; - var71[0] = var34; - if (this.a_boolean______________________________(var71)) { - this.k = true; - this.m.a_void_____________________(new Object[]{var8}); + int pearlSlot = this.pearlThrown ? -1 : this.findPearlSlot(); + int windChargeSlot = this.findWindChargeSlot(); + if ((this.pearlThrown || pearlSlot != -1) && windChargeSlot != -1) { + if (!this.pearlThrown) { + Rotation pearlRotation = this.lockRotation(new Rotation(this.originalYaw, -this.pearlAngle.getValue())); + if (this.throwFromSlot(pearlSlot, Hand.MAIN_HAND)) { + this.pearlThrown = true; + this.pearlTimer.reset(); } - return var47; + return pearlRotation; } else { - EnderPearlEntity var36 = null; - int var37 = Integer.MAX_VALUE; + EnderPearlEntity pearl = null; + int youngestAge = Integer.MAX_VALUE; - for (Entity var39 : b.world.getEntities()) { - if (var39 instanceof EnderPearlEntity var40 && var40.getOwner() == b.player && var40.age < var37) { - var37 = var40.age; - var36 = var40; + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EnderPearlEntity ownPearl && ownPearl.getOwner() == mc.player && ownPearl.age < youngestAge) { + youngestAge = ownPearl.age; + pearl = ownPearl; } } - if (var36 == null) { - for (Entity var56 : b.world.getEntities()) { - if (var56 instanceof EnderPearlEntity var61) { - if (var61.getOwner() == b.player) { - var36 = var61; + if (pearl == null) { + for (Entity fallbackEntity : mc.world.getEntities()) { + if (fallbackEntity instanceof EnderPearlEntity fallbackPearl) { + if (fallbackPearl.getOwner() == mc.player) { + pearl = fallbackPearl; } break; } } } - if (var36 != null) { - Vec3d var52 = b.player.getVelocity(); - float var57 = this.q; - double var62 = Math.toRadians(var57); - Vec3d var42 = new Vec3d(-Math.sin(var62), 0.0, Math.cos(var62)).normalize(); - float var43 = (float)(var52.x * var42.x + var52.z * var42.z); - RenderBatch var44 = this.c(new Object[]{new RenderBatch(this.q, -(Float)this.g.getValue() + var43 * 1.6F), var20}); - Object[] var10005 = new Object[]{null, Hand.MAIN_HAND, var28}; - var10005[0] = var35; - if (this.a_boolean______________________________(var10005)) { - if ((Boolean)this.h.getValue() && this.A != var35) { - int var10000 = this.A; - Object[] var10003 = new Object[]{null, var14}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + if (pearl != null) { + Vec3d velocity = mc.player.getVelocity(); + double yawRadians = Math.toRadians(this.originalYaw); + Vec3d forward = new Vec3d(-Math.sin(yawRadians), 0.0, Math.cos(yawRadians)).normalize(); + float forwardSpeed = (float)(velocity.x * forward.x + velocity.z * forward.z); + Rotation windRotation = this.lockRotation(new Rotation(this.originalYaw, -this.windChargeAngle.getValue() + forwardSpeed * 1.6F)); + if (this.throwFromSlot(windChargeSlot, Hand.MAIN_HAND)) { + if (this.swapBack.getValue() && this.originalSlot != windChargeSlot) { + InventoryUtil.selectSlot(this.originalSlot); } - this.v = true; + this.disableAfterRelease = true; } - return new RenderBatch(var44.a(new Object[0]), var44.b(new Object[0])); + return new Rotation(windRotation.getYaw(), windRotation.getPitch()); } else { - if (this.d(new Object[]{var26})) { - this.toggle(new Object[]{var4}); + if (this.hasPearlTimedOut()) { + this.toggle(); } return null; } } } else { - this.toggle(new Object[]{var4}); + this.toggle(); return null; } } } else { - if (!this.u) { - this.l(new Object[]{var22}); + if (!this.itemUsed) { + this.releaseRotationLock(); } return null; } } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 11907200794228L ^ var2; - long var4 = var2 ^ 43551637260431L; - RenderHelper27 var10000 = this.m; - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = 1500.0F; - return var10000.a(var10004); + private boolean hasPearlTimedOut() { + return this.pearlTimer.hasElapsed(1500.0F); } - private RenderBatch b_RenderBatch_________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 11907200794228L ^ var2; - long var4 = var2 ^ 117928000512849L; - long var6 = var2 ^ 109880814704436L; - long var8 = var2 ^ 95648781314912L; - long var10 = var2 ^ 37301510663818L; - long var12 = var2 ^ 18956659394140L; - long var14 = var2 ^ 56326173299187L; - long var16 = var2 ^ 11467018583072L; - long var18 = var2 ^ 133868683809625L; - long var20 = var2 ^ 95873811754635L; - long var22 = var2 ^ 49348457161994L; - long var24 = var2 ^ 33454238344136L; - long var26 = var2 ^ 125964507441939L; - long var28 = var2 ^ 6427782732092L; - switch (this.z) { + private Rotation runOffhandMode() { + switch (this.offhandStage) { case PREP: - if (Prestige.o.d_boolean______(new Object[0])) { + if (Prestige.silentRotationManager.hasActedThisTick()) { return null; } else { - int var40 = this.d_int_______(new Object[]{var6}); - int var42 = this.e_int_____(new Object[]{var12}); - boolean var43 = InventoryUtil.m(new Object[]{Items.WIND_CHARGE, var28}); - if (var40 != -1 && (var43 || var42 != -1)) { - this.A = InventoryUtil.a_int_____(new Object[]{var18}); - this.B = -1; - if (!var43) { - if (InventoryUtil.a_int_____(new Object[]{var18}) != var42) { - Object[] var46 = new Object[]{null, var10}; - var46[0] = var42; - InventoryUtil.a_void________(var46); - this.j(new Object[]{var26}); + int pearlSlot = this.findPearlSlot(); + int windChargeSlot = this.findWindChargeSlot(); + boolean windChargeInOffhand = InventoryUtil.isHoldingOffhand(Items.WIND_CHARGE); + if (pearlSlot != -1 && (windChargeInOffhand || windChargeSlot != -1)) { + this.originalSlot = InventoryUtil.getSelectedSlot(); + this.offhandSwapSlot = -1; + if (!windChargeInOffhand) { + if (InventoryUtil.getSelectedSlot() != windChargeSlot) { + InventoryUtil.selectSlot(windChargeSlot); + this.syncSelectedSlot(); } - NetworkUtil.a(new Object[]{new PlayerActionC2SPacket(Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ORIGIN, Direction.DOWN), var14}); - this.B = var42; + PacketSender.sendPacket(new PlayerActionC2SPacket(Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ORIGIN, Direction.DOWN)); + this.offhandSwapSlot = windChargeSlot; } - if (InventoryUtil.a_int_____(new Object[]{var18}) != var40) { - Object[] var47 = new Object[]{null, var10}; - var47[0] = var40; - InventoryUtil.a_void________(var47); - this.j(new Object[]{var26}); + if (InventoryUtil.getSelectedSlot() != pearlSlot) { + InventoryUtil.selectSlot(pearlSlot); + this.syncSelectedSlot(); } - Prestige.o.g(new Object[]{true}); - this.z = PearlStage.PEARL; - return this.c(new Object[]{new RenderBatch(this.q, -(Float)this.e.getValue()), var20}); + Prestige.silentRotationManager.setActedThisTick(true); + this.offhandStage = FastPearlCatchStage.PEARL; + return this.lockRotation(new Rotation(this.originalYaw, -this.offhandPearlAngle.getValue())); } - this.toggle(new Object[]{var4}); + this.toggle(); return null; } case PEARL: - int var39 = this.d_int_______(new Object[]{var6}); - if (var39 == -1) { - this.toggle(new Object[]{var4}); + int currentPearlSlot = this.findPearlSlot(); + if (currentPearlSlot == -1) { + this.toggle(); return null; } - RenderBatch var41 = this.c(new Object[]{new RenderBatch(this.q, -(Float)this.e.getValue()), var20}); - Object[] var48 = new Object[]{null, Hand.MAIN_HAND, var24}; - var48[0] = var39; - if (this.a_boolean______________________________(var48)) { - this.m.a_void_____________________(new Object[]{var8}); - this.z = PearlStage.WIND; + Rotation pearlRotation = this.lockRotation(new Rotation(this.originalYaw, -this.offhandPearlAngle.getValue())); + if (this.throwFromSlot(currentPearlSlot, Hand.MAIN_HAND)) { + this.pearlTimer.reset(); + this.offhandStage = FastPearlCatchStage.WIND; } - return var41; + return pearlRotation; case WIND: - EnderPearlEntity var31 = this.a_class_1684__(new Object[]{var16}); - if (var31 == null) { - if (this.d(new Object[]{var22})) { - this.toggle(new Object[]{var4}); + if (this.findThrownPearl() == null) { + if (this.hasPearlTimedOut()) { + this.toggle(); } return null; } else { - Vec3d var32 = b.player.getVelocity(); - double var33 = Math.toRadians(this.q); - Vec3d var35 = new Vec3d(-Math.sin(var33), 0.0, Math.cos(var33)).normalize(); - float var36 = (float)(var32.x * var35.x + var32.z * var35.z); - RenderBatch var37 = this.c(new Object[]{new RenderBatch(this.q, -(Float)this.f.getValue() + var36 * 1.6F), var20}); - if (!InventoryUtil.m(new Object[]{Items.WIND_CHARGE, var28})) { - if (this.d(new Object[]{var22})) { - this.toggle(new Object[]{var4}); + Vec3d velocity = mc.player.getVelocity(); + double yawRadians = Math.toRadians(this.originalYaw); + Vec3d forward = new Vec3d(-Math.sin(yawRadians), 0.0, Math.cos(yawRadians)).normalize(); + float forwardSpeed = (float)(velocity.x * forward.x + velocity.z * forward.z); + Rotation windRotation = this.lockRotation(new Rotation(this.originalYaw, -this.offhandWindChargeAngle.getValue() + forwardSpeed * 1.6F)); + if (!InventoryUtil.isHoldingOffhand(Items.WIND_CHARGE)) { + if (this.hasPearlTimedOut()) { + this.toggle(); } - return new RenderBatch(var37.a(new Object[0]), var37.b(new Object[0])); + return new Rotation(windRotation.getYaw(), windRotation.getPitch()); } - Object[] var10005 = new Object[]{null, Hand.OFF_HAND, var24}; - var10005[0] = -1; - if (this.a_boolean______________________________(var10005)) { - this.z = PearlStage.RESTORE; + if (this.throwFromSlot(-1, Hand.OFF_HAND)) { + this.offhandStage = FastPearlCatchStage.RESTORE; } - return new RenderBatch(var37.a(new Object[0]), var37.b(new Object[0])); + return new Rotation(windRotation.getYaw(), windRotation.getPitch()); } case RESTORE: - if (Prestige.o.d_boolean______(new Object[0])) { + if (Prestige.silentRotationManager.hasActedThisTick()) { return null; } - if (this.B != -1) { - if (InventoryUtil.a_int_____(new Object[]{var18}) != this.B) { - int var10000 = this.B; - Object[] var10003 = new Object[]{null, var10}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - this.j(new Object[]{var26}); + if (this.offhandSwapSlot != -1) { + if (InventoryUtil.getSelectedSlot() != this.offhandSwapSlot) { + InventoryUtil.selectSlot(this.offhandSwapSlot); + this.syncSelectedSlot(); } - NetworkUtil.a(new Object[]{new PlayerActionC2SPacket(Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ORIGIN, Direction.DOWN), var14}); + PacketSender.sendPacket(new PlayerActionC2SPacket(Action.SWAP_ITEM_WITH_OFFHAND, BlockPos.ORIGIN, Direction.DOWN)); } - if (InventoryUtil.a_int_____(new Object[]{var18}) != this.A) { - int var44 = this.A; - Object[] var45 = new Object[]{null, var10}; - var45[0] = var44; - InventoryUtil.a_void________(var45); - this.j(new Object[]{var26}); + if (InventoryUtil.getSelectedSlot() != this.originalSlot) { + InventoryUtil.selectSlot(this.originalSlot); + this.syncSelectedSlot(); } - Prestige.o.g(new Object[]{true}); - this.toggle(new Object[]{var4}); + Prestige.silentRotationManager.setActedThisTick(true); + this.toggle(); return null; default: return null; } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 11907200794228L ^ var2; - long var4 = var2 ^ 93354449811845L; - long var6 = var2 ^ 79720529788136L; - + private void syncSelectedSlot() { try { - MethodAccessor.c(new Object[]{b.interactionManager, "syncSelectedSlot", new Class[0], var4}) - .b(new Object[]{b.interactionManager, new Object[0], var6}); - } catch (Throwable var8) { + MethodAccessor.forInstance(mc.interactionManager, "syncSelectedSlot", new Class[0]) + .invoke(mc.interactionManager, new Object[0]); + } catch (Throwable ignored) { } } - private EnderPearlEntity a_class_1684__(Object[] var1) { - Event.b(); - EnderPearlEntity var5 = null; - int var6 = Integer.MAX_VALUE; + private EnderPearlEntity findThrownPearl() { + EnderPearlEntity pearl = null; + int youngestAge = Integer.MAX_VALUE; - for (Entity var8 : b.world.getEntities()) { - if (var8 instanceof EnderPearlEntity var9 && var9.getOwner() == b.player && var9.age < var6) { - var6 = var9.age; - var5 = var9; + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EnderPearlEntity ownPearl && ownPearl.getOwner() == mc.player && ownPearl.age < youngestAge) { + youngestAge = ownPearl.age; + pearl = ownPearl; } } - if (var5 == null) { - for (Entity var11 : b.world.getEntities()) { - if (var11 instanceof EnderPearlEntity var12 && var12.getOwner() == b.player) { - var5 = var12; + if (pearl == null) { + for (Entity fallbackEntity : mc.world.getEntities()) { + if (fallbackEntity instanceof EnderPearlEntity fallbackPearl && fallbackPearl.getOwner() == mc.player) { + pearl = fallbackPearl; break; } } } - return var5; + return pearl; } - private boolean e(Object[] var1) { - Event.b(); - int var5 = b.player.age; - if (b.player.isUsingItem() || b.options.useKey.isPressed()) { - this.y = var5; + private boolean isUseKeyActive() { + int currentAge = mc.player.age; + if (mc.player.isUsingItem() || mc.options.useKey.isPressed()) { + this.lastUseTick = currentAge; return true; - } else if (this.y == Integer.MIN_VALUE) { + } else if (this.lastUseTick == Integer.MIN_VALUE) { return false; } else { - int var6 = var5 - this.y; - if (var6 >= 0 && var6 <= 1) { + int ticksSinceUse = currentAge - this.lastUseTick; + if (ticksSinceUse >= 0 && ticksSinceUse <= 1) { return true; } else { - this.y = Integer.MIN_VALUE; + this.lastUseTick = Integer.MIN_VALUE; return false; } } } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 11907200794228L ^ var2; - long var4 = var2 ^ 111942195764623L; - if (!this.u) { - this.l(new Object[]{var4}); + private void pauseForItemUse() { + if (!this.itemUsed) { + this.releaseRotationLock(); } - this.n = false; - this.o = false; + this.pearlAimReady = false; + this.windChargeReady = false; } - private RenderBatch c(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - long var3 = (Long)var1[1]; - var3 = 11907200794228L ^ var3; - long var5 = var3 ^ 129552561683623L; - if (this.r == null) { - this.r = new RenderBatch(var2.a(new Object[0]), var2.b(new Object[0])); - this.s = false; - this.t = false; - this.u = false; - this.w = b.world; + private Rotation lockRotation(Rotation rotation) { + if (this.lockedRotation == null) { + this.lockedRotation = new Rotation(rotation.getYaw(), rotation.getPitch()); + this.rotationSynced = false; + this.rotationApplied = false; + this.itemUsed = false; + this.lockWorld = mc.world; } - Prestige.o.a_boolean_____________________________________________(new Object[]{this, this.r, var5}); - return this.r; + Prestige.silentRotationManager.tryLockRotation(this, this.lockedRotation); + return this.lockedRotation; } - private boolean a_boolean______________________________(Object[] var1) { - int var5 = (Integer)var1[0]; - Hand var4 = (Hand)var1[1]; - long var2 = (Long)var1[2]; - var2 = 11907200794228L ^ var2; - long var6 = var2 ^ 58641752126262L; - if (this.r != null && this.s && !this.u && !Prestige.o.d_boolean______(new Object[0])) { - if (var5 >= 0) { - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var5; - InventoryUtil.a_void________(var10003); + private boolean throwFromSlot(int slot, Hand hand) { + if (this.lockedRotation != null && this.rotationSynced && !this.itemUsed && !Prestige.silentRotationManager.hasActedThisTick()) { + if (slot >= 0) { + InventoryUtil.selectSlot(slot); } - float var9 = b.player.getYaw(); - float var10 = b.player.getPitch(); + float previousYaw = mc.player.getYaw(); + float previousPitch = mc.player.getPitch(); - boolean var11; + boolean accepted; try { - b.player.setYaw(this.r.a(new Object[0])); - b.player.setPitch(this.r.b(new Object[0])); - var11 = b.interactionManager.interactItem(b.player, var4).isAccepted(); - Prestige.o.g(new Object[]{true}); - this.u = true; - if (var11) { - b.player.swingHand(var4); + mc.player.setYaw(this.lockedRotation.getYaw()); + mc.player.setPitch(this.lockedRotation.getPitch()); + accepted = mc.interactionManager.interactItem(mc.player, hand).isAccepted(); + Prestige.silentRotationManager.setActedThisTick(true); + this.itemUsed = true; + if (accepted) { + mc.player.swingHand(hand); } } finally { - b.player.setYaw(var9); - b.player.setPitch(var10); + mc.player.setYaw(previousYaw); + mc.player.setPitch(previousPitch); } - return var11; + return accepted; } else { return false; } } @Subscribe - public void a(FloatEvent2 var1) { - if (this.r != null) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE) { - if (!Prestige.o.a_boolean_____________________________________________(new Object[]{this, this.r, 48219934824613L})) { - this.t = false; + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (this.lockedRotation != null) { + if (event.getPhase() == EventPhase.PRE) { + if (!Prestige.silentRotationManager.tryLockRotation(this, this.lockedRotation)) { + this.rotationApplied = false; } else { - var1.b(new Object[]{this.r.a(new Object[0])}); - var1.c(new Object[]{this.r.b(new Object[0])}); - this.t = true; + event.setYaw(this.lockedRotation.getYaw()); + event.setPitch(this.lockedRotation.getPitch()); + this.rotationApplied = true; } - } else if (var1.a_EventPhase(new Object[0]) == EventPhase.POST && this.t) { - this.t = false; - if (Prestige.o.b_boolean_______(new Object[]{this, 14074758807540L})) { - if (this.u) { - boolean var13 = this.v; - this.l(new Object[]{74702765597305L}); - if (var13 && this.isEnabled()) { - this.toggle(new Object[]{115103427876780L}); + } else if (event.getPhase() == EventPhase.POST && this.rotationApplied) { + this.rotationApplied = false; + if (Prestige.silentRotationManager.isLockHeldBy(this)) { + if (this.itemUsed) { + boolean shouldDisable = this.disableAfterRelease; + this.releaseRotationLock(); + if (shouldDisable && this.isEnabled()) { + this.toggle(); } } else { - this.s = true; + this.rotationSynced = true; } } } } } - private void l(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 11907200794228L ^ var2; - long var4 = var2 ^ 105503756875577L; - Prestige.o.c_void___(new Object[]{this, var4}); - this.r = null; - this.w = null; - this.s = false; - this.t = false; - this.u = false; - this.v = false; + private void releaseRotationLock() { + Prestige.silentRotationManager.releaseLock(this); + this.lockedRotation = null; + this.lockWorld = null; + this.rotationSynced = false; + this.rotationApplied = false; + this.itemUsed = false; + this.disableAfterRelease = false; } - private void m(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 11907200794228L ^ var2; - long var4 = var2 ^ 97201961797574L; - long var6 = var2 ^ 86335862946338L; - long var8 = var2 ^ 107446903980571L; - boolean var11 = this.x != b.world; - this.l(new Object[]{var4}); - this.k = false; - this.l = false; - this.n = false; - this.o = false; - this.z = PearlStage.PREP; - this.B = -1; - this.m.a_void_____________________(new Object[]{var6}); - this.x = b.world; - if (var11) { - this.y = Integer.MIN_VALUE; + private void resetState() { + boolean worldChanged = this.trackedWorld != mc.world; + this.releaseRotationLock(); + this.pearlThrown = false; + this.windChargeThrown = false; + this.pearlAimReady = false; + this.windChargeReady = false; + this.offhandStage = FastPearlCatchStage.PREP; + this.offhandSwapSlot = -1; + this.pearlTimer.reset(); + this.trackedWorld = mc.world; + if (worldChanged) { + this.lastUseTick = Integer.MIN_VALUE; } - if (b.player != null) { - this.p = b.player.getPitch(); - this.q = b.player.getYaw(); - this.A = InventoryUtil.a_int_____(new Object[]{var8}); + if (mc.player != null) { + this.originalPitch = mc.player.getPitch(); + this.originalYaw = mc.player.getYaw(); + this.originalSlot = InventoryUtil.getSelectedSlot(); } } @Subscribe - public void a(TickEvent3 var1) { - this.y = Integer.MIN_VALUE; - this.m(new Object[]{18978719144907L}); + public void onGameJoin(GameJoinEvent event) { + this.lastUseTick = Integer.MIN_VALUE; + this.resetState(); } - private int d_int_______(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 < 9; var5++) { - if (!b.player.getInventory().getStack(var5).isEmpty() && b.player.getInventory().getStack(var5).getItem() == Items.ENDER_PEARL) { - return var5; + private int findPearlSlot() { + for (int slot = 0; slot < 9; slot++) { + if (!mc.player.getInventory().getStack(slot).isEmpty() && mc.player.getInventory().getStack(slot).getItem() == Items.ENDER_PEARL) { + return slot; } } return -1; } - private int e_int_____(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 11907200794228L ^ var2; - long var4 = var2 ^ 19540157771984L; - Event.b(); - - for (int var7 = 0; var7 < 9; var7++) { - if (!b.player.getInventory().getStack(var7).isEmpty() && f(new Object[]{b.player.getInventory().getStack(var7), var4})) { - return var7; + private int findWindChargeSlot() { + for (int slot = 0; slot < 9; slot++) { + if (!mc.player.getInventory().getStack(slot).isEmpty() && isWindCharge(mc.player.getInventory().getStack(slot))) { + return slot; } } return -1; } - public static boolean f(Object[] var0) { - ItemStack var3 = (ItemStack)var0[0]; - return var3.getItem().equals(Items.WIND_CHARGE); + public static boolean isWindCharge(ItemStack stack) { + return stack.getItem().equals(Items.WIND_CHARGE); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 120267356976845L; - long var6 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var6}); - this.m(new Object[]{var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); + this.resetState(); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 110300201456924L; - long var6 = var2 ^ 140372736859409L; - this.l(new Object[]{var4}); - this.x = null; - this.y = Integer.MIN_VALUE; - Prestige.o.f(new Object[]{this, var6}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + this.releaseRotationLock(); + this.trackedWorld = null; + this.lastUseTick = Integer.MIN_VALUE; + Prestige.silentRotationManager.removeRotationProvider(this); } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/KeyWindCharge.java b/src/main/java/dev/zprestige/prestige/module/mace/KeyWindCharge.java index 6e178a8..45efe29 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/KeyWindCharge.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/KeyWindCharge.java @@ -5,13 +5,10 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.StopWatch; import java.util.Set; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; @@ -22,179 +19,83 @@ public class KeyWindCharge extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private EnumSetting a; - private RangeSetting c; - private RenderHelper27 d = new RenderHelper27(26293358099357L); - private int e = 0; - private boolean i = false; + private EnumSetting mode; + private RangeSetting delay; + private StopWatch delayTimer = new StopWatch(); + private int previousSlot = 0; + private boolean thrown = false; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 108480545928934L; - this.i = false; - this.j(new Object[]{var4}); + public void onEnable() { + this.thrown = false; + this.restartDelay(); } @Subscribe - public void a(TickEvent19 var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - String var23 = (String)this.a.getValue(); - switch (var23) { + public void onClientTick(ClientTickEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + switch (this.mode.getValue()) { case "Normal": - RenderHelper27 var26 = this.d; - float var28 = (Float)this.c.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var28; - if (!var26.a(var10004)) { + if (!this.delayTimer.hasElapsed(this.delay.getValue())) { return; } - if (this.i) { - int var27 = this.e; - Object[] var29 = new Object[]{null, 37392877673079L}; - var29[0] = var27; - InventoryUtil.a_void________(var29); - this.toggle(new Object[]{115103427876780L}); + if (this.thrown) { + InventoryUtil.selectSlot(this.previousSlot); + this.toggle(); return; } - if (!a_boolean_______________________________(new Object[]{b.player.getMainHandStack(), 34044435795471L})) { - int var25 = this.a(new Object[]{120121965301062L}); - if (var25 == -1) { - this.toggle(new Object[]{115103427876780L}); + if (!isWindCharge(mc.player.getMainHandStack())) { + int windChargeSlot = this.findWindChargeSlot(); + if (windChargeSlot == -1) { + this.toggle(); return; } - this.e = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var25; - InventoryUtil.a_void________(var10003); - this.j(new Object[]{33580849863648L}); + this.previousSlot = InventoryUtil.getSelectedSlot(); + InventoryUtil.selectSlot(windChargeSlot); + this.restartDelay(); return; } - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - this.i = true; - this.j(new Object[]{33580849863648L}); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.thrown = true; + this.restartDelay(); break; case "Silent": - int var10000 = this.a(new Object[]{120121965301062L}); - Runnable var10001 = () -> InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - Object[] var10005 = new Object[]{null, null, null, 53805837885570L}; - var10005[2] = true; - var10005[1] = var10001; - var10005[0] = var10000; - InventoryUtil.b_void__(var10005); - this.toggle(new Object[]{115103427876780L}); + InventoryUtil.runWithSlot(this.findWindChargeSlot(), () -> PlayerInteractions.interactItem(Hand.MAIN_HAND), true); + this.toggle(); } } } - private int a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 70374441990552L ^ var2; - long var4 = var2 ^ 56864663370449L; - Event.b(); - - for (int var7 = 0; var7 <= 8; var7++) { - if (a_boolean_______________________________(new Object[]{b.player.getInventory().getStack(var7), var4})) { - return var7; + private int findWindChargeSlot() { + for (int slot = 0; slot <= 8; slot++) { + if (isWindCharge(mc.player.getInventory().getStack(slot))) { + return slot; } } return -1; } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 70374441990552L ^ var2; - long var4 = var2 ^ 12751101836773L; - long var6 = var2 ^ 120264685874329L; - this.c.reroll(new Object[]{var6}); - this.d.a_void_____________________(new Object[]{var4}); + private void restartDelay() { + this.delay.reroll(); + this.delayTimer.reset(); } - public static boolean a_boolean_______________________________(Object[] var0) { - ItemStack var1 = (ItemStack)var0[0]; - return var1.getItem().equals(Items.WIND_CHARGE); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public static boolean isWindCharge(ItemStack stack) { + return stack.getItem().equals(Items.WIND_CHARGE); } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/MacePot.java b/src/main/java/dev/zprestige/prestige/module/mace/MacePot.java index 40b5912..619b932 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/MacePot.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/MacePot.java @@ -6,140 +6,91 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.client.Prestige; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import java.util.Set; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.util.Hand; -public class MacePot extends Module implements RenderContract3 { +public class MacePot extends Module implements RotationProvider { public MacePot() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; - private BoolSetting d; - private FloatSetting c; - private RenderHelper27 e = new RenderHelper27(26293358099357L); - private RenderHelper27 f = new RenderHelper27(26293358099357L); - private RenderHelper27 g = new RenderHelper27(26293358099357L); - private RenderHelper27 h = new RenderHelper27(26293358099357L); - private Integer i = null; - private Integer j = null; + private FloatSetting delay; + private BoolSetting autoDisable; + private FloatSetting pitch; + private StopWatch throwTimer = new StopWatch(); + private StopWatch swapTimer = new StopWatch(); + private StopWatch speedPotTimer = new StopWatch(); + private StopWatch strengthPotTimer = new StopWatch(); + private Integer swappedInventorySlot = null; + private Integer swappedHotbarSlot = null; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Override - public boolean b(Object[] var1) { - return Boolean.FALSE.equals(this.d.getValue()); + public boolean isPersistent() { + return Boolean.FALSE.equals(this.autoDisable.getValue()); } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 136651866339394L; - long var6 = var2 ^ 43040229079061L; - long var8 = var2 ^ 29247161167908L; - long var10 = var2 ^ 65321317039L; - long var12 = var2 ^ 71104996207826L; - long var14 = var2 ^ 85547089512629L; - long var16 = var2 ^ 60322152390054L; - if (b.currentScreen == null && b.isWindowFocused()) { - RenderHelper27 var10000 = this.e; - float var10001 = (Float)this.a.getValue(); - Object[] var10004 = new Object[]{null, var14}; - var10004[0] = var10001; - if (!var10000.a(var10004)) { + public Rotation provideRotation() { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (!this.throwTimer.hasElapsed(this.delay.getValue())) { return null; } else { - boolean var19 = b.player.hasStatusEffect(StatusEffects.SPEED); - boolean var20 = b.player.hasStatusEffect(StatusEffects.STRENGTH); - if (b.player.isOnGround()) { - if (!var19) { - var10000 = this.g; - var10004 = new Object[]{null, var14}; - var10004[0] = 300.0F; - if (var10000.a(var10004)) { - Object[] var10005 = new Object[]{null, null, StatusEffects.SPEED, var12}; - var10005[1] = 9; - var10005[0] = 0; - Integer var21 = InventoryUtil.e_Integer(var10005); - if (var21 != null) { - this.e.a_void_____________________(new Object[]{var8}); - this.g.a_void_____________________(new Object[]{var8}); - int var32 = var21; - var10004 = new Object[]{null, var10}; - var10004[0] = var32; - return this.b_RenderBatch__________(var10004); + boolean hasSpeed = mc.player.hasStatusEffect(StatusEffects.SPEED); + boolean hasStrength = mc.player.hasStatusEffect(StatusEffects.STRENGTH); + if (mc.player.isOnGround()) { + if (!hasSpeed) { + if (this.speedPotTimer.hasElapsed(300.0F)) { + Integer speedHotbarSlot = InventoryUtil.findSplashPotion(0, 9, StatusEffects.SPEED); + if (speedHotbarSlot != null) { + this.throwTimer.reset(); + this.speedPotTimer.reset(); + return this.throwPotion(speedHotbarSlot); } - var10005 = new Object[]{null, null, StatusEffects.SPEED, var12}; - var10005[1] = 36; - var10005[0] = 0; - Integer var22 = InventoryUtil.e_Integer(var10005); - if (var22 != null) { - int var31 = var22; - var10004 = new Object[]{null, var4}; - var10004[0] = var31; - this.j(var10004); - this.e.a_void_____________________(new Object[]{var8}); + Integer speedInventorySlot = InventoryUtil.findSplashPotion(0, 36, StatusEffects.SPEED); + if (speedInventorySlot != null) { + this.swapPotionIntoHotbar(speedInventorySlot); + this.throwTimer.reset(); return null; } } } - if (!var20) { - var10000 = this.h; - var10004 = new Object[]{null, var14}; - var10004[0] = 300.0F; - if (var10000.a(var10004)) { - Object[] var41 = new Object[]{null, null, StatusEffects.STRENGTH, var12}; - var41[1] = 9; - var41[0] = 0; - Integer var23 = InventoryUtil.e_Integer(var41); - if (var23 != null) { - this.e.a_void_____________________(new Object[]{var8}); - this.h.a_void_____________________(new Object[]{var8}); - int var30 = var23; - var10004 = new Object[]{null, var10}; - var10004[0] = var30; - return this.b_RenderBatch__________(var10004); + if (!hasStrength) { + if (this.strengthPotTimer.hasElapsed(300.0F)) { + Integer strengthHotbarSlot = InventoryUtil.findSplashPotion(0, 9, StatusEffects.STRENGTH); + if (strengthHotbarSlot != null) { + this.throwTimer.reset(); + this.strengthPotTimer.reset(); + return this.throwPotion(strengthHotbarSlot); } - var41 = new Object[]{null, null, StatusEffects.STRENGTH, var12}; - var41[1] = 36; - var41[0] = 0; - Integer var24 = InventoryUtil.e_Integer(var41); - if (var24 != null) { - int var29 = var24; - var10004 = new Object[]{null, var4}; - var10004[0] = var29; - this.j(var10004); - this.e.a_void_____________________(new Object[]{var8}); + Integer strengthInventorySlot = InventoryUtil.findSplashPotion(0, 36, StatusEffects.STRENGTH); + if (strengthInventorySlot != null) { + this.swapPotionIntoHotbar(strengthInventorySlot); + this.throwTimer.reset(); return null; } } } } - if (var19 && var20 && this.i != null && this.j != null) { - int var27 = this.i; - int var28 = this.j; - var10004 = new Object[]{null, null, var16}; - var10004[1] = var28; - var10004[0] = var27; - InventoryUtil.f(var10004); - this.i = null; - if ((Boolean)this.d.getValue()) { - this.toggle(new Object[]{var6}); + if (hasSpeed && hasStrength && this.swappedInventorySlot != null && this.swappedHotbarSlot != null) { + InventoryUtil.swapSlot(this.swappedInventorySlot, this.swappedHotbarSlot); + this.swappedInventorySlot = null; + if (this.autoDisable.getValue()) { + this.toggle(); } return null; @@ -152,126 +103,35 @@ public class MacePot extends Module implements RenderContract3 { } } - private void j(Object[] var1) { - int var2 = (Integer)var1[0]; - long var3 = (Long)var1[1]; - var3 = 48077845032872L ^ var3; - long var5 = var3 ^ 85112855881678L; - long var7 = var3 ^ 108120121548791L; - long var9 = var3 ^ 106848507890252L; - if (this.i == null && this.j == null) { - this.i = var2; - this.j = InventoryUtil.a_int_____(new Object[]{var7}); + private void swapPotionIntoHotbar(int inventorySlot) { + if (this.swappedInventorySlot == null && this.swappedHotbarSlot == null) { + this.swappedInventorySlot = inventorySlot; + this.swappedHotbarSlot = InventoryUtil.getSelectedSlot(); } - this.f.a_void_____________________(new Object[]{var5}); - int var10001 = InventoryUtil.a_int_____(new Object[]{var7}); - Object[] var10004 = new Object[]{null, null, var9}; - var10004[1] = var10001; - var10004[0] = var2; - InventoryUtil.f(var10004); + this.swapTimer.reset(); + InventoryUtil.swapSlot(inventorySlot, InventoryUtil.getSelectedSlot()); } - private RenderBatch b_RenderBatch__________(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - var2 = 48077845032872L ^ var2; - long var5 = var2 ^ 93268990726716L; - float var7 = (Float)this.c.getValue() - 1.0F + RenderUtil5.a.nextFloat(); - Runnable var10001 = () -> { - float var5x = b.player.getPitch(); - b.player.setPitch((Float)this.c.getValue() - 1.0F + RenderUtil5.a.nextFloat()); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - b.player.setPitch(var5x); - }; - Object[] var10005 = new Object[]{null, null, null, var5}; - var10005[2] = true; - var10005[1] = var10001; - var10005[0] = var4; - InventoryUtil.b_void__(var10005); - return new RenderBatch(b.player.getYaw(), var7); + private Rotation throwPotion(int slot) { + float throwPitch = this.pitch.getValue() - 1.0F + RandomUtil.RANDOM.nextFloat(); + InventoryUtil.runWithSlot(slot, () -> { + float originalPitch = mc.player.getPitch(); + mc.player.setPitch(this.pitch.getValue() - 1.0F + RandomUtil.RANDOM.nextFloat()); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + mc.player.setPitch(originalPitch); + }, true); + return new Rotation(mc.player.getYaw(), throwPitch); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); - this.i = null; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + this.swappedInventorySlot = null; } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/MacePrediction.java b/src/main/java/dev/zprestige/prestige/module/mace/MacePrediction.java index 169008f..47c5b63 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/MacePrediction.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/MacePrediction.java @@ -8,17 +8,12 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.ShapeRenderer; import dev.zprestige.prestige.world.PositionUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.Entity; @@ -27,353 +22,132 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; public class MacePrediction extends Module { - private static final double a = 0.08; - private static final double b = 0.98; - private static final double c = 0.999; - private EnumSetting d; - private BoolSetting e; - private IntSetting f; - private ColorSetting g; - private ColorSetting h; - private BoolSetting i; - private IntSetting j; - private ColorSetting k; - private BoolSetting l; - private ColorSetting m; - private ColorSetting n; - private FloatSetting o; + private EnumSetting mode; + private BoolSetting predictAirPath; + private IntSetting maxAirPredTicks; + private ColorSetting airPathColor; + private ColorSetting airLandingColor; + private BoolSetting predictGroundPath; + private IntSetting groundPredTicks; + private ColorSetting groundPathColor; + private BoolSetting rangeCircles; + private ColorSetting circleInner; + private ColorSetting circleOuter; + private FloatSetting circleAlpha; public MacePrediction() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.k.setVisibility_ColorSetting(new Object[]{(Predicate)lpL166_0 -> (Boolean)this.i.getValue(), 119980880492450L}); - this.m.setVisibility_ColorSetting(new Object[]{(Predicate)lpL165_0 -> (Boolean)this.l.getValue(), 119980880492450L}); - this.h.setVisibility_ColorSetting(new Object[]{(Predicate)lpL168_0 -> (Boolean)this.e.getValue(), 119980880492450L}); - this.f.setVisibility_IntSetting(new Object[]{(Predicate)lpL170_0 -> (Boolean)this.e.getValue(), 98265949679296L}); - this.o.setVisibility_FloatSetting(new Object[]{(Predicate)lpL163_0 -> (Boolean)this.l.getValue(), 35046756052036L}); - this.g.setVisibility_ColorSetting(new Object[]{(Predicate)lpL169_0 -> (Boolean)this.e.getValue(), 119980880492450L}); - this.n.setVisibility_ColorSetting(new Object[]{(Predicate)lpL164_0 -> (Boolean)this.l.getValue(), 119980880492450L}); - this.j.setVisibility_IntSetting(new Object[]{(Predicate)lpL167_0 -> (Boolean)this.i.getValue(), 98265949679296L}); + this.groundPathColor.visibleWhen((Predicate)ignoredGroundPathColor -> this.predictGroundPath.getValue()); + this.circleInner.visibleWhen((Predicate)ignoredCircleInner -> this.rangeCircles.getValue()); + this.airLandingColor.visibleWhen((Predicate)ignoredAirLandingColor -> this.predictAirPath.getValue()); + this.maxAirPredTicks.visibleWhen((Predicate)ignoredMaxAirPredTicks -> this.predictAirPath.getValue()); + this.circleAlpha.visibleWhen((Predicate)ignoredCircleAlpha -> this.rangeCircles.getValue()); + this.airPathColor.visibleWhen((Predicate)ignoredAirPathColor -> this.predictAirPath.getValue()); + this.circleOuter.visibleWhen((Predicate)ignoredCircleOuter -> this.rangeCircles.getValue()); + this.groundPredTicks.visibleWhen((Predicate)ignoredGroundPredTicks -> this.predictGroundPath.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Subscribe - public void a(TickEvent27 var1) { - Event.b(); - PlayerEntity var19 = CombatUtil.a_class_1657(new Object[]{16945855905304L}); - if (var19 != null) { - if (PositionUtil.a_double___________(new Object[]{var19, 111298775242240L}) < 0.3F) { - if (!(Boolean)this.i.getValue()) { + public void onRender3D(Render3DEvent event) { + PlayerEntity target = TargetSelector.getClosestEnemy(); + if (target != null) { + if (PositionUtil.getHeightAboveGround(target) < 0.3F) { + if (!this.predictGroundPath.getValue()) { return; } - Vec3d var20 = PositionUtil.a(new Object[]{var19, 67736483458412L}); - if ((Boolean)this.l.getValue()) { - MatrixCameraData var10000 = var1.b; - RenderHelper8 var10001 = var1.a; - float var10002 = (float)var20.x; - float var10003 = (float)var20.y; - float var10004 = (float)var20.z; - Color var10006 = (Color)this.m.getValue(); - Object[] var10010 = new Object[]{null, null, 20220661505083L}; - var10010[1] = 0.8F; - var10010[0] = var10006; - var10006 = MathHelper4.b(var10010); - Color var10007 = (Color)this.n.getValue(); - float var10008 = 0.2F * ((Float)this.o.getValue() / 255.0F); - Object[] var10011 = new Object[]{null, null, 20220661505083L}; - var10011[1] = var10008; - var10011[0] = var10007; - var10010 = new Object[]{null, null, null, null, null, null, var10006, MathHelper4.b(var10011), 127100755770959L}; - var10010[5] = 3.0F; - var10010[4] = var10004; - var10010[3] = var10003; - var10010[2] = var10002; - var10010[1] = var10001; - var10010[0] = var10000; - RenderState.d(var10010); + Vec3d groundPos = PositionUtil.getEntityPos(target); + if (this.rangeCircles.getValue()) { + ShapeRenderer.drawDisc(event.context, event.renderer, (float)groundPos.x, (float)groundPos.y, (float)groundPos.z, 3.0F, UiMath.withAlpha(this.circleInner.getValue(), 0.8F), UiMath.withAlpha(this.circleOuter.getValue(), 0.2F * (this.circleAlpha.getValue() / 255.0F))); } - this.j(new Object[]{var19, var1, 116402847105576L}); + this.drawGroundPrediction(target, event); } else { - if (!(Boolean)this.e.getValue()) { + if (!this.predictAirPath.getValue()) { return; } - Vec3d var21 = this.a(new Object[]{var19, var1, 67797917859641L}); - if (var21 != null && (Boolean)this.l.getValue()) { - MatrixCameraData var22 = var1.b; - RenderHelper8 var23 = var1.a; - float var24 = (float)var21.x; - float var25 = (float)var21.y; - float var26 = (float)var21.z; - Color var28 = (Color)this.m.getValue(); - Object[] var33 = new Object[]{null, null, 20220661505083L}; - var33[1] = 0.8F; - var33[0] = var28; - var28 = MathHelper4.b(var33); - Color var30 = (Color)this.n.getValue(); - float var31 = 0.2F * ((Float)this.o.getValue() / 255.0F); - Object[] var35 = new Object[]{null, null, 20220661505083L}; - var35[1] = var31; - var35[0] = var30; - var33 = new Object[]{null, null, null, null, null, null, var28, MathHelper4.b(var35), 127100755770959L}; - var33[5] = 3.0F; - var33[4] = var26; - var33[3] = var25; - var33[2] = var24; - var33[1] = var23; - var33[0] = var22; - RenderState.d(var33); + Vec3d landingPos = this.traceAirPath(target, event); + if (landingPos != null && this.rangeCircles.getValue()) { + ShapeRenderer.drawDisc(event.context, event.renderer, (float)landingPos.x, (float)landingPos.y, (float)landingPos.z, 3.0F, UiMath.withAlpha(this.circleInner.getValue(), 0.8F), UiMath.withAlpha(this.circleOuter.getValue(), 0.2F * (this.circleAlpha.getValue() / 255.0F))); } } } } - private Vec3d a(Object[] var1) { - Entity var5 = (Entity)var1[0]; - TickEvent27 var2 = (TickEvent27)var1[1]; - long var3 = (Long)var1[2]; - var3 = 33234515022557L ^ var3; - long var6 = var3 ^ 33020995289224L; - long var8 = var3 ^ 88973239075438L; - Vec3d var11 = PositionUtil.a(new Object[]{var5, var6}); - Vec3d var12 = var5.getVelocity(); - Event.b(); - Vec3d var13 = var11; - Vec3d var14 = null; + private Vec3d traceAirPath(Entity entity, Render3DEvent event) { + Vec3d pos = PositionUtil.getEntityPos(entity); + Vec3d velocity = entity.getVelocity(); + Vec3d previousPos = pos; + Vec3d lastMarkerPos = null; - for (int var15 = 0; var15 < this.f.getValue(); var15++) { - var13 = var11; - var11 = var11.add(var12); - BlockPos var16 = new BlockPos((int)Math.floor(var11.x), (int)Math.floor(var11.y - 0.1), (int)Math.floor(var11.z)); - if (!var5.getEntityWorld().getBlockState(var16).isAir() || var11.y <= var5.getEntityWorld().getBottomY()) { - this.l(new Object[]{var13, (Color)this.h.getValue(), var2, var8}); - return new Vec3d(var13.x, var16.getY() + 1, var13.z); + for (int tick = 0; tick < this.maxAirPredTicks.getValue(); tick++) { + previousPos = pos; + pos = pos.add(velocity); + BlockPos belowPos = new BlockPos((int)Math.floor(pos.x), (int)Math.floor(pos.y - 0.1), (int)Math.floor(pos.z)); + if (!entity.getEntityWorld().getBlockState(belowPos).isAir() || pos.y <= entity.getEntityWorld().getBottomY()) { + this.drawMarker(previousPos, this.airLandingColor.getValue(), event); + return new Vec3d(previousPos.x, belowPos.getY() + 1, previousPos.z); } - if (var14 == null || var14.squaredDistanceTo(var11) >= 0.1) { - this.l(new Object[]{var11, (Color)this.g.getValue(), var2, var8}); - var14 = var11; + if (lastMarkerPos == null || lastMarkerPos.squaredDistanceTo(pos) >= 0.1) { + this.drawMarker(pos, this.airPathColor.getValue(), event); + lastMarkerPos = pos; } - var12 = var12.subtract(0.0, 0.08, 0.0); - var12 = var12.multiply(0.98, 0.98, 0.98); + velocity = velocity.subtract(0.0, 0.08, 0.0); + velocity = velocity.multiply(0.98, 0.98, 0.98); } - return var13; + return previousPos; } - private void j(Object[] var1) { - PlayerEntity var4 = (PlayerEntity)var1[0]; - TickEvent27 var5 = (TickEvent27)var1[1]; - long var2 = (Long)var1[2]; - var2 = 33234515022557L ^ var2; - long var6 = var2 ^ 40418290049027L; - long var8 = var2 ^ 81909390835097L; - long var10 = var2 ^ 75333267657599L; - Vec3d var12 = PositionUtil.a(new Object[]{var4, var8}); - Vec3d var13 = PositionUtil.c(new Object[]{var4, var6}); - Vec3d var14 = new Vec3d(var12.x - var13.x, var12.y, var12.z - var13.z); - this.k(new Object[]{var4, var12, var14, var5, var10}); + private void drawGroundPrediction(PlayerEntity player, Render3DEvent event) { + Vec3d currentPos = PositionUtil.getEntityPos(player); + Vec3d lastPos = PositionUtil.getLastPos(player); + this.traceGroundPath(player, currentPos, new Vec3d(currentPos.x - lastPos.x, currentPos.y, currentPos.z - lastPos.z), event); } - private void k(Object[] var1) { - PlayerEntity var7 = (PlayerEntity)var1[0]; - Vec3d var6 = (Vec3d)var1[1]; - Vec3d var2 = (Vec3d)var1[2]; - TickEvent27 var3 = (TickEvent27)var1[3]; - long var4 = (Long)var1[4]; - var4 = 33234515022557L ^ var4; - long var8 = var4 ^ 103513493651165L; - Event.b(); - Vec3d var11 = var6; - Vec3d var12 = var2; - Vec3d var13 = null; + private void traceGroundPath(PlayerEntity player, Vec3d startPos, Vec3d startVelocity, Render3DEvent event) { + Vec3d pos = startPos; + Vec3d velocity = startVelocity; + Vec3d lastMarkerPos = null; - for (int var14 = 0; var14 < this.j.getValue(); var14++) { - var11 = var11.add(var12.x, 0.0, var12.z); - BlockPos var15 = new BlockPos((int)Math.floor(var11.x), (int)Math.floor(var11.y - 0.1), (int)Math.floor(var11.z)); - if (var7.getEntityWorld() != null && var7.getEntityWorld().getBlockState(var15).isAir()) { + for (int tick = 0; tick < this.groundPredTicks.getValue(); tick++) { + pos = pos.add(velocity.x, 0.0, velocity.z); + BlockPos belowPos = new BlockPos((int)Math.floor(pos.x), (int)Math.floor(pos.y - 0.1), (int)Math.floor(pos.z)); + if (player.getEntityWorld() != null && player.getEntityWorld().getBlockState(belowPos).isAir()) { break; } - var12 = var12.multiply(0.999, 1.0, 0.999); - if (Math.abs(var12.x) < 0.005 && Math.abs(var12.z) < 0.005) { + velocity = velocity.multiply(0.999, 1.0, 0.999); + if (Math.abs(velocity.x) < 0.005 && Math.abs(velocity.z) < 0.005) { break; } - if (var13 == null || var13.squaredDistanceTo(var11) >= 0.1) { - this.l(new Object[]{var11, (Color)this.k.getValue(), var3, var8}); - var13 = var11; + if (lastMarkerPos == null || lastMarkerPos.squaredDistanceTo(pos) >= 0.1) { + this.drawMarker(pos, this.groundPathColor.getValue(), event); + lastMarkerPos = pos; } } } - public void l(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - Color var6 = (Color)var1[1]; - TickEvent27 var5 = (TickEvent27)var1[2]; - long var3 = (Long)var1[3]; - var3 = 33234515022557L ^ var3; - long var7 = var3 ^ 17413565790798L; - long var9 = var3 ^ 1633365999833L; - long var11 = var3 ^ 139780278493548L; - Event.b(); - String var14 = (String)this.d.getValue(); - switch (var14) { + public void drawMarker(Vec3d pos, Color color, Render3DEvent event) { + switch (this.mode.getValue()) { case "Box": - MatrixCameraData var19 = var5.b; - RenderHelper8 var22 = var5.a; - float var25 = (float)var2.x - 0.25F; - float var28 = (float)var2.y; - float var31 = (float)var2.z - 0.25F; - float var34 = (float)var2.x + 0.25F; - float var37 = (float)var2.y + 2.0F; - float var40 = (float)var2.z + 0.25F; - Object[] var43 = new Object[]{null, null, null, null, null, null, null, null, var6, var7}; - var43[7] = var40; - var43[6] = var37; - var43[5] = var34; - var43[4] = var31; - var43[3] = var28; - var43[2] = var25; - var43[1] = var22; - var43[0] = var19; - RenderState.h(var43); + ShapeRenderer.drawFilledBox(event.context, event.renderer, (float)pos.x - 0.25F, (float)pos.y, (float)pos.z - 0.25F, (float)pos.x + 0.25F, (float)pos.y + 2.0F, (float)pos.z + 0.25F, color); break; case "Outline": - MatrixCameraData var18 = var5.b; - RenderHelper8 var21 = var5.a; - float var24 = (float)var2.x - 0.25F; - float var27 = (float)var2.y; - float var30 = (float)var2.z - 0.25F; - float var33 = (float)var2.x + 0.25F; - float var36 = (float)var2.y + 2.0F; - float var39 = (float)var2.z + 0.25F; - Object[] var42 = new Object[]{null, null, null, null, null, null, null, null, var6, var9}; - var42[7] = var39; - var42[6] = var36; - var42[5] = var33; - var42[4] = var30; - var42[3] = var27; - var42[2] = var24; - var42[1] = var21; - var42[0] = var18; - RenderState.g(var42); + ShapeRenderer.drawBoxOutline(event.context, event.renderer, (float)pos.x - 0.25F, (float)pos.y, (float)pos.z - 0.25F, (float)pos.x + 0.25F, (float)pos.y + 2.0F, (float)pos.z + 0.25F, color); break; case "Both": - MatrixCameraData var10000 = var5.b; - RenderHelper8 var10001 = var5.a; - float var10002 = (float)var2.x - 0.25F; - float var10003 = (float)var2.y; - float var10004 = (float)var2.z - 0.25F; - float var10005 = (float)var2.x + 0.25F; - float var10006 = (float)var2.y + 2.0F; - float var10007 = (float)var2.z + 0.25F; - float var10009 = var6.getAlpha() / 255.0F * 0.5F; - Object[] var10012 = new Object[]{null, null, var11}; - var10012[1] = var10009; - var10012[0] = var6; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, MathHelper4.b(var10012), var7}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.h(var10011); - var10000 = var5.b; - var10001 = var5.a; - var10002 = (float)var2.x - 0.25F; - var10003 = (float)var2.y; - var10004 = (float)var2.z - 0.25F; - var10005 = (float)var2.x + 0.25F; - var10006 = (float)var2.y + 2.0F; - var10007 = (float)var2.z + 0.25F; - var10011 = new Object[]{null, null, null, null, null, null, null, null, var6, var9}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + ShapeRenderer.drawFilledBox(event.context, event.renderer, (float)pos.x - 0.25F, (float)pos.y, (float)pos.z - 0.25F, (float)pos.x + 0.25F, (float)pos.y + 2.0F, (float)pos.z + 0.25F, UiMath.withAlpha(color, color.getAlpha() / 255.0F * 0.5F)); + ShapeRenderer.drawBoxOutline(event.context, event.renderer, (float)pos.x - 0.25F, (float)pos.y, (float)pos.z - 0.25F, (float)pos.x + 0.25F, (float)pos.y + 2.0F, (float)pos.z + 0.25F, color); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/PearlWindCharge.java b/src/main/java/dev/zprestige/prestige/module/mace/PearlWindCharge.java index 8400b25..c270f92 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/PearlWindCharge.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/PearlWindCharge.java @@ -5,15 +5,12 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; +import dev.zprestige.prestige.event.PacketReceiveEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.JumpKeyPresser; import java.util.Set; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; @@ -22,86 +19,72 @@ import net.minecraft.network.packet.s2c.play.BundleS2CPacket; import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket; import net.minecraft.util.Hand; -public class PearlWindCharge extends Module implements RenderContract3 { +public class PearlWindCharge extends Module implements RotationProvider { public PearlWindCharge() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private BoolSetting a; - private boolean i; - private boolean c; - private static final long l = 5771087529172271112L; + private BoolSetting autoSwap; + private BoolSetting jump; + private boolean pearlThrown; + private boolean pearlLanded; + private static final long LAST_HOTBAR_SLOT = 5771087529172271112L; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); - this.i = false; - this.c = false; + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); + this.pearlThrown = false; + this.pearlLanded = false; } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 43040229079061L; - long var6 = var2 ^ 58861972349919L; - long var8 = var2 ^ 128670251638447L; - long var10 = var2 ^ 32895933853369L; - long var12 = var2 ^ 120434008667598L; - long var14 = var2 ^ 102840094869659L; - long var16 = var2 ^ 127616945565159L; - if (!this.i) { - if ((Boolean)this.d.getValue() && !InventoryUtil.l(new Object[]{Items.ENDER_PEARL, var16})) { - int var21 = InventoryUtil.a_Integer(new Object[]{Items.ENDER_PEARL, var8}); - if (var21 == -1) { - this.toggle(new Object[]{var4}); + public Rotation provideRotation() { + if (!this.pearlThrown) { + if (this.autoSwap.getValue() && !InventoryUtil.isHolding(Items.ENDER_PEARL)) { + int pearlSlot = InventoryUtil.findHotbarSlot(Items.ENDER_PEARL); + if (pearlSlot == -1) { + this.toggle(); return null; } else { - Object[] var22 = new Object[]{null, var12}; - var22[0] = var21; - InventoryUtil.a_void________(var22); + InventoryUtil.selectSlot(pearlSlot); return null; } } else { - if (InventoryUtil.l(new Object[]{Items.ENDER_PEARL, var16})) { - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var14}); - this.i = true; + if (InventoryUtil.isHolding(Items.ENDER_PEARL)) { + PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.pearlThrown = true; } return null; } } else { - if (this.c) { - int var19 = this.d(new Object[]{var10}); - if (var19 != -1) { - float var20 = b.player.getPitch(); - b.player.setPitch(90.0F); - Object[] var10003 = new Object[]{null, var12}; - var10003[0] = var19; - InventoryUtil.a_void________(var10003); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var14}); - if ((Boolean)this.a.getValue() && b.player.isOnGround()) { - RenderUtil2.a(new Object[]{var6}); + if (this.pearlLanded) { + int windChargeSlot = this.findWindChargeSlot(); + if (windChargeSlot != -1) { + float previousPitch = mc.player.getPitch(); + mc.player.setPitch(90.0F); + InventoryUtil.selectSlot(windChargeSlot); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + if (this.jump.getValue() && mc.player.isOnGround()) { + JumpKeyPresser.pressJump(); } - b.player.setPitch(var20); - this.toggle(new Object[]{var4}); - return new RenderBatch(b.player.getYaw(), 90.0F); + mc.player.setPitch(previousPitch); + this.toggle(); + return new Rotation(mc.player.getYaw(), 90.0F); } - this.toggle(new Object[]{var4}); + this.toggle(); } return null; @@ -109,15 +92,15 @@ public class PearlWindCharge extends Module implements RenderContract3 { } @Subscribe - public void a(PacketEvent var1) { - if (var1.a(new Object[0]) instanceof PlayerPositionLookS2CPacket) { - this.c = true; + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof PlayerPositionLookS2CPacket) { + this.pearlLanded = true; } - if (var1.a(new Object[0]) instanceof BundleS2CPacket var5) { - for (Packet var7 : var5.getPackets()) { - if (var7 instanceof PlayerPositionLookS2CPacket) { - this.c = true; + if (event.getPacket() instanceof BundleS2CPacket bundle) { + for (Packet bundledPacket : bundle.getPackets()) { + if (bundledPacket instanceof PlayerPositionLookS2CPacket) { + this.pearlLanded = true; break; } } @@ -125,97 +108,21 @@ public class PearlWindCharge extends Module implements RenderContract3 { } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); } - private int d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 13590517682888L ^ var2; - long var4 = var2 ^ 18851560775470L; - Event.b(); - - for (int var7 = 0; var7 <= (int)l; var7++) { - if (a_boolean________________________________(new Object[]{b.player.getInventory().getStack(var7), var4})) { - return var7; + private int findWindChargeSlot() { + for (int slot = 0; slot <= (int)LAST_HOTBAR_SLOT; slot++) { + if (isWindCharge(mc.player.getInventory().getStack(slot))) { + return slot; } } return -1; } - public static boolean a_boolean________________________________(Object[] var0) { - ItemStack var1 = (ItemStack)var0[0]; - return var1.getItem().equals(Items.WIND_CHARGE); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public static boolean isWindCharge(ItemStack stack) { + return stack.getItem().equals(Items.WIND_CHARGE); } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/ShieldDrain.java b/src/main/java/dev/zprestige/prestige/module/mace/ShieldDrain.java index 0aa8b96..161e1d1 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/ShieldDrain.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/ShieldDrain.java @@ -7,13 +7,10 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; import java.util.Set; import java.util.function.Predicate; import net.minecraft.entity.player.PlayerEntity; @@ -21,93 +18,87 @@ import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.math.Vec3d; public class ShieldDrain extends Module { - private FloatSetting a; - private FloatSetting c; - private FloatSetting d; - private BoolSetting e; - private BoolSetting f; - private BoolSetting g; - private IntSetting h; - private BoolSetting i; - private BoolSetting j; - private int k = -1; - private static boolean l; + private FloatSetting horizontalTargetDist; + private FloatSetting maxRange; + private FloatSetting minFallDistance; + private BoolSetting onlyOnCrosshair; + private BoolSetting requireMace; + private BoolSetting pauseOnGround; + private IntSetting clicksPerTick; + private BoolSetting autoSwap; + private BoolSetting silent; + private int previousSlot = -1; + private static boolean drainingThisTick; public ShieldDrain() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.i.setVisibility_BoolSetting(new Object[]{(Predicate)lpL389_0 -> !(Boolean)this.f.getValue(), 73196168581295L}); - this.j - .setVisibility_BoolSetting(new Object[]{(Predicate)lpL388_0 -> !(Boolean)this.f.getValue() && (Boolean)this.i.getValue(), 73196168581295L}); + this.autoSwap.visibleWhen((Predicate)ignoredAutoSwap -> !this.requireMace.getValue()); + this.silent + .visibleWhen((Predicate)ignoredSilent -> !this.requireMace.getValue() && this.autoSwap.getValue()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } - public static boolean d(Object[] var0) { - return l; + public static boolean isDraining() { + return drainingThisTick; } @Override - public void onEnable(Object[] var1) { - this.k = -1; + public void onEnable() { + this.previousSlot = -1; } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 131139254730552L; - l = false; - this.j(new Object[]{var4}); + public void onDisable() { + drainingThisTick = false; + this.restorePreviousSlot(); } @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - l = false; - if (b.player != null && b.world != null && b.currentScreen == null && b.isWindowFocused()) { - if (!b.player.isUsingItem()) { - if ((Boolean)this.g.getValue() && b.player.isOnGround()) { - this.j(new Object[]{88946342922333L}); - } else if (b.player.fallDistance < ((Float)this.d.getValue()).floatValue()) { - this.j(new Object[]{88946342922333L}); + public void onClientTick(ClientTickEvent event) { + drainingThisTick = false; + if (mc.player != null && mc.world != null && mc.currentScreen == null && mc.isWindowFocused()) { + if (!mc.player.isUsingItem()) { + if (this.pauseOnGround.getValue() && mc.player.isOnGround()) { + this.restorePreviousSlot(); + } else if (mc.player.fallDistance < this.minFallDistance.getValue().floatValue()) { + this.restorePreviousSlot(); } else { - PlayerEntity var19 = this.a(new Object[]{16578663200379L}); - if (var19 == null) { - this.j(new Object[]{88946342922333L}); - } else if (b.player.distanceTo(var19) > (Float)this.c.getValue()) { - this.j(new Object[]{88946342922333L}); + PlayerEntity target = this.findShieldTarget(); + if (target == null) { + this.restorePreviousSlot(); + } else if (mc.player.distanceTo(target) > this.maxRange.getValue()) { + this.restorePreviousSlot(); } else { - if (!InventoryUtil.o(new Object[]{b.player.getMainHandStack(), 133561865349436L})) { - if ((Boolean)this.f.getValue()) { + if (!InventoryUtil.isMace(mc.player.getMainHandStack())) { + if (this.requireMace.getValue()) { return; } - if (!(Boolean)this.i.getValue()) { + if (!this.autoSwap.getValue()) { return; } - Integer var20 = InventoryUtil.c_Integer(new Object[]{25149592867800L}); - if (var20 == null) { + Integer maceSlot = InventoryUtil.findMaceSlot(); + if (maceSlot == null) { return; } - if ((Boolean)this.j.getValue() && this.k == -1) { - this.k = InventoryUtil.a_int_____(new Object[]{134339616728996L}); + if (this.silent.getValue() && this.previousSlot == -1) { + this.previousSlot = InventoryUtil.getSelectedSlot(); } - int var10000 = var20; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(maceSlot); } - l = true; - int var22 = (Integer)this.h.getValue(); + drainingThisTick = true; + int clicks = this.clicksPerTick.getValue(); - for (int var21 = 0; var21 < var22; var21++) { - InventoryUtil2.a_void_________(new Object[]{var19, 31382773185830L}); + for (int clickIndex = 0; clickIndex < clicks; clickIndex++) { + PlayerInteractions.attackEntity(target); } } } @@ -115,133 +106,44 @@ public class ShieldDrain extends Module { } } - private PlayerEntity a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 125457291904568L ^ var2; - long var4 = var2 ^ 118299790496201L; - long var6 = var2 ^ 83592214154739L; - long var8 = var2 ^ 22916526825587L; - Event.b(); - if (b.crosshairTarget instanceof EntityHitResult var11 - && var11.getEntity() instanceof PlayerEntity var12 - && CombatUtil.b_boolean(new Object[]{var12, var6}) - && !Prestige.g.a(new Object[]{var12.getName().getString(), var4})) { - return var12; - } else if ((Boolean)this.e.getValue()) { + private PlayerEntity findShieldTarget() { + if (mc.crosshairTarget instanceof EntityHitResult crosshairHit + && crosshairHit.getEntity() instanceof PlayerEntity crosshairPlayer + && TargetSelector.isBlockingWithShield(crosshairPlayer) + && !Prestige.friendManager.isFriend(crosshairPlayer.getName().getString())) { + return crosshairPlayer; + } else if (this.onlyOnCrosshair.getValue()) { return null; } else { - float var10001 = (Float)this.a.getValue(); - Object[] var10004 = new Object[]{null, var8}; - var10004[0] = var10001; - return this.b_class_1657(var10004); + return this.findClosestShielder(this.horizontalTargetDist.getValue()); } } - private PlayerEntity b_class_1657(Object[] var1) { - float var2 = (Float)var1[0]; - long var3 = (Long)var1[1]; - var3 = 125457291904568L ^ var3; - long var5 = var3 ^ 14681118619522L; - long var7 = var3 ^ 47052207319992L; - PlayerEntity var10 = null; - double var11 = Double.MAX_VALUE; - Event.b(); + private PlayerEntity findClosestShielder(float maxDistance) { + PlayerEntity closest = null; + double closestDistanceSq = Double.MAX_VALUE; - for (PlayerEntity var14 : b.world.getPlayers()) { - if (var14.isAlive() - && !var14.equals(b.player) - && !Prestige.g.a(new Object[]{var14.getName().getString(), var5}) - && CombatUtil.b_boolean(new Object[]{var14, var7})) { - Vec3d var15 = new Vec3d(var14.getX(), b.player.getY(), var14.getZ()); - double var16 = b.player.squaredDistanceTo(var15); - if (!(var16 > var2 * var2) && var16 < var11) { - var11 = var16; - var10 = var14; + for (PlayerEntity player : mc.world.getPlayers()) { + if (player.isAlive() + && !player.equals(mc.player) + && !Prestige.friendManager.isFriend(player.getName().getString()) + && TargetSelector.isBlockingWithShield(player)) { + Vec3d levelPos = new Vec3d(player.getX(), mc.player.getY(), player.getZ()); + double distanceSq = mc.player.squaredDistanceTo(levelPos); + if (!(distanceSq > maxDistance * maxDistance) && distanceSq < closestDistanceSq) { + closestDistanceSq = distanceSq; + closest = player; } } } - return var10; + return closest; } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 125457291904568L ^ var2; - long var4 = var2 ^ 1087017702418L; - if (this.k != -1) { - int var10000 = this.k; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - this.k = -1; - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + private void restorePreviousSlot() { + if (this.previousSlot != -1) { + InventoryUtil.selectSlot(this.previousSlot); + this.previousSlot = -1; } } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/ShortWindCharge.java b/src/main/java/dev/zprestige/prestige/module/mace/ShortWindCharge.java index 9ab51d4..77711c5 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/ShortWindCharge.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/ShortWindCharge.java @@ -8,103 +8,84 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent24; +import dev.zprestige.prestige.event.FrameEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil2; -import dev.zprestige.prestige.render.RenderUtil5; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.JumpKeyPresser; +import dev.zprestige.prestige.render.RandomUtil; +import dev.zprestige.prestige.world.RotationUtil; import java.util.Set; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.util.Hand; -public class ShortWindCharge extends Module implements RenderContract3 { +public class ShortWindCharge extends Module implements RotationProvider { public ShortWindCharge() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private EnumSetting a; - private RangeSetting c; - private BoolSetting d; - private BoolSetting e; - private FloatSetting f; - private FloatSetting g; - private RenderHelper27 h = new RenderHelper27(26293358099357L); - private float i = 0.0F; - private int j = 0; - private int k = 0; - private boolean l; + private EnumSetting mode; + private RangeSetting minDelay; + private BoolSetting switchBack; + private BoolSetting autoJump; + private FloatSetting pitch1; + private FloatSetting smoothing; + private StopWatch stageTimer = new StopWatch(); + private float originalPitch = 0.0F; + private int stage = 0; + private int previousSlot = 0; + private boolean throwPending; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 43040229079061L; - long var6 = var2 ^ 101476654358216L; - long var8 = var2 ^ 140072483835707L; - long var10 = var2 ^ 58861972349919L; - long var12 = var2 ^ 102840094869659L; - long var14 = var2 ^ 120434008667598L; - long var16 = var2 ^ 58982489950237L; - if (b.currentScreen == null && b.isWindowFocused()) { - if (this.l) { - if (b.player.isOnGround() && (Boolean)this.e.getValue()) { - RenderUtil2.a(new Object[]{var10}); + public Rotation provideRotation() { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (this.throwPending) { + if (mc.player.isOnGround() && this.autoJump.getValue()) { + JumpKeyPresser.pressJump(); } - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var12}); - this.l = false; + PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.throwPending = false; } - if (!((String)this.a.getValue()).equals("Silent")) { + if (!this.mode.getValue().equals("Silent")) { return null; - } else if (this.k != -1) { - int var10000 = this.k; - Object[] var10003 = new Object[]{null, var14}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - this.k = -1; - this.toggle(new Object[]{var4}); + } else if (this.previousSlot != -1) { + InventoryUtil.selectSlot(this.previousSlot); + this.previousSlot = -1; + this.toggle(); return null; } else { - float var19 = (Float)this.f.getValue() - 1.0F + RenderUtil5.a.nextFloat() * 2.0F; - int var20 = this.d(new Object[]{var6}); - if (var20 == -1) { + float throwPitch = this.pitch1.getValue() - 1.0F + RandomUtil.RANDOM.nextFloat() * 2.0F; + int windChargeSlot = this.findWindChargeSlot(); + if (windChargeSlot == -1) { return null; } else { - this.k = InventoryUtil.a_int_____(new Object[]{var16}); - if (b.player.isOnGround() && (Boolean)this.e.getValue()) { - RenderUtil2.a(new Object[]{var10}); + this.previousSlot = InventoryUtil.getSelectedSlot(); + if (mc.player.isOnGround() && this.autoJump.getValue()) { + JumpKeyPresser.pressJump(); } - Runnable var10001 = () -> { - float var5 = b.player.getPitch(); - b.player.setPitch(var19); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - b.player.setPitch(var5); - }; - Object[] var10005 = new Object[]{null, null, null, var8}; - var10005[2] = false; - var10005[1] = var10001; - var10005[0] = var20; - InventoryUtil.b_void__(var10005); - return new RenderBatch(b.player.getYaw(), var19); + InventoryUtil.runWithSlot(windChargeSlot, () -> { + float previousPitch = mc.player.getPitch(); + mc.player.setPitch(throwPitch); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + mc.player.setPitch(previousPitch); + }, false); + return new Rotation(mc.player.getYaw(), throwPitch); } } } else { @@ -113,74 +94,50 @@ public class ShortWindCharge extends Module implements RenderContract3 { } @Subscribe - public void a(TickEvent24 var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - if (((String)this.a.getValue()).equals("Legit")) { - RenderHelper27 var10000 = this.h; - float var10001 = (Float)this.c.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - switch (this.j) { + public void onFrame(FrameEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (this.mode.getValue().equals("Legit")) { + if (this.stageTimer.hasElapsed(this.minDelay.getValue())) { + switch (this.stage) { case 0: - if (a_boolean_________________________________(new Object[]{b.player.getMainHandStack(), 62546557267709L})) { - this.j(new Object[]{34429932222732L}); + if (isWindCharge(mc.player.getMainHandStack())) { + this.advanceStage(); return; } - int var24 = this.d(new Object[]{21716706357617L}); - if (var24 == -1) { - this.toggle(new Object[]{115103427876780L}); + int windChargeSlot = this.findWindChargeSlot(); + if (windChargeSlot == -1) { + this.toggle(); return; } - this.k = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - Object[] var30 = new Object[]{null, 37392877673079L}; - var30[0] = var24; - InventoryUtil.a_void________(var30); - this.j(new Object[]{34429932222732L}); + this.previousSlot = InventoryUtil.getSelectedSlot(); + InventoryUtil.selectSlot(windChargeSlot); + this.advanceStage(); break; case 1: - float var23 = (Float)this.f.getValue() - 1.0F + RenderUtil5.a.nextFloat() * 2.0F; - RenderBatch var27 = new RenderBatch(0.0F, var23); - var10001 = (Float)this.g.getValue() / 2.0F; - Object[] var31 = new Object[]{null, null, null, null, 40447786406815L}; - var31[3] = 0.5F; - var31[2] = 0.0F; - var31[1] = var10001; - var31[0] = var27; - if (WorldUtil.c(var31)) { - this.l = true; - this.j(new Object[]{34429932222732L}); + if (RotationUtil.smoothRotate(new Rotation(0.0F, this.pitch1.getValue() - 1.0F + RandomUtil.RANDOM.nextFloat() * 2.0F), this.smoothing.getValue() / 2.0F, 0.0F, 0.5F)) { + this.throwPending = true; + this.advanceStage(); } break; case 2: - if (this.l) { + if (this.throwPending) { return; } - RenderBatch var26 = new RenderBatch(0.0F, this.i); - var10001 = (Float)this.g.getValue() / 2.0F; - Object[] var10006 = new Object[]{null, null, null, null, 8666705888841L}; - var10006[3] = 0.5F; - var10006[2] = 0.0F; - var10006[1] = var10001; - var10006[0] = var26; - if (WorldUtil.d(var10006)) { - if (!(Boolean)this.d.getValue()) { - this.toggle(new Object[]{115103427876780L}); + if (RotationUtil.smoothRotatePitch(new Rotation(0.0F, this.originalPitch), this.smoothing.getValue() / 2.0F, 0.0F, 0.5F)) { + if (!this.switchBack.getValue()) { + this.toggle(); } else { - this.j(new Object[]{34429932222732L}); + this.advanceStage(); } } break; case 3: - if ((Boolean)this.d.getValue()) { - int var25 = this.k; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var25; - InventoryUtil.a_void________(var10003); - this.toggle(new Object[]{115103427876780L}); + if (this.switchBack.getValue()) { + InventoryUtil.selectSlot(this.previousSlot); + this.toggle(); } } } @@ -189,119 +146,37 @@ public class ShortWindCharge extends Module implements RenderContract3 { } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 45286455980699L; - long var6 = var2 ^ 87726956962791L; - long var8 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var8}); - this.h.a_void_____________________(new Object[]{var4}); - this.i = b.player.getPitch(); - this.j = 0; - this.h.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var6}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); + this.stageTimer.reset(); + this.originalPitch = mc.player.getPitch(); + this.stage = 0; + this.stageTimer.reset(); + this.minDelay.reroll(); } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 66991506590364L ^ var2; - long var4 = var2 ^ 130493300157453L; - long var6 = var2 ^ 17966985477489L; - this.h.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var6}); - this.j++; + private void advanceStage() { + this.stageTimer.reset(); + this.minDelay.reroll(); + this.stage++; } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); } - private int d(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 <= 8; var5++) { - ItemStack var6 = b.player.getInventory().getStack(var5); - if (var6.getItem().equals(Items.WIND_CHARGE)) { - return var5; + private int findWindChargeSlot() { + for (int slot = 0; slot <= 8; slot++) { + if (mc.player.getInventory().getStack(slot).getItem().equals(Items.WIND_CHARGE)) { + return slot; } } return -1; } - public static boolean a_boolean_________________________________(Object[] var0) { - ItemStack var1 = (ItemStack)var0[0]; - return var1.getItem().equals(Items.WIND_CHARGE); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public static boolean isWindCharge(ItemStack stack) { + return stack.getItem().equals(Items.WIND_CHARGE); } } diff --git a/src/main/java/dev/zprestige/prestige/module/mace/WindChargeAura.java b/src/main/java/dev/zprestige/prestige/module/mace/WindChargeAura.java index f892f86..cc3c080 100644 --- a/src/main/java/dev/zprestige/prestige/module/mace/WindChargeAura.java +++ b/src/main/java/dev/zprestige/prestige/module/mace/WindChargeAura.java @@ -5,15 +5,12 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.inventory.InventoryUtil2; +import dev.zprestige.prestige.inventory.PlayerInteractions; import dev.zprestige.prestige.module.combat.AutoObbyCrystal; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.world.RotationUtil; import java.util.Set; import net.minecraft.entity.Entity; import net.minecraft.entity.projectile.WindChargeEntity; @@ -21,186 +18,101 @@ import net.minecraft.util.math.Box; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; -public class WindChargeAura extends Module implements RenderContract3 { +public class WindChargeAura extends Module implements RotationProvider { public WindChargeAura() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; - private BoolSetting d; - private FloatSetting c; - private BoolSetting e; - private RenderHelper27 f = new RenderHelper27(26293358099357L); + private FloatSetting reach; + private BoolSetting humanizedAim; + private FloatSetting maxYaw; + private BoolSetting inAirOnly; + private StopWatch attackTimer = new StopWatch(); @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Mace); } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 121908361326646L; - long var6 = var2 ^ 7477342050734L; - long var8 = var2 ^ 92985031432050L; - long var10 = var2 ^ 91260814807711L; - long var12 = var2 ^ 29247161167908L; - long var14 = var2 ^ 85547089512629L; - long var16 = var2 ^ 101816702374277L; - if (b.player.isUsingItem()) { + public Rotation provideRotation() { + if (mc.player.isUsingItem()) { return null; - } else if ((Boolean)this.e.getValue() && b.player.isOnGround()) { + } else if (this.inAirOnly.getValue() && mc.player.isOnGround()) { return null; - } else if (AutoObbyCrystal.R) { + } else if (AutoObbyCrystal.sequenceActive) { return null; - } else if (Prestige.o.d_boolean______(new Object[0])) { + } else if (Prestige.silentRotationManager.hasActedThisTick()) { return null; } else { - RenderHelper27 var10000 = this.f; - Object[] var10004 = new Object[]{null, var14}; - var10004[0] = 100.0F; - boolean var19 = !var10000.a(var10004); - Entity var20 = this.a_class_1297___(new Object[]{var4}); - if (var20 == null) { + boolean onCooldown = !this.attackTimer.hasElapsed(100.0F); + Entity windCharge = this.findClosestWindCharge(); + if (windCharge == null) { return null; } else { - Vec3d var21 = var20.getBoundingBox().getCenter(); - RenderBatch var22 = Prestige.o.a_RenderBatch(new Object[]{var21, var16}); - if ((Boolean)this.d.getValue() && !var22.a_boolean________________________________________(new Object[0])) { - var22 = WorldUtil.d_RenderBatch(new Object[]{var22, var21, var6}); + Vec3d center = windCharge.getBoundingBox().getCenter(); + Rotation aimRotation = Prestige.silentRotationManager.getRotationTowards(center); + if (this.humanizedAim.getValue() && !aimRotation.isClamped()) { + aimRotation = RotationUtil.addRandomJitter(aimRotation, center); } - if (var22.a(new Object[0]) - b.player.getYaw() > (Float)this.c.getValue() * 2.0F - || var22.a(new Object[0]) - b.player.getYaw() < -(Float)this.c.getValue() * 2.0F) { + if (aimRotation.getYaw() - mc.player.getYaw() > this.maxYaw.getValue() * 2.0F + || aimRotation.getYaw() - mc.player.getYaw() < -this.maxYaw.getValue() * 2.0F) { return null; - } else if (!b.player.canSee(var20)) { + } else if (!mc.player.canSee(windCharge)) { return null; - } else if (this.a_double________(new Object[]{var20, var8}) > ((Float)this.a.getValue()).floatValue()) { + } else if (this.getEyeDistanceToHitbox(windCharge) > this.reach.getValue().floatValue()) { return null; - } else if (var19) { + } else if (onCooldown) { return null; - } else if (var22.a_boolean________________________________________(new Object[0])) { - return var22; + } else if (aimRotation.isClamped()) { + return aimRotation; } else { - InventoryUtil2.a_void_________(new Object[]{var20, var10}); - this.f.a_void_____________________(new Object[]{var12}); - return var22; + PlayerInteractions.attackEntity(windCharge); + this.attackTimer.reset(); + return aimRotation; } } } } - private Entity a_class_1297___(Object[] var1) { - Event.b(); - WindChargeEntity var5 = null; - double var6 = Double.MAX_VALUE; + private Entity findClosestWindCharge() { + WindChargeEntity closest = null; + double closestDistanceSq = Double.MAX_VALUE; - for (Entity var9 : b.world.getEntities()) { - if (var9 instanceof WindChargeEntity var10 && var10.isAlive() && var10.getOwner() != b.player) { - Vec3d var11 = var10.getBoundingBox().getCenter(); - double var12 = b.player.squaredDistanceTo(var11.x, var11.y, var11.z); - if (!(Math.sqrt(var12) > 5.0) && var12 < var6) { - var5 = var10; - var6 = var12; + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof WindChargeEntity windCharge && windCharge.isAlive() && windCharge.getOwner() != mc.player) { + Vec3d center = windCharge.getBoundingBox().getCenter(); + double distanceSq = mc.player.squaredDistanceTo(center.x, center.y, center.z); + if (!(Math.sqrt(distanceSq) > 5.0) && distanceSq < closestDistanceSq) { + closest = windCharge; + closestDistanceSq = distanceSq; } } } - return var5; + return closest; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); } - private double a_double________(Object[] var1) { - Entity var4 = (Entity)var1[0]; - Vec3d var5 = b.player.getEyePos(); - Box var6 = var4.getBoundingBox(); - double var7 = MathHelper.clamp(var5.x, var6.minX, var6.maxX); - double var9 = MathHelper.clamp(var5.y, var6.minY, var6.maxY); - double var11 = MathHelper.clamp(var5.z, var6.minZ, var6.maxZ); - double var13 = var5.x - var7; - double var15 = var5.y - var9; - double var17 = var5.z - var11; - return Math.sqrt(var13 * var13 + var15 * var15 + var17 * var17); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private double getEyeDistanceToHitbox(Entity entity) { + Vec3d eyePos = mc.player.getEyePos(); + Box box = entity.getBoundingBox(); + double closestX = MathHelper.clamp(eyePos.x, box.minX, box.maxX); + double closestY = MathHelper.clamp(eyePos.y, box.minY, box.maxY); + double closestZ = MathHelper.clamp(eyePos.z, box.minZ, box.maxZ); + double deltaX = eyePos.x - closestX; + double deltaY = eyePos.y - closestY; + double deltaZ = eyePos.z - closestZ; + return Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/AntiTrap.java b/src/main/java/dev/zprestige/prestige/module/misc/AntiTrap.java index 2d9aa00..11837b4 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/AntiTrap.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/AntiTrap.java @@ -6,10 +6,8 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.TickEvent19; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.ClientTickEvent; import net.minecraft.client.gui.screen.ingame.AbstractSignEditScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; @@ -22,16 +20,11 @@ import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket; import net.minecraft.network.packet.s2c.play.SignEditorOpenS2CPacket; public class AntiTrap extends Module { - private static final String a = "Armor Stands"; - private static final String c = "Minecarts"; - private static final String d = "Item Frames"; - private static final String e = "Boats"; - private static final String f = "End Crystals"; - private MultiSetting g; - private FloatSetting h; - private BoolSetting i; - private BoolSetting j; - private BoolSetting k; + private MultiSetting entities; + private FloatSetting range; + private BoolSetting cancelSpawnPackets; + private BoolSetting discardExisting; + private BoolSetting antiSign; public AntiTrap() { super("AntiTrap", "Hides entities commonly used to bait trap-TPAs (armor stands, minecarts, etc).", Category.Misc.ordinal()); @@ -39,19 +32,19 @@ public class AntiTrap extends Module { } @Subscribe - public void a(PacketEvent var1) { - if ((Boolean)this.k.getValue() && var1.a(new Object[0]) instanceof SignEditorOpenS2CPacket) { - var1.a_void_____(new Object[0]); - } else if ((Boolean)this.i.getValue()) { - if (var1.a(new Object[0]) instanceof EntitySpawnS2CPacket var7) { - if (b.player != null) { - if (this.d(new Object[]{var7.getEntityType(), 82216725291622L})) { - double var15 = var7.getX() - b.player.getX(); - double var10 = var7.getY() - b.player.getY(); - double var12 = var7.getZ() - b.player.getZ(); - float var14 = (Float)this.h.getValue(); - if (!(var15 * var15 + var10 * var10 + var12 * var12 > var14 * var14)) { - var1.a_void_____(new Object[0]); + public void onPacketReceive(PacketReceiveEvent event) { + if (this.antiSign.getValue() && event.getPacket() instanceof SignEditorOpenS2CPacket) { + event.cancel(); + } else if (this.cancelSpawnPackets.getValue()) { + if (event.getPacket() instanceof EntitySpawnS2CPacket spawnPacket) { + if (mc.player != null) { + if (this.isTrapEntityType(spawnPacket.getEntityType())) { + double dx = spawnPacket.getX() - mc.player.getX(); + double dy = spawnPacket.getY() - mc.player.getY(); + double dz = spawnPacket.getZ() - mc.player.getZ(); + float maxDistance = this.range.getValue(); + if (!(dx * dx + dy * dy + dz * dz > maxDistance * maxDistance)) { + event.cancel(); } } } @@ -60,26 +53,26 @@ public class AntiTrap extends Module { } @Subscribe - public void a(TickEvent19 var1) { - if ((Boolean)this.k.getValue() && b.currentScreen instanceof AbstractSignEditScreen) { - b.setScreen(null); + public void onClientTick(ClientTickEvent event) { + if (this.antiSign.getValue() && mc.currentScreen instanceof AbstractSignEditScreen) { + mc.setScreen(null); } - if ((Boolean)this.j.getValue()) { - if (b.world != null && b.player != null) { - float var7 = (Float)this.h.getValue(); - double var8 = var7 * var7; - double var10 = b.player.getX(); - double var12 = b.player.getY(); - double var14 = b.player.getZ(); + if (this.discardExisting.getValue()) { + if (mc.world != null && mc.player != null) { + float maxDistance = this.range.getValue(); + double maxDistanceSq = maxDistance * maxDistance; + double playerX = mc.player.getX(); + double playerY = mc.player.getY(); + double playerZ = mc.player.getZ(); - for (Entity var17 : b.world.getEntities()) { - if (this.a(new Object[]{var17, 103263670303874L})) { - double var18 = var17.getX() - var10; - double var20 = var17.getY() - var12; - double var22 = var17.getZ() - var14; - if (!(var18 * var18 + var20 * var20 + var22 * var22 > var8)) { - var17.discard(); + for (Entity entity : mc.world.getEntities()) { + if (this.isTrapEntity(entity)) { + double dx = entity.getX() - playerX; + double dy = entity.getY() - playerY; + double dz = entity.getZ() - playerZ; + if (!(dx * dx + dy * dy + dz * dz > maxDistanceSq)) { + entity.discard(); } } } @@ -87,144 +80,64 @@ public class AntiTrap extends Module { } } - private boolean a(Object[] var1) { - Entity var4 = (Entity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 109320834739014L ^ var2; - long var5 = var2 ^ 23102016790318L; - if (this.g.isSelected(new Object[]{"Armor Stands", var5}) && var4 instanceof ArmorStandEntity) { + private boolean isTrapEntity(Entity entity) { + if (this.entities.isSelected("Armor Stands") && entity instanceof ArmorStandEntity) { return true; - } else if (this.g.isSelected(new Object[]{"Minecarts", var5}) && var4 instanceof AbstractMinecartEntity) { + } else if (this.entities.isSelected("Minecarts") && entity instanceof AbstractMinecartEntity) { return true; - } else if (this.g.isSelected(new Object[]{"Item Frames", var5}) && var4 instanceof ItemFrameEntity) { + } else if (this.entities.isSelected("Item Frames") && entity instanceof ItemFrameEntity) { return true; } else { - return this.g.isSelected(new Object[]{"Boats", var5}) && var4 instanceof AbstractBoatEntity + return this.entities.isSelected("Boats") && entity instanceof AbstractBoatEntity ? true - : this.g.isSelected(new Object[]{"End Crystals", var5}) && var4 instanceof EndCrystalEntity; + : this.entities.isSelected("End Crystals") && entity instanceof EndCrystalEntity; } } - private boolean d(Object[] var1) { - EntityType var4 = (EntityType)var1[0]; - long var2 = (Long)var1[1]; - var2 = 109320834739014L ^ var2; - long var5 = var2 ^ 64384170474283L; - long var7 = var2 ^ 74121589242938L; - long var9 = var2 ^ 2399734809034L; - if (this.g.isSelected(new Object[]{"Armor Stands", var9}) && var4 == EntityType.ARMOR_STAND) { + private boolean isTrapEntityType(EntityType entityType) { + if (this.entities.isSelected("Armor Stands") && entityType == EntityType.ARMOR_STAND) { return true; - } else if (this.g.isSelected(new Object[]{"Minecarts", var9}) && this.e(new Object[]{var4, var5})) { + } else if (this.entities.isSelected("Minecarts") && this.isMinecartType(entityType)) { return true; - } else if (!this.g.isSelected(new Object[]{"Item Frames", var9}) || var4 != EntityType.ITEM_FRAME && var4 != EntityType.GLOW_ITEM_FRAME) { - return this.g.isSelected(new Object[]{"Boats", var9}) && this.f(new Object[]{var4, var7}) + } else if (!this.entities.isSelected("Item Frames") || entityType != EntityType.ITEM_FRAME && entityType != EntityType.GLOW_ITEM_FRAME) { + return this.entities.isSelected("Boats") && this.isBoatType(entityType) ? true - : this.g.isSelected(new Object[]{"End Crystals", var9}) && var4 == EntityType.END_CRYSTAL; + : this.entities.isSelected("End Crystals") && entityType == EntityType.END_CRYSTAL; } else { return true; } } - private boolean e(Object[] var1) { - EntityType var4 = (EntityType)var1[0]; - return var4 == EntityType.MINECART - || var4 == EntityType.CHEST_MINECART - || var4 == EntityType.COMMAND_BLOCK_MINECART - || var4 == EntityType.FURNACE_MINECART - || var4 == EntityType.HOPPER_MINECART - || var4 == EntityType.SPAWNER_MINECART - || var4 == EntityType.TNT_MINECART; + private boolean isMinecartType(EntityType entityType) { + return entityType == EntityType.MINECART + || entityType == EntityType.CHEST_MINECART + || entityType == EntityType.COMMAND_BLOCK_MINECART + || entityType == EntityType.FURNACE_MINECART + || entityType == EntityType.HOPPER_MINECART + || entityType == EntityType.SPAWNER_MINECART + || entityType == EntityType.TNT_MINECART; } - private boolean f(Object[] var1) { - EntityType var4 = (EntityType)var1[0]; - return var4 == EntityType.OAK_BOAT - || var4 == EntityType.SPRUCE_BOAT - || var4 == EntityType.BIRCH_BOAT - || var4 == EntityType.JUNGLE_BOAT - || var4 == EntityType.ACACIA_BOAT - || var4 == EntityType.DARK_OAK_BOAT - || var4 == EntityType.MANGROVE_BOAT - || var4 == EntityType.CHERRY_BOAT - || var4 == EntityType.PALE_OAK_BOAT - || var4 == EntityType.PALE_OAK_CHEST_BOAT - || var4 == EntityType.BAMBOO_RAFT - || var4 == EntityType.OAK_CHEST_BOAT - || var4 == EntityType.SPRUCE_CHEST_BOAT - || var4 == EntityType.BIRCH_CHEST_BOAT - || var4 == EntityType.JUNGLE_CHEST_BOAT - || var4 == EntityType.ACACIA_CHEST_BOAT - || var4 == EntityType.DARK_OAK_CHEST_BOAT - || var4 == EntityType.MANGROVE_CHEST_BOAT - || var4 == EntityType.CHERRY_CHEST_BOAT - || var4 == EntityType.BAMBOO_CHEST_RAFT; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private boolean isBoatType(EntityType entityType) { + return entityType == EntityType.OAK_BOAT + || entityType == EntityType.SPRUCE_BOAT + || entityType == EntityType.BIRCH_BOAT + || entityType == EntityType.JUNGLE_BOAT + || entityType == EntityType.ACACIA_BOAT + || entityType == EntityType.DARK_OAK_BOAT + || entityType == EntityType.MANGROVE_BOAT + || entityType == EntityType.CHERRY_BOAT + || entityType == EntityType.PALE_OAK_BOAT + || entityType == EntityType.PALE_OAK_CHEST_BOAT + || entityType == EntityType.BAMBOO_RAFT + || entityType == EntityType.OAK_CHEST_BOAT + || entityType == EntityType.SPRUCE_CHEST_BOAT + || entityType == EntityType.BIRCH_CHEST_BOAT + || entityType == EntityType.JUNGLE_CHEST_BOAT + || entityType == EntityType.ACACIA_CHEST_BOAT + || entityType == EntityType.DARK_OAK_CHEST_BOAT + || entityType == EntityType.MANGROVE_CHEST_BOAT + || entityType == EntityType.CHERRY_CHEST_BOAT + || entityType == EntityType.BAMBOO_CHEST_RAFT; } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/AutoArmor.java b/src/main/java/dev/zprestige/prestige/module/misc/AutoArmor.java index 6a47fb8..958996d 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/AutoArmor.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/AutoArmor.java @@ -6,14 +6,11 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.KeybindSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.combat.AutoArmorHelper; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.combat.EquipmentSlotSwitchMap; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.render.StopWatch; import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.EquipmentSlot; @@ -30,25 +27,23 @@ public class AutoArmor extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private EnumSetting a; - private KeybindSetting f; - private BoolSetting d; - private IntSetting c; - private RenderHelper27 e = new RenderHelper27(26293358099357L); - private static final EquipmentSlot[] g = new EquipmentSlot[]{EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET}; + private EnumSetting mode; + private KeybindSetting swapKey; + private BoolSetting avoidCursed; + private IntSetting delay; + private StopWatch swapTimer = new StopWatch(); + private static final EquipmentSlot[] ARMOR_SLOTS = new EquipmentSlot[]{EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET}; @Subscribe - public void a(TickEvent19 var1) { - if (b.player != null && b.world != null) { - RenderHelper27 var10000 = this.e; - float var10001 = ((Integer)this.c.getValue()).intValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - if (this.d(new Object[]{51031871974225L})) { - for (EquipmentSlot var16 : g) { - if (this.a(new Object[]{var16, 99166558571491L})) { - this.e.a_void_____________________(new Object[]{93540861878173L}); + public void onClientTick(ClientTickEvent event) { + if (mc.player != null && mc.world != null) { + StopWatch timer = this.swapTimer; + float delayMs = this.delay.getValue().intValue(); + if (timer.hasElapsed(delayMs)) { + if (this.isSwapAllowed()) { + for (EquipmentSlot slot : ARMOR_SLOTS) { + if (this.tryEquipBetterArmor(slot)) { + this.swapTimer.reset(); return; } } @@ -57,81 +52,58 @@ public class AutoArmor extends Module { } } - private boolean a(Object[] var1) { - EquipmentSlot var4 = (EquipmentSlot)var1[0]; - long var2 = (Long)var1[1]; - var2 = 125155694694942L ^ var2; - long var5 = var2 ^ 48703979815350L; - long var7 = var2 ^ 140371236960994L; - long var9 = var2 ^ 32465603899819L; - long var11 = var2 ^ 87340381176099L; - long var13 = var2 ^ 99259568632757L; - Event.b(); - ItemStack var16 = b.player.getEquippedStack(var4); - if (var4 == EquipmentSlot.CHEST && !var16.isEmpty() && var16.getItem() == Items.ELYTRA) { + private boolean tryEquipBetterArmor(EquipmentSlot slot) { + ItemStack equipped = mc.player.getEquippedStack(slot); + if (slot == EquipmentSlot.CHEST && !equipped.isEmpty() && equipped.getItem() == Items.ELYTRA) { return false; - } else if (!var16.isEmpty() && e(new Object[]{var16, Enchantments.BINDING_CURSE, var11})) { + } else if (!equipped.isEmpty() && hasEnchantment(equipped, Enchantments.BINDING_CURSE)) { return false; } else { - int var17 = var16.isEmpty() ? -1 : c(new Object[]{var16, var9}); - int var18 = -1; - int var19 = var17; + int equippedScore = equipped.isEmpty() ? -1 : getArmorScore(equipped); + int bestSlotId = -1; + int bestScore = equippedScore; - for (int var20 = 0; var20 < 36; var20++) { - ItemStack var21 = b.player.getInventory().getStack(var20); - if (!var21.isEmpty() - && a_class_1304(new Object[]{var21.getItem(), var5}) == var4 + for (int invIndex = 0; invIndex < 36; invIndex++) { + ItemStack candidate = mc.player.getInventory().getStack(invIndex); + if (!candidate.isEmpty() + && getArmorEquipmentSlot(candidate.getItem()) == slot && ( - !(Boolean)this.d.getValue() - || !e(new Object[]{var21, Enchantments.BINDING_CURSE, var11}) && !e(new Object[]{var21, Enchantments.VANISHING_CURSE, var11}) + !this.avoidCursed.getValue() + || !hasEnchantment(candidate, Enchantments.BINDING_CURSE) && !hasEnchantment(candidate, Enchantments.VANISHING_CURSE) )) { - int var22 = c(new Object[]{var21, var9}); - if (var22 > var19) { - var19 = var22; - var18 = var20 < 9 ? 36 + var20 : var20; + int candidateScore = getArmorScore(candidate); + if (candidateScore > bestScore) { + bestScore = candidateScore; + bestSlotId = invIndex < 9 ? 36 + invIndex : invIndex; } } } - if (var18 == -1) { + if (bestSlotId == -1) { return false; } else { - int var24 = a_int_____________(new Object[]{var4, var13}); - Object[] var10005 = new Object[]{null, null, SlotActionType.PICKUP, var7}; - var10005[1] = 0; - var10005[0] = var18; - InventoryUtil.e(var10005); - var10005 = new Object[]{null, null, SlotActionType.PICKUP, var7}; - var10005[1] = 0; - var10005[0] = var24; - InventoryUtil.e(var10005); - var10005 = new Object[]{null, null, SlotActionType.PICKUP, var7}; - var10005[1] = 0; - var10005[0] = var18; - InventoryUtil.e(var10005); + int armorSlotId = getArmorSlotId(slot); + InventoryUtil.clickSlot(bestSlotId, 0, SlotActionType.PICKUP); + InventoryUtil.clickSlot(armorSlotId, 0, SlotActionType.PICKUP); + InventoryUtil.clickSlot(bestSlotId, 0, SlotActionType.PICKUP); return true; } } } - private boolean d(Object[] var1) { - Event.b(); - String var5 = (String)this.a.getValue(); - - return switch (var5) { - case "Inventory" -> b.currentScreen instanceof InventoryScreen; + private boolean isSwapAllowed() { + return switch (this.mode.getValue()) { + case "Inventory" -> mc.currentScreen instanceof InventoryScreen; case "Keybind" -> { - int var7 = (Integer)this.f.getValue(); - yield var7 != -1 && GLFW.glfwGetKey(b.getWindow().getHandle(), var7) == 1; + int keyCode = this.swapKey.getValue(); + yield keyCode != -1 && GLFW.glfwGetKey(mc.getWindow().getHandle(), keyCode) == 1; } default -> true; }; } - private static int a_int_____________(Object[] var0) { - EquipmentSlot var1 = (EquipmentSlot)var0[0]; - - return switch (AutoArmorHelper.a[var1.ordinal()]) { + private static int getArmorSlotId(EquipmentSlot slot) { + return switch (EquipmentSlotSwitchMap.SWITCH_MAP[slot.ordinal()]) { case 1 -> 5; case 2 -> 6; case 3 -> 7; @@ -140,175 +112,93 @@ public class AutoArmor extends Module { }; } - private static EquipmentSlot a_class_1304(Object[] var0) { - Item var3 = (Item)var0[0]; - if (var3 == Items.NETHERITE_HELMET - || var3 == Items.DIAMOND_HELMET - || var3 == Items.IRON_HELMET - || var3 == Items.GOLDEN_HELMET - || var3 == Items.CHAINMAIL_HELMET - || var3 == Items.LEATHER_HELMET - || var3 == Items.TURTLE_HELMET) { + private static EquipmentSlot getArmorEquipmentSlot(Item item) { + if (item == Items.NETHERITE_HELMET + || item == Items.DIAMOND_HELMET + || item == Items.IRON_HELMET + || item == Items.GOLDEN_HELMET + || item == Items.CHAINMAIL_HELMET + || item == Items.LEATHER_HELMET + || item == Items.TURTLE_HELMET) { return EquipmentSlot.HEAD; - } else if (var3 == Items.NETHERITE_CHESTPLATE - || var3 == Items.DIAMOND_CHESTPLATE - || var3 == Items.IRON_CHESTPLATE - || var3 == Items.GOLDEN_CHESTPLATE - || var3 == Items.CHAINMAIL_CHESTPLATE - || var3 == Items.LEATHER_CHESTPLATE) { + } else if (item == Items.NETHERITE_CHESTPLATE + || item == Items.DIAMOND_CHESTPLATE + || item == Items.IRON_CHESTPLATE + || item == Items.GOLDEN_CHESTPLATE + || item == Items.CHAINMAIL_CHESTPLATE + || item == Items.LEATHER_CHESTPLATE) { return EquipmentSlot.CHEST; - } else if (var3 == Items.NETHERITE_LEGGINGS - || var3 == Items.DIAMOND_LEGGINGS - || var3 == Items.IRON_LEGGINGS - || var3 == Items.GOLDEN_LEGGINGS - || var3 == Items.CHAINMAIL_LEGGINGS - || var3 == Items.LEATHER_LEGGINGS) { + } else if (item == Items.NETHERITE_LEGGINGS + || item == Items.DIAMOND_LEGGINGS + || item == Items.IRON_LEGGINGS + || item == Items.GOLDEN_LEGGINGS + || item == Items.CHAINMAIL_LEGGINGS + || item == Items.LEATHER_LEGGINGS) { return EquipmentSlot.LEGS; } else { - return var3 != Items.NETHERITE_BOOTS - && var3 != Items.DIAMOND_BOOTS - && var3 != Items.IRON_BOOTS - && var3 != Items.GOLDEN_BOOTS - && var3 != Items.CHAINMAIL_BOOTS - && var3 != Items.LEATHER_BOOTS + return item != Items.NETHERITE_BOOTS + && item != Items.DIAMOND_BOOTS + && item != Items.IRON_BOOTS + && item != Items.GOLDEN_BOOTS + && item != Items.CHAINMAIL_BOOTS + && item != Items.LEATHER_BOOTS ? null : EquipmentSlot.FEET; } } - private static int c(Object[] var0) { - ItemStack var1 = (ItemStack)var0[0]; - long var2 = (Long)var0[1]; - var2 = 125155694694942L ^ var2; - long var4 = var2 ^ 89313523196562L; - long var6 = var2 ^ 57879653837780L; - int var8 = d_int________(new Object[]{var1.getItem(), var4}) * 100; - var8 += e_int______(new Object[]{var1, Enchantments.PROTECTION, var6}) * 5; - var8 += e_int______(new Object[]{var1, Enchantments.BLAST_PROTECTION, var6}) * 3; - var8 += e_int______(new Object[]{var1, Enchantments.PROJECTILE_PROTECTION, var6}) * 3; - var8 += e_int______(new Object[]{var1, Enchantments.FIRE_PROTECTION, var6}) * 2; - var8 += e_int______(new Object[]{var1, Enchantments.THORNS, var6}) * 2; - var8 += e_int______(new Object[]{var1, Enchantments.MENDING, var6}) * 3; - var8 += e_int______(new Object[]{var1, Enchantments.UNBREAKING, var6}) * 1; - var8 += e_int______(new Object[]{var1, Enchantments.FEATHER_FALLING, var6}) * 3; - var8 += e_int______(new Object[]{var1, Enchantments.DEPTH_STRIDER, var6}) * 1; - var8 += e_int______(new Object[]{var1, Enchantments.SOUL_SPEED, var6}) * 1; - var8 += e_int______(new Object[]{var1, Enchantments.AQUA_AFFINITY, var6}) * 1; - var8 += e_int______(new Object[]{var1, Enchantments.RESPIRATION, var6}) * 1; - return var8 + e_int______(new Object[]{var1, Enchantments.SWIFT_SNEAK, var6}) * 2; + private static int getArmorScore(ItemStack stack) { + int score = getMaterialScore(stack.getItem()) * 100; + score += getEnchantmentLevel(stack, Enchantments.PROTECTION) * 5; + score += getEnchantmentLevel(stack, Enchantments.BLAST_PROTECTION) * 3; + score += getEnchantmentLevel(stack, Enchantments.PROJECTILE_PROTECTION) * 3; + score += getEnchantmentLevel(stack, Enchantments.FIRE_PROTECTION) * 2; + score += getEnchantmentLevel(stack, Enchantments.THORNS) * 2; + score += getEnchantmentLevel(stack, Enchantments.MENDING) * 3; + score += getEnchantmentLevel(stack, Enchantments.UNBREAKING) * 1; + score += getEnchantmentLevel(stack, Enchantments.FEATHER_FALLING) * 3; + score += getEnchantmentLevel(stack, Enchantments.DEPTH_STRIDER) * 1; + score += getEnchantmentLevel(stack, Enchantments.SOUL_SPEED) * 1; + score += getEnchantmentLevel(stack, Enchantments.AQUA_AFFINITY) * 1; + score += getEnchantmentLevel(stack, Enchantments.RESPIRATION) * 1; + return score + getEnchantmentLevel(stack, Enchantments.SWIFT_SNEAK) * 2; } - private static int d_int________(Object[] var0) { - Item var3 = (Item)var0[0]; - if (var3 == Items.NETHERITE_HELMET || var3 == Items.NETHERITE_CHESTPLATE || var3 == Items.NETHERITE_LEGGINGS || var3 == Items.NETHERITE_BOOTS) { + private static int getMaterialScore(Item item) { + if (item == Items.NETHERITE_HELMET || item == Items.NETHERITE_CHESTPLATE || item == Items.NETHERITE_LEGGINGS || item == Items.NETHERITE_BOOTS) { return 60; - } else if (var3 == Items.DIAMOND_HELMET || var3 == Items.DIAMOND_CHESTPLATE || var3 == Items.DIAMOND_LEGGINGS || var3 == Items.DIAMOND_BOOTS) { + } else if (item == Items.DIAMOND_HELMET || item == Items.DIAMOND_CHESTPLATE || item == Items.DIAMOND_LEGGINGS || item == Items.DIAMOND_BOOTS) { return 50; - } else if (var3 == Items.IRON_HELMET - || var3 == Items.IRON_CHESTPLATE - || var3 == Items.IRON_LEGGINGS - || var3 == Items.IRON_BOOTS - || var3 == Items.TURTLE_HELMET) { + } else if (item == Items.IRON_HELMET + || item == Items.IRON_CHESTPLATE + || item == Items.IRON_LEGGINGS + || item == Items.IRON_BOOTS + || item == Items.TURTLE_HELMET) { return 30; - } else if (var3 == Items.CHAINMAIL_HELMET || var3 == Items.CHAINMAIL_CHESTPLATE || var3 == Items.CHAINMAIL_LEGGINGS || var3 == Items.CHAINMAIL_BOOTS) { + } else if (item == Items.CHAINMAIL_HELMET || item == Items.CHAINMAIL_CHESTPLATE || item == Items.CHAINMAIL_LEGGINGS || item == Items.CHAINMAIL_BOOTS) { return 20; - } else if (var3 == Items.GOLDEN_HELMET || var3 == Items.GOLDEN_CHESTPLATE || var3 == Items.GOLDEN_LEGGINGS || var3 == Items.GOLDEN_BOOTS) { + } else if (item == Items.GOLDEN_HELMET || item == Items.GOLDEN_CHESTPLATE || item == Items.GOLDEN_LEGGINGS || item == Items.GOLDEN_BOOTS) { return 15; } else { - return var3 != Items.LEATHER_HELMET && var3 != Items.LEATHER_CHESTPLATE && var3 != Items.LEATHER_LEGGINGS && var3 != Items.LEATHER_BOOTS ? 0 : 10; + return item != Items.LEATHER_HELMET && item != Items.LEATHER_CHESTPLATE && item != Items.LEATHER_LEGGINGS && item != Items.LEATHER_BOOTS ? 0 : 10; } } - private static boolean e(Object[] var0) { - ItemStack var4 = (ItemStack)var0[0]; - RegistryKey var3 = (RegistryKey)var0[1]; - long var1 = (Long)var0[2]; - var1 = 125155694694942L ^ var1; - long var5 = var1 ^ 112482250677084L; - return e_int______(new Object[]{var4, var3, var5}) > 0; + private static boolean hasEnchantment(ItemStack stack, RegistryKey enchantment) { + return getEnchantmentLevel(stack, enchantment) > 0; } - private static int e_int______(Object[] var0) { - ItemStack var4 = (ItemStack)var0[0]; - RegistryKey var3 = (RegistryKey)var0[1]; - if (var4.isEmpty()) { + private static int getEnchantmentLevel(ItemStack stack, RegistryKey enchantment) { + if (stack.isEmpty()) { return 0; } else { - for (Entry var7 : var4.getEnchantments().getEnchantmentEntries()) { - if (((RegistryEntry)var7.getKey()).matchesKey(var3)) { - return var7.getIntValue(); + for (Entry entry : stack.getEnchantments().getEnchantmentEntries()) { + if (((RegistryEntry)entry.getKey()).matchesKey(enchantment)) { + return entry.getIntValue(); } } return 0; } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/AutoClicker.java b/src/main/java/dev/zprestige/prestige/module/misc/AutoClicker.java index 4d7e87a..224abef 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/AutoClicker.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/AutoClicker.java @@ -8,14 +8,10 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.AimManager; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent24; +import dev.zprestige.prestige.event.FrameEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import java.util.Set; import java.util.function.Predicate; import net.minecraft.item.AxeItem; @@ -23,117 +19,87 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.EntityHitResult; public class AutoClicker extends Module { - private EnumSetting a; - private EnumSetting c; - private IntSetting d; - private FloatSetting e; - private FloatSetting f; - private BoolSetting g; - private BoolSetting h; - private FloatSetting i; - private FloatSetting j; - private RenderHelper27 k = new RenderHelper27(26293358099357L); - private float l = 200.0F; - private float m; - private float n = -1.0F; - private int o = -1; - private long p; - private float q; + private EnumSetting mode; + private EnumSetting clickButton; + private IntSetting interval; + private FloatSetting minCps; + private FloatSetting maxCps; + private BoolSetting stopOnBlock; + private BoolSetting weaponOnly; + private FloatSetting reactionTime; + private FloatSetting reactionJitter; + private StopWatch clickTimer = new StopWatch(); + private float nextClickDelay = 200.0F; + private float meanReactionDelay; + private float cachedReactionTime = -1.0F; + private int lastTargetId = -1; + private long targetSeenTime; + private float targetReactionDelay; public AutoClicker() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.d.setVisibility_IntSetting(new Object[]{(Predicate)lpL218_0 -> ((String)this.a.getValue()).equals("Interval"), 98265949679296L}); - this.c.setVisibility_EnumSetting(new Object[]{(Predicate)lpL219_0 -> ((String)this.a.getValue()).equals("Interval"), 90319707064974L}); - this.i.setVisibility_FloatSetting(new Object[]{(Predicate)lpL213_0 -> this.d(new Object[]{105783513896537L}), 35046756052036L}); - this.f.setVisibility_FloatSetting(new Object[]{(Predicate)lpL216_0 -> this.d(new Object[]{105783513896537L}), 35046756052036L}); - this.j - .setVisibility_FloatSetting( - new Object[]{(Predicate)lpL212_0 -> this.d(new Object[]{105783513896537L}) && (Float)this.i.getValue() > 0.0F, 35046756052036L} + this.interval.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Interval")); + this.clickButton.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Interval")); + this.reactionTime.visibleWhen((Predicate)ignored -> this.isGhostMode()); + this.maxCps.visibleWhen((Predicate)ignored -> this.isGhostMode()); + this.reactionJitter + .visibleWhen( + (Predicate)ignored -> this.isGhostMode() && this.reactionTime.getValue() > 0.0F ); - this.h.setVisibility_BoolSetting(new Object[]{(Predicate)lpL214_0 -> this.d(new Object[]{105783513896537L}), 73196168581295L}); - this.g.setVisibility_BoolSetting(new Object[]{(Predicate)lpL215_0 -> this.d(new Object[]{105783513896537L}), 73196168581295L}); - this.e.setVisibility_FloatSetting(new Object[]{(Predicate)lpL217_0 -> this.d(new Object[]{105783513896537L}), 35046756052036L}); + this.weaponOnly.visibleWhen((Predicate)ignored -> this.isGhostMode()); + this.stopOnBlock.visibleWhen((Predicate)ignored -> this.isGhostMode()); + this.minCps.visibleWhen((Predicate)ignored -> this.isGhostMode()); } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } - private boolean d(Object[] var1) { - return ((String)this.a.getValue()).equals("Ghost"); + private boolean isGhostMode() { + return this.mode.getValue().equals("Ghost"); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 17075022824029L; - long var6 = var2 ^ 113221713884235L; - this.j(new Object[]{var4}); - this.o = -1; - this.q = 0.0F; - float var10002 = Math.max((Float)this.e.getValue(), 1.0F); - float var10003 = (Float)this.f.getValue(); - Object[] var10006 = new Object[]{null, null, var6}; - var10006[1] = var10003; - var10006[0] = var10002; - this.l = 1000.0F / RenderUtil5.a(var10006); + public void onEnable() { + this.updateMeanReactionDelay(); + this.lastTargetId = -1; + this.targetReactionDelay = 0.0F; + this.nextClickDelay = 1000.0F / RandomUtil.randomFloat(Math.max(this.minCps.getValue(), 1.0F), this.maxCps.getValue()); } @Subscribe - public void a(TickEvent24 var1) { - if (b.currentScreen == null && b.player != null && !Prestige.j.a(new Object[]{46247009548246L})) { - if (((String)this.a.getValue()).equals("Interval")) { - RenderHelper27 var23 = this.k; - float var25 = ((Integer)this.d.getValue()).floatValue(); - Object[] var27 = new Object[]{null, 2505922520844L}; - var27[0] = var25; - if (var23.a(var27)) { - AimManager var24 = Prestige.j; - int var26 = ((String)this.c.getValue()).equals("Left") ? 0 : 1; - Object[] var28 = new Object[]{null, null, 60507167928612L}; - var28[1] = 0.0F; - var28[0] = var26; - var24.a_void_(var28); - this.k.a_void_____________________(new Object[]{93540861878173L}); + public void onFrame(FrameEvent event) { + if (mc.currentScreen == null && mc.player != null && !Prestige.clickScheduler.processPendingClick()) { + if (this.mode.getValue().equals("Interval")) { + if (this.clickTimer.hasElapsed(this.interval.getValue().floatValue())) { + Prestige.clickScheduler.scheduleClick(this.clickButton.getValue().equals("Left") ? 0 : 1, 0.0F); + this.clickTimer.reset(); } - } else if (!b.player.isUsingItem()) { - if (!(Boolean)this.g.getValue() || !(b.crosshairTarget instanceof BlockHitResult)) { - if (!(Boolean)this.h.getValue() - || InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L}) - || b.player.getMainHandStack().getItem() instanceof AxeItem) { - if (b.crosshairTarget instanceof EntityHitResult var19) { - int var21 = var19.getEntity().getId(); - if (var21 != this.o) { - this.o = var21; - this.p = System.currentTimeMillis(); - this.q = this.b_float____________(new Object[]{97004612147087L}); + } else if (!mc.player.isUsingItem()) { + if (!this.stopOnBlock.getValue() || !(mc.crosshairTarget instanceof BlockHitResult)) { + if (!this.weaponOnly.getValue() + || InventoryUtil.isSword(mc.player.getMainHandStack()) + || mc.player.getMainHandStack().getItem() instanceof AxeItem) { + if (mc.crosshairTarget instanceof EntityHitResult entityHit) { + int targetId = entityHit.getEntity().getId(); + if (targetId != this.lastTargetId) { + this.lastTargetId = targetId; + this.targetSeenTime = System.currentTimeMillis(); + this.targetReactionDelay = this.sampleReactionDelay(); } - if (System.currentTimeMillis() - this.p < (long)this.q) { + if (System.currentTimeMillis() - this.targetSeenTime < (long)this.targetReactionDelay) { return; } } else { - this.o = -1; + this.lastTargetId = -1; } - RenderHelper27 var10000 = this.k; - float var10001 = this.l; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - AimManager var22 = Prestige.j; - Object[] var10005 = new Object[]{null, null, 60507167928612L}; - var10005[1] = 0.0F; - var10005[0] = 0; - var22.a_void_(var10005); - float var10002 = Math.max((Float)this.e.getValue(), 1.0F); - float var10003 = (Float)this.f.getValue(); - Object[] var10006 = new Object[]{null, null, 29524726012237L}; - var10006[1] = var10003; - var10006[0] = var10002; - this.l = 1000.0F / RenderUtil5.a(var10006); - this.k.a_void_____________________(new Object[]{93540861878173L}); + if (this.clickTimer.hasElapsed(this.nextClickDelay)) { + Prestige.clickScheduler.scheduleClick(0, 0.0F); + this.nextClickDelay = 1000.0F / RandomUtil.randomFloat(Math.max(this.minCps.getValue(), 1.0F), this.maxCps.getValue()); + this.clickTimer.reset(); } } } @@ -141,147 +107,35 @@ public class AutoClicker extends Module { } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 94643421949254L ^ var2; - long var4 = var2 ^ 35233642579180L; - long var6 = var2 ^ 83965501772691L; - Event.b(); - this.n = (Float)this.i.getValue(); - if ((Float)this.i.getValue() <= 0.0F) { - this.m = 0.0F; + private void updateMeanReactionDelay() { + this.cachedReactionTime = this.reactionTime.getValue(); + if (this.reactionTime.getValue() <= 0.0F) { + this.meanReactionDelay = 0.0F; } else { - float var10001 = (Float)this.i.getValue(); - Object[] var10005 = new Object[]{null, null, var4}; - var10005[1] = 15.0F; - var10005[0] = var10001; - var10001 = c(var10005); - float var10002 = (Float)this.i.getValue() - 50.0F; - float var10003 = (Float)this.i.getValue() + 50.0F; - Object[] var10006 = new Object[]{null, null, null, var6}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - this.m = d_float__(var10006); + this.meanReactionDelay = clamp(sampleGaussian(this.reactionTime.getValue(), 15.0F), this.reactionTime.getValue() - 50.0F, this.reactionTime.getValue() + 50.0F); } } - private float b_float____________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 94643421949254L ^ var2; - long var4 = var2 ^ 138052841624978L; - long var6 = var2 ^ 12740850515000L; - long var8 = var2 ^ 114077300321095L; - if ((Float)this.i.getValue() != this.n) { - this.j(new Object[]{var4}); + private float sampleReactionDelay() { + if (this.reactionTime.getValue() != this.cachedReactionTime) { + this.updateMeanReactionDelay(); } - if (this.m <= 0.0F) { + if (this.meanReactionDelay <= 0.0F) { return 0.0F; } else { - float var11 = this.j.getValue() > 0.0F ? (Float)this.j.getValue() : 1.0F; - float var10000 = this.m; - Object[] var10004 = new Object[]{null, null, var6}; - var10004[1] = var11; - var10004[0] = var10000; - var10000 = c(var10004); - Object[] var10005 = new Object[]{null, null, null, var8}; - var10005[2] = 500.0F; - var10005[1] = 80.0F; - var10005[0] = var10000; - return d_float__(var10005); + float jitter = this.reactionJitter.getValue() > 0.0F ? this.reactionJitter.getValue() : 1.0F; + return clamp(sampleGaussian(this.meanReactionDelay, jitter), 80.0F, 500.0F); } } - private static float c(Object[] var0) { - float var1 = (Float)var0[0]; - float var4 = (Float)var0[1]; - long var2 = (Long)var0[2]; - var2 = 94643421949254L ^ var2; - long var5 = var2 ^ 80769315959546L; - Object[] var10004 = new Object[]{null, null, var5}; - var10004[1] = 1.0F; - var10004[0] = 1.0E-6F; - float var7 = RenderUtil5.a(var10004); - var10004 = new Object[]{null, null, var5}; - var10004[1] = 1.0F; - var10004[0] = 0.0F; - float var8 = RenderUtil5.a(var10004); - return var1 + var4 * (float)(Math.sqrt(-2.0 * Math.log(var7)) * Math.cos((Math.PI * 2) * var8)); + private static float sampleGaussian(float mean, float stdDev) { + float u1 = RandomUtil.randomFloat(1.0E-6F, 1.0F); + float u2 = RandomUtil.randomFloat(0.0F, 1.0F); + return mean + stdDev * (float)(Math.sqrt(-2.0 * Math.log(u1)) * Math.cos((Math.PI * 2) * u2)); } - private static float d_float__(Object[] var0) { - float var3 = (Float)var0[0]; - float var5 = (Float)var0[1]; - float var4 = (Float)var0[2]; - return Math.max(var5, Math.min(var4, var3)); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static float clamp(float value, float min, float max) { + return Math.max(min, Math.min(max, value)); } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/AutoLoot.java b/src/main/java/dev/zprestige/prestige/module/misc/AutoLoot.java index c544f49..07956aa 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/AutoLoot.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/AutoLoot.java @@ -5,14 +5,11 @@ import dev.zprestige.prestige.KeybindSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.TickEvent24; +import dev.zprestige.prestige.event.FrameEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.StopWatch; import java.util.List; import net.minecraft.client.gui.screen.ingame.InventoryScreen; -import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.screen.slot.SlotActionType; import org.lwjgl.glfw.GLFW; @@ -22,130 +19,42 @@ public class AutoLoot extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private RangeSetting a; - private IntSetting c; - private IntSetting d; - private KeybindSetting f; - private RenderHelper27 e = new RenderHelper27(26293358099357L); + private RangeSetting delay; + private IntSetting minTotems; + private IntSetting minPearls; + private KeybindSetting lootKey; + private StopWatch dropTimer = new StopWatch(); @Subscribe - public void a(TickEvent24 var1) { - if (b.currentScreen instanceof InventoryScreen) { - RenderHelper27 var10000 = this.e; - float var10001 = (Float)this.a.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (!var10000.a(var10004)) { + public void onFrame(FrameEvent event) { + if (mc.currentScreen instanceof InventoryScreen) { + if (!this.dropTimer.hasElapsed(this.delay.getValue())) { return; } - if ((Integer)this.f.getValue() == -1) { + if (this.lootKey.getValue() == -1) { return; } - if (GLFW.glfwGetKey(b.getWindow().getHandle(), (Integer)this.f.getValue()) == 0) { + if (GLFW.glfwGetKey(mc.getWindow().getHandle(), this.lootKey.getValue()) == 0) { return; } - Item var19 = Items.TOTEM_OF_UNDYING; - var10004 = new Object[]{null, null, 88471504819783L}; - var10004[1] = true; - var10004[0] = var19; - List var15 = InventoryUtil.b_List(var10004); - Item var20 = Items.ENDER_PEARL; - var10004 = new Object[]{null, null, 88471504819783L}; - var10004[1] = true; - var10004[0] = var20; - List var16 = InventoryUtil.b_List(var10004); - if (!var15.isEmpty() && var15.size() > (Integer)this.c.getValue()) { - int var18 = (Integer)var15.get(0) < 9 ? (Integer)var15.get(0) + 36 : (Integer)var15.get(0); - Object[] var23 = new Object[]{null, null, SlotActionType.THROW, 92701205799711L}; - var23[1] = 1; - var23[0] = var18; - InventoryUtil.e(var23); - this.a.reroll(new Object[]{57083216809697L}); - this.e.a_void_____________________(new Object[]{93540861878173L}); + List totemSlots = InventoryUtil.collectInventorySlots(Items.TOTEM_OF_UNDYING, true); + List pearlSlots = InventoryUtil.collectInventorySlots(Items.ENDER_PEARL, true); + if (!totemSlots.isEmpty() && totemSlots.size() > this.minTotems.getValue()) { + InventoryUtil.clickSlot((Integer)totemSlots.get(0) < 9 ? (Integer)totemSlots.get(0) + 36 : (Integer)totemSlots.get(0), 1, SlotActionType.THROW); + this.delay.reroll(); + this.dropTimer.reset(); return; } - if (!var16.isEmpty() && var16.size() > (Integer)this.d.getValue()) { - int var17 = (Integer)var16.get(0) < 9 ? (Integer)var16.get(0) + 36 : (Integer)var16.get(0); - Object[] var10005 = new Object[]{null, null, SlotActionType.THROW, 92701205799711L}; - var10005[1] = 1; - var10005[0] = var17; - InventoryUtil.e(var10005); - this.a.reroll(new Object[]{57083216809697L}); - this.e.a_void_____________________(new Object[]{93540861878173L}); + if (!pearlSlots.isEmpty() && pearlSlots.size() > this.minPearls.getValue()) { + InventoryUtil.clickSlot((Integer)pearlSlots.get(0) < 9 ? (Integer)pearlSlots.get(0) + 36 : (Integer)pearlSlots.get(0), 1, SlotActionType.THROW); + this.delay.reroll(); + this.dropTimer.reset(); return; } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/AutoPickaxe.java b/src/main/java/dev/zprestige/prestige/module/misc/AutoPickaxe.java index d9bed10..abe469a 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/AutoPickaxe.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/AutoPickaxe.java @@ -4,12 +4,9 @@ import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent24; +import dev.zprestige.prestige.event.FrameEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.StopWatch; import net.minecraft.block.Blocks; import net.minecraft.item.Item; import net.minecraft.item.Items; @@ -23,83 +20,62 @@ public class AutoPickaxe extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private BoolSetting a; - private RangeSetting c; - private RenderHelper27 e = new RenderHelper27(26293358099357L); - private static final Item[] f = new Item[]{ + private BoolSetting onlyWhenMining; + private BoolSetting fromInventory; + private RangeSetting delay; + private StopWatch actionTimer = new StopWatch(); + private static final Item[] PICKAXES = new Item[]{ Items.NETHERITE_PICKAXE, Items.DIAMOND_PICKAXE, Items.IRON_PICKAXE, Items.STONE_PICKAXE, Items.GOLDEN_PICKAXE, Items.WOODEN_PICKAXE }; - private int g = -1; - private int h = -1; + private int previousSlot = -1; + private int swappedInventorySlot = -1; @Subscribe - public void a(TickEvent24 var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - BlockPos var21 = b.player.getBlockPos().down(); - boolean var22 = (Boolean)this.d.getValue() && GLFW.glfwGetMouseButton(b.getWindow().getHandle(), 0) != 1; - HitResult var23 = b.crosshairTarget; - if (!(var23 instanceof BlockHitResult) || !((BlockHitResult)var23).getBlockPos().equals(var21) || var22) { - if (!this.d(new Object[]{123127378908948L})) { - this.j(new Object[]{36108270646903L}); + public void onFrame(FrameEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + BlockPos belowPos = mc.player.getBlockPos().down(); + boolean notMining = this.onlyWhenMining.getValue() && GLFW.glfwGetMouseButton(mc.getWindow().getHandle(), 0) != 1; + HitResult hitResult = mc.crosshairTarget; + if (!(hitResult instanceof BlockHitResult) || !((BlockHitResult)hitResult).getBlockPos().equals(belowPos) || notMining) { + if (!this.trySwapBack()) { + this.resetDelay(); } - } else if (!b.world.getBlockState(var21).isReplaceable() && b.world.getBlockState(var21).getBlock() != Blocks.BEDROCK) { - if (InventoryUtil.c(new Object[]{b.player.getMainHandStack(), 100639324877220L})) { - this.j(new Object[]{36108270646903L}); + } else if (!mc.world.getBlockState(belowPos).isReplaceable() && mc.world.getBlockState(belowPos).getBlock() != Blocks.BEDROCK) { + if (InventoryUtil.isPickaxe(mc.player.getMainHandStack())) { + this.resetDelay(); } else { - RenderHelper27 var10000 = this.e; - float var10001 = (Float)this.c.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - Object[] var10005 = new Object[]{null, null, 120051785458614L}; - var10005[1] = 9; - var10005[0] = 0; - Integer var24 = this.a(var10005); - if (var24 != null) { - this.g = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - this.h = -1; - int var28 = var24; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var28; - InventoryUtil.a_void________(var10003); - this.j(new Object[]{36108270646903L}); - } else if ((Boolean)this.a.getValue()) { - var10005 = new Object[]{null, null, 120051785458614L}; - var10005[1] = 36; - var10005[0] = 9; - Integer var25 = this.a(var10005); - if (var25 != null) { - int var26 = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - this.g = var26; - this.h = var25; - int var27 = var25; - var10004 = new Object[]{null, null, 133411734417951L}; - var10004[1] = var26; - var10004[0] = var27; - InventoryUtil.f(var10004); - this.j(new Object[]{36108270646903L}); + if (this.actionTimer.hasElapsed(this.delay.getValue())) { + Integer hotbarSlot = this.findPickaxeSlot(0, 9); + if (hotbarSlot != null) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.swappedInventorySlot = -1; + InventoryUtil.selectSlot(hotbarSlot); + this.resetDelay(); + } else if (this.fromInventory.getValue()) { + Integer inventorySlot = this.findPickaxeSlot(9, 36); + if (inventorySlot != null) { + int selectedSlot = InventoryUtil.getSelectedSlot(); + this.previousSlot = selectedSlot; + this.swappedInventorySlot = inventorySlot; + InventoryUtil.swapSlot(inventorySlot, selectedSlot); + this.resetDelay(); } } } } } else { - if (!this.d(new Object[]{123127378908948L})) { - this.j(new Object[]{36108270646903L}); + if (!this.trySwapBack()) { + this.resetDelay(); } } } } - private Integer a(Object[] var1) { - int var5 = (Integer)var1[0]; - int var4 = (Integer)var1[1]; - Event.b(); - - for (Item var10 : f) { - for (int var11 = var5; var11 < var4; var11++) { - if (b.player.getInventory().getStack(var11).getItem() == var10) { - return var11; + private Integer findPickaxeSlot(int fromSlot, int toSlot) { + for (Item pickaxe : PICKAXES) { + for (int slot = fromSlot; slot < toSlot; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == pickaxe) { + return slot; } } } @@ -107,119 +83,33 @@ public class AutoPickaxe extends Module { return null; } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 90208737997070L ^ var2; - long var4 = var2 ^ 119197203317879L; - long var6 = var2 ^ 35127419141229L; - long var8 = var2 ^ 32055836741741L; - long var10 = var2 ^ 75483503907845L; - if (this.g == -1) { + private boolean trySwapBack() { + if (this.previousSlot == -1) { return false; - } else if (!this.e.b(new Object[]{this.c, var4})) { + } else if (!this.actionTimer.hasElapsedRandom(this.delay)) { return true; } else { - if (this.h != -1) { - int var10000 = this.h; - int var10001 = this.g; - Object[] var10004 = new Object[]{null, null, var10}; - var10004[1] = var10001; - var10004[0] = var10000; - InventoryUtil.f(var10004); + if (this.swappedInventorySlot != -1) { + InventoryUtil.swapSlot(this.swappedInventorySlot, this.previousSlot); } else { - int var13 = this.g; - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var13; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(this.previousSlot); } - this.g = -1; - this.h = -1; - this.j(new Object[]{var8}); + this.previousSlot = -1; + this.swappedInventorySlot = -1; + this.resetDelay(); return true; } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 90208737997070L ^ var2; - long var4 = var2 ^ 43771801999588L; - long var6 = var2 ^ 71704473880984L; - this.e.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var6}); + private void resetDelay() { + this.actionTimer.reset(); + this.delay.reroll(); } @Override - public void onDisable(Object[] var1) { - this.g = -1; - this.h = -1; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + this.previousSlot = -1; + this.swappedInventorySlot = -1; } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/AutoPot.java b/src/main/java/dev/zprestige/prestige/module/misc/AutoPot.java index ca8857a..838e2f7 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/AutoPot.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/AutoPot.java @@ -5,13 +5,11 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import java.util.Set; import net.minecraft.entity.effect.StatusEffects; import net.minecraft.util.Hand; @@ -21,126 +19,46 @@ public class AutoPot extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private EnumSetting a; - private FloatSetting c; - private FloatSetting d; - private RenderHelper27 e = new RenderHelper27(26293358099357L); + private EnumSetting mode; + private FloatSetting health; + private FloatSetting pitch; + private StopWatch throwTimer = new StopWatch(); @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.UHC); } @Subscribe - public void a(TickEvent19 var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - boolean var15 = ((String)this.a.getValue()).equals("Auto"); - if (var15 && b.player.getHealth() > (Float)this.c.getValue()) { - this.e.a_void_____________________(new Object[]{93540861878173L}); + public void onClientTick(ClientTickEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + boolean autoMode = this.mode.getValue().equals("Auto"); + if (autoMode && mc.player.getHealth() > this.health.getValue()) { + this.throwTimer.reset(); } else { - RenderHelper27 var10000 = this.e; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 300.0F; - if (var10000.a(var10004)) { - if (var15) { - Object[] var10005 = new Object[]{null, null, StatusEffects.INSTANT_HEALTH, 16638224401259L}; - var10005[1] = 9; - var10005[0] = 0; - Integer var16 = InventoryUtil.e_Integer(var10005); - if (var16 == null) { + if (this.throwTimer.hasElapsed(300.0F)) { + if (autoMode) { + Integer potionSlot = InventoryUtil.findSplashPotion(0, 9, StatusEffects.INSTANT_HEALTH); + if (potionSlot == null) { return; } - int var18 = var16; - Runnable var10001 = () -> { - float var5 = b.player.getPitch(); - b.player.setPitch((Float)this.d.getValue() - 1.0F + RenderUtil5.a.nextFloat()); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - b.player.setPitch(var5); - }; - var10005 = new Object[]{null, null, null, 53805837885570L}; - var10005[2] = true; - var10005[1] = var10001; - var10005[0] = var18; - InventoryUtil.b_void__(var10005); - this.e.a_void_____________________(new Object[]{93540861878173L}); + InventoryUtil.runWithSlot(potionSlot, () -> { + float previousPitch = mc.player.getPitch(); + mc.player.setPitch(this.pitch.getValue() - 1.0F + RandomUtil.RANDOM.nextFloat()); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + mc.player.setPitch(previousPitch); + }, true); + this.throwTimer.reset(); } else { - float var17 = b.player.getPitch(); - b.player.setPitch((Float)this.d.getValue() - 1.0F + RenderUtil5.a.nextFloat()); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - b.player.setPitch(var17); - this.e.a_void_____________________(new Object[]{93540861878173L}); + float originalPitch = mc.player.getPitch(); + mc.player.setPitch(this.pitch.getValue() - 1.0F + RandomUtil.RANDOM.nextFloat()); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + mc.player.setPitch(originalPitch); + this.throwTimer.reset(); } } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/AutoText.java b/src/main/java/dev/zprestige/prestige/module/misc/AutoText.java index a932307..fe9e9f6 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/AutoText.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/AutoText.java @@ -2,9 +2,6 @@ package dev.zprestige.prestige.module.misc; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.TextSetting; -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Objects; public class AutoText extends Module { @@ -12,93 +9,22 @@ public class AutoText extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private TextSetting a; + private TextSetting text; @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 22594282158762L; - Event.b(); - String var7 = ((String)this.a.getValue()).toString(); - if (var7.startsWith("/")) { - Objects.requireNonNull(b.getNetworkHandler()).sendChatCommand(var7.substring(1)); + public void onEnable() { + String message = this.text.getValue().toString(); + if (message.startsWith("/")) { + Objects.requireNonNull(mc.getNetworkHandler()).sendChatCommand(message.substring(1)); } else { - Objects.requireNonNull(b.getNetworkHandler()).sendChatMessage(var7); + Objects.requireNonNull(mc.getNetworkHandler()).sendChatMessage(message); } - this.toggle(new Object[]{var4}); + this.toggle(); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/AutoTool.java b/src/main/java/dev/zprestige/prestige/module/misc/AutoTool.java index 0cb3c9b..0ee6d57 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/AutoTool.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/AutoTool.java @@ -2,11 +2,8 @@ package dev.zprestige.prestige.module.misc; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.block.AirBlock; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.Enchantments; @@ -19,122 +16,47 @@ public class AutoTool extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private int a = -1; + private int previousSlot = -1; @Subscribe - public void a(FloatEvent2 var1) { - if (b.crosshairTarget instanceof BlockHitResult var11) { - BlockPos var12 = var11.getBlockPos(); - if (!b.world.getBlockState(var12).isAir()) { - int var13 = this.a(new Object[]{var12, 93044856298765L}); - if (var13 != -1 && b.options.attackKey.isPressed()) { - this.a = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - Object[] var14 = new Object[]{null, 37392877673079L}; - var14[0] = var13; - InventoryUtil.a_void________(var14); + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (mc.crosshairTarget instanceof BlockHitResult blockHit) { + BlockPos blockPos = blockHit.getBlockPos(); + if (!mc.world.getBlockState(blockPos).isAir()) { + int toolSlot = this.findBestToolSlot(blockPos); + if (toolSlot != -1 && mc.options.attackKey.isPressed()) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + InventoryUtil.selectSlot(toolSlot); } else { - int var10000 = this.a; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(this.previousSlot); } } } } - private int a(Object[] var1) { - BlockPos var4 = (BlockPos)var1[0]; - Event.b(); - int var6 = -1; - float var7 = 1.0F; + private int findBestToolSlot(BlockPos pos) { + int bestSlot = -1; + float bestScore = 1.0F; - for (int var8 = 0; var8 <= 8; var8++) { - ItemStack var9 = b.player.getInventory().getStack(var8); - if (!var9.isEmpty() && var9.getMaxDamage() - var9.getDamage() > 10) { - float var10 = EnchantmentHelper.getLevel( - b.world.getRegistryManager().getOptional(Enchantments.EFFICIENCY.getRegistryRef()).get().getEntry(Enchantments.EFFICIENCY.getValue()).get(), - var9 + for (int slot = 0; slot <= 8; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (!stack.isEmpty() && stack.getMaxDamage() - stack.getDamage() > 10) { + float efficiencyLevel = EnchantmentHelper.getLevel( + mc.world.getRegistryManager().getOptional(Enchantments.EFFICIENCY.getRegistryRef()).get().getEntry(Enchantments.EFFICIENCY.getValue()).get(), + stack ); - float var11 = var9.getMiningSpeedMultiplier(b.world.getBlockState(var4)); - if (b.world.getBlockState(var4).getBlock() instanceof AirBlock) { + float miningSpeed = stack.getMiningSpeedMultiplier(mc.world.getBlockState(pos)); + if (mc.world.getBlockState(pos).getBlock() instanceof AirBlock) { return -1; } - if (var10 + var11 > var7) { - var7 = var10 + var11; - var6 = var8; + if (efficiencyLevel + miningSpeed > bestScore) { + bestScore = efficiencyLevel + miningSpeed; + bestSlot = slot; } } } - return var6; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + return bestSlot; } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/CartRefill.java b/src/main/java/dev/zprestige/prestige/module/misc/CartRefill.java index c515dfa..74f682d 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/CartRefill.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/CartRefill.java @@ -6,12 +6,9 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.KeybindSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.StopWatch; import java.util.Set; import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.item.ItemStack; @@ -23,36 +20,30 @@ public class CartRefill extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private EnumSetting a; - private KeybindSetting f; - private IntSetting c; - private IntSetting d; - private RenderHelper27 e = new RenderHelper27(26293358099357L); + private EnumSetting mode; + private KeybindSetting refillKey; + private IntSetting targetSlot; + private IntSetting delay; + private StopWatch refillTimer = new StopWatch(); @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Cart); } @Subscribe - public void a(TickEvent19 var1) { - if (b.player != null && b.world != null) { - RenderHelper27 var10000 = this.e; - float var10001 = ((Integer)this.d.getValue()).intValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - if (this.d(new Object[]{84297800312317L})) { - int var15 = (Integer)this.c.getValue() - 1; - ItemStack var16 = b.player.getInventory().getStack(var15); - if (var16.isEmpty()) { - int var17 = this.a(new Object[]{131533992057245L}); - if (var17 != -1) { - var10004 = new Object[]{null, null, 133411734417951L}; - var10004[1] = var15; - var10004[0] = var17; - InventoryUtil.f(var10004); - this.e.a_void_____________________(new Object[]{93540861878173L}); + public void onClientTick(ClientTickEvent event) { + if (mc.player != null && mc.world != null) { + StopWatch timer = this.refillTimer; + float delayMs = this.delay.getValue().intValue(); + if (timer.hasElapsed(delayMs)) { + if (this.isRefillAllowed()) { + int hotbarSlot = this.targetSlot.getValue() - 1; + if (mc.player.getInventory().getStack(hotbarSlot).isEmpty()) { + int cartSlot = this.findTntMinecartSlot(); + if (cartSlot != -1) { + InventoryUtil.swapSlot(cartSlot, hotbarSlot); + this.refillTimer.reset(); } } } @@ -60,93 +51,23 @@ public class CartRefill extends Module { } } - private boolean d(Object[] var1) { - if (((String)this.a.getValue()).equals("Always")) { - return b.currentScreen instanceof InventoryScreen; + private boolean isRefillAllowed() { + if (this.mode.getValue().equals("Always")) { + return mc.currentScreen instanceof InventoryScreen; } else { - int var5 = (Integer)this.f.getValue(); - return var5 != -1 && GLFW.glfwGetKey(b.getWindow().getHandle(), var5) == 1; + int keyCode = this.refillKey.getValue(); + return keyCode != -1 && GLFW.glfwGetKey(mc.getWindow().getHandle(), keyCode) == 1; } } - private int a(Object[] var1) { - Event.b(); - - for (int var5 = 9; var5 < 36; var5++) { - ItemStack var6 = b.player.getInventory().getStack(var5); - if (!var6.isEmpty() && var6.getItem() == Items.TNT_MINECART) { - return var5; + private int findTntMinecartSlot() { + for (int slot = 9; slot < 36; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (!stack.isEmpty() && stack.getItem() == Items.TNT_MINECART) { + return slot; } } return -1; } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/CartStealer.java b/src/main/java/dev/zprestige/prestige/module/misc/CartStealer.java index fb2c7c6..47bd1f5 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/CartStealer.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/CartStealer.java @@ -6,11 +6,8 @@ import dev.zprestige.prestige.KeybindSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.render.StopWatch; import java.util.Set; import net.minecraft.item.Items; import net.minecraft.screen.ShulkerBoxScreenHandler; @@ -23,38 +20,38 @@ public class CartStealer extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private RangeSetting a; - private BoolSetting d; - private KeybindSetting f; - private RenderHelper27 c = new RenderHelper27(26293358099357L); + private RangeSetting delay; + private BoolSetting autoClose; + private KeybindSetting activateKey; + private StopWatch stealTimer = new StopWatch(); @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Cart); } @Subscribe - public void a(TickEvent24 var1) { - if ((Integer)this.f.getValue() == -1 || GLFW.glfwGetKey(b.getWindow().getHandle(), (Integer)this.f.getValue()) == 1) { - if (this.c.b(new Object[]{this.a, 89714527855213L})) { - if (b.player.currentScreenHandler instanceof ShulkerBoxScreenHandler var13) { - if (this.a(new Object[]{var13, 31428784206748L}) <= 1) { - if ((Boolean)this.d.getValue()) { - b.player.closeHandledScreen(); + public void onFrame(FrameEvent event) { + if (this.activateKey.getValue() == -1 || GLFW.glfwGetKey(mc.getWindow().getHandle(), this.activateKey.getValue()) == 1) { + if (this.stealTimer.hasElapsedRandom(this.delay)) { + if (mc.player.currentScreenHandler instanceof ShulkerBoxScreenHandler shulkerHandler) { + if (this.countEmptyPlayerSlots(shulkerHandler) <= 1) { + if (this.autoClose.getValue()) { + mc.player.closeHandledScreen(); } } else { - for (int var16 = 0; var16 < 27; var16++) { - Slot var15 = var13.getSlot(var16); - if (var15.hasStack() && var15.getStack().isOf(Items.TNT_MINECART)) { - b.interactionManager.clickSlot(var13.syncId, var16, 0, SlotActionType.QUICK_MOVE, b.player); - this.c.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + for (int slotId = 0; slotId < 27; slotId++) { + Slot slot = shulkerHandler.getSlot(slotId); + if (slot.hasStack() && slot.getStack().isOf(Items.TNT_MINECART)) { + mc.interactionManager.clickSlot(shulkerHandler.syncId, slotId, 0, SlotActionType.QUICK_MOVE, mc.player); + this.stealTimer.reset(); + this.delay.reroll(); return; } } - if ((Boolean)this.d.getValue()) { - b.player.closeHandledScreen(); + if (this.autoClose.getValue()) { + mc.player.closeHandledScreen(); } } } @@ -62,85 +59,15 @@ public class CartStealer extends Module { } } - private int a(Object[] var1) { - ShulkerBoxScreenHandler var2 = (ShulkerBoxScreenHandler)var1[0]; - Event.b(); - int var6 = 0; + private int countEmptyPlayerSlots(ShulkerBoxScreenHandler handler) { + int emptySlots = 0; - for (int var7 = 27; var7 < 63; var7++) { - if (!var2.getSlot(var7).hasStack()) { - var6++; + for (int slotId = 27; slotId < 63; slotId++) { + if (!handler.getSlot(slotId).hasStack()) { + emptySlots++; } } - return var6; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + return emptySlots; } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/ChestStealer.java b/src/main/java/dev/zprestige/prestige/module/misc/ChestStealer.java index 21fd187..18ac66b 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/ChestStealer.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/ChestStealer.java @@ -5,13 +5,10 @@ import dev.zprestige.prestige.KeybindSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.TickEvent24; +import dev.zprestige.prestige.event.FrameEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.StopWatch; import net.minecraft.screen.GenericContainerScreenHandler; -import net.minecraft.screen.slot.Slot; import net.minecraft.screen.slot.SlotActionType; import org.lwjgl.glfw.GLFW; @@ -20,119 +17,42 @@ public class ChestStealer extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private RangeSetting a; - private BoolSetting d; - private KeybindSetting f; - private RenderHelper27 c = new RenderHelper27(26293358099357L); + private RangeSetting delay; + private BoolSetting autoClose; + private KeybindSetting activateKey; + private StopWatch stealTimer = new StopWatch(); @Subscribe - public void a(TickEvent24 var1) { - if ((Integer)this.f.getValue() != -1 && GLFW.glfwGetKey(b.getWindow().getHandle(), (Integer)this.f.getValue()) == 1) { - RenderHelper27 var10000 = this.c; - float var10001 = (Float)this.a.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - if (b.player.currentScreenHandler instanceof GenericContainerScreenHandler var15) { - for (int var16 = 0; var16 < var15.getInventory().size(); var16++) { - Slot var17 = var15.getSlot(var16); - if (var17.hasStack()) { - Object[] var10005 = new Object[]{null, null, SlotActionType.QUICK_MOVE, 114001958067495L}; - var10005[1] = 0; - var10005[0] = var16; - InventoryUtil.g(var10005); - this.c.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + public void onFrame(FrameEvent event) { + if (this.activateKey.getValue() != -1 && GLFW.glfwGetKey(mc.getWindow().getHandle(), this.activateKey.getValue()) == 1) { + if (this.stealTimer.hasElapsed(this.delay.getValue())) { + if (mc.player.currentScreenHandler instanceof GenericContainerScreenHandler containerHandler) { + for (int slotId = 0; slotId < containerHandler.getInventory().size(); slotId++) { + if (containerHandler.getSlot(slotId).hasStack()) { + InventoryUtil.clickContainerSlot(slotId, 0, SlotActionType.QUICK_MOVE); + this.stealTimer.reset(); + this.delay.reroll(); return; } } - if (this.a(new Object[]{var15, 126118319313640L}) && (Boolean)this.d.getValue()) { - b.player.closeHandledScreen(); + if (this.isContainerEmpty(containerHandler) && this.autoClose.getValue()) { + mc.player.closeHandledScreen(); } } } } } - private boolean a(Object[] var1) { - GenericContainerScreenHandler var4 = (GenericContainerScreenHandler)var1[0]; - int var6 = var4.getInventory().size() == 90 ? 54 : 27; + private boolean isContainerEmpty(GenericContainerScreenHandler handler) { + int containerSlots = handler.getInventory().size() == 90 ? 54 : 27; - for (int var7 = 0; var7 < var6; var7++) { - if (var4.getSlot(var7).hasStack()) { + for (int slotId = 0; slotId < containerSlots; slotId++) { + if (handler.getSlot(slotId).hasStack()) { return false; } } return true; } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/Criticals.java b/src/main/java/dev/zprestige/prestige/module/misc/Criticals.java index 827a443..85c0695 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/Criticals.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/Criticals.java @@ -4,16 +4,14 @@ import dev.zprestige.prestige.EnumSetting; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.BoolEvent; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.network.NetworkUtil; -import dev.zprestige.prestige.render.RenderUtil2; +import dev.zprestige.prestige.event.SwingHandEvent; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.network.PacketSender; +import dev.zprestige.prestige.render.JumpKeyPresser; import dev.zprestige.prestige.type.EventPhase; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import net.minecraft.entity.Entity; import net.minecraft.network.packet.c2s.play.HandSwingC2SPacket; @@ -26,156 +24,79 @@ public class Criticals extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private EnumSetting a; - private Entity c = null; - private int d = 0; - private boolean i = false; + private EnumSetting mode; + private Entity pendingTarget = null; + private int ticksUntilAttack = 0; + private boolean replayingAttack = false; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } @Subscribe - public void a(EntityEvent var1) { - if (this.d(new Object[]{37888275107808L}) && !this.i) { - Entity var11 = var1.a(new Object[0]); - if (var11 != null) { - if (((String)this.a.getValue()).equals("Silent")) { - Object[] var10004 = new Object[]{null, 54655750177859L}; - var10004[0] = 0.0625F; - this.j(var10004); - var10004 = new Object[]{null, 54655750177859L}; - var10004[0] = 0.0F; - this.j(var10004); + public void onAttackEntity(AttackEntityEvent event) { + if (this.canCrit() && !this.replayingAttack) { + Entity target = event.getTarget(); + if (target != null) { + if (this.mode.getValue().equals("Silent")) { + this.sendOffsetPosition(0.0625F); + this.sendOffsetPosition(0.0F); } else { - this.c = var11; - if (((String)this.a.getValue()).equals("Legit")) { - RenderUtil2.a(new Object[]{134150376721510L}); + this.pendingTarget = target; + if (this.mode.getValue().equals("Legit")) { + JumpKeyPresser.pressJump(); } else { - b.player.setVelocity(new Vec3d(b.player.getVelocity().x, b.player.getVelocity().y + 0.15, b.player.getVelocity().z)); + mc.player.setVelocity(new Vec3d(mc.player.getVelocity().x, mc.player.getVelocity().y + 0.15, mc.player.getVelocity().z)); } - this.d = ((String)this.a.getValue()).equals("Legit") ? 6 : 1; - var1.a_void_____(new Object[0]); + this.ticksUntilAttack = this.mode.getValue().equals("Legit") ? 6 : 1; + event.cancel(); } } } } @Subscribe - public void a(PacketEvent2 var1) { - if (this.d(new Object[]{37888275107808L}) && !this.i) { - if (var1.a(new Object[0]) instanceof HandSwingC2SPacket && !((String)this.a.getValue()).equals("Silent") && this.c != null) { - var1.a_void_____(new Object[0]); + public void onPacketSend(PacketSendEvent event) { + if (this.canCrit() && !this.replayingAttack) { + if (event.getPacket() instanceof HandSwingC2SPacket && !this.mode.getValue().equals("Silent") && this.pendingTarget != null) { + event.cancel(); } } } @Subscribe - public void a(TickEvent19 var1) { - if (this.c != null) { - if (this.d <= 0) { - this.i = true; - if (b.crosshairTarget.getType() == Type.ENTITY) { - InventoryUtil2.a_void_________(new Object[]{this.c, 31382773185830L}); + public void onClientTick(ClientTickEvent event) { + if (this.pendingTarget != null) { + if (this.ticksUntilAttack <= 0) { + this.replayingAttack = true; + if (mc.crosshairTarget.getType() == Type.ENTITY) { + PlayerInteractions.attackEntity(this.pendingTarget); } - this.i = false; - this.c = null; + this.replayingAttack = false; + this.pendingTarget = null; } else { - this.d--; + this.ticksUntilAttack--; } } } @Subscribe - public void a(BoolEvent var1) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE) { - if (this.c != null && this.d > 0) { - var1.a_void_____(new Object[0]); + public void onSwingHand(SwingHandEvent event) { + if (event.getPhase() == EventPhase.PRE) { + if (this.pendingTarget != null && this.ticksUntilAttack > 0) { + event.cancel(); } } } - private void j(Object[] var1) { - float var4 = (Float)var1[0]; - long var2 = (Long)var1[1]; - var2 = 66180507535862L ^ var2; - long var5 = var2 ^ 67422375684283L; - PositionAndOnGround var7 = new PositionAndOnGround(b.player.getX(), b.player.getY() + var4, b.player.getZ(), false, b.player.horizontalCollision); - NetworkUtil.a(new Object[]{var7, var5}); + private void sendOffsetPosition(float yOffset) { + PacketSender.sendPacket(new PositionAndOnGround(mc.player.getX(), mc.player.getY() + yOffset, mc.player.getZ(), false, mc.player.horizontalCollision)); } - private boolean d(Object[] var1) { - return b.player != null && b.player.isOnGround() && !b.player.isSubmergedInWater() && !b.player.isInLava() && !b.player.isClimbing(); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private boolean canCrit() { + return mc.player != null && mc.player.isOnGround() && !mc.player.isSubmergedInWater() && !mc.player.isInLava() && !mc.player.isClimbing(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/CrystalOptimizer.java b/src/main/java/dev/zprestige/prestige/module/misc/CrystalOptimizer.java index d8eed74..a91049b 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/CrystalOptimizer.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/CrystalOptimizer.java @@ -3,10 +3,7 @@ package dev.zprestige.prestige.module.misc; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.AttackEntityEvent; import java.util.Set; import net.minecraft.entity.Entity; import net.minecraft.entity.Entity.RemovalReason; @@ -19,90 +16,21 @@ public class CrystalOptimizer extends Module { } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Subscribe - public void a(EntityEvent var1) { - Event.b(); - Entity var5 = var1.a(new Object[0]); - if (var5 instanceof EndCrystalEntity) { - if (b.player.getStatusEffect(StatusEffects.WEAKNESS) != null) { + public void onAttackEntity(AttackEntityEvent event) { + Entity target = event.getTarget(); + if (target instanceof EndCrystalEntity) { + if (mc.player.getStatusEffect(StatusEffects.WEAKNESS) != null) { return; } - var5.remove(RemovalReason.KILLED); - var5.setRemoved(RemovalReason.KILLED); - var5.onRemoved(); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + target.remove(RemovalReason.KILLED); + target.setRemoved(RemovalReason.KILLED); + target.onRemoved(); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/EnemyFaker.java b/src/main/java/dev/zprestige/prestige/module/misc/EnemyFaker.java index 10018c7..5ce0269 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/EnemyFaker.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/EnemyFaker.java @@ -7,15 +7,12 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.TextSetting; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.EntityEvent5; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.StringEvent; -import dev.zprestige.prestige.event.StringEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.social.AltManager; +import dev.zprestige.prestige.event.LabelTextEvent; +import dev.zprestige.prestige.event.SkinTexturesEvent; +import dev.zprestige.prestige.event.TextReplaceEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.social.MojangApi; import dev.zprestige.prestige.world.PositionUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -33,86 +30,82 @@ public class EnemyFaker extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private TextSetting a; - private TextSetting c; - private EnumSetting d; - private BoolSetting e; - private SkinTextures f = null; - private PlayerEntity g; + private TextSetting fakeName; + private TextSetting gamemode; + private EnumSetting tier; + private BoolSetting update; + private SkinTextures fakeSkin = null; + private PlayerEntity target; @Subscribe - public void a(StringEvent var1) { - if (this.g != null - && this.f != null - && var1.a_String___(new Object[0]) != null - && var1.a(new Object[0]) != null - && !((String)this.a.getValue()).isEmpty() - && b.getNetworkHandler().getPlayerListEntry(this.g.getUuid()) != null - && b.getNetworkHandler().getPlayerListEntry(this.g.getUuid()).getProfile() != null) { - if (var1.a_String___(new Object[0]) - .equals(PositionUtil.a_String________(new Object[]{b.getNetworkHandler().getPlayerListEntry(this.g.getUuid()).getProfile(), 3044946865408L}))) { - var1.b(new Object[]{this.f}); - var1.a_void_____(new Object[0]); + public void onSkinTextures(SkinTexturesEvent event) { + if (this.target != null + && this.fakeSkin != null + && event.getPlayerName() != null + && event.getSkinTextures() != null + && !this.fakeName.getValue().isEmpty() + && mc.getNetworkHandler().getPlayerListEntry(this.target.getUuid()) != null + && mc.getNetworkHandler().getPlayerListEntry(this.target.getUuid()).getProfile() != null) { + if (event.getPlayerName() + .equals(PositionUtil.getProfileName(mc.getNetworkHandler().getPlayerListEntry(this.target.getUuid()).getProfile()))) { + event.setSkinTextures(this.fakeSkin); + event.cancel(); } } } @Subscribe - public void a(EntityEvent5 var1) { - if (this.g != null) { - if (var1.a(new Object[0]).equals(this.g)) { - MutableText var7 = Text.literal(String.valueOf(this.a_class_3545(new Object[]{43791854069900L}).getLeft())); - short var10000 = 30710; - MutableText var8 = Text.literal(((String)this.d.getValue()).toString()) - .styled(lpL194_0 -> ((net.minecraft.text.Style)lpL194_0).withColor(a_int______________(new Object[]{((String)this.d.getValue()).toString(), 12129676112239L}))); - MutableText var9 = Text.literal(" | ").styled(lpL193_0 -> ((net.minecraft.text.Style)lpL193_0).withColor(Formatting.GRAY)); - MutableText var10 = Text.literal(((String)this.a.getValue()).toString()).styled(lpL192_0 -> ((net.minecraft.text.Style)lpL192_0).withFormatting(Formatting.WHITE)); - if (((String)this.a.getValue()).isEmpty()) { - var10 = Text.literal(var1.a(new Object[0]).getName().getString()).styled(lpL191_0 -> ((net.minecraft.text.Style)lpL191_0).withFormatting(Formatting.WHITE)); + public void onLabelText(LabelTextEvent event) { + if (this.target != null) { + if (event.getEntity().equals(this.target)) { + MutableText iconText = Text.literal(String.valueOf(this.getGamemodeIcon().getLeft())); + MutableText tierText = Text.literal(this.tier.getValue().toString()) + .styled(style -> style.withColor(getTierColor(this.tier.getValue().toString()))); + MutableText separatorText = Text.literal(" | ").styled(style -> style.withColor(Formatting.GRAY)); + MutableText nameText = Text.literal(this.fakeName.getValue().toString()).styled(style -> style.withFormatting(Formatting.WHITE)); + if (this.fakeName.getValue().isEmpty()) { + nameText = Text.literal(event.getEntity().getName().getString()).styled(style -> style.withFormatting(Formatting.WHITE)); } - MutableText var11 = (((String)this.d.getValue()).equals("None") ? Text.empty() : var7.append(var8).append(var9)).append(var10); - var1.b(new Object[]{var11}); - var1.a_void_____(new Object[0]); + event.setText((this.tier.getValue().equals("None") ? Text.empty() : iconText.append(tierText).append(separatorText)).append(nameText)); + event.cancel(); } } } @Subscribe - public void a(StringEvent2 var1) { - if (this.g != null && !((String)this.a.getValue()).isEmpty()) { - if (var1.b_String_(new Object[0]).contains(this.g.getName().getString())) { - var1.b(new Object[]{this.g.getName().getString()}); - var1.c(new Object[]{((String)this.a.getValue()).toString()}); - var1.a_void_____(new Object[0]); + public void onTextReplace(TextReplaceEvent event) { + if (this.target != null && !this.fakeName.getValue().isEmpty()) { + if (event.getText().contains(this.target.getName().getString())) { + event.setTarget(this.target.getName().getString()); + event.setText(this.fakeName.getValue().toString()); + event.cancel(); } } } @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - - for (PlayerEntity var12 : b.world.getPlayers()) { - if (!var12.equals(b.player) && (var12.isDead() || !var12.isAlive())) { - b.world.removeEntity(var12.getId(), RemovalReason.DISCARDED); + public void onClientTick(ClientTickEvent event) { + for (PlayerEntity player : mc.world.getPlayers()) { + if (!player.equals(mc.player) && (player.isDead() || !player.isAlive())) { + mc.world.removeEntity(player.getId(), RemovalReason.DISCARDED); } } - this.g = a(new Object[]{11921155283737L}); - if ((Boolean)this.e.getValue()) { - this.e.setValue(false); - if (!((String)this.a.getValue()).isEmpty()) { - UUID var14 = AltManager.a(new Object[]{((String)this.a.getValue()).toString(), 101923350145499L}); - if (var14 != null) { - GameProfile var15 = AltManager.a_GameProfile(new Object[]{var14, 76452615521574L}); - CompletableFuture var13 = b.getSkinProvider().fetchSkinTextures(var15); - var13.thenAccept(lpL190_0 -> { - if (((java.util.Optional)lpL190_0).isPresent()) { - this.f = (SkinTextures)((java.util.Optional)lpL190_0).get(); - b.player.sendMessage(Text.of("Fake skin updated to: " + (String)this.a.getValue()), false); + this.target = findClosestEnemy(); + if (this.update.getValue()) { + this.update.setValue(false); + if (!this.fakeName.getValue().isEmpty()) { + UUID uuid = MojangApi.fetchUuid(this.fakeName.getValue().toString()); + if (uuid != null) { + GameProfile profile = MojangApi.fetchProfile(uuid); + CompletableFuture skinFuture = mc.getSkinProvider().fetchSkinTextures(profile); + skinFuture.thenAccept(skinResult -> { + if (((java.util.Optional)skinResult).isPresent()) { + this.fakeSkin = (SkinTextures)((java.util.Optional)skinResult).get(); + mc.player.sendMessage(Text.of("Fake skin updated to: " + this.fakeName.getValue()), false); } else { - b.player.sendMessage(Text.of("Failed to fetch skin for: " + (String)this.a.getValue()), false); + mc.player.sendMessage(Text.of("Failed to fetch skin for: " + this.fakeName.getValue()), false); } }); } @@ -120,32 +113,24 @@ public class EnemyFaker extends Module { } } - public static PlayerEntity a(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 18758766630033L ^ var1; - long var3 = var1 ^ 14575397154306L; - long var5 = var1 ^ 46907505884087L; - Event.b(); - PlayerEntity var8 = null; + public static PlayerEntity findClosestEnemy() { + PlayerEntity closest = null; - for (PlayerEntity var10 : new ArrayList<>(b.world.getPlayers())) { - if (!var10.equals(b.player) - && !Prestige.g.a(new Object[]{var10.getName().getString(), var3}) - && var10.getName().getString().length() >= 3 - && Prestige.i.a_boolean_(new Object[]{var10, var5}) - && (var8 == null || b.player.squaredDistanceTo(var10) < b.player.squaredDistanceTo(var8))) { - var8 = var10; + for (PlayerEntity player : new ArrayList<>(mc.world.getPlayers())) { + if (!player.equals(mc.player) + && !Prestige.friendManager.isFriend(player.getName().getString()) + && player.getName().getString().length() >= 3 + && Prestige.botFilter.isValidTarget(player) + && (closest == null || mc.player.squaredDistanceTo(player) < mc.player.squaredDistanceTo(closest))) { + closest = player; } } - return var8; + return closest; } - private static int a_int______________(Object[] var0) { - String var3 = (String)var0[0]; - Event.b(); - - return switch (var3) { + private static int getTierColor(String tierName) { + return switch (tierName) { case "HT1" -> 15252026; case "LT1" -> 14005077; case "HT2" -> 12899303; @@ -160,11 +145,8 @@ public class EnemyFaker extends Module { }; } - private Pair a_class_3545(Object[] var1) { - String var5 = ((String)this.c.getValue()).toLowerCase(); - Event.b(); - - return switch (var5) { + private Pair getGamemodeIcon() { + return switch (this.gamemode.getValue().toLowerCase()) { case "axe" -> new Pair('\ue701', TextColor.fromFormatting(Formatting.GREEN)); case "mace" -> new Pair('\ue702', TextColor.fromFormatting(Formatting.GRAY)); case "nethop", "neth_pot" -> new Pair('\ue703', TextColor.fromRgb(8211008)); @@ -188,72 +170,4 @@ public class EnemyFaker extends Module { default -> new Pair('•', TextColor.fromFormatting(Formatting.WHITE)); }; } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/FastEXP.java b/src/main/java/dev/zprestige/prestige/module/misc/FastEXP.java index 112d9d6..3ffe53a 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/FastEXP.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/FastEXP.java @@ -6,16 +6,13 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent5; +import dev.zprestige.prestige.event.DoItemUseEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; import net.minecraft.component.type.AttributeModifierSlot; import net.minecraft.enchantment.Enchantments; @@ -28,233 +25,172 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult.Type; import org.lwjgl.glfw.GLFW; -public class FastEXP extends Module implements RenderContract3 { - private EnumSetting a; - private RangeSetting c; - private BoolSetting d; - private BoolSetting e; - private BoolSetting f; - private RenderHelper27 g = new RenderHelper27(26293358099357L); - private int h = -1; - private int i = -1; +public class FastEXP extends Module implements RotationProvider { + private EnumSetting mode; + private RangeSetting delay; + private BoolSetting rotateDown; + private BoolSetting fromInventory; + private BoolSetting swapBack; + private StopWatch throwTimer = new StopWatch(); + private int previousSlot = -1; + private int swappedInventorySlot = -1; public FastEXP() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.e.setVisibility_BoolSetting(new Object[]{(Predicate)lpL201_0 -> ((String)this.a.getValue()).equals("Automatic"), 73196168581295L}); - this.f.setVisibility_BoolSetting(new Object[]{(Predicate)lpL200_0 -> ((String)this.a.getValue()).equals("Automatic"), 73196168581295L}); - this.d.setVisibility_BoolSetting(new Object[]{(Predicate)lpL202_0 -> ((String)this.a.getValue()).equals("Manual"), 73196168581295L}); + this.fromInventory.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Automatic")); + this.swapBack.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Automatic")); + this.rotateDown.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Manual")); } @Subscribe - public void a(TickEvent5 var1) { - if (this.f(new Object[]{95897545603097L})) { - var1.a_void_____(new Object[0]); + public void onDoItemUse(DoItemUseEvent event) { + if (this.isHoldingExpBottle()) { + event.cancel(); } } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 66268029083673L; - long var6 = var2 ^ 18600503218156L; - if (b.currentScreen == null && b.isWindowFocused()) { - return ((String)this.a.getValue()).equals("Automatic") ? this.c(new Object[]{var6}) : this.b_RenderBatch___________(new Object[]{var4}); + public Rotation provideRotation() { + if (mc.currentScreen == null && mc.isWindowFocused()) { + return this.mode.getValue().equals("Automatic") ? this.runAutomaticMode() : this.runManualMode(); } else { return null; } } - private RenderBatch b_RenderBatch___________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 4514749775132L ^ var2; - long var4 = var2 ^ 35305615903038L; - long var6 = var2 ^ 38241130376481L; - long var8 = var2 ^ 42111411261649L; - long var10 = var2 ^ 111970955679134L; - long var12 = var2 ^ 36161376881317L; - long var14 = var2 ^ 75033648675933L; - if (this.f(new Object[]{var12}) && GLFW.glfwGetMouseButton(b.getWindow().getHandle(), 1) == 1) { - if (this.g.b(new Object[]{this.c, var8})) { - float var17 = b.player.getPitch(); - if ((Boolean)this.d.getValue()) { - b.player.setPitch(90.0F); + private Rotation runManualMode() { + if (this.isHoldingExpBottle() && GLFW.glfwGetMouseButton(mc.getWindow().getHandle(), 1) == 1) { + if (this.throwTimer.hasElapsedRandom(this.delay)) { + float originalPitch = mc.player.getPitch(); + if (this.rotateDown.getValue()) { + mc.player.setPitch(90.0F); } - if (b.crosshairTarget != null && b.crosshairTarget.getType() == Type.BLOCK) { - InventoryUtil2.a(new Object[]{(BlockHitResult)b.crosshairTarget, var4}); + if (mc.crosshairTarget != null && mc.crosshairTarget.getType() == Type.BLOCK) { + PlayerInteractions.interactBlock((BlockHitResult)mc.crosshairTarget); } - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var10}); - this.c.reroll(new Object[]{var14}); - this.g.a_void_____________________(new Object[]{var6}); - if ((Boolean)this.d.getValue()) { - b.player.setPitch(var17); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.delay.reroll(); + this.throwTimer.reset(); + if (this.rotateDown.getValue()) { + mc.player.setPitch(originalPitch); } } - return this.d.getValue() ? new RenderBatch(b.player.getYaw(), 90.0F) : null; + return this.rotateDown.getValue() ? new Rotation(mc.player.getYaw(), 90.0F) : null; } else { return null; } } - private RenderBatch c(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 4514749775132L ^ var2; - long var4 = var2 ^ 13966235903691L; - long var6 = var2 ^ 15841094238932L; - long var8 = var2 ^ 5047724095835L; - long var10 = var2 ^ 110011219520984L; - long var12 = var2 ^ 11970837479204L; - long var14 = var2 ^ 80787181386347L; - long var16 = var2 ^ 13522774811984L; - long var18 = var2 ^ 114975734485928L; - long var20 = var2 ^ 11900766861995L; - long var22 = var2 ^ 28698410445038L; - Event.b(); - boolean var25 = this.e_boolean__(new Object[]{var10}); - if (!var25) { - this.j(new Object[]{var8}); + private Rotation runAutomaticMode() { + if (!this.hasDamagedMendingGear()) { + this.restorePreviousSlot(); return null; - } else if (!this.f(new Object[]{var16})) { - if (this.h != -1 && Prestige.u != null && Prestige.u.a_boolean____________________________________(new Object[]{var20})) { + } else if (!this.isHoldingExpBottle()) { + if (this.previousSlot != -1 && Prestige.inventorySwapQueue != null && Prestige.inventorySwapQueue.hasPendingSwaps()) { return null; - } else if (this.h != -1) { - this.j(new Object[]{var8}); + } else if (this.previousSlot != -1) { + this.restorePreviousSlot(); return null; - } else if (!this.g.b(new Object[]{this.c, var12})) { + } else if (!this.throwTimer.hasElapsedRandom(this.delay)) { return null; } else { - this.d(new Object[]{var22}); - this.g.a_void_____________________(new Object[]{var6}); - this.c.reroll(new Object[]{var18}); + this.switchToExpBottles(); + this.throwTimer.reset(); + this.delay.reroll(); return null; } - } else if (!this.g.b(new Object[]{this.c, var12})) { - return new RenderBatch(b.player.getYaw(), 90.0F); + } else if (!this.throwTimer.hasElapsedRandom(this.delay)) { + return new Rotation(mc.player.getYaw(), 90.0F); } else { - float var26 = b.player.getPitch(); - b.player.setPitch(90.0F); - if (b.crosshairTarget != null && b.crosshairTarget.getType() == Type.BLOCK) { - InventoryUtil2.a(new Object[]{(BlockHitResult)b.crosshairTarget, var4}); + float originalPitch = mc.player.getPitch(); + mc.player.setPitch(90.0F); + if (mc.crosshairTarget != null && mc.crosshairTarget.getType() == Type.BLOCK) { + PlayerInteractions.interactBlock((BlockHitResult)mc.crosshairTarget); } - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, var14}); - b.player.setPitch(var26); - this.c.reroll(new Object[]{var18}); - this.g.a_void_____________________(new Object[]{var6}); - return new RenderBatch(b.player.getYaw(), 90.0F); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + mc.player.setPitch(originalPitch); + this.delay.reroll(); + this.throwTimer.reset(); + return new Rotation(mc.player.getYaw(), 90.0F); } } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 4514749775132L ^ var2; - long var4 = var2 ^ 113780673630924L; - long var6 = var2 ^ 4374636806522L; - long var8 = var2 ^ 69646999940895L; - long var10 = var2 ^ 32810518475270L; - long var12 = var2 ^ 66175826098852L; - Event.b(); - int var15 = this.d_int_________(new Object[]{var6}); - if (var15 != -1) { - this.h = InventoryUtil.a_int_____(new Object[]{var8}); - this.i = -1; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var15; - InventoryUtil.a_void________(var10003); + private boolean switchToExpBottles() { + int hotbarSlot = this.findHotbarExpSlot(); + if (hotbarSlot != -1) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + this.swappedInventorySlot = -1; + InventoryUtil.selectSlot(hotbarSlot); return true; - } else if (!(Boolean)this.e.getValue()) { + } else if (!this.fromInventory.getValue()) { return false; } else { - int var16 = this.e(new Object[]{var10}); - if (var16 == -1) { + int inventorySlot = this.findInventoryExpSlot(); + if (inventorySlot == -1) { return false; } else { - int var17 = InventoryUtil.a_int_____(new Object[]{var8}); - this.h = var17; - this.i = var16; - Object[] var10004 = new Object[]{null, null, var12}; - var10004[1] = var17; - var10004[0] = var16; - InventoryUtil.f(var10004); + int selectedSlot = InventoryUtil.getSelectedSlot(); + this.previousSlot = selectedSlot; + this.swappedInventorySlot = inventorySlot; + InventoryUtil.swapSlot(inventorySlot, selectedSlot); return true; } } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 4514749775132L ^ var2; - long var4 = var2 ^ 134094212039545L; - long var6 = var2 ^ 38076493146897L; - if (this.h != -1) { - if ((Boolean)this.f.getValue()) { - if (this.i != -1) { - int var10000 = this.i; - int var10001 = this.h; - Object[] var10004 = new Object[]{null, null, var6}; - var10004[1] = var10001; - var10004[0] = var10000; - InventoryUtil.f(var10004); + private void restorePreviousSlot() { + if (this.previousSlot != -1) { + if (this.swapBack.getValue()) { + if (this.swappedInventorySlot != -1) { + InventoryUtil.swapSlot(this.swappedInventorySlot, this.previousSlot); } else { - int var9 = this.h; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var9; - InventoryUtil.a_void________(var10003); + InventoryUtil.selectSlot(this.previousSlot); } } - this.h = -1; - this.i = -1; + this.previousSlot = -1; + this.swappedInventorySlot = -1; } } - private int d_int_________(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 <= 8; var5++) { - if (b.player.getInventory().getStack(var5).getItem() == Items.EXPERIENCE_BOTTLE) { - return var5; + private int findHotbarExpSlot() { + for (int slot = 0; slot <= 8; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == Items.EXPERIENCE_BOTTLE) { + return slot; } } return -1; } - private int e(Object[] var1) { - Event.b(); - - for (int var5 = 9; var5 <= 35; var5++) { - if (b.player.getInventory().getStack(var5).getItem() == Items.EXPERIENCE_BOTTLE) { - return var5; + private int findInventoryExpSlot() { + for (int slot = 9; slot <= 35; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == Items.EXPERIENCE_BOTTLE) { + return slot; } } return -1; } - private boolean e_boolean__(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 4514749775132L ^ var2; - long var4 = var2 ^ 118366489665207L; - Event.b(); - - for (EquipmentSlot var8 : AttributeModifierSlot.ARMOR) { - ItemStack var9 = b.player.getEquippedStack(var8); - if (a_boolean__________________________________(new Object[]{var9, var4})) { + private boolean hasDamagedMendingGear() { + for (EquipmentSlot armorSlot : AttributeModifierSlot.ARMOR) { + if (needsMending(mc.player.getEquippedStack(armorSlot))) { return true; } } - return a_boolean__________________________________(new Object[]{b.player.getOffHandStack(), var4}); + return needsMending(mc.player.getOffHandStack()); } - private static boolean a_boolean__________________________________(Object[] var0) { - ItemStack var3 = (ItemStack)var0[0]; - if (!var3.isEmpty() && var3.isDamaged()) { - for (Entry var6 : var3.getEnchantments().getEnchantmentEntries()) { - if (((RegistryEntry)var6.getKey()).matchesKey(Enchantments.MENDING)) { + private static boolean needsMending(ItemStack stack) { + if (!stack.isEmpty() && stack.isDamaged()) { + for (Entry entry : stack.getEnchantments().getEnchantmentEntries()) { + if (((RegistryEntry)entry.getKey()).matchesKey(Enchantments.MENDING)) { return true; } } @@ -265,97 +201,23 @@ public class FastEXP extends Module implements RenderContract3 { } } - private boolean f(Object[] var1) { - return b.player != null && b.player.getMainHandStack().getItem() == Items.EXPERIENCE_BOTTLE; + private boolean isHoldingExpBottle() { + return mc.player != null && mc.player.getMainHandStack().getItem() == Items.EXPERIENCE_BOTTLE; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - long var6 = var2 ^ 132269813764983L; - Event.b(); - Prestige.o.f(new Object[]{this, var4}); - if (this.h != -1 && b.player != null && b.world != null && b.currentScreen == null) { - this.j(new Object[]{var6}); + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); + if (this.previousSlot != -1 && mc.player != null && mc.world != null && mc.currentScreen == null) { + this.restorePreviousSlot(); } - this.h = -1; - this.i = -1; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + this.previousSlot = -1; + this.swappedInventorySlot = -1; } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/FastPlace.java b/src/main/java/dev/zprestige/prestige/module/misc/FastPlace.java index 711df1e..90bb9c7 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/FastPlace.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/FastPlace.java @@ -5,11 +5,9 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.combat.CombatHelper3; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.combat.ItemUseCooldownAccessor; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.render.RandomUtil; import java.util.Set; import net.minecraft.item.BlockItem; @@ -18,103 +16,26 @@ public class FastPlace extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private IntSetting a; - private IntSetting c; + private BoolSetting blocksOnly; + private IntSetting minSpeed; + private IntSetting maxSpeed; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal); } @Subscribe - public void a(TickEvent19 var1) { - if (!(Boolean)this.d.getValue() - || b.player.getMainHandStack().getItem() instanceof BlockItem - || b.player.getOffHandStack().getItem() instanceof BlockItem) { - if ((Integer)this.a.getValue() > (Integer)this.c.getValue()) { - this.a.setValue((Integer)this.c.getValue()); + public void onClientTick(ClientTickEvent event) { + if (!this.blocksOnly.getValue() + || mc.player.getMainHandStack().getItem() instanceof BlockItem + || mc.player.getOffHandStack().getItem() instanceof BlockItem) { + if (this.minSpeed.getValue() > this.maxSpeed.getValue()) { + this.minSpeed.setValue(this.maxSpeed.getValue()); } - CombatHelper3 var11 = new CombatHelper3(b); - int var10000 = var11.a(new Object[]{86630877778275L}); - int var10001 = (Integer)this.a.getValue(); - int var10002 = (Integer)this.c.getValue(); - Object[] var10005 = new Object[]{null, null, 97028099236409L}; - var10005[1] = var10002; - var10005[0] = var10001; - int var12 = Math.min(var10000, RenderUtil5.a_int__________________________(var10005)); - Object[] var10004 = new Object[]{null, 430982545149L}; - var10004[0] = var12; - var11.a_void__(var10004); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + ItemUseCooldownAccessor cooldownAccessor = new ItemUseCooldownAccessor(mc); + cooldownAccessor.setItemUseCooldown(Math.min(cooldownAccessor.getItemUseCooldown(), RandomUtil.randomInt(this.minSpeed.getValue(), this.maxSpeed.getValue()))); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/Friends.java b/src/main/java/dev/zprestige/prestige/module/misc/Friends.java index 41a8d87..5c1e245 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/Friends.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/Friends.java @@ -4,13 +4,11 @@ import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.BoolEvent; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.StringEvent2; -import dev.zprestige.prestige.event.TickEvent28; +import dev.zprestige.prestige.event.SwingHandEvent; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.TextReplaceEvent; +import dev.zprestige.prestige.event.ResetAttackCooldownEvent; import dev.zprestige.prestige.type.EventPhase; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.Formatting; @@ -23,41 +21,41 @@ public class Friends extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private BoolSetting a; + private BoolSetting noAttack; + private BoolSetting highlight; @Subscribe - public void a(StringEvent2 var1) { - if ((Boolean)this.a.getValue()) { - for (Object var6 : Prestige.g.a()) { - if (var1.b_String_(new Object[0]).contains((CharSequence)var6)) { - var1.b(new Object[]{var6}); - var1.c(new Object[]{"" + Formatting.AQUA + var6 + Formatting.RESET}); - var1.a_void_____(new Object[0]); + public void onTextReplace(TextReplaceEvent event) { + if (this.highlight.getValue()) { + for (Object friendName : Prestige.friendManager.getFriends()) { + if (event.getText().contains((CharSequence)friendName)) { + event.setTarget((String)friendName); + event.setText("" + Formatting.AQUA + friendName + Formatting.RESET); + event.cancel(); } } } } @Subscribe - public void a(EntityEvent var1) { - if ((Boolean)this.d.getValue()) { - Entity var7 = var1.a(new Object[0]); - if (var7 instanceof PlayerEntity && Prestige.g.a(new Object[]{var7.getName().getString(), 24848952222090L})) { - var1.a_void_____(new Object[0]); + public void onAttackEntity(AttackEntityEvent event) { + if (this.noAttack.getValue()) { + Entity target = event.getTarget(); + if (target instanceof PlayerEntity && Prestige.friendManager.isFriend(target.getName().getString())) { + event.cancel(); } } } @Subscribe - public void a(TickEvent28 var1) { - if ((Boolean)this.d.getValue()) { - HitResult var7 = b.crosshairTarget; - if (var7 != null) { - if (var7.getType() == Type.ENTITY) { - Entity var8 = ((EntityHitResult)var7).getEntity(); - if (var8 instanceof PlayerEntity && Prestige.g.a(new Object[]{var8.getName().getString(), 24848952222090L})) { - var1.a_void_____(new Object[0]); + public void onResetAttackCooldown(ResetAttackCooldownEvent event) { + if (this.noAttack.getValue()) { + HitResult hitResult = mc.crosshairTarget; + if (hitResult != null) { + if (hitResult.getType() == Type.ENTITY) { + Entity targetEntity = ((EntityHitResult)hitResult).getEntity(); + if (targetEntity instanceof PlayerEntity && Prestige.friendManager.isFriend(targetEntity.getName().getString())) { + event.cancel(); } } } @@ -65,88 +63,20 @@ public class Friends extends Module { } @Subscribe - public void a(BoolEvent var1) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE) { - if ((Boolean)this.d.getValue()) { - HitResult var7 = b.crosshairTarget; - if (var7 != null) { - if (var7.getType() == Type.ENTITY) { - Entity var8 = ((EntityHitResult)var7).getEntity(); - if (var8 instanceof PlayerEntity && Prestige.g.a(new Object[]{var8.getName().getString(), 24848952222090L})) { - b.player.handSwinging = false; - var1.a_void_____(new Object[0]); + public void onSwingHand(SwingHandEvent event) { + if (event.getPhase() == EventPhase.PRE) { + if (this.noAttack.getValue()) { + HitResult hitResult = mc.crosshairTarget; + if (hitResult != null) { + if (hitResult.getType() == Type.ENTITY) { + Entity targetEntity = ((EntityHitResult)hitResult).getEntity(); + if (targetEntity instanceof PlayerEntity && Prestige.friendManager.isFriend(targetEntity.getName().getString())) { + mc.player.handSwinging = false; + event.cancel(); } } } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/KeyPearl.java b/src/main/java/dev/zprestige/prestige/module/misc/KeyPearl.java index 9c2e120..f5b971c 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/KeyPearl.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/KeyPearl.java @@ -3,13 +3,10 @@ package dev.zprestige.prestige.module.misc; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.StopWatch; import net.minecraft.item.Items; import net.minecraft.util.Hand; @@ -18,145 +15,60 @@ public class KeyPearl extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private RangeSetting a; - private RenderHelper27 c = new RenderHelper27(26293358099357L); - private int d = 0; - private boolean i = false; - private static final long l = 4112858187273601032L; + private RangeSetting delay; + private StopWatch actionTimer = new StopWatch(); + private int previousSlot = 0; + private boolean pearlThrown = false; + private static final long LAST_HOTBAR_SLOT = 4112858187273601032L; @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 95564356895798L; - this.i = false; - this.j(new Object[]{var4}); + public void onEnable() { + this.pearlThrown = false; + this.resetDelay(); } @Subscribe - public void a(TickEvent19 var1) { - if (b.currentScreen == null && b.isWindowFocused()) { - RenderHelper27 var10000 = this.c; - float var10001 = (Float)this.a.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - if (this.i) { - int var20 = this.d; - Object[] var21 = new Object[]{null, 37392877673079L}; - var21[0] = var20; - InventoryUtil.a_void________(var21); - this.toggle(new Object[]{115103427876780L}); - } else if (b.player.getMainHandStack().getItem() != Items.ENDER_PEARL) { - int var19 = this.a(new Object[]{35036311790109L}); - if (var19 == -1) { - this.toggle(new Object[]{115103427876780L}); + public void onClientTick(ClientTickEvent event) { + if (mc.currentScreen == null && mc.isWindowFocused()) { + if (this.actionTimer.hasElapsed(this.delay.getValue())) { + if (this.pearlThrown) { + InventoryUtil.selectSlot(this.previousSlot); + this.toggle(); + } else if (mc.player.getMainHandStack().getItem() != Items.ENDER_PEARL) { + int pearlSlot = this.findPearlSlot(); + if (pearlSlot == -1) { + this.toggle(); } else { - this.d = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var19; - InventoryUtil.a_void________(var10003); - this.j(new Object[]{47044677658928L}); + this.previousSlot = InventoryUtil.getSelectedSlot(); + InventoryUtil.selectSlot(pearlSlot); + this.resetDelay(); } } else { - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - this.i = true; - this.j(new Object[]{47044677658928L}); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.pearlThrown = true; + this.resetDelay(); } } } } - private int a(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 <= (int)l; var5++) { - if (b.player.getInventory().getStack(var5).getItem() == Items.ENDER_PEARL) { - return var5; + private int findPearlSlot() { + for (int slot = 0; slot <= (int)LAST_HOTBAR_SLOT; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == Items.ENDER_PEARL) { + return slot; } } return -1; } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 27011225142556L ^ var2; - long var4 = var2 ^ 113573278659505L; - long var6 = var2 ^ 1867302724301L; - this.a.reroll(new Object[]{var6}); - this.c.a_void_____________________(new Object[]{var4}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private void resetDelay() { + this.delay.reroll(); + this.actionTimer.reset(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/MiddleClickFriend.java b/src/main/java/dev/zprestige/prestige/module/misc/MiddleClickFriend.java index 0b95b93..afb7fc9 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/MiddleClickFriend.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/MiddleClickFriend.java @@ -3,11 +3,9 @@ package dev.zprestige.prestige.module.misc; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.hud.ModuleNotificationsElement; import dev.zprestige.prestige.type.NotificationType; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.hit.EntityHitResult; @@ -16,100 +14,31 @@ public class MiddleClickFriend extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private boolean i = false; + private boolean middleClickHandled = false; @Subscribe - public void a(TickEvent19 var1) { - if (b.currentScreen == null) { - if (!b.mouse.wasMiddleButtonClicked()) { - this.i = false; + public void onClientTick(ClientTickEvent event) { + if (mc.currentScreen == null) { + if (!mc.mouse.wasMiddleButtonClicked()) { + this.middleClickHandled = false; } - if (!this.i) { - if (b.mouse.wasMiddleButtonClicked() && b.crosshairTarget instanceof EntityHitResult var9) { - if (var9.getEntity() instanceof PlayerEntity) { - PlayerEntity var10 = (PlayerEntity)var9.getEntity(); - String var11 = var10.getName().getString(); - if (Prestige.g.a(new Object[]{var11, 24848952222090L})) { - Prestige.g.b(var11); - ModuleNotificationsElement.s(new Object[]{this, "Removed friend: " + var11, NotificationType.INFO, 111134823389700L}); + if (!this.middleClickHandled) { + if (mc.mouse.wasMiddleButtonClicked() && mc.crosshairTarget instanceof EntityHitResult entityHit) { + if (entityHit.getEntity() instanceof PlayerEntity) { + String playerName = ((PlayerEntity)entityHit.getEntity()).getName().getString(); + if (Prestige.friendManager.isFriend(playerName)) { + Prestige.friendManager.removeFriend(playerName); + ModuleNotificationsElement.postNotification(this, "Removed friend: " + playerName, NotificationType.INFO); } else { - Prestige.g.a(var11); - ModuleNotificationsElement.s(new Object[]{this, "Added friend: " + var11, NotificationType.INFO, 111134823389700L}); + Prestige.friendManager.addFriend(playerName); + ModuleNotificationsElement.postNotification(this, "Added friend: " + playerName, NotificationType.INFO); } } - this.i = true; + this.middleClickHandled = true; } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/NameHider.java b/src/main/java/dev/zprestige/prestige/module/misc/NameHider.java index 0115a46..b5916fc 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/NameHider.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/NameHider.java @@ -6,154 +6,76 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.TextSetting; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.StringEvent2; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.TextReplaceEvent; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import java.util.function.Predicate; public class NameHider extends Module { - private EnumSetting a; - private TextSetting c; - private BoolSetting d; - private FloatSetting e; - private RenderHelper27 f = new RenderHelper27(26293358099357L); - private String h = ""; + private EnumSetting mode; + private TextSetting customName; + private BoolSetting randomize; + private FloatSetting speed; + private StopWatch rerollTimer = new StopWatch(); + private String replacementName = ""; public NameHider() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.e - .setVisibility_FloatSetting( - new Object[]{(Predicate)lpL362_0 -> (Boolean)this.d.getValue() && ((String)this.a.getValue()).equals("Random"), 35046756052036L} + this.speed + .visibleWhen( + (Predicate)ignored -> this.randomize.getValue() && this.mode.getValue().equals("Random") ); - this.d.setVisibility_BoolSetting(new Object[]{(Predicate)lpL363_0 -> ((String)this.a.getValue()).equals("Random"), 73196168581295L}); - this.c.setVisibility_TextSetting(new Object[]{(Predicate)lpL364_0 -> ((String)this.a.getValue()).equals("Custom"), 115047363157683L}); + this.randomize.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Random")); + this.customName.visibleWhen((Predicate)ignored -> this.mode.getValue().equals("Custom")); } @Subscribe - public void a(TickEvent24 var1) { - if ((Boolean)this.d.getValue()) { - RenderHelper27 var10000 = this.f; - float var10001 = (Float)this.e.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - this.h = this.d(new Object[]{128049266673L}); - this.f.a_void_____________________(new Object[]{93540861878173L}); + public void onFrame(FrameEvent event) { + if (this.randomize.getValue()) { + if (this.rerollTimer.hasElapsed(this.speed.getValue())) { + this.replacementName = this.generateName(); + this.rerollTimer.reset(); } } - if (((String)this.a.getValue()).equals("Custom")) { - this.h = this.d(new Object[]{128049266673L}); + if (this.mode.getValue().equals("Custom")) { + this.replacementName = this.generateName(); } } @Subscribe - public void a(StringEvent2 var1) { - Event.b(); - String var5 = b.getSession().getUsername(); - if (var1.b_String_(new Object[0]).contains(var5)) { - var1.b(new Object[]{b.getSession().getUsername()}); - var1.c(new Object[]{this.h}); - var1.a_void_____(new Object[0]); + public void onTextReplace(TextReplaceEvent event) { + String username = mc.getSession().getUsername(); + if (event.getText().contains(username)) { + event.setTarget(mc.getSession().getUsername()); + event.setText(this.replacementName); + event.cancel(); } } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 136609732465399L; - this.h = this.d(new Object[]{var4}); + public void onEnable() { + this.replacementName = this.generateName(); } - private String d(Object[] var1) { - if (((String)this.a.getValue()).equals("Custom")) { - return ((String)this.c.getValue()).toString(); + private String generateName() { + if (this.mode.getValue().equals("Custom")) { + return this.customName.getValue().toString(); } else { - StringBuilder var5 = new StringBuilder(); - String var6 = "abcdefghijklmnopqrstuvwxyz0123456789"; + StringBuilder builder = new StringBuilder(); + String alphabet = "abcdefghijklmnopqrstuvwxyz0123456789"; - for (int var7 = 0; var7 < b.player.getDisplayName().getString().length(); var7++) { - char var8 = var6.charAt(RenderUtil5.a.nextInt(var6.length())); - if (Character.isAlphabetic(var8) && RenderUtil5.a.nextFloat() > 0.5F) { - var8 = Character.toUpperCase(var8); + for (int index = 0; index < mc.player.getDisplayName().getString().length(); index++) { + char ch = alphabet.charAt(RandomUtil.RANDOM.nextInt(alphabet.length())); + if (Character.isAlphabetic(ch) && RandomUtil.RANDOM.nextFloat() > 0.5F) { + ch = Character.toUpperCase(ch); } - var5.append(var8); + builder.append(ch); } - return var5.toString(); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + return builder.toString(); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/PotionRefill.java b/src/main/java/dev/zprestige/prestige/module/misc/PotionRefill.java index 3562cd3..b9ec740 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/PotionRefill.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/PotionRefill.java @@ -5,12 +5,9 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent24; +import dev.zprestige.prestige.event.FrameEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.StopWatch; import java.util.Set; import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.entity.effect.StatusEffects; @@ -22,118 +19,41 @@ public class PotionRefill extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private RangeSetting a; - private RenderHelper27 c = new RenderHelper27(26293358099357L); + private BoolSetting healthPotOnly; + private RangeSetting delay; + private StopWatch refillTimer = new StopWatch(); @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.UHC); } @Subscribe - public void a(TickEvent24 var1) { - if (b.currentScreen instanceof InventoryScreen) { - if (this.a(new Object[]{94901030271103L}) != null && this.c.b(new Object[]{this.a, 89714527855213L})) { - Object[] var10005 = new Object[]{null, null, this.d.getValue() ? StatusEffects.INSTANT_HEALTH : null, 16638224401259L}; - var10005[1] = 35; - var10005[0] = 9; - Integer var17 = InventoryUtil.e_Integer(var10005); - if (var17 == null) { + public void onFrame(FrameEvent event) { + if (mc.currentScreen instanceof InventoryScreen) { + if (this.findEmptyHotbarSlot() != null && this.refillTimer.hasElapsedRandom(this.delay)) { + Integer potionSlot = InventoryUtil.findSplashPotion(9, 35, (net.minecraft.registry.entry.RegistryEntry)(this.healthPotOnly.getValue() ? StatusEffects.INSTANT_HEALTH : null)); + if (potionSlot == null) { return; } - int var10000 = var17; - var10005 = new Object[]{null, null, SlotActionType.QUICK_MOVE, 92701205799711L}; - var10005[1] = 0; - var10005[0] = var10000; - InventoryUtil.e(var10005); - this.a.reroll(new Object[]{57083216809697L}); - this.c.a_void_____________________(new Object[]{93540861878173L}); + InventoryUtil.clickSlot(potionSlot, 0, SlotActionType.QUICK_MOVE); + this.delay.reroll(); + this.refillTimer.reset(); } } else { - this.a.reroll(new Object[]{57083216809697L}); - this.c.a_void_____________________(new Object[]{93540861878173L}); + this.delay.reroll(); + this.refillTimer.reset(); } } - private Integer a(Object[] var1) { - Event.b(); - - for (int var5 = 0; var5 <= 8; var5++) { - if (b.player.getInventory().getStack(var5).getItem() == Items.AIR) { - return var5; + private Integer findEmptyHotbarSlot() { + for (int slot = 0; slot <= 8; slot++) { + if (mc.player.getInventory().getStack(slot).getItem() == Items.AIR) { + return slot; } } return null; } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/Reach.java b/src/main/java/dev/zprestige/prestige/module/misc/Reach.java index d3d62e5..a37e5de 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/Reach.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/Reach.java @@ -5,10 +5,8 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.FloatEvent4; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.ReachEvent; +import dev.zprestige.prestige.render.RandomUtil; import java.util.Set; public class Reach extends Module { @@ -16,87 +14,19 @@ public class Reach extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; - private RangeSetting b; + private FloatSetting chance; + private RangeSetting extraReach; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC, Gamemode.Mace); } @Subscribe - public void a(FloatEvent4 var1) { - if (RenderUtil5.a.nextFloat(100.0F) <= (Float)this.a.getValue()) { - var1.b(new Object[]{this.b.randomInRange(new Object[]{877569900989L})}); - var1.a_void_____(new Object[0]); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public void onReach(ReachEvent event) { + if (RandomUtil.RANDOM.nextFloat(100.0F) <= this.chance.getValue()) { + event.setExtraReach(this.extraReach.randomInRange()); + event.cancel(); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/Refill.java b/src/main/java/dev/zprestige/prestige/module/misc/Refill.java index ef7c356..07f8425 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/Refill.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/Refill.java @@ -5,12 +5,9 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.KeybindSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.StopWatch; import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.SlotActionType; @@ -21,43 +18,32 @@ public class Refill extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private EnumSetting a; - private KeybindSetting f; - private IntSetting c; - private IntSetting d; - private RenderHelper27 e = new RenderHelper27(26293358099357L); + private EnumSetting mode; + private KeybindSetting refillKey; + private IntSetting threshold; + private IntSetting delay; + private StopWatch refillTimer = new StopWatch(); @Subscribe - public void a(TickEvent19 var1) { - if (b.player != null && b.world != null) { - RenderHelper27 var10000 = this.e; - float var10001 = ((Integer)this.d.getValue()).intValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - if (this.d(new Object[]{75267366531328L})) { - for (int var15 = 0; var15 < 9; var15++) { - ItemStack var16 = b.player.getInventory().getStack(var15); - if (!var16.isEmpty() - && var16.getMaxCount() > 1 - && var16.getCount() < var16.getMaxCount() - && var16.getCount() <= (Integer)this.c.getValue()) { - int var17 = this.a(new Object[]{var16, 57840989203711L}); - if (var17 != -1) { - int var18 = 36 + var15; - Object[] var10005 = new Object[]{null, null, SlotActionType.PICKUP, 92701205799711L}; - var10005[1] = 0; - var10005[0] = var17; - InventoryUtil.e(var10005); - var10005 = new Object[]{null, null, SlotActionType.PICKUP, 92701205799711L}; - var10005[1] = 0; - var10005[0] = var18; - InventoryUtil.e(var10005); - var10005 = new Object[]{null, null, SlotActionType.PICKUP, 92701205799711L}; - var10005[1] = 0; - var10005[0] = var17; - InventoryUtil.e(var10005); - this.e.a_void_____________________(new Object[]{93540861878173L}); + public void onClientTick(ClientTickEvent event) { + if (mc.player != null && mc.world != null) { + StopWatch timer = this.refillTimer; + float delayMs = this.delay.getValue().intValue(); + if (timer.hasElapsed(delayMs)) { + if (this.isRefillAllowed()) { + for (int hotbarSlot = 0; hotbarSlot < 9; hotbarSlot++) { + ItemStack stack = mc.player.getInventory().getStack(hotbarSlot); + if (!stack.isEmpty() + && stack.getMaxCount() > 1 + && stack.getCount() < stack.getMaxCount() + && stack.getCount() <= this.threshold.getValue()) { + int sourceSlot = this.findMatchingStackSlot(stack); + if (sourceSlot != -1) { + int hotbarSlotId = 36 + hotbarSlot; + InventoryUtil.clickSlot(sourceSlot, 0, SlotActionType.PICKUP); + InventoryUtil.clickSlot(hotbarSlotId, 0, SlotActionType.PICKUP); + InventoryUtil.clickSlot(sourceSlot, 0, SlotActionType.PICKUP); + this.refillTimer.reset(); return; } } @@ -67,94 +53,23 @@ public class Refill extends Module { } } - private boolean d(Object[] var1) { - if (((String)this.a.getValue()).equals("Always")) { - return b.currentScreen instanceof InventoryScreen; + private boolean isRefillAllowed() { + if (this.mode.getValue().equals("Always")) { + return mc.currentScreen instanceof InventoryScreen; } else { - int var5 = (Integer)this.f.getValue(); - return var5 != -1 && GLFW.glfwGetKey(b.getWindow().getHandle(), var5) == 1; + int keyCode = this.refillKey.getValue(); + return keyCode != -1 && GLFW.glfwGetKey(mc.getWindow().getHandle(), keyCode) == 1; } } - private int a(Object[] var1) { - ItemStack var4 = (ItemStack)var1[0]; - Event.b(); - - for (int var6 = 9; var6 < 36; var6++) { - ItemStack var7 = b.player.getInventory().getStack(var6); - if (!var7.isEmpty() && var7.getItem() == var4.getItem()) { - return var6; + private int findMatchingStackSlot(ItemStack hotbarStack) { + for (int slot = 9; slot < 36; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (!stack.isEmpty() && stack.getItem() == hotbarStack.getItem()) { + return slot; } } return -1; } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/RightClicker.java b/src/main/java/dev/zprestige/prestige/module/misc/RightClicker.java index 32c3eab..ada2d89 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/RightClicker.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/RightClicker.java @@ -5,12 +5,9 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.AimManager; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import java.util.Set; public class RightClicker extends Module { @@ -18,119 +15,33 @@ public class RightClicker extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; - private FloatSetting c; - private RenderHelper27 d = new RenderHelper27(26293358099357L); - private float e = 200.0F; + private FloatSetting minCps; + private FloatSetting maxCps; + private StopWatch clickTimer = new StopWatch(); + private float nextClickDelay = 200.0F; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 55416263999342L; - this.j(new Object[]{var4}); + public void onEnable() { + this.rollClickDelay(); } @Subscribe - public void a(TickEvent24 var1) { - if (b.currentScreen == null && b.player != null && !b.player.isUsingItem() && !Prestige.j.a(new Object[]{46247009548246L})) { - RenderHelper27 var10000 = this.d; - float var10001 = this.e; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - AimManager var2 = Prestige.j; - Object[] var10005 = new Object[]{null, null, 60507167928612L}; - var10005[1] = 0.0F; - var10005[0] = 1; - var2.a_void_(var10005); - this.j(new Object[]{86061019419240L}); - this.d.a_void_____________________(new Object[]{93540861878173L}); + public void onFrame(FrameEvent event) { + if (mc.currentScreen == null && mc.player != null && !mc.player.isUsingItem() && !Prestige.clickScheduler.processPendingClick()) { + if (this.clickTimer.hasElapsed(this.nextClickDelay)) { + Prestige.clickScheduler.scheduleClick(1, 0.0F); + this.rollClickDelay(); + this.clickTimer.reset(); } } } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 11956094678555L ^ var2; - long var4 = var2 ^ 103630454996286L; - float var10002 = Math.max((Float)this.a.getValue(), 1.0F); - float var10003 = (Float)this.c.getValue(); - Object[] var10006 = new Object[]{null, null, var4}; - var10006[1] = var10003; - var10006[0] = var10002; - this.e = 1000.0F / RenderUtil5.a(var10006); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private void rollClickDelay() { + this.nextClickDelay = 1000.0F / RandomUtil.randomFloat(Math.max(this.minCps.getValue(), 1.0F), this.maxCps.getValue()); } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/SelfDestruct.java b/src/main/java/dev/zprestige/prestige/module/misc/SelfDestruct.java index c3763e7..11be976 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/SelfDestruct.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/SelfDestruct.java @@ -2,9 +2,6 @@ package dev.zprestige.prestige.module.misc; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; public class SelfDestruct extends Module { @@ -13,96 +10,24 @@ public class SelfDestruct extends Module { } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 22594282158762L; - long var6 = var2 ^ 53654995788662L; - Event.b(); - Prestige.w = true; - b.setScreen(null); + public void onEnable() { + Prestige.selfDestructed = true; + mc.setScreen(null); - for (Module var10 : (Iterable)(Prestige.moduleManager.getModules())) { - if (var10.isEnabled()) { - var10.toggle(new Object[]{var4}); + for (Module module : (Iterable)(Prestige.moduleManager.getModules())) { + if (module.isEnabled()) { + module.toggle(); } - var10.dispose(new Object[]{var6}); - var10.getKeybind(new Object[0]).setValue(-1); + module.dispose(); + module.getKeybind().setValue(-1); } Prestige.moduleManager.setModules(new ArrayList()); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/StreamerMode.java b/src/main/java/dev/zprestige/prestige/module/misc/StreamerMode.java index d27ab88..9932ff5 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/StreamerMode.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/StreamerMode.java @@ -6,14 +6,11 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.TextSetting; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.EntityEvent5; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.StringEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.render.RenderUtil5; +import dev.zprestige.prestige.event.LabelTextEvent; +import dev.zprestige.prestige.event.TextReplaceEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.render.RandomUtil; import dev.zprestige.prestige.world.PositionUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; @@ -27,41 +24,41 @@ public class StreamerMode extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private TextSetting a; - private EnumSetting c; - private BoolSetting e; - private Map f = new LinkedHashMap(); - private AtomicInteger g = new AtomicInteger(0); + private BoolSetting excludeFriends; + private TextSetting prefix; + private EnumSetting mode; + private BoolSetting includeSelf; + private Map aliases = new LinkedHashMap(); + private AtomicInteger aliasCounter = new AtomicInteger(0); @Override - public void onEnable(Object[] var1) { - this.f.clear(); - this.g.set(0); + public void onEnable() { + this.aliases.clear(); + this.aliasCounter.set(0); } @Override - public void onDisable(Object[] var1) { - this.f.clear(); - this.g.set(0); + public void onDisable() { + this.aliases.clear(); + this.aliasCounter.set(0); } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null) { - for (PlayerEntity var12 : b.world.getPlayers()) { - String var13 = var12.getName().getString(); - if (!this.a(new Object[]{var13, 116606740002112L}) && var13.length() >= 3) { - this.b_String___(new Object[]{var13, 110686765949525L}); + public void onClientTick(ClientTickEvent event) { + if (mc.world != null) { + for (PlayerEntity player : mc.world.getPlayers()) { + String playerName = player.getName().getString(); + if (!this.isExcluded(playerName) && playerName.length() >= 3) { + this.getOrCreateAlias(playerName); } } - if (b.getNetworkHandler() != null) { - for (PlayerListEntry var15 : b.getNetworkHandler().getPlayerList()) { - if (var15 != null && var15.getProfile() != null) { - String var16 = PositionUtil.a_String________(new Object[]{var15.getProfile(), 3044946865408L}); - if (var16 != null && !this.a(new Object[]{var16, 116606740002112L})) { - this.b_String___(new Object[]{var16, 110686765949525L}); + if (mc.getNetworkHandler() != null) { + for (PlayerListEntry listEntry : mc.getNetworkHandler().getPlayerList()) { + if (listEntry != null && listEntry.getProfile() != null) { + String profileName = PositionUtil.getProfileName(listEntry.getProfile()); + if (profileName != null && !this.isExcluded(profileName)) { + this.getOrCreateAlias(profileName); } } } @@ -70,151 +67,70 @@ public class StreamerMode extends Module { } @Subscribe - public void a(EntityEvent5 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerEntity var9) { - String var12 = var9.getName().getString(); - if (!this.a(new Object[]{var12, 116606740002112L})) { - String var11 = this.b_String___(new Object[]{var12, 110686765949525L}); - var1.b(new Object[]{Text.literal(var11)}); + public void onLabelText(LabelTextEvent event) { + if (event.getEntity() instanceof PlayerEntity player) { + String playerName = player.getName().getString(); + if (!this.isExcluded(playerName)) { + event.setText(Text.literal(this.getOrCreateAlias(playerName))); } } } @Subscribe - public void a(StringEvent2 var1) { - Event.b(); - String var5 = var1.b_String_(new Object[0]); - if (var5 != null && !var5.isEmpty() && !this.f.isEmpty()) { - String var6 = var5; + public void onTextReplace(TextReplaceEvent event) { + String originalText = event.getText(); + if (originalText != null && !originalText.isEmpty() && !this.aliases.isEmpty()) { + String replacedText = originalText; - for (Entry var8 : (Iterable)(this.f.entrySet())) { - String var9 = (String)var8.getKey(); - if (!var9.isEmpty() && var6.contains(var9)) { - var6 = var6.replace(var9, (CharSequence)var8.getValue()); + for (Entry aliasEntry : (Iterable)(this.aliases.entrySet())) { + String realName = (String)aliasEntry.getKey(); + if (!realName.isEmpty() && replacedText.contains(realName)) { + replacedText = replacedText.replace(realName, (CharSequence)aliasEntry.getValue()); } } - if (!var6.equals(var5)) { - var1.b(new Object[]{var5}); - var1.c(new Object[]{var6}); - var1.a_void_____(new Object[0]); + if (!replacedText.equals(originalText)) { + event.setTarget(originalText); + event.setText(replacedText); + event.cancel(); } } } - private boolean a(Object[] var1) { - String var2 = (String)var1[0]; - long var3 = (Long)var1[1]; - var3 = 110986303050412L ^ var3; - long var5 = var3 ^ 26822146492006L; - if (var2 == null || var2.isEmpty()) { + private boolean isExcluded(String playerName) { + if (playerName == null || playerName.isEmpty()) { return true; } else { - return !this.e.getValue() && b.player != null && var2.equals(b.player.getName().getString()) + return !this.includeSelf.getValue() && mc.player != null && playerName.equals(mc.player.getName().getString()) ? true - : (Boolean)this.d.getValue() && Prestige.g.a(new Object[]{var2, var5}); + : this.excludeFriends.getValue() && Prestige.friendManager.isFriend(playerName); } } - private String b_String___(Object[] var1) { - String var4 = (String)var1[0]; - long var2 = (Long)var1[1]; - var2 = 110986303050412L ^ var2; - long var5 = var2 ^ 103636841655147L; - Event.b(); - String var8 = (String)this.f.get(var4); - if (var8 != null) { - return var8; + private String getOrCreateAlias(String playerName) { + String existingAlias = (String)this.aliases.get(playerName); + if (existingAlias != null) { + return existingAlias; } else { - String var9 = this.d(new Object[]{var5}); - this.f.put(var4, var9); - return var9; + String newAlias = this.generateAlias(); + this.aliases.put(playerName, newAlias); + return newAlias; } } - private String d(Object[] var1) { - Event.b(); - String var5 = ((String)this.a.getValue()).toString(); - if (!((String)this.c.getValue()).equals("Random")) { - return var5 + this.g.incrementAndGet(); + private String generateAlias() { + String aliasPrefix = this.prefix.getValue().toString(); + if (!this.mode.getValue().equals("Random")) { + return aliasPrefix + this.aliasCounter.incrementAndGet(); } else { - StringBuilder var6 = new StringBuilder(); - String var7 = "abcdefghijklmnopqrstuvwxyz0123456789"; + StringBuilder suffix = new StringBuilder(); + String alphabet = "abcdefghijklmnopqrstuvwxyz0123456789"; - for (int var8 = 0; var8 < 4; var8++) { - var6.append(var7.charAt(RenderUtil5.a.nextInt(var7.length()))); + for (int index = 0; index < 4; index++) { + suffix.append(alphabet.charAt(RandomUtil.RANDOM.nextInt(alphabet.length()))); } - return var5 + var6; - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + return aliasPrefix + suffix; } } } diff --git a/src/main/java/dev/zprestige/prestige/module/misc/Teams.java b/src/main/java/dev/zprestige/prestige/module/misc/Teams.java index 56d3a55..9059e75 100644 --- a/src/main/java/dev/zprestige/prestige/module/misc/Teams.java +++ b/src/main/java/dev/zprestige/prestige/module/misc/Teams.java @@ -2,10 +2,7 @@ package dev.zprestige.prestige.module.misc; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.ClientTickEvent; import java.util.HashSet; import java.util.Set; import net.minecraft.entity.player.PlayerEntity; @@ -15,14 +12,11 @@ public class Teams extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private static volatile Set a = new HashSet(); + private static volatile Set teammates = new HashSet(); - public static boolean a(Object[] var0) { - String var1 = (String)var0[0]; - Event.b(); - - for (PlayerEntity var6 : (Iterable)(a)) { - if (var6.getName().getString().equals(var1)) { + public static boolean isTeammate(String playerName) { + for (PlayerEntity teammate : (Iterable)(teammates)) { + if (teammate.getName().getString().equals(playerName)) { return true; } } @@ -31,110 +25,40 @@ public class Teams extends Module { } @Override - public void onEnable(Object[] var1) { - a = new HashSet(); + public void onEnable() { + teammates = new HashSet(); } @Override - public void onDisable(Object[] var1) { - a = new HashSet(); + public void onDisable() { + teammates = new HashSet(); } @Subscribe - public void a(TickEvent19 var1) { - HashSet var7 = new HashSet(); - Event.b(); + public void onClientTick(ClientTickEvent event) { + HashSet currentTeammates = new HashSet(); - for (PlayerEntity var9 : b.world.getPlayers()) { - if (var9 != b.player && this.d(new Object[]{var9, 124554607975631L})) { - var7.add(var9); + for (PlayerEntity player : mc.world.getPlayers()) { + if (player != mc.player && this.sharesTeamColor(player)) { + currentTeammates.add(player); } } - a = var7; + teammates = currentTeammates; } - private boolean d(Object[] var1) { - PlayerEntity var4 = (PlayerEntity)var1[0]; - boolean[] var5 = new boolean[]{false}; - var4.getDisplayName().asOrderedText().accept((lpL331_0, lpL331_1, lpL331_2) -> { - b.player.getDisplayName().asOrderedText().accept((lpL332_0, lpL332_1, lpL332_2) -> { - if (((net.minecraft.text.Style)lpL332_1) != null && ((net.minecraft.text.Style)lpL332_1).getColor() != null && ((net.minecraft.text.Style)lpL331_1).getColor() != null && ((net.minecraft.text.Style)lpL331_1).getColor().equals(((net.minecraft.text.Style)lpL332_1).getColor())) { - var5[0] = true; + private boolean sharesTeamColor(PlayerEntity player) { + boolean[] sameColor = new boolean[]{false}; + player.getDisplayName().asOrderedText().accept((index, style, codePoint) -> { + mc.player.getDisplayName().asOrderedText().accept((selfIndex, selfStyle, selfCodePoint) -> { + if (selfStyle != null && selfStyle.getColor() != null && style.getColor() != null && style.getColor().equals(selfStyle.getColor())) { + sameColor[0] = true; } return false; }); return false; }); - return var5[0]; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + return sameColor[0]; } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/AutoJumpReset.java b/src/main/java/dev/zprestige/prestige/module/movement/AutoJumpReset.java index 198eb11..050e888 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/AutoJumpReset.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/AutoJumpReset.java @@ -4,12 +4,9 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.render.RenderUtil2; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.render.JumpKeyPresser; +import dev.zprestige.prestige.render.RandomUtil; import java.util.Set; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; @@ -19,104 +16,33 @@ public class AutoJumpReset extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; + private FloatSetting chance; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - DamageSource var7 = b.player.getRecentDamageSource(); - if (b.currentScreen == null - && !b.player.isBlocking() - && !b.player.isUsingItem() - && !b.player.isTouchingWater() - && var7 != null - && var7.getAttacker() instanceof PlayerEntity) { - if (b.player.isOnGround() - && b.player.hurtTime == b.player.maxHurtTime - && !b.player.isOnFire() - && RenderUtil5.a.nextFloat() <= (Float)this.a.getValue() / 100.0F) { - RenderUtil2.a(new Object[]{134150376721510L}); + public void onClientTick(ClientTickEvent event) { + DamageSource damageSource = mc.player.getRecentDamageSource(); + if (mc.currentScreen == null + && !mc.player.isBlocking() + && !mc.player.isUsingItem() + && !mc.player.isTouchingWater() + && damageSource != null + && damageSource.getAttacker() instanceof PlayerEntity) { + if (mc.player.isOnGround() + && mc.player.hurtTime == mc.player.maxHurtTime + && !mc.player.isOnFire() + && RandomUtil.RANDOM.nextFloat() <= this.chance.getValue() / 100.0F) { + JumpKeyPresser.pressJump(); } } } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 437272206315L; - RenderUtil2.b(new Object[]{var4}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + JumpKeyPresser.cancelPress(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/AutoShortPearl.java b/src/main/java/dev/zprestige/prestige/module/movement/AutoShortPearl.java index a38e4aa..2bc1234 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/AutoShortPearl.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/AutoShortPearl.java @@ -4,76 +4,58 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; +import dev.zprestige.prestige.event.PacketReceiveEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import net.minecraft.entity.Entity; -import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.network.packet.s2c.play.EntityDamageS2CPacket; import net.minecraft.util.Hand; -public class AutoShortPearl extends Module implements RenderContract3 { +public class AutoShortPearl extends Module implements RotationProvider { public AutoShortPearl() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private RangeSetting a; - private RenderHelper27 c = new RenderHelper27(26293358099357L); - private boolean i = false; - private static final String l = "player"; + private RangeSetting delay; + private StopWatch hitTimer = new StopWatch(); + private boolean throwPending = false; + private static final String PLAYER_ATTACK_MSG_ID = "player"; @Subscribe - public void a(PacketEvent var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof EntityDamageS2CPacket var9) { - Entity var12 = b.world.getEntityById(var9.entityId()); - if (var12 == null || var12 != b.player) { + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof EntityDamageS2CPacket damagePacket) { + Entity damagedEntity = mc.world.getEntityById(damagePacket.entityId()); + if (damagedEntity == null || damagedEntity != mc.player) { return; } - String var11 = var9.createDamageSource(b.world).getType().msgId(); - if (l.equals(var11)) { - this.i = true; - this.c.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + String damageMsgId = damagePacket.createDamageSource(mc.world).getType().msgId(); + if (PLAYER_ATTACK_MSG_ID.equals(damageMsgId)) { + this.throwPending = true; + this.hitTimer.reset(); + this.delay.reroll(); } } } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 43966253580757L; - long var6 = var2 ^ 85547089512629L; - if (this.i) { - RenderHelper27 var10000 = this.c; - float var10001 = (Float)this.a.getValue(); - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = var10001; - if (var10000.a(var10004) && b.isWindowFocused() && b.currentScreen == null) { - float var9 = 89.0F + RenderUtil5.a.nextFloat() * 2.0F; - Item var10 = Items.ENDER_PEARL; - Runnable var11 = () -> { - float var5 = b.player.getPitch(); - b.player.setPitch(var9); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - b.player.setPitch(var5); - }; - Object[] var10005 = new Object[]{null, null, null, var4}; - var10005[2] = true; - var10005[1] = var11; - var10005[0] = var10; - InventoryUtil.j(var10005); - this.i = false; - return new RenderBatch(b.player.getYaw(), var9); + public Rotation provideRotation() { + if (this.throwPending) { + if (this.hitTimer.hasElapsed(this.delay.getValue()) && mc.isWindowFocused() && mc.currentScreen == null) { + float throwPitch = 89.0F + RandomUtil.RANDOM.nextFloat() * 2.0F; + InventoryUtil.runWithItem(Items.ENDER_PEARL, () -> { + float realPitch = mc.player.getPitch(); + mc.player.setPitch(throwPitch); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + mc.player.setPitch(realPitch); + }, true); + this.throwPending = false; + return new Rotation(mc.player.getYaw(), throwPitch); } } @@ -81,111 +63,12 @@ public class AutoShortPearl extends Module implements RenderContract3 { } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var4}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); - } - - private static String b(byte[] var0) { - int var1 = 0; - int var2; - char[] var3 = new char[var2 = var0.length]; - - for (int var4 = 0; var4 < var2; var4++) { - int var5; - if ((var5 = 255 & var0[var4]) < 192) { - var3[var1++] = (char)var5; - } else if (var5 < 224) { - char var6 = (char)((char)(var5 & 31) << 6); - byte var8 = var0[++var4]; - var6 = (char)(var6 | (char)(var8 & 63)); - var3[var1++] = var6; - } else if (var4 < var2 - 2) { - char var12 = (char)((char)(var5 & 15) << '\f'); - byte var9 = var0[++var4]; - var12 = (char)(var12 | (char)(var9 & 63) << 6); - var9 = var0[++var4]; - var12 = (char)(var12 | (char)(var9 & 63)); - var3[var1++] = var12; - } - } - - return new String(var3, 0, var1); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/FakeLag.java b/src/main/java/dev/zprestige/prestige/module/movement/FakeLag.java index 0a45dd7..1f4d526 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/FakeLag.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/FakeLag.java @@ -7,23 +7,17 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.math.MathHelper4; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.math.UiMath; import dev.zprestige.prestige.module.combat.AutoElytra; -import dev.zprestige.prestige.network.NetworkUtil; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; +import dev.zprestige.prestige.network.PacketSender; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.ShapeRenderer; import dev.zprestige.prestige.world.PositionUtil; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.function.Predicate; @@ -39,292 +33,175 @@ import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket; import net.minecraft.util.math.Vec3d; public class FakeLag extends Module { - private EnumSetting a; - private RangeSetting c; - private FloatSetting d; - private RangeSetting e; - private RangeSetting f; - private MultiSetting g; - private BoolSetting h; - private Queue i = new ConcurrentLinkedQueue(); - private RenderHelper27 j = new RenderHelper27(26293358099357L); - private RenderHelper27 k = new RenderHelper27(26293358099357L); - private Vec3d l = Vec3d.ZERO; - private boolean m; - private boolean n; - private boolean o; - private float p = 0.0F; + private EnumSetting mode; + private RangeSetting lagRange; + private FloatSetting targetFov; + private RangeSetting choke; + private RangeSetting rangeChoke; + private MultiSetting sendPackets; + private BoolSetting render; + private Queue heldPackets = new ConcurrentLinkedQueue(); + private StopWatch chokeTimer = new StopWatch(); + private StopWatch knockbackTimer = new StopWatch(); + private Vec3d lastFlushPos = Vec3d.ZERO; + private boolean flushing; + private boolean rangeFlushed; + private boolean knockbackActive; + private float lastTargetDistance = 0.0F; public FakeLag() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.e - .setVisibility_RangeSetting( - new Object[]{ - (Predicate)lpL197_0 -> ((String)this.a.getValue()).equals("Timed") - || ((String)this.a.getValue()).equals("Dynamic") - || ((String)this.a.getValue()).equals("Knockback"), - 37043306203287L - } + this.choke + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Timed") + || this.mode.getValue().equals("Dynamic") + || this.mode.getValue().equals("Knockback") ); - this.g.setVisibility_MultiSetting(new Object[]{(Predicate)lpL195_0 -> !((String)this.a.getValue()).equals("Manual"), 18435058659860L}); - this.c - .setVisibility_RangeSetting( - new Object[]{ - (Predicate)lpL199_0 -> ((String)this.a.getValue()).equals("Ranged") || ((String)this.a.getValue()).equals("Dynamic"), - 37043306203287L - } + this.sendPackets.visibleWhen((Predicate)ignored -> !this.mode.getValue().equals("Manual")); + this.lagRange + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Ranged") || this.mode.getValue().equals("Dynamic") ); - this.d - .setVisibility_FloatSetting( - new Object[]{ - (Predicate)lpL198_0 -> ((String)this.a.getValue()).equals("Ranged") || ((String)this.a.getValue()).equals("Dynamic"), - 35046756052036L - } + this.targetFov + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Ranged") || this.mode.getValue().equals("Dynamic") ); - this.f - .setVisibility_RangeSetting( - new Object[]{ - (Predicate)lpL196_0 -> ((String)this.a.getValue()).equals("Ranged") || ((String)this.a.getValue()).equals("Dynamic"), - 37043306203287L - } + this.rangeChoke + .visibleWhen( + (Predicate)ignored -> this.mode.getValue().equals("Ranged") || this.mode.getValue().equals("Dynamic") ); } @Subscribe - public void a(PacketEvent var1) { - if (b.world != null && b.player != null) { - if (!((String)this.a.getValue()).equals("Manual") - && var1.a(new Object[0]) instanceof ExplosionS2CPacket - && this.g.isSelected(new Object[]{"On Explosion", 47850572908778L})) { + public void onPacketReceive(PacketReceiveEvent event) { + if (mc.world != null && mc.player != null) { + if (!this.mode.getValue().equals("Manual") + && event.getPacket() instanceof ExplosionS2CPacket + && this.sendPackets.isSelected("On Explosion")) { if (!( - b.player + mc.player .squaredDistanceTo( - ((ExplosionS2CPacket)var1.a(new Object[0])).center().getX(), - ((ExplosionS2CPacket)var1.a(new Object[0])).center().getY(), - ((ExplosionS2CPacket)var1.a(new Object[0])).center().getZ() + ((ExplosionS2CPacket)event.getPacket()).center().getX(), + ((ExplosionS2CPacket)event.getPacket()).center().getY(), + ((ExplosionS2CPacket)event.getPacket()).center().getZ() ) > 100.0 )) { - this.j(new Object[]{47590801564788L}); + this.flushPackets(); } } else { - if (((String)this.a.getValue()).equals("Knockback") - && var1.a(new Object[0]) instanceof EntityVelocityUpdateS2CPacket var13 - && var13.getEntityId() == b.player.getId()) { - this.o = true; - this.k.a_void_____________________(new Object[]{93540861878173L}); - this.e.reroll(new Object[]{57083216809697L}); + if (this.mode.getValue().equals("Knockback") + && event.getPacket() instanceof EntityVelocityUpdateS2CPacket velocityPacket + && velocityPacket.getEntityId() == mc.player.getId()) { + this.knockbackActive = true; + this.knockbackTimer.reset(); + this.choke.reroll(); } } } } @Subscribe - public void a(PacketEvent2 var1) { - if (b.world != null && b.player != null) { - if (((String)this.a.getValue()).equals("Manual") + public void onPacketSend(PacketSendEvent event) { + if (mc.world != null && mc.player != null) { + if (this.mode.getValue().equals("Manual") || ( - !(var1.a(new Object[0]) instanceof PlayerInteractEntityC2SPacket) - || !this.g.isSelected(new Object[]{"On Interact Entity", 47850572908778L}) + !(event.getPacket() instanceof PlayerInteractEntityC2SPacket) + || !this.sendPackets.isSelected("On Interact Entity") ) - && (!(var1.a(new Object[0]) instanceof HandSwingC2SPacket) || !this.g.isSelected(new Object[]{"On Hand Swing", 47850572908778L})) + && (!(event.getPacket() instanceof HandSwingC2SPacket) || !this.sendPackets.isSelected("On Hand Swing")) && ( - !(var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket) - || !this.g.isSelected(new Object[]{"On Interact Block", 47850572908778L}) + !(event.getPacket() instanceof PlayerInteractBlockC2SPacket) + || !this.sendPackets.isSelected("On Interact Block") ) && ( - !(var1.a(new Object[0]) instanceof PlayerInteractItemC2SPacket) - || !this.g.isSelected(new Object[]{"On Interact Item", 47850572908778L}) + !(event.getPacket() instanceof PlayerInteractItemC2SPacket) + || !this.sendPackets.isSelected("On Interact Item") ) - && (!(var1.a(new Object[0]) instanceof ClickSlotC2SPacket) || !this.g.isSelected(new Object[]{"On Click Slot", 47850572908778L}))) { - if (!this.m && (!((String)this.a.getValue()).equals("Knockback") || !this.k.b(new Object[]{this.e, 89714527855213L}))) { - if (AutoElytra.u) { - this.j(new Object[]{47590801564788L}); + && (!(event.getPacket() instanceof ClickSlotC2SPacket) || !this.sendPackets.isSelected("On Click Slot"))) { + if (!this.flushing && (!this.mode.getValue().equals("Knockback") || !this.knockbackTimer.hasElapsedRandom(this.choke))) { + if (AutoElytra.active) { + this.flushPackets(); return; } - this.i.add(var1.a(new Object[0])); - var1.a_void_____(new Object[0]); + this.heldPackets.add(event.getPacket()); + event.cancel(); } } else { - this.j(new Object[]{47590801564788L}); + this.flushPackets(); } } } @Subscribe - public void a(TickEvent24 var1) { - Event.b(); - this.n = false; - if (((String)this.a.getValue()).equals("Knockback") && this.k.b(new Object[]{this.e, 89714527855213L})) { - this.o = false; - this.j(new Object[]{47590801564788L}); + public void onFrame(FrameEvent event) { + this.rangeFlushed = false; + if (this.mode.getValue().equals("Knockback") && this.knockbackTimer.hasElapsedRandom(this.choke)) { + this.knockbackActive = false; + this.flushPackets(); } - if (((String)this.a.getValue()).equals("Ranged") || ((String)this.a.getValue()).equals("Dynamic")) { - float var10000 = (Float)this.d.getValue(); - Object[] var10003 = new Object[]{null, 109615191536188L}; - var10003[0] = var10000; - PlayerEntity var15 = CombatUtil.b(var10003); - if (var15 != null) { - double var16 = (float)Math.sqrt(b.player.squaredDistanceTo(var15)); - if (var16 < this.c.getHigh() && var16 > this.c.getLow() && var16 <= this.p) { - if (this.j.b(new Object[]{this.f, 89714527855213L})) { - this.j.a_void_____________________(new Object[]{93540861878173L}); - this.f.reroll(new Object[]{57083216809697L}); - this.j(new Object[]{47590801564788L}); - this.n = true; + if (this.mode.getValue().equals("Ranged") || this.mode.getValue().equals("Dynamic")) { + PlayerEntity enemy = TargetSelector.getClosestEnemyInFov(this.targetFov.getValue()); + if (enemy != null) { + double distance = (float)Math.sqrt(mc.player.squaredDistanceTo(enemy)); + if (distance < this.lagRange.getHigh() && distance > this.lagRange.getLow() && distance <= this.lastTargetDistance) { + if (this.chokeTimer.hasElapsedRandom(this.rangeChoke)) { + this.chokeTimer.reset(); + this.rangeChoke.reroll(); + this.flushPackets(); + this.rangeFlushed = true; } - } else if (((String)this.a.getValue()).equals("Ranged") || this.j.b(new Object[]{this.e, 89714527855213L}) || b.player.isUsingItem()) { - this.j(new Object[]{47590801564788L}); + } else if (this.mode.getValue().equals("Ranged") || this.chokeTimer.hasElapsedRandom(this.choke) || mc.player.isUsingItem()) { + this.flushPackets(); } - this.p = (float)var16; - } else if (((String)this.a.getValue()).equals("Ranged") || this.j.b(new Object[]{this.e, 89714527855213L}) || b.player.isUsingItem()) { - this.j(new Object[]{47590801564788L}); + this.lastTargetDistance = (float)distance; + } else if (this.mode.getValue().equals("Ranged") || this.chokeTimer.hasElapsedRandom(this.choke) || mc.player.isUsingItem()) { + this.flushPackets(); } } - if (((String)this.a.getValue()).equals("Timed") && (this.j.b(new Object[]{this.e, 89714527855213L}) || b.player.isUsingItem())) { - this.j(new Object[]{47590801564788L}); + if (this.mode.getValue().equals("Timed") && (this.chokeTimer.hasElapsedRandom(this.choke) || mc.player.isUsingItem())) { + this.flushPackets(); } } @Subscribe - public void a(TickEvent27 var1) { - if ((Boolean)this.h.getValue()) { - RenderHelper27 var13 = this.o ? this.k : this.j; - float var14 = ((String)this.a.getValue()).equals("Manual") ? 1000.0F : (this.n ? this.f.getRolled(new Object[0]) : this.e.getRolled(new Object[0])); - if (!(var13.a_float__________________(new Object[]{45633363943154L}) / var14 / 2.0F < 0.1F)) { - MatrixCameraData var10000 = var1.b; - RenderHelper8 var10001 = var1.a; - float var10002 = (float)this.l.x; - float var10003 = (float)this.l.y; - float var10004 = (float)this.l.z; - float var10005 = Math.min(0.5F, var13.a_float__________________(new Object[]{45633363943154L}) / var14 / 2.0F); - Color var10008 = MathHelper4.d(new Object[]{122780339483702L}).brighter(); - float var10009 = Math.min(1.0F, var13.a_float__________________(new Object[]{45633363943154L}) / var14); - Object[] var10012 = new Object[]{null, null, 20220661505083L}; - var10012[1] = var10009; - var10012[0] = var10008; - var10012 = new Object[]{ - null, null, null, null, null, null, null, null, MathHelper4.b(var10012), MathHelper4.d(new Object[]{122780339483702L}), 84681243398314L - }; - var10012[7] = 0.1F; - var10012[6] = 0.005F; - var10012[5] = var10005; - var10012[4] = var10004; - var10012[3] = var10003; - var10012[2] = var10002; - var10012[1] = var10001; - var10012[0] = var10000; - RenderState.f(var10012); + public void onRender3D(Render3DEvent event) { + if (this.render.getValue()) { + StopWatch activeTimer = this.knockbackActive ? this.knockbackTimer : this.chokeTimer; + float chokeDuration = this.mode.getValue().equals("Manual") ? 1000.0F : (this.rangeFlushed ? this.rangeChoke.getRolled() : this.choke.getRolled()); + if (!(activeTimer.getElapsed() / chokeDuration / 2.0F < 0.1F)) { + ShapeRenderer.drawGlowRing(event.context, event.renderer, (float)this.lastFlushPos.x, (float)this.lastFlushPos.y, (float)this.lastFlushPos.z, Math.min(0.5F, activeTimer.getElapsed() / chokeDuration / 2.0F), 0.005F, 0.1F, UiMath.withAlpha(UiMath.getAccentColor().brighter(), Math.min(1.0F, activeTimer.getElapsed() / chokeDuration)), UiMath.getAccentColor()); } } } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 45286455980699L; - long var6 = var2 ^ 26013233570683L; - this.j.a_void_____________________(new Object[]{var4}); - this.l = PositionUtil.b(new Object[]{var6}); + public void onEnable() { + this.chokeTimer.reset(); + this.lastFlushPos = PositionUtil.getPlayerPos(); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 14193982919441L; - this.j(new Object[]{var4}); + public void onDisable() { + this.flushPackets(); } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 41890196805669L ^ var2; - long var4 = var2 ^ 97044371252172L; - long var6 = var2 ^ 67643141364063L; - long var8 = var2 ^ 68974796796592L; - long var10 = var2 ^ 113087995867692L; - if (b.player != null && b.world != null) { - this.m = true; + private void flushPackets() { + if (mc.player != null && mc.world != null) { + this.flushing = true; - while (b.getNetworkHandler() != null && !this.i.isEmpty()) { - NetworkUtil.a(new Object[]{(Packet)this.i.poll(), var6}); + while (mc.getNetworkHandler() != null && !this.heldPackets.isEmpty()) { + PacketSender.sendPacket((Packet)this.heldPackets.poll()); } - this.m = false; - this.j.a_void_____________________(new Object[]{var4}); - this.e.reroll(new Object[]{var8}); - this.l = PositionUtil.b(new Object[]{var10}); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + this.flushing = false; + this.chokeTimer.reset(); + this.choke.reroll(); + this.lastFlushPos = PositionUtil.getPlayerPos(); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/FastBridge.java b/src/main/java/dev/zprestige/prestige/module/movement/FastBridge.java index c70a21d..5cca6da 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/FastBridge.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/FastBridge.java @@ -2,10 +2,8 @@ package dev.zprestige.prestige.module.movement; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.world.PositionUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.item.BlockItem; import net.minecraft.util.math.BlockPos; @@ -14,98 +12,30 @@ public class FastBridge extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private boolean i = false; + private boolean sneakForced = false; @Subscribe - public void a(TickEvent19 var1) { - boolean var7 = !(b.player.getMainHandStack().getItem() instanceof BlockItem) && !(b.player.getOffHandStack().getItem() instanceof BlockItem); - if (b.player.getPitch() < 70.0F) { - var7 = true; + public void onClientTick(ClientTickEvent event) { + boolean releaseSneak = !(mc.player.getMainHandStack().getItem() instanceof BlockItem) && !(mc.player.getOffHandStack().getItem() instanceof BlockItem); + if (mc.player.getPitch() < 70.0F) { + releaseSneak = true; } - BlockPos var8 = BlockPos.ofFloored(PositionUtil.b(new Object[]{118247215910525L})).down(); - if (!b.world.getBlockState(var8).isReplaceable() - || !b.world.getBlockState(var8.down()).isReplaceable() - || !b.world.getBlockState(var8.down().down()).isReplaceable()) { - var7 = true; + BlockPos belowPos = BlockPos.ofFloored(PositionUtil.getPlayerPos()).down(); + if (!mc.world.getBlockState(belowPos).isReplaceable() + || !mc.world.getBlockState(belowPos.down()).isReplaceable() + || !mc.world.getBlockState(belowPos.down().down()).isReplaceable()) { + releaseSneak = true; } - if (var7) { - if (this.i) { - b.options.sneakKey.setPressed(false); - this.i = false; + if (releaseSneak) { + if (this.sneakForced) { + mc.options.sneakKey.setPressed(false); + this.sneakForced = false; } } else { - b.options.sneakKey.setPressed(true); - this.i = true; - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + mc.options.sneakKey.setPressed(true); + this.sneakForced = true; } } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/Freecam.java b/src/main/java/dev/zprestige/prestige/module/movement/Freecam.java index 8942e32..df8d94e 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/Freecam.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/Freecam.java @@ -4,23 +4,17 @@ import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.DoubleEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper35; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; +import dev.zprestige.prestige.event.CameraPositionEvent; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.KeyBindingAccessor; +import dev.zprestige.prestige.render.ShapeRenderer; import dev.zprestige.prestige.type.EventPhase; import dev.zprestige.prestige.world.PositionUtil; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket; import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket.Mode; import net.minecraft.util.math.MathHelper; @@ -32,248 +26,139 @@ public class Freecam extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; - private BoolSetting d; - private Vec3d c = Vec3d.ZERO; - private Vec3d e = Vec3d.ZERO; - private Vec3d f = Vec3d.ZERO; - private float g = 0.0F; - private float h = 0.0F; - private Vec3d i = Vec3d.ZERO; + private FloatSetting speed; + private BoolSetting renderPrevious; + private Vec3d cameraPos = Vec3d.ZERO; + private Vec3d prevCameraPos = Vec3d.ZERO; + private Vec3d frozenPos = Vec3d.ZERO; + private float frozenYaw = 0.0F; + private float frozenPitch = 0.0F; + private Vec3d savedVelocity = Vec3d.ZERO; @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 26013233570683L; - if (b.player != null) { - this.c = b.player.getEyePos(); - this.e = this.c; - this.f = PositionUtil.b(new Object[]{var4}); - this.g = b.player.getYaw(); - this.h = b.player.getPitch(); - this.i = b.player.getVelocity(); - b.player.setVelocity(Vec3d.ZERO); + public void onEnable() { + if (mc.player != null) { + this.cameraPos = mc.player.getEyePos(); + this.prevCameraPos = this.cameraPos; + this.frozenPos = PositionUtil.getPlayerPos(); + this.frozenYaw = mc.player.getYaw(); + this.frozenPitch = mc.player.getPitch(); + this.savedVelocity = mc.player.getVelocity(); + mc.player.setVelocity(Vec3d.ZERO); } } @Override - public void onDisable(Object[] var1) { - if (b.player != null) { - b.player.setVelocity(this.i); + public void onDisable() { + if (mc.player != null) { + mc.player.setVelocity(this.savedVelocity); } - this.i = Vec3d.ZERO; + this.savedVelocity = Vec3d.ZERO; } @Subscribe - public void a(TickEvent19 var1) { - if (b.currentScreen == null) { - b.options.forwardKey.setPressed(false); - b.options.backKey.setPressed(false); - b.options.leftKey.setPressed(false); - b.options.rightKey.setPressed(false); - b.options.jumpKey.setPressed(false); - b.options.sneakKey.setPressed(false); - b.player.setSneaking(false); - float var7 = (float) (Math.PI / 180.0); - float var8 = (float) Math.PI; - float var9 = MathHelper.cos(-b.player.getYaw() * var7 - var8); - float var10 = MathHelper.sin(-b.player.getYaw() * var7 - var8); - Vec3d var11 = new Vec3d(-var10, 0.0, -var9); - Vec3d var12 = new Vec3d(0.0, 1.0, 0.0); - Vec3d var13 = var12.crossProduct(var11); - Vec3d var14 = var11.crossProduct(var12); - Vec3d var15 = Vec3d.ZERO; - if (GLFW.glfwGetKey(b.getWindow().getHandle(), new RenderHelper35(b.options.forwardKey).a(new Object[]{138149021417492L}).getCode()) == 1) { - var15 = var15.add(var11); + public void onClientTick(ClientTickEvent event) { + if (mc.currentScreen == null) { + mc.options.forwardKey.setPressed(false); + mc.options.backKey.setPressed(false); + mc.options.leftKey.setPressed(false); + mc.options.rightKey.setPressed(false); + mc.options.jumpKey.setPressed(false); + mc.options.sneakKey.setPressed(false); + mc.player.setSneaking(false); + float degToRad = (float) (Math.PI / 180.0); + float pi = (float) Math.PI; + float cosYaw = MathHelper.cos(-mc.player.getYaw() * degToRad - pi); + Vec3d forward = new Vec3d(-MathHelper.sin(-mc.player.getYaw() * degToRad - pi), 0.0, -cosYaw); + Vec3d up = new Vec3d(0.0, 1.0, 0.0); + Vec3d left = up.crossProduct(forward); + Vec3d right = forward.crossProduct(up); + Vec3d motion = Vec3d.ZERO; + if (GLFW.glfwGetKey(mc.getWindow().getHandle(), new KeyBindingAccessor(mc.options.forwardKey).getBoundKey().getCode()) == 1) { + motion = motion.add(forward); } - if (GLFW.glfwGetKey(b.getWindow().getHandle(), new RenderHelper35(b.options.backKey).a(new Object[]{138149021417492L}).getCode()) == 1) { - var15 = var15.subtract(var11); + if (GLFW.glfwGetKey(mc.getWindow().getHandle(), new KeyBindingAccessor(mc.options.backKey).getBoundKey().getCode()) == 1) { + motion = motion.subtract(forward); } - if (GLFW.glfwGetKey(b.getWindow().getHandle(), new RenderHelper35(b.options.leftKey).a(new Object[]{138149021417492L}).getCode()) == 1) { - var15 = var15.add(var13); + if (GLFW.glfwGetKey(mc.getWindow().getHandle(), new KeyBindingAccessor(mc.options.leftKey).getBoundKey().getCode()) == 1) { + motion = motion.add(left); } - if (GLFW.glfwGetKey(b.getWindow().getHandle(), new RenderHelper35(b.options.rightKey).a(new Object[]{138149021417492L}).getCode()) == 1) { - var15 = var15.add(var14); + if (GLFW.glfwGetKey(mc.getWindow().getHandle(), new KeyBindingAccessor(mc.options.rightKey).getBoundKey().getCode()) == 1) { + motion = motion.add(right); } - if (GLFW.glfwGetKey(b.getWindow().getHandle(), new RenderHelper35(b.options.jumpKey).a(new Object[]{138149021417492L}).getCode()) == 1) { - var15 = var15.add(0.0, ((Float)this.a.getValue()).floatValue(), 0.0); + if (GLFW.glfwGetKey(mc.getWindow().getHandle(), new KeyBindingAccessor(mc.options.jumpKey).getBoundKey().getCode()) == 1) { + motion = motion.add(0.0, this.speed.getValue().floatValue(), 0.0); } - if (GLFW.glfwGetKey(b.getWindow().getHandle(), new RenderHelper35(b.options.sneakKey).a(new Object[]{138149021417492L}).getCode()) == 1) { - var15 = var15.add(0.0, -(Float)this.a.getValue(), 0.0); + if (GLFW.glfwGetKey(mc.getWindow().getHandle(), new KeyBindingAccessor(mc.options.sneakKey).getBoundKey().getCode()) == 1) { + motion = motion.add(0.0, -this.speed.getValue(), 0.0); } - var15 = var15.normalize() + motion = motion.normalize() .multiply( - (Float)this.a.getValue() + this.speed.getValue() * ( - GLFW.glfwGetKey(b.getWindow().getHandle(), new RenderHelper35(b.options.sprintKey).a(new Object[]{138149021417492L}).getCode()) + GLFW.glfwGetKey(mc.getWindow().getHandle(), new KeyBindingAccessor(mc.options.sprintKey).getBoundKey().getCode()) == 1 ? 2.0F : 1.0F ) ); - this.e = this.c; - this.c = this.c.add(var15); + this.prevCameraPos = this.cameraPos; + this.cameraPos = this.cameraPos.add(motion); } } @Subscribe - public void a(FloatEvent2 var1) { - if (var1.a_EventPhase(new Object[0]) == EventPhase.PRE) { - if (b.player != null) { - b.player.setPosition(this.f.x, this.f.y, this.f.z); - b.player.setVelocity(Vec3d.ZERO); - var1.b(new Object[]{this.g}); - var1.c(new Object[]{this.h}); - var1.a_void_____(new Object[0]); + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (event.getPhase() == EventPhase.PRE) { + if (mc.player != null) { + mc.player.setPosition(this.frozenPos.x, this.frozenPos.y, this.frozenPos.z); + mc.player.setVelocity(Vec3d.ZERO); + event.setYaw(this.frozenYaw); + event.setPitch(this.frozenPitch); + event.cancel(); } } } @Subscribe - public void a(PacketEvent2 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof ClientCommandC2SPacket var5) { - Mode var8 = var5.getMode(); - boolean var7 = var8 == Mode.START_SPRINTING || var8 == Mode.STOP_SPRINTING; - if (var7) { - var1.a_void_____(new Object[0]); + public void onPacketSend(PacketSendEvent event) { + if (event.getPacket() instanceof ClientCommandC2SPacket commandPacket) { + Mode commandMode = commandPacket.getMode(); + if (commandMode == Mode.START_SPRINTING || commandMode == Mode.STOP_SPRINTING) { + event.cancel(); } } } @Subscribe - public void a(DoubleEvent var1) { - float var6 = MatrixStack.a_float_______________(new Object[]{601921721859L}); - var1.b(new Object[]{(double)MathHelper.lerp(var6, (float)this.e.x, (float)this.c.x)}); - var1.c(new Object[]{(double)MathHelper.lerp(var6, (float)this.e.y, (float)this.c.y)}); - var1.d(new Object[]{(double)MathHelper.lerp(var6, (float)this.e.z, (float)this.c.z)}); - var1.a_void_____(new Object[0]); + public void onCameraPosition(CameraPositionEvent event) { + float tickDelta = Render2D.getTickDelta(); + event.setX((double)MathHelper.lerp(tickDelta, (float)this.prevCameraPos.x, (float)this.cameraPos.x)); + event.setY((double)MathHelper.lerp(tickDelta, (float)this.prevCameraPos.y, (float)this.cameraPos.y)); + event.setZ((double)MathHelper.lerp(tickDelta, (float)this.prevCameraPos.z, (float)this.cameraPos.z)); + event.cancel(); } @Subscribe - public void a(TickEvent27 var1) { - if ((Boolean)this.d.getValue()) { - float var13 = (float)this.f.x; - float var14 = (float)this.f.y; - float var15 = (float)this.f.z; - MatrixCameraData var10000 = var1.b; - RenderHelper8 var10001 = var1.a; - float var10002 = var13 - 0.3F; - float var10004 = var15 - 0.3F; - float var10005 = var13 + 0.3F; - float var10006 = var14 + b.player.getHeight(); - float var10007 = var15 + 0.3F; - Color var10008 = MathHelper4.d(new Object[]{122780339483702L}); - Object[] var10012 = new Object[]{null, null, 20220661505083L}; - var10012[1] = 0.1F; - var10012[0] = var10008; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, MathHelper4.b(var10012), 108390846498585L}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var14; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.h(var10011); - var10000 = var1.b; - var10001 = var1.a; - var10002 = var13 - 0.3F; - var10004 = var15 - 0.3F; - var10005 = var13 + 0.3F; - var10006 = var14 + b.player.getHeight(); - var10007 = var15 + 0.3F; - var10011 = new Object[]{null, null, null, null, null, null, null, null, MathHelper4.d(new Object[]{122780339483702L}), 119015971454350L}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var14; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public void onRender3D(Render3DEvent event) { + if (this.renderPrevious.getValue()) { + float bodyX = (float)this.frozenPos.x; + float bodyY = (float)this.frozenPos.y; + float bodyZ = (float)this.frozenPos.z; + ShapeRenderer.drawFilledBox(event.context, event.renderer, bodyX - 0.3F, bodyY, bodyZ - 0.3F, bodyX + 0.3F, bodyY + mc.player.getHeight(), bodyZ + 0.3F, UiMath.withAlpha(UiMath.getAccentColor(), 0.1F)); + ShapeRenderer.drawBoxOutline(event.context, event.renderer, bodyX - 0.3F, bodyY, bodyZ - 0.3F, bodyX + 0.3F, bodyY + mc.player.getHeight(), bodyZ + 0.3F, UiMath.getAccentColor()); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/NoJumpDelay.java b/src/main/java/dev/zprestige/prestige/module/movement/NoJumpDelay.java index 00ebbf6..8c122ec 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/NoJumpDelay.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/NoJumpDelay.java @@ -3,10 +3,8 @@ package dev.zprestige.prestige.module.movement; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.combat.CombatHelper2; -import dev.zprestige.prestige.event.TickEvent19; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.combat.JumpCooldownAccessor; +import dev.zprestige.prestige.event.ClientTickEvent; import java.util.Set; public class NoJumpDelay extends Module { @@ -15,83 +13,12 @@ public class NoJumpDelay extends Module { } @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } @Subscribe - public void a(TickEvent19 var1) { - CombatHelper2 var10000 = new CombatHelper2(b.player); - Object[] var10004 = new Object[]{null, 37200282965471L}; - var10004[0] = 0; - var10000.a(var10004); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onClientTick(ClientTickEvent event) { + new JumpCooldownAccessor(mc.player).setJumpingCooldown(0); } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/Parkour.java b/src/main/java/dev/zprestige/prestige/module/movement/Parkour.java index 8d61599..e867eab 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/Parkour.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/Parkour.java @@ -3,10 +3,8 @@ package dev.zprestige.prestige.module.movement; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.render.RenderUtil2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.render.JumpKeyPresser; import net.minecraft.util.math.Box; public class Parkour extends Module { @@ -14,87 +12,18 @@ public class Parkour extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private RangeSetting a; + private RangeSetting distance; @Subscribe - public void a(TickEvent19 var1) { - if (b.player.isOnGround() && !b.options.jumpKey.isPressed()) { - if (!b.player.isSneaking() && !b.options.sneakKey.isPressed()) { - Box var9 = b.player.getBoundingBox(); - Box var10 = var9.offset(0.0, -0.5, 0.0) - .expand(-this.a.randomInRange(new Object[]{877569900989L}) / 100.0, 0.0, -this.a.randomInRange(new Object[]{877569900989L}) / 100.0); - if (!b.world.getBlockCollisions(b.player, var10).iterator().hasNext()) { - RenderUtil2.a(new Object[]{134150376721510L}); + public void onClientTick(ClientTickEvent event) { + if (mc.player.isOnGround() && !mc.options.jumpKey.isPressed()) { + if (!mc.player.isSneaking() && !mc.options.sneakKey.isPressed()) { + Box edgeBox = mc.player.getBoundingBox().offset(0.0, -0.5, 0.0) + .expand(-this.distance.randomInRange() / 100.0, 0.0, -this.distance.randomInRange() / 100.0); + if (!mc.world.getBlockCollisions(mc.player, edgeBox).iterator().hasNext()) { + JumpKeyPresser.pressJump(); } } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/ShortPearl.java b/src/main/java/dev/zprestige/prestige/module/movement/ShortPearl.java index 9561b65..72dabd6 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/ShortPearl.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/ShortPearl.java @@ -7,159 +7,123 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.TickEvent24; +import dev.zprestige.prestige.event.FrameEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract3; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.item.Item; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RotationProvider; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; +import dev.zprestige.prestige.world.RotationUtil; import net.minecraft.item.Items; import net.minecraft.util.Hand; -public class ShortPearl extends Module implements RenderContract3 { +public class ShortPearl extends Module implements RotationProvider { public ShortPearl() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private EnumSetting a; - private RangeSetting c; - private BoolSetting d; - private FloatSetting e; - private FloatSetting f; - private RenderHelper27 g = new RenderHelper27(26293358099357L); - private float h = 0.0F; - private int i = 0; - private int j = 0; - private int k = -1; - private int l = -1; - private int m = -1; - private float n; + private EnumSetting mode; + private RangeSetting minDelay; + private BoolSetting switchBack; + private FloatSetting pitch; + private FloatSetting smoothing; + private StopWatch stageTimer = new StopWatch(); + private float startPitch = 0.0F; + private int stage = 0; + private int previousSlot = 0; + private int rotateDoneAge = -1; + private int throwAge = -1; + private int silentThrowAge = -1; + private float silentThrowPitch; @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Override - public RenderBatch a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 43040229079061L; - long var6 = var2 ^ 43966253580757L; - if (!((String)this.a.getValue()).equals("Silent")) { + public Rotation provideRotation() { + if (!this.mode.getValue().equals("Silent")) { return null; - } else if (this.m != -1) { - if (b.player.age <= this.m + 1) { - return new RenderBatch(b.player.getYaw(), this.n); + } else if (this.silentThrowAge != -1) { + if (mc.player.age <= this.silentThrowAge + 1) { + return new Rotation(mc.player.getYaw(), this.silentThrowPitch); } else { - this.m = -1; - this.toggle(new Object[]{var4}); + this.silentThrowAge = -1; + this.toggle(); return null; } } else { - float var9 = (Float)this.e.getValue() - 1.0F + RenderUtil5.a.nextFloat() * 2.0F; - Item var10000 = Items.ENDER_PEARL; - Runnable var10001 = () -> { - float var5 = b.player.getPitch(); - b.player.setPitch(var9); - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - b.player.setPitch(var5); - }; - Object[] var10005 = new Object[]{null, null, null, var6}; - var10005[2] = true; - var10005[1] = var10001; - var10005[0] = var10000; - if (!InventoryUtil.j(var10005)) { + float throwPitch = this.pitch.getValue() - 1.0F + RandomUtil.RANDOM.nextFloat() * 2.0F; + if (!InventoryUtil.runWithItem(Items.ENDER_PEARL, () -> { + float realPitch = mc.player.getPitch(); + mc.player.setPitch(throwPitch); + PlayerInteractions.interactItem(Hand.MAIN_HAND); + mc.player.setPitch(realPitch); + }, true)) { return null; } else { - this.m = b.player.age; - this.n = var9; - return new RenderBatch(b.player.getYaw(), var9); + this.silentThrowAge = mc.player.age; + this.silentThrowPitch = throwPitch; + return new Rotation(mc.player.getYaw(), throwPitch); } } } @Subscribe - public void a(TickEvent24 var1) { - if (((String)this.a.getValue()).equals("Legit")) { - RenderHelper27 var10000 = this.g; - float var10001 = (Float)this.c.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - switch (this.i) { + public void onFrame(FrameEvent event) { + if (this.mode.getValue().equals("Legit")) { + if (this.stageTimer.hasElapsed(this.minDelay.getValue())) { + switch (this.stage) { case 0: - if (b.player.getMainHandStack().getItem() == Items.ENDER_PEARL) { - this.j(new Object[]{3539038516859L}); + if (mc.player.getMainHandStack().getItem() == Items.ENDER_PEARL) { + this.advanceStage(); return; } - Integer var21 = InventoryUtil.a_Integer(new Object[]{Items.ENDER_PEARL, 64376993919254L}); - if (var21 == null) { - this.toggle(new Object[]{115103427876780L}); + Integer pearlSlot = InventoryUtil.findHotbarSlot(Items.ENDER_PEARL); + if (pearlSlot == null) { + this.toggle(); return; } - this.j = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - int var25 = var21; - Object[] var28 = new Object[]{null, 37392877673079L}; - var28[0] = var25; - InventoryUtil.a_void________(var28); - this.j(new Object[]{3539038516859L}); + this.previousSlot = InventoryUtil.getSelectedSlot(); + InventoryUtil.selectSlot(pearlSlot); + this.advanceStage(); break; case 1: - RenderBatch var24 = new RenderBatch(0.0F, (Float)this.e.getValue()); - var10001 = (Float)this.f.getValue() / 2.0F; - Object[] var29 = new Object[]{null, null, null, null, 8666705888841L}; - var29[3] = 0.5F; - var29[2] = 0.0F; - var29[1] = var10001; - var29[0] = var24; - if (WorldUtil.d(var29)) { - b.player.setPitch((Float)this.e.getValue()); - this.k = b.player.age; - this.j(new Object[]{3539038516859L}); + if (RotationUtil.smoothRotatePitch(new Rotation(0.0F, this.pitch.getValue()), this.smoothing.getValue() / 2.0F, 0.0F, 0.5F)) { + mc.player.setPitch(this.pitch.getValue()); + this.rotateDoneAge = mc.player.age; + this.advanceStage(); } break; case 2: - if (b.player.age >= this.k + 2) { - InventoryUtil2.c(new Object[]{Hand.MAIN_HAND, 19803493115682L}); - this.l = b.player.age; - this.j(new Object[]{3539038516859L}); + if (mc.player.age >= this.rotateDoneAge + 2) { + PlayerInteractions.interactItem(Hand.MAIN_HAND); + this.throwAge = mc.player.age; + this.advanceStage(); } break; case 3: - if (b.player.age >= this.l + 2) { - this.j(new Object[]{3539038516859L}); + if (mc.player.age >= this.throwAge + 2) { + this.advanceStage(); } break; case 4: - RenderBatch var23 = new RenderBatch(0.0F, this.h); - var10001 = (Float)this.f.getValue() / 2.0F; - Object[] var10006 = new Object[]{null, null, null, null, 8666705888841L}; - var10006[3] = 0.5F; - var10006[2] = 0.0F; - var10006[1] = var10001; - var10006[0] = var23; - if (WorldUtil.d(var10006)) { - if (!(Boolean)this.d.getValue()) { - this.toggle(new Object[]{115103427876780L}); + if (RotationUtil.smoothRotatePitch(new Rotation(0.0F, this.startPitch), this.smoothing.getValue() / 2.0F, 0.0F, 0.5F)) { + if (!this.switchBack.getValue()) { + this.toggle(); } else { - this.j(new Object[]{3539038516859L}); + this.advanceStage(); } } break; case 5: - if ((Boolean)this.d.getValue()) { - int var22 = this.j; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var22; - InventoryUtil.a_void________(var10003); - this.toggle(new Object[]{115103427876780L}); + if (this.switchBack.getValue()) { + InventoryUtil.selectSlot(this.previousSlot); + this.toggle(); } } } @@ -167,104 +131,26 @@ public class ShortPearl extends Module implements RenderContract3 { } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 45286455980699L; - long var6 = var2 ^ 87726956962791L; - long var8 = var2 ^ 91082959635357L; - Prestige.o.e(new Object[]{this, var8}); - this.g.a_void_____________________(new Object[]{var4}); - this.h = b.player.getPitch(); - this.i = 0; - this.k = -1; - this.l = -1; - this.m = -1; - this.g.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var6}); + public void onEnable() { + Prestige.silentRotationManager.addRotationProvider(this); + this.stageTimer.reset(); + this.startPitch = mc.player.getPitch(); + this.stage = 0; + this.rotateDoneAge = -1; + this.throwAge = -1; + this.silentThrowAge = -1; + this.stageTimer.reset(); + this.minDelay.reroll(); } - private void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 40129861624705L ^ var2; - long var4 = var2 ^ 125737933703783L; - long var6 = var2 ^ 22686853749531L; - this.g.a_void_____________________(new Object[]{var4}); - this.c.reroll(new Object[]{var6}); - this.i++; + private void advanceStage() { + this.stageTimer.reset(); + this.minDelay.reroll(); + this.stage++; } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 140372736859409L; - Prestige.o.f(new Object[]{this, var4}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + Prestige.silentRotationManager.removeRotationProvider(this); } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/Sprint.java b/src/main/java/dev/zprestige/prestige/module/movement/Sprint.java index 88ee2d0..eba7526 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/Sprint.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/Sprint.java @@ -2,9 +2,7 @@ package dev.zprestige.prestige.module.movement; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.TickEvent19; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.ClientTickEvent; public class Sprint extends Module { public Sprint() { @@ -12,77 +10,9 @@ public class Sprint extends Module { } @Subscribe - public void a(TickEvent19 var1) { - if (b.player != null && b.player.forwardSpeed > 0.0F) { - b.options.sprintKey.setPressed(true); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public void onClientTick(ClientTickEvent event) { + if (mc.player != null && mc.player.forwardSpeed > 0.0F) { + mc.options.sprintKey.setPressed(true); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/Velocity.java b/src/main/java/dev/zprestige/prestige/module/movement/Velocity.java index e9fdd31..5e118b1 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/Velocity.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/Velocity.java @@ -6,14 +6,11 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.DoubleEvent3; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.VelocityUpdateEvent; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.render.RandomUtil; import java.util.ArrayList; import java.util.Set; import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket; @@ -23,123 +20,54 @@ public class Velocity extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; - private BoolSetting d; - private RangeSetting c; - private RangeSetting e; - private ArrayList f = new ArrayList(); + private FloatSetting chance; + private BoolSetting ignoreExplosions; + private RangeSetting vertical; + private RangeSetting horizontal; + private ArrayList recentExplosions = new ArrayList(); @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } @Subscribe - public void a(TickEvent19 var1) { - new ArrayList<>(this.f).forEach(lpL356_0 -> { - if (b.player != null && b.player.isOnGround()) { - this.f.remove(((net.minecraft.network.packet.s2c.play.ExplosionS2CPacket)lpL356_0)); + public void onClientTick(ClientTickEvent event) { + new ArrayList<>(this.recentExplosions).forEach(explosion -> { + if (mc.player != null && mc.player.isOnGround()) { + this.recentExplosions.remove(((net.minecraft.network.packet.s2c.play.ExplosionS2CPacket)explosion)); } }); } @Subscribe - public void a(DoubleEvent3 var1) { - if ((this.f.isEmpty() || !(Boolean)this.d.getValue()) && RenderUtil5.a.nextFloat() * 100.0F <= (Float)this.a.getValue()) { - float var7 = this.c.randomInRange(new Object[]{877569900989L}) / 100.0F; - float var8 = this.e.randomInRange(new Object[]{877569900989L}) / 100.0F; - var1.b(new Object[]{var1.a(new Object[0]) * var8}); - var1.c(new Object[]{var1.b_double_(new Object[0]) * var7}); - var1.d(new Object[]{var1.c_double_(new Object[0]) * var8}); - var1.a_void_____(new Object[0]); + public void onVelocityUpdate(VelocityUpdateEvent event) { + if ((this.recentExplosions.isEmpty() || !this.ignoreExplosions.getValue()) && RandomUtil.RANDOM.nextFloat() * 100.0F <= this.chance.getValue()) { + float verticalFactor = this.vertical.randomInRange() / 100.0F; + float horizontalFactor = this.horizontal.randomInRange() / 100.0F; + event.setVelocityX(event.getVelocityX() * horizontalFactor); + event.setVelocityY(event.getVelocityY() * verticalFactor); + event.setVelocityZ(event.getVelocityZ() * horizontalFactor); + event.cancel(); } } @Subscribe - public void a(PacketEvent var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof ExplosionS2CPacket var5 - && var5.playerKnockback().isPresent() - && var5.playerKnockback().get().lengthSquared() > 0.0) { - this.f.add(var5); + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof ExplosionS2CPacket explosionPacket + && explosionPacket.playerKnockback().isPresent() + && explosionPacket.playerKnockback().get().lengthSquared() > 0.0) { + this.recentExplosions.add(explosionPacket); } } @Override - public void onDisable(Object[] var1) { - this.f.clear(); + public void onDisable() { + this.recentExplosions.clear(); } @Subscribe - public void a(TickEvent3 var1) { - this.f.clear(); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onGameJoin(GameJoinEvent event) { + this.recentExplosions.clear(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/movement/WTap.java b/src/main/java/dev/zprestige/prestige/module/movement/WTap.java index 73c2cbb..b32e2a6 100644 --- a/src/main/java/dev/zprestige/prestige/module/movement/WTap.java +++ b/src/main/java/dev/zprestige/prestige/module/movement/WTap.java @@ -5,12 +5,10 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RandomUtil; import java.util.Set; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; @@ -21,30 +19,30 @@ public class WTap extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; - private RangeSetting c; - private RangeSetting d; - private RenderHelper27 e = new RenderHelper27(26293358099357L); - private RenderHelper27 f = new RenderHelper27(26293358099357L); - private boolean i = false; - private boolean g = false; - private static final long l = 5341673954434089047L; + private FloatSetting chance; + private RangeSetting holdLength; + private RangeSetting reaction; + private StopWatch reactionTimer = new StopWatch(); + private StopWatch releaseTimer = new StopWatch(); + private boolean tapPending = false; + private boolean forwardReleased = false; + private static final long W_KEY_CODE = 5341673954434089047L; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Sword, Gamemode.UHC); } @Subscribe - public void a(EntityEvent var1) { - if (!this.i && !this.g) { - Entity var9 = var1.a(new Object[0]); - if (var9 != null) { - if (var9 instanceof PlayerEntity) { - if (b.options.forwardKey.isPressed() && b.player.isSprinting() && RenderUtil5.a.nextFloat() * 100.0F <= (Float)this.a.getValue()) { - this.d.reroll(new Object[]{57083216809697L}); - this.e.a_void_____________________(new Object[]{93540861878173L}); - this.i = true; + public void onAttackEntity(AttackEntityEvent event) { + if (!this.tapPending && !this.forwardReleased) { + Entity target = event.getTarget(); + if (target != null) { + if (target instanceof PlayerEntity) { + if (mc.options.forwardKey.isPressed() && mc.player.isSprinting() && RandomUtil.RANDOM.nextFloat() * 100.0F <= this.chance.getValue()) { + this.reaction.reroll(); + this.reactionTimer.reset(); + this.tapPending = true; } } } @@ -52,114 +50,38 @@ public class WTap extends Module { } @Subscribe - public void a(TickEvent24 var1) { - if (GLFW.glfwGetKey(b.getWindow().getHandle(), (int)l) != 1) { - this.g = false; - this.i = false; + public void onFrame(FrameEvent event) { + if (GLFW.glfwGetKey(mc.getWindow().getHandle(), (int)W_KEY_CODE) != 1) { + this.forwardReleased = false; + this.tapPending = false; } else { - if (this.i) { - RenderHelper27 var10000 = this.e; - float var10001 = (Float)this.d.getValue(); - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = var10001; - if (var10000.a(var10004)) { - b.options.forwardKey.setPressed(false); - this.f.a_void_____________________(new Object[]{93540861878173L}); - this.c.reroll(new Object[]{57083216809697L}); - this.g = true; - this.i = false; + if (this.tapPending) { + if (this.reactionTimer.hasElapsed(this.reaction.getValue())) { + mc.options.forwardKey.setPressed(false); + this.releaseTimer.reset(); + this.holdLength.reroll(); + this.forwardReleased = true; + this.tapPending = false; } } - if (this.g) { - RenderHelper27 var2 = this.f; - float var3 = (Float)this.c.getValue(); - Object[] var4 = new Object[]{null, 2505922520844L}; - var4[0] = var3; - if (var2.a(var4)) { - if (b.currentScreen == null) { - b.options.forwardKey.setPressed(true); + if (this.forwardReleased) { + if (this.releaseTimer.hasElapsed(this.holdLength.getValue())) { + if (mc.currentScreen == null) { + mc.options.forwardKey.setPressed(true); } - this.g = false; + this.forwardReleased = false; } } } } - public boolean d(Object[] var1) { - return this.i; + public boolean isTapPending() { + return this.tapPending; } - public boolean e(Object[] var1) { - return this.g; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public boolean isForwardReleased() { + return this.forwardReleased; } } diff --git a/src/main/java/dev/zprestige/prestige/module/spear/ExtendedReach.java b/src/main/java/dev/zprestige/prestige/module/spear/ExtendedReach.java index 21d28e0..a6829be 100644 --- a/src/main/java/dev/zprestige/prestige/module/spear/ExtendedReach.java +++ b/src/main/java/dev/zprestige/prestige/module/spear/ExtendedReach.java @@ -6,20 +6,17 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent15; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent7; +import dev.zprestige.prestige.event.ExtendedReachAttackEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.DoAttackEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderUtil5; -import dev.zprestige.prestige.world.WorldUtil; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.RandomUtil; +import dev.zprestige.prestige.world.RotationUtil; import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntMaps; import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.ItemEnchantmentsComponent; @@ -36,72 +33,60 @@ import net.minecraft.util.hit.HitResult.Type; import net.minecraft.util.math.Vec3d; public class ExtendedReach extends Module { - private FloatSetting a; - private MultiSetting c; - private BoolSetting d; - public static ExtendedReach e; - private int f = -1; - private int g = 0; + private FloatSetting chance; + private MultiSetting weapons; + private BoolSetting worksWithTriggerbot; + public static ExtendedReach instance; + private int previousSlot = -1; + private int ticksUntilSwapBack = 0; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Spear); } public ExtendedReach() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - e = this; + instance = this; } @Subscribe - public void a(TickEvent19 var1) { - if (this.g == 0) { - if (this.f != -1) { - int var10000 = this.f; - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var10000; - InventoryUtil.a_void________(var10003); - this.f = -1; + public void onClientTick(ClientTickEvent event) { + if (this.ticksUntilSwapBack == 0) { + if (this.previousSlot != -1) { + InventoryUtil.selectSlot(this.previousSlot); + this.previousSlot = -1; } } else { - this.g--; + this.ticksUntilSwapBack--; } } @Subscribe - public void a(TickEvent15 var1) { - this.j(new Object[]{78860863667161L}); + public void onExtendedReachAttack(ExtendedReachAttackEvent event) { + this.swapToSpear(); } @Subscribe - public void a(TickEvent7 var1) { - this.j(new Object[]{78860863667161L}); + public void onDoAttack(DoAttackEvent event) { + this.swapToSpear(); } - public void j(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 26766769286092L ^ var2; - long var4 = var2 ^ 34708039823124L; - long var6 = var2 ^ 75225366092527L; - long var8 = var2 ^ 35622498021749L; - long var10 = var2 ^ 138414233307746L; - long var12 = var2 ^ 41572182259633L; - if (a_class_1297____(new Object[]{var6}) != null) { - if (RenderUtil5.a.nextFloat() * 100.0F > (Float)this.a.getValue()) { - this.g = 1; + public void swapToSpear() { + if (findExtendedReachTarget() != null) { + if (RandomUtil.RANDOM.nextFloat() * 100.0F > this.chance.getValue()) { + this.ticksUntilSwapBack = 1; } - if (this.g <= 0) { - if (!(b.player.fallDistance > 1.5)) { - if (this.f == -1) { - if (this.d(new Object[]{var4})) { - this.f = InventoryUtil.a_int_____(new Object[]{var12}); - int var15 = a(new Object[]{var8}); - if (var15 != -1) { - Object[] var10003 = new Object[]{null, var10}; - var10003[0] = var15; - InventoryUtil.a_void________(var10003); - this.g = 1; + if (this.ticksUntilSwapBack <= 0) { + if (!(mc.player.fallDistance > 1.5)) { + if (this.previousSlot == -1) { + if (this.isHoldingSelectedWeapon()) { + this.previousSlot = InventoryUtil.getSelectedSlot(); + int spearSlot = findNonLungeSpearSlot(); + if (spearSlot != -1) { + InventoryUtil.selectSlot(spearSlot); + this.ticksUntilSwapBack = 1; } } } @@ -110,30 +95,18 @@ public class ExtendedReach extends Module { } } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 26766769286092L ^ var2; - long var4 = var2 ^ 48413586181362L; - long var6 = var2 ^ 68343422288032L; - long var8 = var2 ^ 127187768777767L; - long var10 = var2 ^ 36633557319153L; - return this.c.isSelected(new Object[]{"Sword", var8}) && InventoryUtil.a(new Object[]{b.player.getMainHandStack(), var4}) - || this.c.isSelected(new Object[]{"Axe", var8}) && InventoryUtil.b(new Object[]{b.player.getMainHandStack(), var6}) - || this.c.isSelected(new Object[]{"Mace", var8}) && InventoryUtil.o(new Object[]{b.player.getMainHandStack(), var10}); + private boolean isHoldingSelectedWeapon() { + return this.weapons.isSelected("Sword") && InventoryUtil.isSword(mc.player.getMainHandStack()) + || this.weapons.isSelected("Axe") && InventoryUtil.isAxe(mc.player.getMainHandStack()) + || this.weapons.isSelected("Mace") && InventoryUtil.isMace(mc.player.getMainHandStack()); } - private static int a(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 26766769286092L ^ var1; - long var3 = var1 ^ 43224967540481L; - Event.b(); - - for (int var6 = 0; var6 < 9; var6++) { - ItemStack var7 = b.player.getInventory().getStack(var6); - if (var7.isIn(ItemTags.SPEARS)) { - boolean var8 = c(new Object[]{var7, Enchantments.LUNGE, var3}) == 0; - if (var8) { - return var6; + private static int findNonLungeSpearSlot() { + for (int slot = 0; slot < 9; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack.isIn(ItemTags.SPEARS)) { + if (getEnchantmentLevel(stack, Enchantments.LUNGE) == 0) { + return slot; } } } @@ -141,155 +114,66 @@ public class ExtendedReach extends Module { return -1; } - public static int c(Object[] var0) { - ItemStack var4 = (ItemStack)var0[0]; - RegistryKey var1 = (RegistryKey)var0[1]; - long var2 = (Long)var0[2]; - var2 = 26766769286092L ^ var2; - long var5 = var2 ^ 15191465325281L; - long var7 = var2 ^ 62451506062620L; - if (var4.isEmpty()) { + public static int getEnchantmentLevel(ItemStack stack, RegistryKey enchantmentKey) { + if (stack.isEmpty()) { return 0; } else { - Object2IntArrayMap var10 = new Object2IntArrayMap(); - k(new Object[]{var4, var10, var5}); - return d_int__________(new Object[]{var10, var1, var7}); + Object2IntArrayMap enchantmentLevels = new Object2IntArrayMap(); + collectEnchantments(stack, enchantmentLevels); + return findEnchantmentLevel(enchantmentLevels, enchantmentKey); } } - public static int d_int__________(Object[] var0) { - Object2IntMap var1 = (Object2IntMap)var0[0]; - RegistryKey var2 = (RegistryKey)var0[1]; - Event.b(); - - for (Entry var7 : (Iterable)(Object2IntMaps.fastIterable(var1))) { - if (((RegistryEntry)var7.getKey()).matchesKey(var2)) { - return var7.getIntValue(); + public static int findEnchantmentLevel(Object2IntMap enchantmentLevels, RegistryKey enchantmentKey) { + for (Entry entry : (Iterable)(Object2IntMaps.fastIterable(enchantmentLevels))) { + if (((RegistryEntry)entry.getKey()).matchesKey(enchantmentKey)) { + return entry.getIntValue(); } } return 0; } - public static void k(Object[] var0) { - ItemStack var2 = (ItemStack)var0[0]; - Object2IntMap var1 = (Object2IntMap)var0[1]; - Event.b(); - var1.clear(); - if (!var2.isEmpty()) { - for (Entry var8 : var2.getItem() == Items.ENCHANTED_BOOK - ? var2.getOrDefault(DataComponentTypes.STORED_ENCHANTMENTS, ItemEnchantmentsComponent.DEFAULT).getEnchantmentEntries() - : var2.getEnchantments().getEnchantmentEntries()) { - var1.put((RegistryEntry)var8.getKey(), var8.getIntValue()); + public static void collectEnchantments(ItemStack stack, Object2IntMap enchantmentLevels) { + enchantmentLevels.clear(); + if (!stack.isEmpty()) { + for (Entry entry : stack.getItem() == Items.ENCHANTED_BOOK + ? stack.getOrDefault(DataComponentTypes.STORED_ENCHANTMENTS, ItemEnchantmentsComponent.DEFAULT).getEnchantmentEntries() + : stack.getEnchantments().getEnchantmentEntries()) { + enchantmentLevels.put((RegistryEntry)entry.getKey(), entry.getIntValue()); } } } - public static Entity a_class_1297____(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 26766769286092L ^ var1; - long var3 = var1 ^ 136703853985878L; - long var5 = var1 ^ 22070413222523L; - if (!e.isEnabled()) { + public static Entity findExtendedReachTarget() { + if (!instance.isEnabled()) { return null; - } else if (a(new Object[]{var3}) == -1) { + } else if (findNonLungeSpearSlot() == -1) { return null; - } else if (b.player.getAttackCooldownProgress(0.0F) < 1.0F) { + } else if (mc.player.getAttackCooldownProgress(0.0F) < 1.0F) { return null; - } else if (b.crosshairTarget instanceof EntityHitResult) { + } else if (mc.crosshairTarget instanceof EntityHitResult) { return null; } else { - RenderBatch var10000 = new RenderBatch(b.player.getYaw(), b.player.getPitch()); - Object[] var10004 = new Object[]{null, null, var5}; - var10004[1] = 4.75F; - var10004[0] = var10000; - HitResult var8 = WorldUtil.b(var10004); - if (var8.getType() != Type.MISS) { + HitResult hitResult = RotationUtil.raycastRotationWithRange(new Rotation(mc.player.getYaw(), mc.player.getPitch()), 4.75F); + if (hitResult.getType() != Type.MISS) { return null; } else { - Vec3d var9 = var8.getPos(); - Entity var10 = null; + Vec3d rayEnd = hitResult.getPos(); + Entity target = null; - for (Entity var12 : b.world.getEntities()) { - if (var12 != b.player - && !(var12.distanceTo(b.player) > 6.0F) - && b.player.canSee(var12) - && var12.getBoundingBox().intersects(b.player.getEyePos(), var9)) { - var10 = var12; + for (Entity entity : mc.world.getEntities()) { + if (entity != mc.player + && !(entity.distanceTo(mc.player) > 6.0F) + && mc.player.canSee(entity) + && entity.getBoundingBox().intersects(mc.player.getEyePos(), rayEnd)) { + target = entity; break; } } - return var10; + return target; } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/spear/InstantLunge.java b/src/main/java/dev/zprestige/prestige/module/spear/InstantLunge.java index 1514372..4a96074 100644 --- a/src/main/java/dev/zprestige/prestige/module/spear/InstantLunge.java +++ b/src/main/java/dev/zprestige/prestige/module/spear/InstantLunge.java @@ -5,17 +5,14 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.RangeSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.network.NetworkUtil; -import dev.zprestige.prestige.render.RenderHelper27; +import dev.zprestige.prestige.network.PacketSender; +import dev.zprestige.prestige.render.StopWatch; import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntMaps; import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.ItemEnchantmentsComponent; @@ -37,58 +34,51 @@ public class InstantLunge extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private RangeSetting a; - private int c = -1; - private RenderHelper27 e = new RenderHelper27(26293358099357L); + private BoolSetting swapBack; + private RangeSetting swapBackDelay; + private int previousSlot = -1; + private StopWatch swapBackTimer = new StopWatch(); @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Spear); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - int var21 = this.a(new Object[]{126020033099551L}); - if (this.c != -1) { - if (this.e.b(new Object[]{this.a, 89714527855213L})) { - int var10000 = this.c; - Object[] var24 = new Object[]{null, 37392877673079L}; - var24[0] = var10000; - InventoryUtil.a_void________(var24); - this.c = -1; - this.toggle(new Object[]{115103427876780L}); + public void onClientTick(ClientTickEvent event) { + int lungeSpearSlot = this.findLungeSpearSlot(); + if (this.previousSlot != -1) { + if (this.swapBackTimer.hasElapsedRandom(this.swapBackDelay)) { + InventoryUtil.selectSlot(this.previousSlot); + this.previousSlot = -1; + this.toggle(); } - } else if (var21 != -1) { - if (!b.player.isUsingItem()) { - if (b.player.getHungerManager().getFoodLevel() >= 6) { - if (InventoryUtil.a_int_____(new Object[]{134339616728996L}) == var21) { - NetworkUtil.a(new Object[]{new PlayerActionC2SPacket(Action.STAB, BlockPos.ORIGIN, Direction.DOWN), 53690043409678L}); - this.toggle(new Object[]{115103427876780L}); + } else if (lungeSpearSlot != -1) { + if (!mc.player.isUsingItem()) { + if (mc.player.getHungerManager().getFoodLevel() >= 6) { + if (InventoryUtil.getSelectedSlot() == lungeSpearSlot) { + PacketSender.sendPacket(new PlayerActionC2SPacket(Action.STAB, BlockPos.ORIGIN, Direction.DOWN)); + this.toggle(); } else { - this.c = InventoryUtil.a_int_____(new Object[]{134339616728996L}); - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var21; - InventoryUtil.a_void________(var10003); - ItemStack var22 = b.player.getMainHandStack(); - PiercingWeaponComponent var23 = var22.get(DataComponentTypes.PIERCING_WEAPON); - if (var23 != null && !b.interactionManager.isFlyingLocked()) { - b.interactionManager.attackWithPiercingWeapon(var23); - b.player.swingHand(Hand.MAIN_HAND); + this.previousSlot = InventoryUtil.getSelectedSlot(); + InventoryUtil.selectSlot(lungeSpearSlot); + PiercingWeaponComponent piercingWeapon = mc.player.getMainHandStack().get(DataComponentTypes.PIERCING_WEAPON); + if (piercingWeapon != null && !mc.interactionManager.isFlyingLocked()) { + mc.interactionManager.attackWithPiercingWeapon(piercingWeapon); + mc.player.swingHand(Hand.MAIN_HAND); } - if (!(Boolean)this.d.getValue()) { - this.c = -1; - this.toggle(new Object[]{115103427876780L}); + if (!this.swapBack.getValue()) { + this.previousSlot = -1; + this.toggle(); } else { - this.e.a_void_____________________(new Object[]{93540861878173L}); - this.a.reroll(new Object[]{57083216809697L}); + this.swapBackTimer.reset(); + this.swapBackDelay.reroll(); } } } @@ -96,18 +86,12 @@ public class InstantLunge extends Module { } } - private int a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 47745533966094L ^ var2; - long var4 = var2 ^ 678305512337L; - Event.b(); - - for (int var7 = 0; var7 < 9; var7++) { - ItemStack var8 = b.player.getInventory().getStack(var7); - if (var8.isIn(ItemTags.SPEARS)) { - boolean var9 = c(new Object[]{var8, Enchantments.LUNGE, var4}) > 0; - if (var9) { - return var7; + private int findLungeSpearSlot() { + for (int slot = 0; slot < 9; slot++) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack.isIn(ItemTags.SPEARS)) { + if (getEnchantmentLevel(stack, Enchantments.LUNGE) > 0) { + return slot; } } } @@ -115,115 +99,34 @@ public class InstantLunge extends Module { return -1; } - public static int c(Object[] var0) { - ItemStack var4 = (ItemStack)var0[0]; - RegistryKey var3 = (RegistryKey)var0[1]; - long var1 = (Long)var0[2]; - var1 = 47745533966094L ^ var1; - long var5 = var1 ^ 24961913191706L; - long var7 = var1 ^ 39617031938216L; - if (var4.isEmpty()) { + public static int getEnchantmentLevel(ItemStack stack, RegistryKey enchantmentKey) { + if (stack.isEmpty()) { return 0; } else { - Object2IntArrayMap var10 = new Object2IntArrayMap(); - j(new Object[]{var4, var10, var5}); - return d(new Object[]{var10, var3, var7}); + Object2IntArrayMap enchantmentLevels = new Object2IntArrayMap(); + collectEnchantments(stack, enchantmentLevels); + return findEnchantmentLevel(enchantmentLevels, enchantmentKey); } } - public static int d(Object[] var0) { - Object2IntMap var2 = (Object2IntMap)var0[0]; - RegistryKey var1 = (RegistryKey)var0[1]; - Event.b(); - - for (Entry var7 : (Iterable)(Object2IntMaps.fastIterable(var2))) { - if (((RegistryEntry)var7.getKey()).matchesKey(var1)) { - return var7.getIntValue(); + public static int findEnchantmentLevel(Object2IntMap enchantmentLevels, RegistryKey enchantmentKey) { + for (Entry entry : (Iterable)(Object2IntMaps.fastIterable(enchantmentLevels))) { + if (((RegistryEntry)entry.getKey()).matchesKey(enchantmentKey)) { + return entry.getIntValue(); } } return 0; } - public static void j(Object[] var0) { - ItemStack var2 = (ItemStack)var0[0]; - Object2IntMap var1 = (Object2IntMap)var0[1]; - Event.b(); - var1.clear(); - if (!var2.isEmpty()) { - for (Entry var8 : var2.getItem() == Items.ENCHANTED_BOOK - ? var2.getOrDefault(DataComponentTypes.STORED_ENCHANTMENTS, ItemEnchantmentsComponent.DEFAULT).getEnchantmentEntries() - : var2.getEnchantments().getEnchantmentEntries()) { - var1.put((RegistryEntry)var8.getKey(), var8.getIntValue()); + public static void collectEnchantments(ItemStack stack, Object2IntMap enchantmentLevels) { + enchantmentLevels.clear(); + if (!stack.isEmpty()) { + for (Entry entry : stack.getItem() == Items.ENCHANTED_BOOK + ? stack.getOrDefault(DataComponentTypes.STORED_ENCHANTMENTS, ItemEnchantmentsComponent.DEFAULT).getEnchantmentEntries() + : stack.getEnchantments().getEnchantmentEntries()) { + enchantmentLevels.put((RegistryEntry)entry.getKey(), entry.getIntValue()); } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/spear/SpearDamageIndicator.java b/src/main/java/dev/zprestige/prestige/module/spear/SpearDamageIndicator.java index c796726..3da38e5 100644 --- a/src/main/java/dev/zprestige/prestige/module/spear/SpearDamageIndicator.java +++ b/src/main/java/dev/zprestige/prestige/module/spear/SpearDamageIndicator.java @@ -4,21 +4,16 @@ import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.CombatUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.TickEvent25; +import dev.zprestige.prestige.combat.TargetSelector; +import dev.zprestige.prestige.event.Render2DEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper5; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.ToggleAnimation; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import dev.zprestige.prestige.type.Easing; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Set; import net.minecraft.component.type.KineticWeaponComponent; import net.minecraft.entity.attribute.EntityAttributes; @@ -32,192 +27,51 @@ public class SpearDamageIndicator extends Module { public SpearDamageIndicator() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - - private static final float a = 20.0F; - private static final float c = 4.0F; - private RenderHelper5 d = new RenderHelper5(500.0F, false, Easing.BACK_IN_OUT, 88790582046503L); - private float e = 0.0F; + private ToggleAnimation visibilityAnimation = new ToggleAnimation(500.0F, false, Easing.BACK_IN_OUT); + private float displayedDamage = 0.0F; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Spear); } @Subscribe - public void a(TickEvent25 var1) { - boolean var29 = InventoryUtil.l(new Object[]{Items.NETHERITE_SPEAR, 65539821781598L}) && b.player.isUsingItem(); - PlayerEntity var30 = var29 ? CombatUtil.a_class_1657(new Object[]{16945855905304L}) : null; - RenderHelper5 var10000 = this.d; - boolean var10001 = var30 != null; - Object[] var10004 = new Object[]{null, 134514778598418L}; - var10004[0] = var10001; - var10000.a_void_______________________(var10004); - float var31 = this.d.a_float___________________(new Object[]{86379377865377L}); - if (!(var31 <= 0.01F)) { - Vec3d var32 = b.player.getRotationVector(); - double var33 = var32.dotProduct(KineticWeaponComponent.getAmplifiedMovement(b.player)); - double var35 = b.player.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE); - double var37 = var30 == null ? 0.0 : var32.dotProduct(KineticWeaponComponent.getAmplifiedMovement(var30)); - double var39 = Math.max(0.0, var33 - var37); - float var41 = (float)var35 + MathHelper.floor(var39 / 2.0); - float var63 = this.e; - float var10003 = MatrixStack.a_float_______________(new Object[]{601921721859L}) / 5.0F; - Object[] var10006 = new Object[]{null, null, null, 127101728255981L}; - var10006[2] = var10003; - var10006[1] = var41; - var10006[0] = var63; - this.e = MathHelper4.b_float______(var10006); - Matrix4f var42 = new Matrix4f(); - float var43 = 64.0F; - float var44 = 20.0F; - float var45 = b.getWindow().getScaledWidth() / 2.0F - var43 / 2.0F; - float var46 = b.getWindow().getScaledHeight() / 2.0F + 30.0F; - var42.translate(var45 + var43 / 2.0F, var46 + var44 / 2.0F, 0.0F); - var42.scale(var31, var31, var31); - var42.translate(-var45 - var43 / 2.0F, -var46 - var44 / 2.0F, 0.0F); - RenderHelper8 var58 = var1.a; - MatrixCameraData var64 = var1.b; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 35553070502242L}; - var10011[8] = 5.0F; - var10011[7] = 5; - var10011[6] = var44; - var10011[5] = var43; - var10011[4] = var46; - var10011[3] = var45; - var10011[2] = var42; - var10011[1] = var64; - var10011[0] = var58; - RenderTarget.e(var10011); - RenderHelper8 var59 = var1.a; - MatrixCameraData var65 = var1.b; - Color var10007 = new Color(14, 14, 14, 150); - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 16042616216793L}; - var10011[8] = 5.0F; - var10011[7] = var10007; - var10011[6] = var44; - var10011[5] = var43; - var10011[4] = var46; - var10011[3] = var45; - var10011[2] = var42; - var10011[1] = var65; - var10011[0] = var59; - RoundedPosColorShader.c(var10011); - String var47 = this.e >= 20.0F ? "LETHAL" : "Damage: " + (int)this.e + "HP"; - float var48 = Prestige.c.a(new Object[]{1236438218049L}).a_float______________(new Object[]{var47, 47859522476307L}); - float var49 = 7.0F; - float var50 = MathHelper.clamp(this.e / 20.0F, 0.0F, 1.0F); - float var51 = var45 + var49; - float var52 = var46 + var44 - 4.0F - 3.0F; - float var53 = var43 - var49 * 2.0F; - float var54 = var53 * var50; - Color var55 = new Color(0, 0, 0, 90); - Color var56 = new Color((int)((1.0F - var50) * 255.0F), (int)(var50 * 255.0F), 0, 220); - RenderHelper8 var60 = var1.a; - MatrixCameraData var66 = var1.b; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 16042616216793L}; - var10011[8] = 2.0F; - var10011[7] = var55; - var10011[6] = 4.0F; - var10011[5] = var53; - var10011[4] = var52; - var10011[3] = var51; - var10011[2] = var42; - var10011[1] = var66; - var10011[0] = var60; - RoundedPosColorShader.c(var10011); - if (var54 > 0.0F) { - RenderHelper8 var61 = var1.a; - MatrixCameraData var67 = var1.b; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 16042616216793L}; - var10011[8] = 2.0F; - var10011[7] = var56; - var10011[6] = 4.0F; - var10011[5] = var54; - var10011[4] = var52; - var10011[3] = var51; - var10011[2] = var42; - var10011[1] = var67; - var10011[0] = var61; - RoundedPosColorShader.c(var10011); + public void onRender2D(Render2DEvent event) { + PlayerEntity target = (InventoryUtil.isHolding(Items.NETHERITE_SPEAR) && mc.player.isUsingItem()) ? TargetSelector.getClosestEnemy() : null; + this.visibilityAnimation.setState(target != null); + float animationProgress = this.visibilityAnimation.getProgress(); + if (!(animationProgress <= 0.01F)) { + Vec3d lookDirection = mc.player.getRotationVector(); + double ownApproachSpeed = lookDirection.dotProduct(KineticWeaponComponent.getAmplifiedMovement(mc.player)); + float estimatedDamage = (float)mc.player.getAttributeBaseValue(EntityAttributes.ATTACK_DAMAGE) + MathHelper.floor(Math.max(0.0, ownApproachSpeed - (target == null ? 0.0 : lookDirection.dotProduct(KineticWeaponComponent.getAmplifiedMovement(target)))) / 2.0); + this.displayedDamage = UiMath.approach(this.displayedDamage, estimatedDamage, Render2D.getTickDelta() / 5.0F); + Matrix4f matrix = new Matrix4f(); + float panelWidth = 64.0F; + float panelHeight = 20.0F; + float panelX = mc.getWindow().getScaledWidth() / 2.0F - panelWidth / 2.0F; + float panelY = mc.getWindow().getScaledHeight() / 2.0F + 30.0F; + matrix.translate(panelX + panelWidth / 2.0F, panelY + panelHeight / 2.0F, 0.0F); + matrix.scale(animationProgress, animationProgress, animationProgress); + matrix.translate(-panelX - panelWidth / 2.0F, -panelY - panelHeight / 2.0F, 0.0F); + BlurredRoundedRectShader.drawBlurredRect(event.renderer, event.context, matrix, panelX, panelY, panelWidth, panelHeight, 5, 5.0F); + RoundedRectShader.drawRoundedRect(event.renderer, event.context, matrix, panelX, panelY, panelWidth, panelHeight, new Color(14, 14, 14, 150), 5.0F); + String label = this.displayedDamage >= 20.0F ? "LETHAL" : "Damage: " + (int)this.displayedDamage + "HP"; + float labelWidth = Prestige.fontManager.getDefaultFont().getTextWidth(label); + float barPadding = 7.0F; + float damageFraction = MathHelper.clamp(this.displayedDamage / 20.0F, 0.0F, 1.0F); + float barX = panelX + barPadding; + float barY = panelY + panelHeight - 4.0F - 3.0F; + float barWidth = panelWidth - barPadding * 2.0F; + float fillWidth = barWidth * damageFraction; + Color barBackgroundColor = new Color(0, 0, 0, 90); + Color barFillColor = new Color((int)((1.0F - damageFraction) * 255.0F), (int)(damageFraction * 255.0F), 0, 220); + RoundedRectShader.drawRoundedRect(event.renderer, event.context, matrix, barX, barY, barWidth, 4.0F, barBackgroundColor, 2.0F); + if (fillWidth > 0.0F) { + RoundedRectShader.drawRoundedRect(event.renderer, event.context, matrix, barX, barY, fillWidth, 4.0F, barFillColor, 2.0F); } - float var57 = var45 + (var43 - var48) / 2.0F; - Font var62 = Prestige.c.a(new Object[]{1236438218049L}); - float var68 = var46 + 3.0F; - Object[] var10008 = new Object[]{null, null, null, null, MathHelper4.d(new Object[]{122780339483702L}), 36494305523424L}; - var10008[3] = var68; - var10008[2] = var57; - var10008[1] = var47; - var10008[0] = var42; - var62.v(var10008); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + float labelX = panelX + (panelWidth - labelWidth) / 2.0F; + Prestige.fontManager.getDefaultFont().drawText(matrix, label, labelX, panelY + 3.0F, UiMath.getAccentColor()); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/spear/SpearMaceDoubleTap.java b/src/main/java/dev/zprestige/prestige/module/spear/SpearMaceDoubleTap.java index e2c8aa4..bce6f57 100644 --- a/src/main/java/dev/zprestige/prestige/module/spear/SpearMaceDoubleTap.java +++ b/src/main/java/dev/zprestige/prestige/module/spear/SpearMaceDoubleTap.java @@ -4,14 +4,11 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.TickEvent19; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.ClientTickEvent; import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.render.RenderHelper27; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.render.StopWatch; import java.util.ArrayList; import java.util.Set; import net.minecraft.enchantment.EnchantmentHelper; @@ -25,185 +22,97 @@ public class SpearMaceDoubleTap extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private FloatSetting a; - private RenderHelper27 c = new RenderHelper27(26293358099357L); - private boolean i = false; - private static final long l = 5793104364755222536L; + private FloatSetting triggerFallDistance; + private StopWatch maceSwapTimer = new StopWatch(); + private boolean pendingMaceHit = false; + private static final long LAST_HOTBAR_SLOT = 5793104364755222536L; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Spear, Gamemode.Mace); } @Subscribe - public void a(TickEvent19 var1) { - if (this.i) { - RenderHelper27 var10000 = this.c; - Object[] var10004 = new Object[]{null, 2505922520844L}; - var10004[0] = 1000.0F; - if (!var10000.a(var10004)) { - if (!(b.crosshairTarget instanceof EntityHitResult)) { + public void onClientTick(ClientTickEvent event) { + if (this.pendingMaceHit) { + if (!this.maceSwapTimer.hasElapsed(1000.0F)) { + if (!(mc.crosshairTarget instanceof EntityHitResult)) { return; } - InventoryUtil2.a_void_________(new Object[]{((EntityHitResult)b.crosshairTarget).getEntity(), 31382773185830L}); + PlayerInteractions.attackEntity(((EntityHitResult)mc.crosshairTarget).getEntity()); } } - this.i = false; + this.pendingMaceHit = false; } @Subscribe - public void a(PacketEvent var1) { - if (var1.a(new Object[0]) instanceof EntityStatusS2CPacket) { - byte var11 = ((EntityStatusS2CPacket)var1.a(new Object[0])).getStatus(); - if (var11 == 2) { - int var12 = this.a(new Object[]{107124566716120L}); - if (var12 != -1 && b.player.fallDistance > ((Float)this.a.getValue()).floatValue()) { - b.player.stopUsingItem(); - Object[] var10003 = new Object[]{null, 37392877673079L}; - var10003[0] = var12; - InventoryUtil.a_void________(var10003); - this.c.a_void_____________________(new Object[]{93540861878173L}); - this.i = true; + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof EntityStatusS2CPacket) { + if (((EntityStatusS2CPacket)event.getPacket()).getStatus() == 2) { + int maceSlot = this.findBestMaceSlot(); + if (maceSlot != -1 && mc.player.fallDistance > this.triggerFallDistance.getValue().floatValue()) { + mc.player.stopUsingItem(); + InventoryUtil.selectSlot(maceSlot); + this.maceSwapTimer.reset(); + this.pendingMaceHit = true; } } } } - public int a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 19636870262656L ^ var2; - long var4 = var2 ^ 49152418905324L; - long var6 = var2 ^ 63965945501436L; - long var8 = var2 ^ 10757728757860L; - Event.b(); - ArrayList var11 = new ArrayList(); + public int findBestMaceSlot() { + ArrayList maceSlots = new ArrayList(); - for (int var12 = 0; var12 <= (int)l; var12++) { - if (InventoryUtil.o(new Object[]{b.player.getInventory().getStack(var12), var8})) { - var11.add(var12); + for (int slot = 0; slot <= (int)LAST_HOTBAR_SLOT; slot++) { + if (InventoryUtil.isMace(mc.player.getInventory().getStack(slot))) { + maceSlots.add(slot); } } - int var18 = -1; - int var13 = -1; + int bestLevel = -1; + int bestSlot = -1; - for (int var15 : (Iterable)(var11)) { - int var10000; - if (b.player.fallDistance <= 7.0) { - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var15; - var10000 = this.d(var10004); + for (int maceSlot : (Iterable)(maceSlots)) { + int enchantLevel; + if (mc.player.fallDistance <= 7.0) { + enchantLevel = this.getBreachLevel(maceSlot); } else { - Object[] var19 = new Object[]{null, var6}; - var19[0] = var15; - var10000 = this.c(var19); + enchantLevel = this.getDensityLevel(maceSlot); } - int var16 = var10000; - if (var16 > var18) { - var18 = var16; - var13 = var15; + int level = enchantLevel; + if (level > bestLevel) { + bestLevel = level; + bestSlot = maceSlot; } } - return var13; + return bestSlot; } - public int c(Object[] var1) { - int var4 = (Integer)var1[0]; - Event.b(); - ItemStack var6 = b.player.getInventory().getStack(var4); - if (var6 != null) { - float var7 = EnchantmentHelper.getLevel( - b.world.getRegistryManager().getOptional(Enchantments.DENSITY.getRegistryRef()).get().getEntry(Enchantments.DENSITY.getValue()).get(), var6 + public int getDensityLevel(int slot) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack != null) { + float level = EnchantmentHelper.getLevel( + mc.world.getRegistryManager().getOptional(Enchantments.DENSITY.getRegistryRef()).get().getEntry(Enchantments.DENSITY.getValue()).get(), stack ); - return (int)var7; + return (int)level; } else { return 0; } } - public int d(Object[] var1) { - int var4 = (Integer)var1[0]; - Event.b(); - ItemStack var6 = b.player.getInventory().getStack(var4); - if (var6 != null) { - float var7 = EnchantmentHelper.getLevel( - b.world.getRegistryManager().getOptional(Enchantments.BREACH.getRegistryRef()).get().getEntry(Enchantments.DENSITY.getValue()).get(), var6 + public int getBreachLevel(int slot) { + ItemStack stack = mc.player.getInventory().getStack(slot); + if (stack != null) { + float level = EnchantmentHelper.getLevel( + mc.world.getRegistryManager().getOptional(Enchantments.BREACH.getRegistryRef()).get().getEntry(Enchantments.DENSITY.getValue()).get(), stack ); - return (int)var7; + return (int)level; } else { return 0; } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/Ambience.java b/src/main/java/dev/zprestige/prestige/module/visual/Ambience.java index 6411104..8ba03a6 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/Ambience.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/Ambience.java @@ -6,134 +6,64 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.ColorEvent; -import dev.zprestige.prestige.event.FloatColorEvent; -import dev.zprestige.prestige.event.LongEvent; +import dev.zprestige.prestige.event.SkyColorEvent; +import dev.zprestige.prestige.event.FogEvent; +import dev.zprestige.prestige.event.TimeOfDayEvent; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Predicate; public class Ambience extends Module { - private BoolSetting d; - private FloatSetting a; - private FloatSetting b; - private ColorSetting c; - private BoolSetting e; - private BoolSetting f; - private ColorSetting g; - private BoolSetting h; - private IntSetting i; + private BoolSetting fog; + private FloatSetting start; + private FloatSetting end; + private ColorSetting color; + private BoolSetting coverHorizonBand; + private BoolSetting sky; + private ColorSetting skyColor; + private BoolSetting customTime; + private IntSetting time; public Ambience() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.g.setVisibility_ColorSetting(new Object[]{(Predicate)lpL81_0 -> (Boolean)this.f.getValue(), 119980880492450L}); - this.c.setVisibility_ColorSetting(new Object[]{(Predicate)lpL83_0 -> (Boolean)this.d.getValue(), 119980880492450L}); - this.i.setVisibility_IntSetting(new Object[]{(Predicate)lpL80_0 -> (Boolean)this.h.getValue(), 98265949679296L}); - this.e.setVisibility_BoolSetting(new Object[]{(Predicate)lpL82_0 -> (Boolean)this.d.getValue(), 73196168581295L}); - this.a.setVisibility_FloatSetting(new Object[]{(Predicate)lpL85_0 -> (Boolean)this.d.getValue(), 35046756052036L}); - this.b.setVisibility_FloatSetting(new Object[]{(Predicate)lpL84_0 -> (Boolean)this.d.getValue(), 35046756052036L}); + this.skyColor.visibleWhen((Predicate)ignored -> this.sky.getValue()); + this.color.visibleWhen((Predicate)ignored -> this.fog.getValue()); + this.time.visibleWhen((Predicate)ignored -> this.customTime.getValue()); + this.coverHorizonBand.visibleWhen((Predicate)ignored -> this.fog.getValue()); + this.start.visibleWhen((Predicate)ignored -> this.fog.getValue()); + this.end.visibleWhen((Predicate)ignored -> this.fog.getValue()); } @Subscribe - public void a(FloatColorEvent var1) { - if ((Boolean)this.d.getValue()) { - float var5 = Math.min((Float)this.a.getValue(), (Float)this.b.getValue()); - float var6 = Math.max((Float)this.a.getValue(), (Float)this.b.getValue()); - var1.c(new Object[]{var5}); - var1.d(new Object[]{var6}); - var1.b(new Object[]{(Color)this.c.getValue()}); - if ((Boolean)this.e.getValue()) { - var1.e(new Object[]{var6}); + public void onFog(FogEvent event) { + if (this.fog.getValue()) { + float fogStart = Math.min(this.start.getValue(), this.end.getValue()); + float fogEnd = Math.max(this.start.getValue(), this.end.getValue()); + event.setStart(fogStart); + event.setEnd(fogEnd); + event.setColor(this.color.getValue()); + if (this.coverHorizonBand.getValue()) { + event.setSkyEnd(fogEnd); } - var1.a_void_____(new Object[0]); + event.cancel(); } } @Subscribe - public void a(ColorEvent var1) { - if ((Boolean)this.f.getValue()) { - Color var5 = (Color)this.g.getValue(); - var1.b(new Object[]{var5}); - var1.c(new Object[]{var5}); - var1.a_void_____(new Object[0]); + public void onSkyColor(SkyColorEvent event) { + if (this.sky.getValue()) { + Color newSkyColor = this.skyColor.getValue(); + event.setSkyColor(newSkyColor); + event.setHorizonColor(newSkyColor); + event.cancel(); } } @Subscribe - public void a(LongEvent var1) { - if ((Boolean)this.h.getValue()) { - var1.b(new Object[]{(long)((Integer)this.i.getValue()).intValue()}); - var1.a_void_____(new Object[0]); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public void onTimeOfDay(TimeOfDayEvent event) { + if (this.customTime.getValue()) { + event.setTime((long)this.time.getValue().intValue()); + event.cancel(); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/Animations.java b/src/main/java/dev/zprestige/prestige/module/visual/Animations.java index 31fd691..5038afc 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/Animations.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/Animations.java @@ -4,14 +4,11 @@ import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent5; -import dev.zprestige.prestige.event.IntEvent3; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.inventory.InventoryHelper; +import dev.zprestige.prestige.event.SwingArmEvent; +import dev.zprestige.prestige.event.HandSwingDurationEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.inventory.HeldItemRendererAccessor; import dev.zprestige.prestige.inventory.InventoryUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Arm; import net.minecraft.util.math.MathHelper; @@ -22,171 +19,81 @@ public class Animations extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private IntSetting a; - private BoolSetting d; - private static final long l = 5714003492503289866L; + private IntSetting mode; + private BoolSetting slow; + private static final long SLOW_SWING_DURATION = 5714003492503289866L; @Subscribe - public void a(TickEvent27 var1) { - Event.b(); - InventoryHelper var17 = new InventoryHelper(b.getEntityRenderDispatcher().getHeldItemRenderer()); - if (var17.a_float________(new Object[]{30464984678200L}) <= 1.0F) { - Object[] var10004 = new Object[]{null, 82139320385297L}; - var10004[0] = 1.0F; - var17.a(var10004); - var17.c(new Object[]{b.player.getMainHandStack(), 74818249733785L}); + public void onRender3D(Render3DEvent event) { + HeldItemRendererAccessor heldItemRenderer = new HeldItemRendererAccessor(mc.getEntityRenderDispatcher().getHeldItemRenderer()); + if (heldItemRenderer.getMainHandEquipProgress() <= 1.0F) { + heldItemRenderer.setMainHandEquipProgress(1.0F); + heldItemRenderer.setMainHandStack(mc.player.getMainHandStack()); } - if (var17.b_float____(new Object[]{98176128633121L}) <= 1.0F) { - Object[] var18 = new Object[]{null, 7053432785255L}; - var18[0] = 1.0F; - var17.b(var18); - var17.d(new Object[]{b.player.getOffHandStack(), 57109304734105L}); + if (heldItemRenderer.getOffHandEquipProgress() <= 1.0F) { + heldItemRenderer.setOffHandEquipProgress(1.0F); + heldItemRenderer.setOffHandStack(mc.player.getOffHandStack()); } } @Subscribe - public void a(IntEvent3 var1) { - if ((Boolean)this.d.getValue()) { - var1.a = (int)l; - var1.a_void_____(new Object[0]); + public void onHandSwingDuration(HandSwingDurationEvent event) { + if (this.slow.getValue()) { + event.duration = (int)SLOW_SWING_DURATION; + event.cancel(); } } @Subscribe - public void a(FloatEvent5 var1) { - Event.b(); - MatrixStack var9 = var1.a(new Object[0]); - Arm var10 = var1.a_class_1306(new Object[0]); - float var11 = var1.a_float_____(new Object[0]); - int var12 = var10 == Arm.RIGHT ? 1 : -1; - switch (this.a.getValue()) { + public void onSwingArm(SwingArmEvent event) { + MatrixStack matrices = event.getMatrices(); + Arm arm = event.getArm(); + float swingProgress = event.getSwingProgress(); + int side = arm == Arm.RIGHT ? 1 : -1; + switch (this.mode.getValue()) { case 1: - Object[] var20 = new Object[]{null, null, null, 64557177915653L}; - var20[2] = 0.0F; - var20[1] = var10; - var20[0] = var9; - this.j(var20); - float var17 = MathHelper.sin(var11 * var11 * (float) Math.PI); - var9.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(var12 * (45.0F + var17 * -20.0F))); - float var18 = MathHelper.sin(MathHelper.sqrt(var11) * (float) Math.PI); - var9.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(var12 * var18 * -10.0F)); - var9.multiply(RotationAxis.POSITIVE_X.rotationDegrees(var18 * -80.0F)); - var9.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(var12 * -45.0F)); + this.applyEquipOffset(matrices, arm, 0.0F); + float swingSin = MathHelper.sin(swingProgress * swingProgress * (float) Math.PI); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(side * (45.0F + swingSin * -20.0F))); + float swingRootSin = MathHelper.sin(MathHelper.sqrt(swingProgress) * (float) Math.PI); + matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(side * swingRootSin * -10.0F)); + matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(swingRootSin * -80.0F)); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(side * -45.0F)); break; case 2: - Object[] var19 = new Object[]{null, null, null, 64557177915653L}; - var19[2] = 0.0F; - var19[1] = var10; - var19[0] = var9; - this.j(var19); - var9.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(var12 * 45.0F)); - float var16 = MathHelper.sin(MathHelper.sqrt(var11) * (float) Math.PI); - var9.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(var12 * var16 * -10.0F)); - var9.multiply(RotationAxis.POSITIVE_X.rotationDegrees(var16 * -40.0F)); - var9.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(var12 * -45.0F)); + this.applyEquipOffset(matrices, arm, 0.0F); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(side * 45.0F)); + float mildSwingRootSin = MathHelper.sin(MathHelper.sqrt(swingProgress) * (float) Math.PI); + matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(side * mildSwingRootSin * -10.0F)); + matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(mildSwingRootSin * -40.0F)); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(side * -45.0F)); break; case 3: - Object[] var10006 = new Object[]{null, null, null, 64557177915653L}; - var10006[2] = 0.0F; - var10006[1] = var10; - var10006[0] = var9; - this.j(var10006); - if (var10 == Arm.RIGHT && InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L})) { - var9.translate(0.0F, 0.1F, -0.2F); - var9.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(var12 * 65.0F)); - var9.multiply(RotationAxis.POSITIVE_X.rotationDegrees(var12 * -100.0F)); - var9.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(var12 * 20.0F)); - var9.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(var12 * -220.0F)); - float var15 = MathHelper.sin(MathHelper.sqrt(var11) * (float) Math.PI); - var9.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(var12 * var15 * -40.0F)); - var9.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(var12 * -45.0F)); + this.applyEquipOffset(matrices, arm, 0.0F); + if (arm == Arm.RIGHT && InventoryUtil.isSword(mc.player.getMainHandStack())) { + matrices.translate(0.0F, 0.1F, -0.2F); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(side * 65.0F)); + matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(side * -100.0F)); + matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(side * 20.0F)); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(side * -220.0F)); + float blockSwingRootSin = MathHelper.sin(MathHelper.sqrt(swingProgress) * (float) Math.PI); + matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(side * blockSwingRootSin * -40.0F)); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(side * -45.0F)); } else { - float var13 = MathHelper.sin(var11 * var11 * (float) Math.PI); - var9.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(var12 * (45.0F + var13 * -20.0F))); - float var14 = MathHelper.sin(MathHelper.sqrt(var11) * (float) Math.PI); - var9.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(var12 * var14 * -20.0F)); - var9.multiply(RotationAxis.POSITIVE_X.rotationDegrees(var14 * -80.0F)); - var9.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(var12 * -45.0F)); + float fallbackSwingSin = MathHelper.sin(swingProgress * swingProgress * (float) Math.PI); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(side * (45.0F + fallbackSwingSin * -20.0F))); + float fallbackSwingRootSin = MathHelper.sin(MathHelper.sqrt(swingProgress) * (float) Math.PI); + matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(side * fallbackSwingRootSin * -20.0F)); + matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(fallbackSwingRootSin * -80.0F)); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(side * -45.0F)); } } - var1.a_void_____(new Object[0]); + event.cancel(); } - private void j(Object[] var1) { - MatrixStack var2 = (MatrixStack)var1[0]; - Arm var3 = (Arm)var1[1]; - float var4 = (Float)var1[2]; - int var7 = var3 == Arm.RIGHT ? 1 : -1; - var2.translate(var7 * 0.56F, -0.52F + var4 * -0.6F, -0.72F); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private void applyEquipOffset(MatrixStack matrices, Arm arm, float equipProgress) { + matrices.translate((arm == Arm.RIGHT ? 1 : -1) * 0.56F, -0.52F + equipProgress * -0.6F, -0.72F); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/AntiResourcePack.java b/src/main/java/dev/zprestige/prestige/module/visual/AntiResourcePack.java index 1ffc93e..e1d74e4 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/AntiResourcePack.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/AntiResourcePack.java @@ -2,10 +2,8 @@ package dev.zprestige.prestige.module.visual; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.network.NetworkUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.network.PacketSender; import net.minecraft.network.packet.c2s.common.ResourcePackStatusC2SPacket; import net.minecraft.network.packet.c2s.common.ResourcePackStatusC2SPacket.Status; import net.minecraft.network.packet.s2c.common.ResourcePackSendS2CPacket; @@ -16,79 +14,11 @@ public class AntiResourcePack extends Module { } @Subscribe - public void a(PacketEvent var1) { - if (var1.a(new Object[0]) instanceof ResourcePackSendS2CPacket) { - var1.a_void_____(new Object[0]); - NetworkUtil.a(new Object[]{new ResourcePackStatusC2SPacket(b.player.getUuid(), Status.ACCEPTED), 53690043409678L}); - NetworkUtil.a(new Object[]{new ResourcePackStatusC2SPacket(b.player.getUuid(), Status.SUCCESSFULLY_LOADED), 53690043409678L}); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof ResourcePackSendS2CPacket) { + event.cancel(); + PacketSender.sendPacket(new ResourcePackStatusC2SPacket(mc.player.getUuid(), Status.ACCEPTED)); + PacketSender.sendPacket(new ResourcePackStatusC2SPacket(mc.player.getUuid(), Status.SUCCESSFULLY_LOADED)); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/ESP.java b/src/main/java/dev/zprestige/prestige/module/visual/ESP.java index c14b53c..61855f4 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/ESP.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/ESP.java @@ -8,16 +8,13 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.render.ESPHelper; -import dev.zprestige.prestige.render.ESPUtil; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.render.EntityTypeSet; +import dev.zprestige.prestige.render.EspShaderManager; import dev.zprestige.prestige.render.PostShader; -import dev.zprestige.prestige.render.RenderContract5; -import dev.zprestige.prestige.render.RenderContract6; +import dev.zprestige.prestige.render.RenderEvents; +import dev.zprestige.prestige.render.RenderCallback; import dev.zprestige.prestige.type.ShaderMode; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Arrays; import java.util.function.Consumer; import net.minecraft.entity.EntityType; @@ -26,309 +23,222 @@ public class ESP extends Module { public ESP() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - - private static final String a = "Normal"; - private static final String b = "Chams"; - private static final String c = "Aura"; - private EnumSetting d; - private MultiSetting e; - private BoolSetting f; - private ColorSetting g; - private IntSetting h; - private IntSetting i; - private BoolSetting j; - private FloatSetting k; - private FloatSetting l; - private FloatSetting m; - private FloatSetting n; - private FloatSetting o; - private BoolSetting p; - private boolean[] q; - private String r; - private boolean s = false; - private Consumer t; - public static final ThreadLocal u = new ThreadLocal(); + private EnumSetting mode; + private MultiSetting targets; + private BoolSetting menuColor; + private ColorSetting color; + private IntSetting quality; + private IntSetting radius; + private BoolSetting fill; + private FloatSetting opacity; + private FloatSetting rimWidth; + private FloatSetting lineWidth; + private FloatSetting haloOpacity; + private FloatSetting coreBoost; + private BoolSetting invisible; + private boolean[] lastSelectedTargets; + private String lastMode; + private boolean callbackRegistered = false; + private Consumer uniformOverride; + public static final ThreadLocal CURRENT_RENDER_LAYER = new ThreadLocal(); @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - boolean[] var11 = this.e.getSelected(); - if (this.q == null || !Arrays.equals(var11, this.q)) { - this.k(new Object[]{108749526380606L}); - this.q = Arrays.copyOf(var11, var11.length); + public void onClientTick(ClientTickEvent event) { + boolean[] selected = this.targets.getSelected(); + if (this.lastSelectedTargets == null || !Arrays.equals(selected, this.lastSelectedTargets)) { + this.updateTargetTypes(); + this.lastSelectedTargets = Arrays.copyOf(selected, selected.length); } - String var12 = (String)this.d.getValue(); - if (!var12.equals(this.r)) { - ESPUtil.a(new Object[]{a(new Object[]{var12, 66274787328340L}), 41226367802457L}); - this.r = var12; + String currentMode = this.mode.getValue(); + if (!currentMode.equals(this.lastMode)) { + EspShaderManager.setShaderMode(toShaderMode(currentMode)); + this.lastMode = currentMode; } - ESPUtil.f = (Boolean)this.p.getValue(); + EspShaderManager.renderInvisible = this.invisible.getValue(); } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 70806628412498L; - long var6 = var2 ^ 98260224389471L; - Event.b(); - ESPUtil.a(new Object[]{a(new Object[]{(String)this.d.getValue(), var4}), var6}); - this.r = (String)this.d.getValue(); - if (!this.s) { - RenderContract5.c.register((RenderContract6)(lpL188_0, lpL188_1) -> { + public void onEnable() { + EspShaderManager.setShaderMode(toShaderMode(this.mode.getValue())); + this.lastMode = this.mode.getValue(); + if (!this.callbackRegistered) { + RenderEvents.AFTER_HUD_RENDER.register((RenderCallback)(buffers, context) -> { if (this.isEnabled()) { - PostShader var6x = ESPUtil.a_PostShader(new Object[0]); - if (var6x != null) { - var6x.d(new Object[]{this.t}); + PostShader activeShader = EspShaderManager.getActiveShader(); + if (activeShader != null) { + activeShader.setUniformOverride(this.uniformOverride); } } }); - this.s = true; + this.callbackRegistered = true; } - ESPUtil.e = true; - ESPUtil.f = (Boolean)this.p.getValue(); + EspShaderManager.enabled = true; + EspShaderManager.renderInvisible = this.invisible.getValue(); } @Override - public void onDisable(Object[] var1) { - Event.b(); - ESPUtil.e = false; - ESPUtil.f = false; - PostShader var5 = ESPUtil.a_PostShader(new Object[0]); - if (var5 != null) { - var5.d(new Object[]{null}); + public void onDisable() { + EspShaderManager.enabled = false; + EspShaderManager.renderInvisible = false; + PostShader shader = EspShaderManager.getActiveShader(); + if (shader != null) { + shader.setUniformOverride(null); } } - private static ShaderMode a(Object[] var0) { - String var1 = (String)var0[0]; - Event.b(); - - return switch (var1) { + private static ShaderMode toShaderMode(String modeName) { + return switch (modeName) { case "Chams" -> ShaderMode.CHAMS; case "Aura" -> ShaderMode.AURA; default -> ShaderMode.NORMAL; }; } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 124228018486362L ^ var2; - long var4 = var2 ^ 2913177793225L; - long var6 = var2 ^ 118793070602394L; - long var8 = var2 ^ 63295913231502L; - Event.b(); - ESPHelper var11 = new ESPHelper(new EntityType[0], var4); - if (this.e.isSelected(new Object[]{"Players", var8})) { - var11.a(new Object[]{EntityType.PLAYER, var6}); + private void updateTargetTypes() { + EntityTypeSet types = new EntityTypeSet(new EntityType[0]); + if (this.targets.isSelected("Players")) { + types.add(EntityType.PLAYER); } - if (this.e.isSelected(new Object[]{"Crystals", var8})) { - var11.a(new Object[]{EntityType.END_CRYSTAL, var6}); + if (this.targets.isSelected("Crystals")) { + types.add(EntityType.END_CRYSTAL); } - if (this.e.isSelected(new Object[]{"Items", var8})) { - var11.a(new Object[]{EntityType.ITEM, var6}); + if (this.targets.isSelected("Items")) { + types.add(EntityType.ITEM); } - if (this.e.isSelected(new Object[]{"Monsters", var8})) { - var11.a(new Object[]{EntityType.ZOMBIE, var6}); - var11.a(new Object[]{EntityType.SKELETON, var6}); - var11.a(new Object[]{EntityType.CREEPER, var6}); - var11.a(new Object[]{EntityType.SPIDER, var6}); - var11.a(new Object[]{EntityType.CAVE_SPIDER, var6}); - var11.a(new Object[]{EntityType.ZOMBIE_VILLAGER, var6}); - var11.a(new Object[]{EntityType.HUSK, var6}); - var11.a(new Object[]{EntityType.DROWNED, var6}); - var11.a(new Object[]{EntityType.STRAY, var6}); - var11.a(new Object[]{EntityType.WITCH, var6}); - var11.a(new Object[]{EntityType.SLIME, var6}); - var11.a(new Object[]{EntityType.SILVERFISH, var6}); - var11.a(new Object[]{EntityType.PHANTOM, var6}); - var11.a(new Object[]{EntityType.VEX, var6}); - var11.a(new Object[]{EntityType.VINDICATOR, var6}); - var11.a(new Object[]{EntityType.EVOKER, var6}); - var11.a(new Object[]{EntityType.PILLAGER, var6}); - var11.a(new Object[]{EntityType.RAVAGER, var6}); + if (this.targets.isSelected("Monsters")) { + types.add(EntityType.ZOMBIE); + types.add(EntityType.SKELETON); + types.add(EntityType.CREEPER); + types.add(EntityType.SPIDER); + types.add(EntityType.CAVE_SPIDER); + types.add(EntityType.ZOMBIE_VILLAGER); + types.add(EntityType.HUSK); + types.add(EntityType.DROWNED); + types.add(EntityType.STRAY); + types.add(EntityType.WITCH); + types.add(EntityType.SLIME); + types.add(EntityType.SILVERFISH); + types.add(EntityType.PHANTOM); + types.add(EntityType.VEX); + types.add(EntityType.VINDICATOR); + types.add(EntityType.EVOKER); + types.add(EntityType.PILLAGER); + types.add(EntityType.RAVAGER); } - if (this.e.isSelected(new Object[]{"Ambient", var8})) { - var11.a(new Object[]{EntityType.BAT, var6}); + if (this.targets.isSelected("Ambient")) { + types.add(EntityType.BAT); } - if (this.e.isSelected(new Object[]{"Friendly", var8})) { - var11.a(new Object[]{EntityType.COW, var6}); - var11.a(new Object[]{EntityType.SHEEP, var6}); - var11.a(new Object[]{EntityType.PIG, var6}); - var11.a(new Object[]{EntityType.CHICKEN, var6}); - var11.a(new Object[]{EntityType.RABBIT, var6}); - var11.a(new Object[]{EntityType.OCELOT, var6}); - var11.a(new Object[]{EntityType.VILLAGER, var6}); - var11.a(new Object[]{EntityType.IRON_GOLEM, var6}); - var11.a(new Object[]{EntityType.SNOW_GOLEM, var6}); - var11.a(new Object[]{EntityType.MOOSHROOM, var6}); - var11.a(new Object[]{EntityType.GOAT, var6}); - var11.a(new Object[]{EntityType.PANDA, var6}); - var11.a(new Object[]{EntityType.ALLAY, var6}); - var11.a(new Object[]{EntityType.SNIFFER, var6}); - var11.a(new Object[]{EntityType.ARMADILLO, var6}); + if (this.targets.isSelected("Friendly")) { + types.add(EntityType.COW); + types.add(EntityType.SHEEP); + types.add(EntityType.PIG); + types.add(EntityType.CHICKEN); + types.add(EntityType.RABBIT); + types.add(EntityType.OCELOT); + types.add(EntityType.VILLAGER); + types.add(EntityType.IRON_GOLEM); + types.add(EntityType.SNOW_GOLEM); + types.add(EntityType.MOOSHROOM); + types.add(EntityType.GOAT); + types.add(EntityType.PANDA); + types.add(EntityType.ALLAY); + types.add(EntityType.SNIFFER); + types.add(EntityType.ARMADILLO); } - if (this.e.isSelected(new Object[]{"Aquatic", var8})) { - var11.a(new Object[]{EntityType.GUARDIAN, var6}); - var11.a(new Object[]{EntityType.ELDER_GUARDIAN, var6}); - var11.a(new Object[]{EntityType.DOLPHIN, var6}); - var11.a(new Object[]{EntityType.COD, var6}); - var11.a(new Object[]{EntityType.SALMON, var6}); - var11.a(new Object[]{EntityType.PUFFERFISH, var6}); - var11.a(new Object[]{EntityType.TROPICAL_FISH, var6}); - var11.a(new Object[]{EntityType.SQUID, var6}); - var11.a(new Object[]{EntityType.GLOW_SQUID, var6}); - var11.a(new Object[]{EntityType.AXOLOTL, var6}); - var11.a(new Object[]{EntityType.TURTLE, var6}); - var11.a(new Object[]{EntityType.TADPOLE, var6}); + if (this.targets.isSelected("Aquatic")) { + types.add(EntityType.GUARDIAN); + types.add(EntityType.ELDER_GUARDIAN); + types.add(EntityType.DOLPHIN); + types.add(EntityType.COD); + types.add(EntityType.SALMON); + types.add(EntityType.PUFFERFISH); + types.add(EntityType.TROPICAL_FISH); + types.add(EntityType.SQUID); + types.add(EntityType.GLOW_SQUID); + types.add(EntityType.AXOLOTL); + types.add(EntityType.TURTLE); + types.add(EntityType.TADPOLE); } - if (this.e.isSelected(new Object[]{"Nether", var8})) { - var11.a(new Object[]{EntityType.BLAZE, var6}); - var11.a(new Object[]{EntityType.GHAST, var6}); - var11.a(new Object[]{EntityType.MAGMA_CUBE, var6}); - var11.a(new Object[]{EntityType.PIGLIN, var6}); - var11.a(new Object[]{EntityType.PIGLIN_BRUTE, var6}); - var11.a(new Object[]{EntityType.HOGLIN, var6}); - var11.a(new Object[]{EntityType.ZOGLIN, var6}); - var11.a(new Object[]{EntityType.STRIDER, var6}); - var11.a(new Object[]{EntityType.WITHER_SKELETON, var6}); + if (this.targets.isSelected("Nether")) { + types.add(EntityType.BLAZE); + types.add(EntityType.GHAST); + types.add(EntityType.MAGMA_CUBE); + types.add(EntityType.PIGLIN); + types.add(EntityType.PIGLIN_BRUTE); + types.add(EntityType.HOGLIN); + types.add(EntityType.ZOGLIN); + types.add(EntityType.STRIDER); + types.add(EntityType.WITHER_SKELETON); } - if (this.e.isSelected(new Object[]{"End", var8})) { - var11.a(new Object[]{EntityType.ENDERMAN, var6}); - var11.a(new Object[]{EntityType.ENDERMITE, var6}); - var11.a(new Object[]{EntityType.SHULKER, var6}); + if (this.targets.isSelected("End")) { + types.add(EntityType.ENDERMAN); + types.add(EntityType.ENDERMITE); + types.add(EntityType.SHULKER); } - if (this.e.isSelected(new Object[]{"Bosses", var8})) { - var11.a(new Object[]{EntityType.WITHER, var6}); - var11.a(new Object[]{EntityType.ENDER_DRAGON, var6}); - var11.a(new Object[]{EntityType.WARDEN, var6}); + if (this.targets.isSelected("Bosses")) { + types.add(EntityType.WITHER); + types.add(EntityType.ENDER_DRAGON); + types.add(EntityType.WARDEN); } - if (this.e.isSelected(new Object[]{"Tameable", var8})) { - var11.a(new Object[]{EntityType.WOLF, var6}); - var11.a(new Object[]{EntityType.CAT, var6}); - var11.a(new Object[]{EntityType.PARROT, var6}); - var11.a(new Object[]{EntityType.HORSE, var6}); - var11.a(new Object[]{EntityType.DONKEY, var6}); - var11.a(new Object[]{EntityType.MULE, var6}); - var11.a(new Object[]{EntityType.LLAMA, var6}); - var11.a(new Object[]{EntityType.FOX, var6}); - var11.a(new Object[]{EntityType.BEE, var6}); - var11.a(new Object[]{EntityType.POLAR_BEAR, var6}); - var11.a(new Object[]{EntityType.FROG, var6}); - var11.a(new Object[]{EntityType.CAMEL, var6}); + if (this.targets.isSelected("Tameable")) { + types.add(EntityType.WOLF); + types.add(EntityType.CAT); + types.add(EntityType.PARROT); + types.add(EntityType.HORSE); + types.add(EntityType.DONKEY); + types.add(EntityType.MULE); + types.add(EntityType.LLAMA); + types.add(EntityType.FOX); + types.add(EntityType.BEE); + types.add(EntityType.POLAR_BEAR); + types.add(EntityType.FROG); + types.add(EntityType.CAMEL); } - if (this.e.isSelected(new Object[]{"Projectiles", var8})) { - var11.a(new Object[]{EntityType.ARROW, var6}); - var11.a(new Object[]{EntityType.SPECTRAL_ARROW, var6}); - var11.a(new Object[]{EntityType.TRIDENT, var6}); - var11.a(new Object[]{EntityType.FIREBALL, var6}); - var11.a(new Object[]{EntityType.SMALL_FIREBALL, var6}); - var11.a(new Object[]{EntityType.DRAGON_FIREBALL, var6}); - var11.a(new Object[]{EntityType.WITHER_SKULL, var6}); - var11.a(new Object[]{EntityType.SNOWBALL, var6}); - var11.a(new Object[]{EntityType.EGG, var6}); - var11.a(new Object[]{EntityType.ENDER_PEARL, var6}); - var11.a(new Object[]{EntityType.EXPERIENCE_BOTTLE, var6}); + if (this.targets.isSelected("Projectiles")) { + types.add(EntityType.ARROW); + types.add(EntityType.SPECTRAL_ARROW); + types.add(EntityType.TRIDENT); + types.add(EntityType.FIREBALL); + types.add(EntityType.SMALL_FIREBALL); + types.add(EntityType.DRAGON_FIREBALL); + types.add(EntityType.WITHER_SKULL); + types.add(EntityType.SNOWBALL); + types.add(EntityType.EGG); + types.add(EntityType.ENDER_PEARL); + types.add(EntityType.EXPERIENCE_BOTTLE); } - if (this.e.isSelected(new Object[]{"Vehicles", var8})) { - var11.a(new Object[]{EntityType.MINECART, var6}); - var11.a(new Object[]{EntityType.CHEST_MINECART, var6}); - var11.a(new Object[]{EntityType.FURNACE_MINECART, var6}); - var11.a(new Object[]{EntityType.TNT_MINECART, var6}); - var11.a(new Object[]{EntityType.HOPPER_MINECART, var6}); - var11.a(new Object[]{EntityType.SPAWNER_MINECART, var6}); + if (this.targets.isSelected("Vehicles")) { + types.add(EntityType.MINECART); + types.add(EntityType.CHEST_MINECART); + types.add(EntityType.FURNACE_MINECART); + types.add(EntityType.TNT_MINECART); + types.add(EntityType.HOPPER_MINECART); + types.add(EntityType.SPAWNER_MINECART); } - if (this.e.isSelected(new Object[]{"Decorations", var8})) { - var11.a(new Object[]{EntityType.ITEM_FRAME, var6}); - var11.a(new Object[]{EntityType.GLOW_ITEM_FRAME, var6}); - var11.a(new Object[]{EntityType.ARMOR_STAND, var6}); - var11.a(new Object[]{EntityType.PAINTING, var6}); + if (this.targets.isSelected("Decorations")) { + types.add(EntityType.ITEM_FRAME); + types.add(EntityType.GLOW_ITEM_FRAME); + types.add(EntityType.ARMOR_STAND); + types.add(EntityType.PAINTING); } - ESPUtil.c.clear(); - ESPUtil.d = var11; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + EspShaderManager.modelMatchCache.clear(); + EspShaderManager.targetTypes = types; } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/FreeLook.java b/src/main/java/dev/zprestige/prestige/module/visual/FreeLook.java index becd705..a6f61e0 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/FreeLook.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/FreeLook.java @@ -3,10 +3,8 @@ package dev.zprestige.prestige.module.visual; import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.DoubleEvent2; -import dev.zprestige.prestige.event.FloatEvent; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.MouseUpdateEvent; +import dev.zprestige.prestige.event.CameraRotationEvent; import net.minecraft.client.option.Perspective; public class FreeLook extends Module { @@ -14,110 +12,42 @@ public class FreeLook extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private float a = 0.0F; - private float c = 0.0F; - private Perspective e = null; + private BoolSetting thirdPerson; + private float cameraYaw = 0.0F; + private float cameraPitch = 0.0F; + private Perspective previousPerspective = null; @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } @Subscribe - public void a(DoubleEvent2 var1) { - this.a = (float)(this.a + var1.a(new Object[0]) * 0.1F); - this.c = (float)(this.c + var1.b(new Object[0]) * 0.1F); - var1.a_void_____(new Object[0]); + public void onMouseUpdate(MouseUpdateEvent event) { + this.cameraYaw = (float)(this.cameraYaw + event.getDeltaX() * 0.1F); + this.cameraPitch = (float)(this.cameraPitch + event.getDeltaY() * 0.1F); + event.cancel(); } @Subscribe - public void a(FloatEvent var1) { - var1.b(new Object[]{this.a}); - var1.c(new Object[]{this.c}); - var1.a_void_____(new Object[0]); + public void onCameraRotation(CameraRotationEvent event) { + event.setYaw(this.cameraYaw); + event.setPitch(this.cameraPitch); + event.cancel(); } @Override - public void onEnable(Object[] var1) { - this.a = b.player.getYaw(); - this.c = b.player.getPitch(); - this.e = b.options.getPerspective(); - if ((Boolean)this.d.getValue()) { - b.options.setPerspective(Perspective.THIRD_PERSON_BACK); + public void onEnable() { + this.cameraYaw = mc.player.getYaw(); + this.cameraPitch = mc.player.getPitch(); + this.previousPerspective = mc.options.getPerspective(); + if (this.thirdPerson.getValue()) { + mc.options.setPerspective(Perspective.THIRD_PERSON_BACK); } } @Override - public void onDisable(Object[] var1) { - b.options.setPerspective(this.e); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onDisable() { + mc.options.setPerspective(this.previousPerspective); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/HealthIndicators.java b/src/main/java/dev/zprestige/prestige/module/visual/HealthIndicators.java index 1d8bef1..6e55876 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/HealthIndicators.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/HealthIndicators.java @@ -2,9 +2,7 @@ package dev.zprestige.prestige.module.visual; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.PlayerStringEvent; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.HealthIndicatorEvent; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.Formatting; @@ -14,101 +12,25 @@ public class HealthIndicators extends Module { } @Subscribe - public void a(PlayerStringEvent var1) { - float var8 = (float)Math.ceil(this.b_float_____________(new Object[]{var1.a(new Object[0]), 128129148455246L})); - Object[] var10004 = new Object[]{null, 79027181785611L}; - var10004[0] = var8; - String var10000 = String.valueOf(this.a(var10004)); - String var10 = String.valueOf(Formatting.RESET); - String var12 = var10000; - String var9 = " | " + var12 + var8 + var10 + " | "; - var1.b(new Object[]{var9}); - var1.a_void_____(new Object[0]); + public void onHealthIndicator(HealthIndicatorEvent event) { + float health = (float)Math.ceil(this.getTotalHealth(event.getPlayer())); + event.setSuffix(" | " + String.valueOf(this.getHealthColor(health)) + health + String.valueOf(Formatting.RESET) + " | "); + event.cancel(); } - private Formatting a(Object[] var1) { - float var2 = (Float)var1[0]; - if (var2 <= 5.0F) { + private Formatting getHealthColor(float health) { + if (health <= 5.0F) { return Formatting.RED; - } else if (var2 <= 10.0F) { + } else if (health <= 10.0F) { return Formatting.GOLD; - } else if (var2 <= 15.0F) { + } else if (health <= 15.0F) { return Formatting.YELLOW; } else { - return var2 <= 20.0F ? Formatting.GREEN : Formatting.DARK_GREEN; + return health <= 20.0F ? Formatting.GREEN : Formatting.DARK_GREEN; } } - private float b_float_____________(Object[] var1) { - PlayerEntity var4 = (PlayerEntity)var1[0]; - return var4.getHealth() + var4.getAbsorptionAmount(); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private float getTotalHealth(PlayerEntity player) { + return player.getHealth() + player.getAbsorptionAmount(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/HitEffect.java b/src/main/java/dev/zprestige/prestige/module/visual/HitEffect.java index c43b673..4c23a8c 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/HitEffect.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/HitEffect.java @@ -5,26 +5,21 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.math.HitEffectHelper; -import dev.zprestige.prestige.math.MathHelper4; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.math.HitParticle; +import dev.zprestige.prestige.math.UiMath; import dev.zprestige.prestige.module.misc.CrystalOptimizer; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderUtil; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RenderCore; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import dev.zprestige.prestige.type.AnimationMode; import dev.zprestige.prestige.world.PositionUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; @@ -40,45 +35,39 @@ public class HitEffect extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private IntSetting a; - private IntSetting c; - private BoolSetting d; - private BoolSetting e; - private static FontRenderer f; - private static FontRenderer g; - private ArrayList i = new ArrayList(); - private RenderHelper27 j = new RenderHelper27(26293358099357L); + private IntSetting amount; + private IntSetting lifespan; + private BoolSetting physics; + private BoolSetting totemPop; + private static GlTextureHandle glowTexture; + private static GlTextureHandle popTexture; + private ArrayList particles = new ArrayList(); + private StopWatch frameTimer = new StopWatch(); @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 22594282158762L; - Event.b(); - - for (Module var8 : (Iterable)(Prestige.moduleManager.getModules())) { - if (var8.getClass().equals(CrystalOptimizer.class) && var8.isEnabled()) { - var8.toggle(new Object[]{var4}); - var8.toggle(new Object[]{var4}); + public void onEnable() { + for (Module module : (Iterable)(Prestige.moduleManager.getModules())) { + if (module.getClass().equals(CrystalOptimizer.class) && module.isEnabled()) { + module.toggle(); + module.toggle(); } } } @Subscribe - public void a(EntityEvent var1) { - Event.b(); - Entity var9 = var1.a(new Object[0]); + public void onAttackEntity(AttackEntityEvent event) { + Entity target = event.getTarget(); - for (int var10 = 0; var10 < this.a.getValue(); var10++) { - if (this.i.size() <= (Integer)this.c.getValue() * 20) { - this.i + for (int particleIndex = 0; particleIndex < this.amount.getValue(); particleIndex++) { + if (this.particles.size() <= this.lifespan.getValue() * 20) { + this.particles .add( - new HitEffectHelper( - PositionUtil.a(new Object[]{var9, 67736483458412L}), + new HitParticle( + PositionUtil.getEntityPos(target), new Vec3d( - var9.getX() + (Math.random() - 0.5) * 0.5, var9.getY() + Math.random() * 1.0 + 0.5, var9.getZ() + (Math.random() - 0.5) * 0.5 + target.getX() + (Math.random() - 0.5) * 0.5, target.getY() + Math.random() * 1.0 + 0.5, target.getZ() + (Math.random() - 0.5) * 0.5 ), - AnimationMode.LEGACY, - 71682537649551L + AnimationMode.LEGACY ) ); } @@ -86,208 +75,122 @@ public class HitEffect extends Module { } @Subscribe - public void a(TickEvent27 var1) { - if (this.i.isEmpty()) { - this.j.a_void_____________________(new Object[]{93540861878173L}); + public void onRender3D(Render3DEvent event) { + if (this.particles.isEmpty()) { + this.frameTimer.reset(); } else { - boolean var15 = (Boolean)this.d.getValue(); - short var10000 = 30169; - long var16 = (long)Math.min(this.j.a_float__________________(new Object[]{45633363943154L}), 20.0F); + boolean physicsEnabled = this.physics.getValue(); + long steps = (long)Math.min(this.frameTimer.getElapsed(), 20.0F); - for (long var18 = 0L; var18 <= var16; var18++) { - for (HitEffectHelper var21 : (Iterable)(this.i)) { - Object[] var10004 = new Object[]{null, 48619495990225L}; - var10004[0] = var15; - var21.a_void__________(var10004); + for (long step = 0L; step <= steps; step++) { + for (HitParticle particle : (Iterable)(this.particles)) { + particle.update(physicsEnabled); } } - this.i.removeIf(lpL209_0 -> { - if (!(Math.sqrt(b.player.squaredDistanceTo(((dev.zprestige.prestige.math.HitEffectHelper)lpL209_0).b(new Object[0]))) > 20.0)) { - RenderHelper27 var10000x = ((dev.zprestige.prestige.math.HitEffectHelper)lpL209_0).a_RenderHelper27(new Object[0]); - float var10001 = (Integer)this.c.getValue() * 1000; - Object[] var10004x = new Object[]{null, 2505922520844L}; - var10004x[0] = var10001; - if (!var10000x.a(var10004x)) { + this.particles.removeIf(candidate -> { + if (!(Math.sqrt(mc.player.squaredDistanceTo(((dev.zprestige.prestige.math.HitParticle)candidate).getPos())) > 20.0)) { + StopWatch ageTimer = ((dev.zprestige.prestige.math.HitParticle)candidate).getAgeTimer(); + float lifespanMs = this.lifespan.getValue() * 1000; + if (!ageTimer.hasElapsed(lifespanMs)) { return false; } } return true; }); - this.j.a_void_____________________(new Object[]{93540861878173L}); - this.j( - new Object[]{ - var1, - this.i, - MathHelper4.d(new Object[]{122780339483702L}).brighter(), - MathHelper4.d(new Object[]{122780339483702L}).darker(), - 13255623397683L - } + this.frameTimer.reset(); + this.renderParticles( + event, + this.particles, + UiMath.getAccentColor().brighter(), + UiMath.getAccentColor().darker() ); } } - public void j(Object[] var1) { - TickEvent27 var2 = (TickEvent27)var1[0]; - ArrayList var7 = (ArrayList)var1[1]; - Color var6 = (Color)var1[2]; - Color var5 = (Color)var1[3]; - long var3 = (Long)var1[4]; - var3 = 113418132108689L ^ var3; - long var8 = var3 ^ 57308816830803L; - long var10 = var3 ^ 138184950432182L; - long var12 = var3 ^ 11867991891386L; - long var14 = var3 ^ 122583201262707L; - long var16 = var3 ^ 699887528671L; - Event.b(); - b.getEntityRenderDispatcher(); - MatrixStack.c(new Object[]{var8}); - int var21 = 0; + public void renderParticles(Render3DEvent event, ArrayList particleList, Color brightColor, Color darkColor) { + mc.getEntityRenderDispatcher(); + Render2D.getCameraEntityPos(); + int index = 0; - for (HitEffectHelper var23 : (Iterable)(new ArrayList(var7))) { - var21++; - Vec3d var24 = var23.b(new Object[0]); - double var25 = PositionUtil.b(new Object[]{var16}).distanceTo(var24); - if (b.world.getBlockState(BlockPos.ofFloored(var24)).isAir() && (var21 % 10 == 0 || !(var25 > 25.0)) && (var21 % 3 != 0 || !(var25 > 15.0))) { - float var10001 = ((Integer)this.c.getValue()).intValue() * 1000.0F; - Object[] var10004 = new Object[]{null, var10}; - var10004[0] = var10001; - float var27 = var23.a_float__________(var10004); - int var28 = (int)(255.0F * (1.0F - var27)); - var28 = MathHelper.clamp(var28, 0, 255); - float var10000 = var21 / 5.0F; - Object[] var10006 = new Object[]{null, null, var6, var5, var14}; - var10006[1] = 0.5F; - var10006[0] = var10000; - Color var29 = a(var10006); - Color var30 = new Color(var29.getRed(), var29.getGreen(), var29.getBlue(), var28); - float var10003 = var23.g.equals(AnimationMode.POP) ? 7.0F : 4.5F; - var10006 = new Object[]{null, null, null, null, var12}; - var10006[3] = var10003; - var10006[2] = var30; - var10006[1] = var23; - var10006[0] = var2; - k(var10006); + for (HitParticle particle : (Iterable)(new ArrayList(particleList))) { + index++; + Vec3d particlePos = particle.getPos(); + double distance = PositionUtil.getPlayerPos().distanceTo(particlePos); + if (mc.world.getBlockState(BlockPos.ofFloored(particlePos)).isAir() && (index % 10 == 0 || !(distance > 25.0)) && (index % 3 != 0 || !(distance > 15.0))) { + int alpha = (int)(255.0F * (1.0F - particle.getLifeProgress(this.lifespan.getValue().intValue() * 1000.0F))); + alpha = MathHelper.clamp(alpha, 0, 255); + Color waveColor = getWaveColor(index / 5.0F, 0.5F, brightColor, darkColor); + renderParticle(event, particle, new Color(waveColor.getRed(), waveColor.getGreen(), waveColor.getBlue(), alpha), particle.mode.equals(AnimationMode.POP) ? 7.0F : 4.5F); } } } - public static void k(Object[] var0) { - TickEvent27 var4 = (TickEvent27)var0[0]; - HitEffectHelper var2 = (HitEffectHelper)var0[1]; - Color var3 = (Color)var0[2]; - float var1 = (Float)var0[3]; - long var5 = (Long)var0[4]; - var5 = 113418132108689L ^ var5; - long var7 = var5 ^ 74568779790014L; - long var9 = var5 ^ 16146997084625L; - long var11 = var5 ^ 114795440364950L; - if (f == null) { - f = TextureUtil.a(new Object[]{"assets/prestige/particles/glow.png", var7}); + public static void renderParticle(Render3DEvent event, HitParticle particle, Color tint, float quadSize) { + if (glowTexture == null) { + glowTexture = TextureLoader.loadTexture("assets/prestige/particles/glow.png"); } - if (g == null) { - g = TextureUtil.a(new Object[]{"assets/prestige/particles/pop.png", var7}); + if (popTexture == null) { + popTexture = TextureLoader.loadTexture("assets/prestige/particles/pop.png"); } - MatrixCameraData var10000 = var4.b; - double var10001 = var2.c.x; - double var10002 = var2.c.y; - double var10003 = var2.c.z; - Object[] var10006 = new Object[]{null, null, null, null, var11}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var10000; - Vector3d var14 = RenderUtil.a_Vector3d(var10006); - FontRenderer var15 = var2.g.equals(AnimationMode.POP) ? g : f; - Matrix4f var16 = new Matrix4f(); - var16.translate((float)var14.x, (float)var14.y, (float)var14.z); - var16.scale(0.04F); - var16.rotateY((float)Math.toRadians(-var4.b.bC().getYaw())); - var16.rotateX((float)Math.toRadians(var4.b.bC().getPitch())); - RenderHelper8 var18 = var4.a; - MatrixCameraData var19 = var4.b; - Object[] var10014 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, var9}; - var10014[11] = 0.0F; - var10014[10] = var3; - var10014[9] = 0.0F; - var10014[8] = var1; - var10014[7] = var1; - var10014[6] = 0.0F; - var10014[5] = 0.0F; - var10014[4] = 0.0F; - var10014[3] = var15; - var10014[2] = var16; - var10014[1] = var19; - var10014[0] = var18; - RoundedTextureShader.m(var10014); + Vector3d cameraRelativePos = RenderCore.toCameraRelative(event.context, particle.pos.x, particle.pos.y, particle.pos.z); + GlTextureHandle texture = particle.mode.equals(AnimationMode.POP) ? popTexture : glowTexture; + Matrix4f matrix = new Matrix4f(); + matrix.translate((float)cameraRelativePos.x, (float)cameraRelativePos.y, (float)cameraRelativePos.z); + matrix.scale(0.04F); + matrix.rotateY((float)Math.toRadians(-event.context.camera().getYaw())); + matrix.rotateX((float)Math.toRadians(event.context.camera().getPitch())); + RoundedTextureShader.drawWorldTexture(event.renderer, event.context, matrix, texture, 0.0F, 0.0F, 0.0F, quadSize, quadSize, 0.0F, tint, 0.0F); } - public static Color a(Object[] var0) { - float var6 = (Float)var0[0]; - float var5 = (Float)var0[1]; - Color var2 = (Color)var0[2]; - Color var1 = (Color)var0[3]; - long var3 = (Long)var0[4]; - var3 = 113418132108689L ^ var3; - long var7 = var3 ^ 34840795952166L; - Event.b(); - Color var10 = Color.BLACK; - if (var2 != null && var1 != null) { - double var10002 = (Math.sin(System.currentTimeMillis() / 1.0E8 * var5 * 400000.0 + var6 * 0.55F) + 1.0) * 0.5; - Object[] var10005 = new Object[]{null, null, null, var7}; - var10005[2] = var10002; - var10005[1] = var1; - var10005[0] = var2; - return b_Color__(var10005); + public static Color getWaveColor(float phaseOffset, float speed, Color firstColor, Color secondColor) { + Color fallback = Color.BLACK; + if (firstColor != null && secondColor != null) { + return blendColors(firstColor, secondColor, (Math.sin(System.currentTimeMillis() / 1.0E8 * speed * 400000.0 + phaseOffset * 0.55F) + 1.0) * 0.5); } else { - return var10; + return fallback; } } - public static Color b_Color__(Object[] var0) { - Color var2 = (Color)var0[0]; - Color var1 = (Color)var0[1]; - double var3 = (Double)var0[2]; - Event.b(); - double var8 = 1.0 - var3; - int var10 = (int)(var2.getRed() * var3 + var1.getRed() * var8); - int var11 = (int)(var2.getGreen() * var3 + var1.getGreen() * var8); - int var12 = (int)(var2.getBlue() * var3 + var1.getBlue() * var8); - if (var10 < 0 || var10 > 255) { - var10 = Math.max(0, Math.min(255, var10)); + public static Color blendColors(Color first, Color second, double ratio) { + double inverseRatio = 1.0 - ratio; + int red = (int)(first.getRed() * ratio + second.getRed() * inverseRatio); + int green = (int)(first.getGreen() * ratio + second.getGreen() * inverseRatio); + int blue = (int)(first.getBlue() * ratio + second.getBlue() * inverseRatio); + if (red < 0 || red > 255) { + red = Math.max(0, Math.min(255, red)); } - if (var11 < 0 || var11 > 255) { - var11 = Math.max(0, Math.min(255, var11)); + if (green < 0 || green > 255) { + green = Math.max(0, Math.min(255, green)); } - if (var12 < 0 || var12 > 255) { - var12 = Math.max(0, Math.min(255, var12)); + if (blue < 0 || blue > 255) { + blue = Math.max(0, Math.min(255, blue)); } - return new Color(var10, var11, var12); + return new Color(red, green, blue); } @Subscribe - public void a(PacketEvent var1) { - if ((Boolean)this.e.getValue()) { - if (var1.a(new Object[0]) instanceof EntityStatusS2CPacket var9 && var9.getStatus() == 35 && var9.getEntity(b.world) instanceof PlayerEntity var12) { - for (int var13 = 0; var13 < this.a.getValue() * 2; var13++) { - if (this.i.size() <= (Integer)this.c.getValue() * 20) { - this.i + public void onPacketReceive(PacketReceiveEvent event) { + if (this.totemPop.getValue()) { + if (event.getPacket() instanceof EntityStatusS2CPacket statusPacket && statusPacket.getStatus() == 35 && statusPacket.getEntity(mc.world) instanceof PlayerEntity player) { + for (int particleIndex = 0; particleIndex < this.amount.getValue() * 2; particleIndex++) { + if (this.particles.size() <= this.lifespan.getValue() * 20) { + this.particles .add( - new HitEffectHelper( - PositionUtil.a(new Object[]{var12, 67736483458412L}), + new HitParticle( + PositionUtil.getEntityPos(player), new Vec3d( - var12.getX() + (Math.random() - 0.5) * 0.5, - var12.getY() + Math.random() * 1.0 + 0.5, - var12.getZ() + (Math.random() - 0.5) * 0.5 + player.getX() + (Math.random() - 0.5) * 0.5, + player.getY() + Math.random() * 1.0 + 0.5, + player.getZ() + (Math.random() - 0.5) * 0.5 ), - AnimationMode.POP, - 71682537649551L + AnimationMode.POP ) ); } @@ -295,72 +198,4 @@ public class HitEffect extends Module { } } } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/HudEditor.java b/src/main/java/dev/zprestige/prestige/module/visual/HudEditor.java index 36b3d6d..24265ca 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/HudEditor.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/HudEditor.java @@ -3,113 +3,39 @@ package dev.zprestige.prestige.module.visual; import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; import dev.zprestige.prestige.gui.ClickGuiScreen; -import java.lang.reflect.Field; -import java.lang.reflect.Method; public class HudEditor extends Module { - private static HudEditor a; - private FloatSetting c; + private static HudEditor instance; + private FloatSetting hudScale; public HudEditor() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - a = this; + instance = this; } - public static float b_float______________(Object[] var0) { - Event.b(); - HudEditor var4 = a; - if (var4 == null) { + public static float getHudScalePercent() { + HudEditor editor = instance; + if (editor == null) { return 115.0F; } else { - Float var5 = (Float)var4.c.getValue(); - return var5 == null ? 115.0F : var5; + Float scale = editor.hudScale.getValue(); + return scale == null ? 115.0F : scale; } } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 22594282158762L; - if (b.currentScreen instanceof ClickGuiScreen) { - Prestige.k.close(); + public void onEnable() { + if (mc.currentScreen instanceof ClickGuiScreen) { + Prestige.clickGuiScreen.close(); } - b.setScreen(Prestige.l); - this.toggle(new Object[]{var4}); + mc.setScreen(Prestige.hudEditorScreen); + this.toggle(); } @Override - public boolean b(Object[] var1) { + public boolean isPersistent() { return false; } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/ItemESP.java b/src/main/java/dev/zprestige/prestige/module/visual/ItemESP.java index 6ed5442..a7d5dc3 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/ItemESP.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/ItemESP.java @@ -7,19 +7,15 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent22; -import dev.zprestige.prestige.event.TickEvent25; -import dev.zprestige.prestige.inventory.ItemESPHelper; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.FrustumSetupEvent; +import dev.zprestige.prestige.event.Render2DEvent; +import dev.zprestige.prestige.inventory.ItemEspLabel; +import dev.zprestige.prestige.render.MsdfFont; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map; @@ -34,129 +30,98 @@ import net.minecraft.util.math.Vec3d; import org.joml.Matrix4f; public class ItemESP extends Module { - private FloatSetting a; - private IntSetting c; - private FloatSetting d; - private BoolSetting e; - private ColorSetting f; - private Frustum g; - private Map h = new LinkedHashMap(); - private static final String l = " x"; + private FloatSetting scale; + private IntSetting limit; + private FloatSetting maxDistance; + private BoolSetting background; + private ColorSetting backgroundColor; + private Frustum frustum; + private Map labels = new LinkedHashMap(); + private static final String COUNT_SEPARATOR = " x"; public ItemESP() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.f.setVisibility_ColorSetting(new Object[]{(Predicate)lpL155_0 -> (Boolean)this.e.getValue(), 119980880492450L}); + this.backgroundColor.visibleWhen((Predicate)ignored -> this.background.getValue()); } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null && b.player != null) { - float var5 = (Float)this.d.getValue() * (Float)this.d.getValue(); - ArrayList var6 = new ArrayList(); + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { + float maxDistanceSq = this.maxDistance.getValue() * this.maxDistance.getValue(); + ArrayList entries = new ArrayList(); - for (Entity var8 : b.world.getEntities()) { - if (var8 instanceof ItemEntity var9 && !(var9.squaredDistanceTo(b.player) > var5)) { - ItemStack var10 = var9.getStack(); - if (var10 != null && !var10.isEmpty()) { - ItemESPHelper var11 = new ItemESPHelper(); - var11.b = var10; - String var12 = var10.getName().getString(); - var11.a = var10.getCount() > 1 ? var12 + l + var10.getCount() : var12; - var6.add(Map.entry(var9, var11)); + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof ItemEntity itemEntity && !(itemEntity.squaredDistanceTo(mc.player) > maxDistanceSq)) { + ItemStack stack = itemEntity.getStack(); + if (stack != null && !stack.isEmpty()) { + ItemEspLabel espLabel = new ItemEspLabel(); + espLabel.stack = stack; + String itemName = stack.getName().getString(); + espLabel.label = stack.getCount() > 1 ? itemName + COUNT_SEPARATOR + stack.getCount() : itemName; + entries.add(Map.entry(itemEntity, espLabel)); } } } - var6.sort((lpL154_0, lpL154_1) -> Float.compare(b.player.distanceTo((Entity)((java.util.Map.Entry)lpL154_1).getKey()), b.player.distanceTo((Entity)((java.util.Map.Entry)lpL154_0).getKey()))); - this.h = new LinkedHashMap(); + entries.sort((first, second) -> Float.compare(mc.player.distanceTo((Entity)((java.util.Map.Entry)second).getKey()), mc.player.distanceTo((Entity)((java.util.Map.Entry)first).getKey()))); + this.labels = new LinkedHashMap(); - for (Entry var14 : (Iterable)(var6)) { - this.h.put((ItemEntity)var14.getKey(), (ItemESPHelper)var14.getValue()); + for (Entry entry : (Iterable)(entries)) { + this.labels.put((ItemEntity)entry.getKey(), (ItemEspLabel)entry.getValue()); } } } @Subscribe - public void a(TickEvent25 var1) { - if (b.world != null && b.player != null) { - if (this.d(new Object[]{131824000084707L})) { - float var23 = 10.0F; - int var24 = (Integer)this.c.getValue(); - boolean var25 = (Boolean)this.e.getValue(); - Color var26 = var25 ? (Color)this.f.getValue() : null; - Font var27 = Prestige.c.a(new Object[]{1236438218049L}); - float var28 = var27.c_float___(new Object[]{78913221670390L}); - int var29 = 0; + public void onRender2D(Render2DEvent event) { + if (mc.world != null && mc.player != null) { + if (this.canRenderOverlay()) { + float contentHeight = 10.0F; + int maxLabels = this.limit.getValue(); + boolean showBackground = this.background.getValue(); + Color panelColor = showBackground ? this.backgroundColor.getValue() : null; + MsdfFont font = Prestige.fontManager.getDefaultFont(); + float lineHeight = font.getLineHeight(); + int drawnCount = 0; - for (Entry var31 : (Iterable)(this.h.entrySet())) { - if (var29 >= var24) { + for (Entry entry : (Iterable)(this.labels.entrySet())) { + if (drawnCount >= maxLabels) { break; } - ItemEntity var32 = (ItemEntity)var31.getKey(); - ItemESPHelper var33 = (ItemESPHelper)var31.getValue(); - if (!var32.isRemoved() && (this.g == null || this.g.isVisible(var32.getBoundingBox()))) { - float var34 = b.player.distanceTo(var32); - Vec3d var35 = MatrixStack.b(new Object[]{var32, 78245126833881L}); - Vec3d var36 = MatrixStack.a_class_243_______________( - new Object[]{var35.add(0.0, var32.getHeight() + 0.4 * (1.0F + var34 / 12.0F), 0.0), 73023576373275L} + ItemEntity itemEntity = (ItemEntity)entry.getKey(); + ItemEspLabel espLabel = (ItemEspLabel)entry.getValue(); + if (!itemEntity.isRemoved() && (this.frustum == null || this.frustum.isVisible(itemEntity.getBoundingBox()))) { + float distance = mc.player.distanceTo(itemEntity); + Vec3d screenPos = Render2D.worldToScreen( + Render2D.getInterpolatedPos(itemEntity).add(0.0, itemEntity.getHeight() + 0.4 * (1.0F + distance / 12.0F), 0.0) ); - if (!(var36.z < 0.0) && !(var36.z >= 1.0)) { - var29++; - float var37 = (Float)this.a.getValue() - var34 / 500.0F; - if (var37 < 0.15F) { - var37 = 0.15F; + if (!(screenPos.z < 0.0) && !(screenPos.z >= 1.0)) { + drawnCount++; + float labelScale = this.scale.getValue() - distance / 500.0F; + if (labelScale < 0.15F) { + labelScale = 0.15F; } - float var38 = var27.a_float______________(new Object[]{var33.a, 47859522476307L}); - float var39 = 5.0F; - float var40 = 2.0F; - float var41 = 4.0F; - float var42 = (float)var36.x / var37; - float var43 = (float)var36.y / var37; - Matrix4f var44 = new Matrix4f().scale(var37, var37, var37); - float var45 = var38 + 2.0F * var39; - float var46 = var23 + 2.0F * var40; - float var47 = var42 - var45 / 2.0F; - float var48 = var43 - var40; - if (var25) { - RenderHelper8 var10000 = var1.a; - MatrixCameraData var10001 = var1.b; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 35553070502242L}; - var10011[8] = var41; - var10011[7] = 5; - var10011[6] = var46; - var10011[5] = var45; - var10011[4] = var48; - var10011[3] = var47; - var10011[2] = var44; - var10011[1] = var10001; - var10011[0] = var10000; - RenderTarget.e(var10011); - var10000 = var1.a; - var10001 = var1.b; - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 16042616216793L}; - var10011[8] = var41; - var10011[7] = var26; - var10011[6] = var46; - var10011[5] = var45; - var10011[4] = var48; - var10011[3] = var47; - var10011[2] = var44; - var10011[1] = var10001; - var10011[0] = var10000; - RoundedPosColorShader.c(var10011); + float textWidth = font.getTextWidth(espLabel.label); + float paddingX = 5.0F; + float paddingY = 2.0F; + float cornerRadius = 4.0F; + float centerX = (float)screenPos.x / labelScale; + float centerY = (float)screenPos.y / labelScale; + Matrix4f matrix = new Matrix4f().scale(labelScale, labelScale, labelScale); + float panelWidth = textWidth + 2.0F * paddingX; + float panelHeight = contentHeight + 2.0F * paddingY; + float panelX = centerX - panelWidth / 2.0F; + float panelY = centerY - paddingY; + if (showBackground) { + BlurredRoundedRectShader.drawBlurredRect(event.renderer, event.context, matrix, panelX, panelY, panelWidth, panelHeight, 5, cornerRadius); + RoundedRectShader.drawRoundedRect(event.renderer, event.context, matrix, panelX, panelY, panelWidth, panelHeight, panelColor, cornerRadius); } - float var49 = var42 - var38 / 2.0F; - float var50 = var43 + (var23 - var28) / 2.0F; - String var10002 = var33.a; - Object[] var10008 = new Object[]{null, null, null, null, Color.WHITE, 36494305523424L}; - var10008[3] = var50; - var10008[2] = var49; - var10008[1] = var10002; - var10008[0] = var44; - var27.v(var10008); + float textX = centerX - textWidth / 2.0F; + float textY = centerY + (contentHeight - lineHeight) / 2.0F; + font.drawText(matrix, espLabel.label, textX, textY, Color.WHITE); } } } @@ -165,106 +130,11 @@ public class ItemESP extends Module { } @Subscribe - public void a(TickEvent22 var1) { - this.g = var1.a(new Object[0]); + public void onFrustumSetup(FrustumSetupEvent event) { + this.frustum = event.getFrustum(); } - private boolean d(Object[] var1) { - return b.currentScreen == null || b.currentScreen instanceof ChatScreen; - } - - private static String b(byte[] var0) { - int var1 = 0; - int var2; - char[] var3 = new char[var2 = var0.length]; - - for (int var4 = 0; var4 < var2; var4++) { - int var5; - if ((var5 = 255 & var0[var4]) < 192) { - var3[var1++] = (char)var5; - } else if (var5 < 224) { - char var6 = (char)((char)(var5 & 31) << 6); - byte var8 = var0[++var4]; - var6 = (char)(var6 | (char)(var8 & 63)); - var3[var1++] = var6; - } else if (var4 < var2 - 2) { - char var12 = (char)((char)(var5 & 15) << '\f'); - byte var9 = var0[++var4]; - var12 = (char)(var12 | (char)(var9 & 63) << 6); - var9 = var0[++var4]; - var12 = (char)(var12 | (char)(var9 & 63)); - var3[var1++] = var12; - } - } - - return new String(var3, 0, var1); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private boolean canRenderOverlay() { + return mc.currentScreen == null || mc.currentScreen instanceof ChatScreen; } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/JumpCircles.java b/src/main/java/dev/zprestige/prestige/module/visual/JumpCircles.java index a0ffb9b..847e335 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/JumpCircles.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/JumpCircles.java @@ -6,17 +6,12 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.math.JumpCirclesHelper; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.math.JumpCircle; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.ShapeRenderer; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -27,203 +22,106 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.Vec3d; public class JumpCircles extends Module { - private BoolSetting d; - private FloatSetting a; - private IntSetting c; - private FloatSetting e; - private FloatSetting f; - private BoolSetting g; - private ColorSetting h; - private Map i = new HashMap(); - private Map j = new HashMap(); - private List k = new ArrayList(); - private static final long m = 3161348516882678015L; + private BoolSetting selfOnly; + private FloatSetting maxRadius; + private IntSetting duration; + private FloatSetting thickness; + private FloatSetting glowDistance; + private BoolSetting themeColor; + private ColorSetting color; + private Map lastOnGround = new HashMap(); + private Map lastY = new HashMap(); + private List circles = new ArrayList(); + private static final long MAX_ALPHA = 3161348516882678015L; public JumpCircles() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.h.setVisibility_ColorSetting(new Object[]{(Predicate)lpL157_0 -> !(Boolean)this.g.getValue(), 119980880492450L}); + this.color.visibleWhen((Predicate)ignored -> !this.themeColor.getValue()); } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null) { - HashSet var9 = new HashSet(); + public void onClientTick(ClientTickEvent event) { + if (mc.world != null) { + HashSet seenIds = new HashSet(); - for (PlayerEntity var11 : b.world.getPlayers()) { - int var12 = var11.getId(); - var9.add(var12); - boolean var13 = (boolean)this.i.getOrDefault(var12, false); - boolean var14 = var11.isOnGround(); - Vec3d var15 = this.a(new Object[]{var11, 114333519071826L}); - double var16 = var15.y; - double var18 = (double)this.j.getOrDefault(var12, var16); - double var20 = var16 - var18; - if ((!(Boolean)this.d.getValue() || var11 == b.player) && var13 && !var14 && var20 > 0.05) { - this.k.add(new JumpCirclesHelper(new Vec3d(var15.x, var18, var15.z), (Integer)this.c.getValue(), 74345798570754L)); + for (PlayerEntity player : mc.world.getPlayers()) { + int entityId = player.getId(); + seenIds.add(entityId); + boolean wasGrounded = (boolean)this.lastOnGround.getOrDefault(entityId, false); + boolean onGround = player.isOnGround(); + Vec3d pos = this.getTrackedPos(player); + double currentY = pos.y; + double previousY = (double)this.lastY.getOrDefault(entityId, currentY); + double deltaY = currentY - previousY; + if ((!this.selfOnly.getValue() || player == mc.player) && wasGrounded && !onGround && deltaY > 0.05) { + this.circles.add(new JumpCircle(new Vec3d(pos.x, previousY, pos.z), this.duration.getValue())); } - this.i.put(var12, var14); - this.j.put(var12, var16); + this.lastOnGround.put(entityId, onGround); + this.lastY.put(entityId, currentY); } - this.i.keySet().retainAll(var9); - this.j.keySet().retainAll(var9); + this.lastOnGround.keySet().retainAll(seenIds); + this.lastY.keySet().retainAll(seenIds); } } - private Vec3d a(Object[] var1) { - PlayerEntity var4 = (PlayerEntity)var1[0]; - if (var4 == b.player) { - return new Vec3d(var4.getX(), var4.getY(), var4.getZ()); + private Vec3d getTrackedPos(PlayerEntity player) { + if (player == mc.player) { + return new Vec3d(player.getX(), player.getY(), player.getZ()); } else { try { - return var4.getTrackedPosition().withDelta(0L, 0L, 0L); - } catch (Throwable var5) { - return new Vec3d(var4.getX(), var4.getY(), var4.getZ()); + return player.getTrackedPosition().withDelta(0L, 0L, 0L); + } catch (Throwable ignored) { + return new Vec3d(player.getX(), player.getY(), player.getZ()); } } } @Subscribe - public void a(TickEvent27 var1) { - long var11 = System.currentTimeMillis(); - Event.b(); - this.k.removeIf(lpL156_0 -> var11 - ((dev.zprestige.prestige.math.JumpCirclesHelper)lpL156_0).b >= ((dev.zprestige.prestige.math.JumpCirclesHelper)lpL156_0).c); - if (!this.k.isEmpty()) { - Color var13 = this.g.getValue() ? MathHelper4.d(new Object[]{122780339483702L}) : (Color)this.h.getValue(); - Color var14 = var13.brighter(); - float var15 = (Float)this.e.getValue(); - float var16 = (Float)this.f.getValue(); - float var17 = (Float)this.a.getValue(); + public void onRender3D(Render3DEvent event) { + long now = System.currentTimeMillis(); + this.circles.removeIf(candidate -> now - ((dev.zprestige.prestige.math.JumpCircle)candidate).spawnTime >= ((dev.zprestige.prestige.math.JumpCircle)candidate).lifetimeMs); + if (!this.circles.isEmpty()) { + Color baseColor = this.themeColor.getValue() ? UiMath.getAccentColor() : this.color.getValue(); + Color brightColor = baseColor.brighter(); + float ringThickness = this.thickness.getValue(); + float glowSpread = this.glowDistance.getValue(); + float finalRadius = this.maxRadius.getValue(); - for (JumpCirclesHelper var19 : (Iterable)(this.k)) { - float var20 = (float)(var11 - var19.b) / var19.c; - if (!(var20 < 0.0F) && !(var20 > 1.0F)) { - float var21 = 0.1F + (var17 - 0.1F) * b_float_______________(new Object[]{var20}); - float var22; - if (var20 < 0.2F) { - var22 = var20 / 0.2F; + for (JumpCircle circle : (Iterable)(this.circles)) { + float progress = (float)(now - circle.spawnTime) / circle.lifetimeMs; + if (!(progress < 0.0F) && !(progress > 1.0F)) { + float radius = 0.1F + (finalRadius - 0.1F) * easeOutQuad(progress); + float alpha; + if (progress < 0.2F) { + alpha = progress / 0.2F; } else { - var22 = 1.0F - (var20 - 0.2F) / 0.8F; + alpha = 1.0F - (progress - 0.2F) / 0.8F; } - var22 = Math.max(0.0F, Math.min(1.0F, var22)); - Object[] var10004 = new Object[]{null, null, 130394026981283L}; - var10004[1] = var22; - var10004[0] = var14; - Color var23 = a_Color____(var10004); - var10004 = new Object[]{null, null, 130394026981283L}; - var10004[1] = var22; - var10004[0] = var13; - Color var24 = a_Color____(var10004); - MatrixCameraData var10000 = var1.b; - RenderHelper8 var10001 = var1.a; - float var10002 = (float)var19.a.x; - float var10003 = (float)var19.a.y; - float var27 = (float)var19.a.z; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, var23, var24, 84681243398314L}; - var10012[7] = var16; - var10012[6] = var15; - var10012[5] = var21; - var10012[4] = var27; - var10012[3] = var10003; - var10012[2] = var10002; - var10012[1] = var10001; - var10012[0] = var10000; - RenderState.f(var10012); + alpha = Math.max(0.0F, Math.min(1.0F, alpha)); + Color ringColor = scaleAlpha(brightColor, alpha); + Color glowColor = scaleAlpha(baseColor, alpha); + ShapeRenderer.drawGlowRing(event.context, event.renderer, (float)circle.pos.x, (float)circle.pos.y, (float)circle.pos.z, radius, ringThickness, glowSpread, ringColor, glowColor); } } } } @Override - public void onDisable(Object[] var1) { - this.k.clear(); - this.i.clear(); - this.j.clear(); + public void onDisable() { + this.circles.clear(); + this.lastOnGround.clear(); + this.lastY.clear(); } - private static float b_float_______________(Object[] var0) { - float var1 = (Float)var0[0]; - return 1.0F - (1.0F - var1) * (1.0F - var1); + private static float easeOutQuad(float progress) { + return 1.0F - (1.0F - progress) * (1.0F - progress); } - private static Color a_Color____(Object[] var0) { - Color var1 = (Color)var0[0]; - float var2 = (Float)var0[1]; - int var5 = Math.max(0, Math.min((int)m, (int)(var1.getAlpha() * var2))); - return new Color(var1.getRed(), var1.getGreen(), var1.getBlue(), var5); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; + private static Color scaleAlpha(Color baseColor, float alphaScale) { + int alpha = Math.max(0, Math.min((int)MAX_ALPHA, (int)(baseColor.getAlpha() * alphaScale))); + return new Color(baseColor.getRed(), baseColor.getGreen(), baseColor.getBlue(), alpha); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/NameTags.java b/src/main/java/dev/zprestige/prestige/module/visual/NameTags.java index 736c88f..e3e9589 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/NameTags.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/NameTags.java @@ -6,25 +6,20 @@ import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.NameTagsUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.EntityEvent5; -import dev.zprestige.prestige.event.EntityEvent6; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent22; -import dev.zprestige.prestige.event.TickEvent25; -import dev.zprestige.prestige.inventory.ItemLabel; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.combat.HudStyle; +import dev.zprestige.prestige.event.LabelTextEvent; +import dev.zprestige.prestige.event.RenderLabelEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.FrustumSetupEvent; +import dev.zprestige.prestige.event.Render2DEvent; +import dev.zprestige.prestige.inventory.EnchantmentLabel; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.render.MsdfFont; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; @@ -47,379 +42,234 @@ import org.joml.Matrix4f; import org.joml.Vector4f; public class NameTags extends Module { - private FloatSetting a; - private IntSetting c; - private FloatSetting d; - private BoolSetting e; - private BoolSetting f; - private BoolSetting g; - private BoolSetting h; - private BoolSetting i; - private BoolSetting j; - private static final float k = 0.15F; - private static final Color l = new Color(240, 170, 60); - private static final Color m = new Color(235, 75, 75); - private static final Color n = new Color(255, 255, 255, 22); - private static final Color o = new Color(235, 85, 85, 130); - private static final Color p = new Color(235, 75, 75); - private static final Color q = new Color(120, 220, 240); - private Frustum r; - private Map s = new HashMap(); - private List t = new ArrayList(); - private Map u = new LinkedHashMap(); + private FloatSetting scale; + private IntSetting limit; + private FloatSetting fadeDistance; + private BoolSetting distance; + private BoolSetting healthNumber; + private BoolSetting totemPops; + private BoolSetting hands; + private BoolSetting armor; + private BoolSetting enchantments; + private static final Color MEDIUM_HEALTH_COLOR = new Color(240, 170, 60); + private static final Color LOW_HEALTH_COLOR = new Color(235, 75, 75); + private static final Color BAR_TRACK_COLOR = new Color(255, 255, 255, 22); + private static final Color DAMAGE_TRAIL_COLOR = new Color(235, 85, 85, 130); + private static final Color POP_TEXT_COLOR = new Color(235, 75, 75); + private static final Color FRIEND_NAME_COLOR = new Color(120, 220, 240); + private Frustum frustum; + private Map entriesByPlayer = new HashMap(); + private List sortedEntries = new ArrayList(); + private Map displayEntries = new LinkedHashMap(); public NameTags() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.j.setVisibility_BoolSetting(new Object[]{(Predicate)lpL367_0 -> (Boolean)this.i.getValue(), 73196168581295L}); + this.enchantments.visibleWhen((Predicate)ignored -> this.armor.getValue()); } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null && b.player != null) { - Font var19 = Prestige.c.a(new Object[]{1236438218049L}); - Color var20 = (Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue(); - this.s.clear(); + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { + MsdfFont font = Prestige.fontManager.getDefaultFont(); + Color accentColor = Prestige.moduleManager.getMenu().getMenuColor().getValue(); + this.entriesByPlayer.clear(); - for (PlayerEntity var22 : b.world.getPlayers()) { - if (var22 != b.player && Prestige.i.a_boolean_(new Object[]{var22, 54363558999103L})) { - dev.zprestige.prestige.combat.NameTags var24 = (dev.zprestige.prestige.combat.NameTags)this.u.get(var22); - dev.zprestige.prestige.combat.NameTags var23 = new dev.zprestige.prestige.combat.NameTags(); - var23.a = var22.getName().getString(); - var23.b = Prestige.g.a(new Object[]{var23.a, 24848952222090L}) ? q : NameTagsUtil.s; - float var25 = var22.getHealth() + var22.getAbsorptionAmount(); - float var26 = var22.getMaxHealth() + var22.getAbsorptionAmount(); - float var10001 = var25 / Math.max(1.0F, var26); - Object[] var10006 = new Object[]{null, null, null, 37755544982162L}; - var10006[2] = 1.0F; - var10006[1] = 0.0F; - var10006[0] = var10001; - var23.e = MathHelper4.a(var10006); - float var27 = var24 == null ? var23.e : var24.f; - var23.f = Math.max(var23.e, var27 + (var23.e - var27) * 0.15F); - if (var23.e > var27) { - var23.f = var23.e; + for (PlayerEntity player : mc.world.getPlayers()) { + if (player != mc.player && Prestige.botFilter.isValidTarget(player)) { + dev.zprestige.prestige.combat.NameTagEntry previous = (dev.zprestige.prestige.combat.NameTagEntry)this.displayEntries.get(player); + dev.zprestige.prestige.combat.NameTagEntry entry = new dev.zprestige.prestige.combat.NameTagEntry(); + entry.name = player.getName().getString(); + entry.nameColor = Prestige.friendManager.isFriend(entry.name) ? FRIEND_NAME_COLOR : HudStyle.TEXT_COLOR; + float health = player.getHealth() + player.getAbsorptionAmount(); + entry.healthRatio = UiMath.clamp(health / Math.max(1.0F, player.getMaxHealth() + player.getAbsorptionAmount()), 0.0F, 1.0F); + float previousDisplayed = previous == null ? entry.healthRatio : previous.displayedHealthRatio; + entry.displayedHealthRatio = Math.max(entry.healthRatio, previousDisplayed + (entry.healthRatio - previousDisplayed) * 0.15F); + if (entry.healthRatio > previousDisplayed) { + entry.displayedHealthRatio = entry.healthRatio; } - if (var23.e > 0.6F) { - var23.g = var20; - } else if (var23.e > 0.3F) { - var23.g = l; + if (entry.healthRatio > 0.6F) { + entry.healthColor = accentColor; + } else if (entry.healthRatio > 0.3F) { + entry.healthColor = MEDIUM_HEALTH_COLOR; } else { - var23.g = m; + entry.healthColor = LOW_HEALTH_COLOR; } - var23.c = Prestige.r.a(new Object[]{var22, 133768629865341L}); - var23.d = this.g.getValue() && var23.c > 0 ? "-" + var23.c : ""; - if ((Boolean)this.f.getValue()) { - var23.h = Math.round(var25) + "hp"; + entry.pops = Prestige.totemPopManager.getPopCount(player); + entry.popText = this.totemPops.getValue() && entry.pops > 0 ? "-" + entry.pops : ""; + if (this.healthNumber.getValue()) { + entry.healthText = Math.round(health) + "hp"; } else { - var23.h = ""; + entry.healthText = ""; } - if ((Boolean)this.h.getValue()) { - if (!var22.getMainHandStack().isEmpty()) { - var23.l.add(var22.getMainHandStack()); + if (this.hands.getValue()) { + if (!player.getMainHandStack().isEmpty()) { + entry.items.add(player.getMainHandStack()); } - if (!var22.getOffHandStack().isEmpty()) { - var23.l.add(var22.getOffHandStack()); + if (!player.getOffHandStack().isEmpty()) { + entry.items.add(player.getOffHandStack()); } } - if ((Boolean)this.i.getValue()) { - boolean var28 = (Boolean)this.j.getValue(); + if (this.armor.getValue()) { + boolean showEnchants = this.enchantments.getValue(); - for (EquipmentSlot var30 : AttributeModifierSlot.ARMOR) { - ItemStack var31 = var22.getEquippedStack(var30); - if (!var31.isEmpty()) { - var23.l.add(var31); - if (var28) { - var23.m.addAll(this.b_List______(new Object[]{var31, 106470340904503L})); + for (EquipmentSlot slot : AttributeModifierSlot.ARMOR) { + ItemStack armorStack = player.getEquippedStack(slot); + if (!armorStack.isEmpty()) { + entry.items.add(armorStack); + if (showEnchants) { + entry.enchantLabels.addAll(this.getEnchantLabels(armorStack)); } } } } - var23.i = var19.a_float______________(new Object[]{var23.a, 47859522476307L}); - var23.j = var23.d.isEmpty() ? 0.0F : var19.a_float______________(new Object[]{var23.d, 47859522476307L}) * 0.75F; - var23.k = var23.h.isEmpty() ? 0.0F : var19.a_float______________(new Object[]{var23.h, 47859522476307L}) * 0.75F; - this.s.put(var22, var23); + entry.nameWidth = font.getTextWidth(entry.name); + entry.popTextWidth = entry.popText.isEmpty() ? 0.0F : font.getTextWidth(entry.popText) * 0.75F; + entry.healthTextWidth = entry.healthText.isEmpty() ? 0.0F : font.getTextWidth(entry.healthText) * 0.75F; + this.entriesByPlayer.put(player, entry); } } - this.t.clear(); - this.t.addAll(this.s.entrySet()); - this.t.sort((lpL366_0, lpL366_1) -> Float.compare(b.player.distanceTo((Entity)((java.util.Map.Entry)lpL366_1).getKey()), b.player.distanceTo((Entity)((java.util.Map.Entry)lpL366_0).getKey()))); - this.u.clear(); + this.sortedEntries.clear(); + this.sortedEntries.addAll(this.entriesByPlayer.entrySet()); + this.sortedEntries.sort((first, second) -> Float.compare(mc.player.distanceTo((Entity)((java.util.Map.Entry)second).getKey()), mc.player.distanceTo((Entity)((java.util.Map.Entry)first).getKey()))); + this.displayEntries.clear(); - for (Entry var33 : (Iterable)(this.t)) { - this.u.put((PlayerEntity)var33.getKey(), (dev.zprestige.prestige.combat.NameTags)var33.getValue()); + for (Entry sortedEntry : (Iterable)(this.sortedEntries)) { + this.displayEntries.put((PlayerEntity)sortedEntry.getKey(), (dev.zprestige.prestige.combat.NameTagEntry)sortedEntry.getValue()); } } } @Subscribe - public void a(TickEvent25 var1) { - if (b.player != null) { - Font var31 = Prestige.c.a(new Object[]{1236438218049L}); - float var32 = var31.c_float___(new Object[]{78913221670390L}); - float var33 = NameTagsUtil.b(new Object[]{var32}); - float var34 = (Float)this.d.getValue(); - boolean var35 = (Boolean)this.e.getValue(); - boolean var36 = (Boolean)this.f.getValue(); - boolean var37 = (Boolean)this.h.getValue() || (Boolean)this.i.getValue(); - boolean var38 = (Boolean)this.j.getValue() && (Boolean)this.i.getValue(); - int var39 = (Integer)this.c.getValue(); - int var40 = 0; + public void onRender2D(Render2DEvent event) { + if (mc.player != null) { + MsdfFont font = Prestige.fontManager.getDefaultFont(); + float lineHeight = font.getLineHeight(); + float cardHeight = HudStyle.getCardHeight(lineHeight); + float fadeRange = this.fadeDistance.getValue(); + boolean showDistance = this.distance.getValue(); + boolean showHealthNumber = this.healthNumber.getValue(); + boolean showItems = this.hands.getValue() || this.armor.getValue(); + boolean showEnchants = this.enchantments.getValue() && this.armor.getValue(); + int maxTags = this.limit.getValue(); + int drawnTags = 0; - for (Entry var42 : (Iterable)(this.u.entrySet())) { - if (var40 >= var39) { + for (Entry mapEntry : (Iterable)(this.displayEntries.entrySet())) { + if (drawnTags >= maxTags) { break; } - PlayerEntity var43 = (PlayerEntity)var42.getKey(); - dev.zprestige.prestige.combat.NameTags var44 = (dev.zprestige.prestige.combat.NameTags)var42.getValue(); - if (this.r == null || this.r.isVisible(var43.getBoundingBox())) { - float var45 = b.player.distanceTo(var43); - if (!(var45 > var34)) { - Vec3d var46 = MatrixStack.b(new Object[]{var43, 78245126833881L}); - Vec3d var47 = MatrixStack.a_class_243_______________( - new Object[]{var46.add(0.0, var43.getHeight() + 0.5 * (var45 / 10.0F), 0.0), 73023576373275L} + PlayerEntity player = (PlayerEntity)mapEntry.getKey(); + dev.zprestige.prestige.combat.NameTagEntry tagEntry = (dev.zprestige.prestige.combat.NameTagEntry)mapEntry.getValue(); + if (this.frustum == null || this.frustum.isVisible(player.getBoundingBox())) { + float playerDistance = mc.player.distanceTo(player); + if (!(playerDistance > fadeRange)) { + Vec3d screenPos = Render2D.worldToScreen( + Render2D.getInterpolatedPos(player).add(0.0, player.getHeight() + 0.5 * (playerDistance / 10.0F), 0.0) ); - if (!(var47.z < 0.0) && !(var47.z >= 1.0)) { - var40++; - float var48 = (Float)this.a.getValue() * 0.8F - var45 / 300.0F; - if (var48 < 0.15F) { - var48 = 0.15F; + if (!(screenPos.z < 0.0) && !(screenPos.z >= 1.0)) { + drawnTags++; + float tagScale = this.scale.getValue() * 0.8F - playerDistance / 300.0F; + if (tagScale < 0.15F) { + tagScale = 0.15F; } - float var89; - if (var45 > var34 - 10.0F) { - var89 = (var34 - var45) / 10.0F; - Object[] var10005 = new Object[]{null, null, null, 37755544982162L}; - var10005[2] = 1.0F; - var10005[1] = 0.0F; - var10005[0] = var89; - var89 = MathHelper4.a(var10005); + float fadeFactor; + if (playerDistance > fadeRange - 10.0F) { + fadeFactor = (fadeRange - playerDistance) / 10.0F; + fadeFactor = UiMath.clamp(fadeFactor, 0.0F, 1.0F); } else { - var89 = 1.0F; + fadeFactor = 1.0F; } - float var49 = var89; - float var50 = (float)var47.x / var48; - float var51 = (float)var47.y / var48; - Matrix4f var52 = new Matrix4f().scale(var48, var48, var48); - String var53 = var35 ? Math.round(var45) + "m" : ""; - float var54 = var53.isEmpty() ? 0.0F : var31.a_float______________(new Object[]{var53, 47859522476307L}) * 0.65F; - float var55 = var44.i + (var44.d.isEmpty() ? 0.0F : 3.0F + var44.j); - float var56 = 0.0F; - if (!var53.isEmpty()) { - var56 = var54; + float alpha = fadeFactor; + float centerX = (float)screenPos.x / tagScale; + float centerY = (float)screenPos.y / tagScale; + Matrix4f matrix = new Matrix4f().scale(tagScale, tagScale, tagScale); + String distanceText = showDistance ? Math.round(playerDistance) + "m" : ""; + float distanceTextWidth = distanceText.isEmpty() ? 0.0F : font.getTextWidth(distanceText) * 0.65F; + float nameRowWidth = tagEntry.nameWidth + (tagEntry.popText.isEmpty() ? 0.0F : 3.0F + tagEntry.popTextWidth); + float rightTextWidth = 0.0F; + if (!distanceText.isEmpty()) { + rightTextWidth = distanceTextWidth; } - float var57 = var55 + (var56 > 0.0F ? 6.0F + var56 : 0.0F); - float var58 = 60.0F; - float var59 = Math.max(var57, var58); - if (var36) { - var59 = Math.max(var59, var55 + 6.0F + var44.k); + float contentWidth = Math.max(nameRowWidth + (rightTextWidth > 0.0F ? 6.0F + rightTextWidth : 0.0F), 60.0F); + if (showHealthNumber) { + contentWidth = Math.max(contentWidth, nameRowWidth + 6.0F + tagEntry.healthTextWidth); } - float var60 = var59 + 11.0F; - float var61 = var50 - var60 / 2.0F; - float var62 = var51 - var33 / 2.0F; - RenderHelper8 var90 = var1.a; - MatrixCameraData var10001 = var1.b; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 35553070502242L}; - var10011[8] = 4.0F; - var10011[7] = 5; - var10011[6] = var33; - var10011[5] = var60; - var10011[4] = var62; - var10011[3] = var61; - var10011[2] = var52; - var10011[1] = var10001; - var10011[0] = var90; - RenderTarget.e(var10011); - RenderHelper8 var91 = var1.a; - var10001 = var1.b; - Color var10007 = NameTagsUtil.r; - var10011 = new Object[]{null, null, 85465053841486L}; - var10011[1] = var49; - var10011[0] = var10007; - var10007 = a(var10011); - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 16042616216793L}; - var10011[8] = 4.0F; - var10011[7] = var10007; - var10011[6] = var33; - var10011[5] = var60; - var10011[4] = var62; - var10011[3] = var61; - var10011[2] = var52; - var10011[1] = var10001; - var10011[0] = var91; - RoundedPosColorShader.c(var10011); - float var63 = var62 + 3.0F; - float var64 = var61 + 5.5F; - float var65 = var61 + var60 - 5.5F; - String var10002 = var44.a; - Color var105 = var44.b; - Object[] var10009 = new Object[]{null, null, 85465053841486L}; - var10009[1] = var49; - var10009[0] = var105; - Object[] var10008 = new Object[]{null, null, null, null, a(var10009), 36494305523424L}; - var10008[3] = var63; - var10008[2] = var64; - var10008[1] = var10002; - var10008[0] = var52; - var31.v(var10008); - float var66 = var64 + var44.i + 3.0F; - if (!var44.d.isEmpty()) { - float var67 = var32 - var32 * 0.75F; - var10002 = var44.d; - float var10004 = var63 + var67; - Color var10006 = p; - Object[] var10010 = new Object[]{null, null, 85465053841486L}; - var10010[1] = var49; - var10010[0] = var10006; - var10009 = new Object[]{null, null, null, null, null, a(var10010), 49503024803380L}; - var10009[4] = 0.75F; - var10009[3] = var10004; - var10009[2] = var66; - var10009[1] = var10002; - var10009[0] = var52; - var31.w(var10009); + float cardWidth = contentWidth + 11.0F; + float cardX = centerX - cardWidth / 2.0F; + float cardY = centerY - cardHeight / 2.0F; + BlurredRoundedRectShader.drawBlurredRect(event.renderer, event.context, matrix, cardX, cardY, cardWidth, cardHeight, 5, 4.0F); + RoundedRectShader.drawRoundedRect(event.renderer, event.context, matrix, cardX, cardY, cardWidth, cardHeight, scaleAlpha(HudStyle.BACKGROUND_COLOR, alpha), 4.0F); + float textY = cardY + 3.0F; + float contentLeft = cardX + 5.5F; + float contentRight = cardX + cardWidth - 5.5F; + font.drawText(matrix, tagEntry.name, contentLeft, textY, scaleAlpha(tagEntry.nameColor, alpha)); + float popX = contentLeft + tagEntry.nameWidth + 3.0F; + if (!tagEntry.popText.isEmpty()) { + font.drawTextScaled(matrix, tagEntry.popText, popX, textY + (lineHeight - lineHeight * 0.75F), 0.75F, scaleAlpha(POP_TEXT_COLOR, alpha)); } - if (!var53.isEmpty()) { - float var85 = var32 - var32 * 0.65F; - float var10003 = var65 - var54; - float var100 = var63 + var85; - Color var109 = NameTagsUtil.u; - Object[] var124 = new Object[]{null, null, 85465053841486L}; - var124[1] = var49; - var124[0] = var109; - var10009 = new Object[]{null, null, null, null, null, a(var124), 49503024803380L}; - var10009[4] = 0.65F; - var10009[3] = var100; - var10009[2] = var10003; - var10009[1] = var53; - var10009[0] = var52; - var31.w(var10009); + if (!distanceText.isEmpty()) { + font.drawTextScaled(matrix, distanceText, contentRight - distanceTextWidth, textY + (lineHeight - lineHeight * 0.65F), 0.65F, scaleAlpha(HudStyle.MUTED_TEXT_COLOR, alpha)); } - float var86 = var63 + var32 + 1.0F; - float var69 = var65; - if (var36 && !var44.h.isEmpty()) { - var69 = var65 - (var44.k + 3.0F); + float barY = textY + lineHeight + 1.0F; + float barRight = contentRight; + if (showHealthNumber && !tagEntry.healthText.isEmpty()) { + barRight = contentRight - (tagEntry.healthTextWidth + 3.0F); } - float var70 = var69 - var64; - Vector4f var71 = new Vector4f(1.5F, 1.5F, 1.5F, 1.5F); - float var98 = var64 + var70; - float var101 = var86 + 4.0F; - var105 = n; - var10009 = new Object[]{null, null, 85465053841486L}; - var10009[1] = var49; - var10009[0] = var105; - var10009 = new Object[]{null, null, null, null, null, a(var10009), var71, 32811334756897L}; - var10009[4] = var101; - var10009[3] = var98; - var10009[2] = var86; - var10009[1] = var64; - var10009[0] = var52; - RenderState.u(var10009); - float var72 = var64 + var70 * var44.f; - float var73 = var64 + var70 * var44.e; - if (var44.f > var44.e + 0.001F) { - var101 = var86 + 4.0F; - var105 = o; - var10009 = new Object[]{null, null, 85465053841486L}; - var10009[1] = var49; - var10009[0] = var105; - var10009 = new Object[]{null, null, null, null, null, a(var10009), var71, 32811334756897L}; - var10009[4] = var101; - var10009[3] = var72; - var10009[2] = var86; - var10009[1] = var73; - var10009[0] = var52; - RenderState.u(var10009); + float barWidth = barRight - contentLeft; + Vector4f barRadii = new Vector4f(1.5F, 1.5F, 1.5F, 1.5F); + ShapeRenderer.drawRoundedRect(matrix, contentLeft, barY, contentLeft + barWidth, barY + 4.0F, scaleAlpha(BAR_TRACK_COLOR, alpha), barRadii); + float displayedEnd = contentLeft + barWidth * tagEntry.displayedHealthRatio; + float healthEnd = contentLeft + barWidth * tagEntry.healthRatio; + if (tagEntry.displayedHealthRatio > tagEntry.healthRatio + 0.001F) { + ShapeRenderer.drawRoundedRect(matrix, healthEnd, barY, displayedEnd, barY + 4.0F, scaleAlpha(DAMAGE_TRAIL_COLOR, alpha), barRadii); } - if (var44.e > 0.001F) { - var101 = var86 + 4.0F; - var105 = var44.g; - var10009 = new Object[]{null, null, 85465053841486L}; - var10009[1] = var49; - var10009[0] = var105; - var10009 = new Object[]{null, null, null, null, null, a(var10009), var71, 32811334756897L}; - var10009[4] = var101; - var10009[3] = var73; - var10009[2] = var86; - var10009[1] = var64; - var10009[0] = var52; - RenderState.u(var10009); + if (tagEntry.healthRatio > 0.001F) { + ShapeRenderer.drawRoundedRect(matrix, contentLeft, barY, healthEnd, barY + 4.0F, scaleAlpha(tagEntry.healthColor, alpha), barRadii); } - if (var36 && !var44.h.isEmpty()) { - float var74 = var86 + 2.0F - var32 * 0.75F / 2.0F; - var10002 = var44.h; - var98 = var69 + 3.0F; - Color var110 = var44.g; - Object[] var125 = new Object[]{null, null, 85465053841486L}; - var125[1] = var49; - var125[0] = var110; - var10009 = new Object[]{null, null, null, null, null, a(var125), 49503024803380L}; - var10009[4] = 0.75F; - var10009[3] = var74; - var10009[2] = var98; - var10009[1] = var10002; - var10009[0] = var52; - var31.w(var10009); + if (showHealthNumber && !tagEntry.healthText.isEmpty()) { + float healthTextY = barY + 2.0F - lineHeight * 0.75F / 2.0F; + font.drawTextScaled(matrix, tagEntry.healthText, barRight + 3.0F, healthTextY, 0.75F, scaleAlpha(tagEntry.healthColor, alpha)); } - if (var37 && !var44.l.isEmpty()) { - int var87 = var44.l.size(); - float var75 = 9.6F; - float var76 = var62 - var75 - 2.0F; - float var77 = var50 - var87 * 12.0F / 2.0F + 1.0F; + if (showItems && !tagEntry.items.isEmpty()) { + int itemCount = tagEntry.items.size(); + float itemY = cardY - 9.6F - 2.0F; + float itemStartX = centerX - itemCount * 12.0F / 2.0F + 1.0F; - for (int var78 = 0; var78 < var87; var78++) { - ItemStack var92 = (ItemStack)var44.l.get(var78); - float var94 = var77 + var78 * 12.0F; - Object[] var113 = new Object[]{null, null, null, null, var52, 84098110997245L}; - var113[3] = 0.6F; - var113[2] = var76; - var113[1] = var94; - var113[0] = var92; - MatrixStack.a_boolean_______________________________________(var113); + for (int itemIndex = 0; itemIndex < itemCount; itemIndex++) { + Render2D.drawItem((ItemStack)tagEntry.items.get(itemIndex), itemStartX + itemIndex * 12.0F, itemY, 0.6F, matrix); } - if (var38 && !var44.m.isEmpty()) { - int var88 = this.h.getValue() - ? (var43.getMainHandStack().isEmpty() ? 0 : 1) + (var43.getOffHandStack().isEmpty() ? 0 : 1) + if (showEnchants && !tagEntry.enchantLabels.isEmpty()) { + int armorStart = this.hands.getValue() + ? (player.getMainHandStack().isEmpty() ? 0 : 1) + (player.getOffHandStack().isEmpty() ? 0 : 1) : 0; - for (int var79 = var88; var79 < var87; var79++) { - float var80 = var77 + var79 * 12.0F; - float var81 = 0.0F; - ItemStack var82 = (ItemStack)var44.l.get(var79); + for (int armorIndex = armorStart; armorIndex < itemCount; armorIndex++) { + float labelX = itemStartX + armorIndex * 12.0F; + float labelOffsetY = 0.0F; + ItemStack itemStack = (ItemStack)tagEntry.items.get(armorIndex); - for (ItemLabel var84 : (Iterable)(var44.m)) { - if (var84.a == var82) { - var10002 = var84.b; - var101 = var76 - var32 * 0.5F - var81; - Color var111 = NameTagsUtil.t; - Object[] var126 = new Object[]{null, null, 85465053841486L}; - var126[1] = var49; - var126[0] = var111; - var10009 = new Object[]{null, null, null, null, null, a(var126), 49503024803380L}; - var10009[4] = 0.5F; - var10009[3] = var101; - var10009[2] = var80; - var10009[1] = var10002; - var10009[0] = var52; - var31.w(var10009); - var81 += var32 * 0.5F; + for (EnchantmentLabel enchantLabel : (Iterable)(tagEntry.enchantLabels)) { + if (enchantLabel.stack == itemStack) { + font.drawTextScaled(matrix, enchantLabel.text, labelX, itemY - lineHeight * 0.5F - labelOffsetY, 0.5F, scaleAlpha(HudStyle.SECONDARY_TEXT_COLOR, alpha)); + labelOffsetY += lineHeight * 0.5F; } } } @@ -433,129 +283,50 @@ public class NameTags extends Module { } @Subscribe - public void a(TickEvent22 var1) { - this.r = var1.a(new Object[0]); + public void onFrustumSetup(FrustumSetupEvent event) { + this.frustum = event.getFrustum(); } @Subscribe - public void a(EntityEvent5 var1) { - if (var1.a(new Object[0]) != null && var1.a(new Object[0]) != b.player && Prestige.i.a_boolean_(new Object[]{var1.a(new Object[0]), 54363558999103L})) { - var1.b(new Object[]{Text.empty()}); - var1.a_void_____(new Object[0]); + public void onLabelText(LabelTextEvent event) { + if (event.getEntity() != null && event.getEntity() != mc.player && Prestige.botFilter.isValidTarget(event.getEntity())) { + event.setText(Text.empty()); + event.cancel(); } } @Subscribe - public void a(EntityEvent6 var1) { - Entity var6 = var1.a(new Object[0]); - if (var6 != null) { - if (Prestige.i.a_boolean_(new Object[]{var6, 54363558999103L})) { - var1.a_void_____(new Object[0]); + public void onRenderLabel(RenderLabelEvent event) { + Entity entity = event.getEntity(); + if (entity != null) { + if (Prestige.botFilter.isValidTarget(entity)) { + event.cancel(); } } } - private static Color a(Object[] var0) { - Color var4 = (Color)var0[0]; - float var3 = (Float)var0[1]; - long var1 = (Long)var0[2]; - var1 = 101720657445394L ^ var1; - long var5 = var1 ^ 56555732162766L; - float var10000 = var4.getAlpha(); - Object[] var10006 = new Object[]{null, null, null, var5}; - var10006[2] = 1.0F; - var10006[1] = 0.0F; - var10006[0] = var3; - int var7 = Math.round(var10000 * MathHelper4.a(var10006)); - return new Color(var4.getRed(), var4.getGreen(), var4.getBlue(), var7); + private static Color scaleAlpha(Color color, float factor) { + float baseAlpha = color.getAlpha(); + int alpha = Math.round(baseAlpha * UiMath.clamp(factor, 0.0F, 1.0F)); + return new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); } - private List b_List______(Object[] var1) { - ItemStack var4 = (ItemStack)var1[0]; - Event.b(); - ArrayList var6 = new ArrayList(); - ItemEnchantmentsComponent var7 = EnchantmentHelper.getEnchantments(var4); - if (var7.isEmpty()) { - return var6; + private List getEnchantLabels(ItemStack stack) { + ArrayList labels = new ArrayList(); + ItemEnchantmentsComponent enchantComponent = EnchantmentHelper.getEnchantments(stack); + if (enchantComponent.isEmpty()) { + return labels; } else { - for (RegistryEntry var9 : var7.getEnchantments()) { - if (!var9.getKey().isEmpty()) { - String var10 = (String)var9.getKey().map(lpL365_0 -> ((net.minecraft.registry.RegistryKey)lpL365_0).getValue().getPath()).orElse("Unknown"); - var10 = var10.length() > 3 ? var10.substring(0, 3) : var10; - var10 = var10 + " " + var7.getLevel(var9); - var6.add(new ItemLabel(var4, var10)); + for (RegistryEntry enchantment : enchantComponent.getEnchantments()) { + if (!enchantment.getKey().isEmpty()) { + String labelText = (String)enchantment.getKey().map(key -> ((net.minecraft.registry.RegistryKey)key).getValue().getPath()).orElse("Unknown"); + labelText = labelText.length() > 3 ? labelText.substring(0, 3) : labelText; + labelText = labelText + " " + enchantComponent.getLevel(enchantment); + labels.add(new EnchantmentLabel(stack, labelText)); } } - return var6; - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + return labels; } } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/NoBounce.java b/src/main/java/dev/zprestige/prestige/module/visual/NoBounce.java index 228e26e..b92f2ae 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/NoBounce.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/NoBounce.java @@ -2,9 +2,7 @@ package dev.zprestige.prestige.module.visual; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.TickEvent11; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.ItemBobbingEvent; public class NoBounce extends Module { public NoBounce() { @@ -12,75 +10,7 @@ public class NoBounce extends Module { } @Subscribe - public void a(TickEvent11 var1) { - var1.a_void_____(new Object[0]); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onItemBobbing(ItemBobbingEvent event) { + event.cancel(); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/OreSimulation.java b/src/main/java/dev/zprestige/prestige/module/visual/OreSimulation.java index 56a8b7a..0ca1b85 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/OreSimulation.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/OreSimulation.java @@ -6,21 +6,15 @@ import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.TextSetting; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.LongData; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.BlockPosBlockEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent13; -import dev.zprestige.prestige.event.TickEvent22; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; +import dev.zprestige.prestige.data.DimensionChunkKey; +import dev.zprestige.prestige.event.BlockStateUpdateEvent; +import dev.zprestige.prestige.event.ChunkDataEvent; +import dev.zprestige.prestige.event.FrustumSetupEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.render.ShapeRenderer; import dev.zprestige.prestige.type.NotificationType; -import dev.zprestige.prestige.util.TpsTimer; -import dev.zprestige.prestige.world.OreColorUtil; -import dev.zprestige.prestige.world.OreSimulationHelper; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.world.OreDefinition; +import dev.zprestige.prestige.world.LoadedChunkIterator; import java.util.ArrayList; import java.util.BitSet; import java.util.Collections; @@ -58,82 +52,48 @@ public class OreSimulation extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private MultiSetting a; - private TextSetting c; - private IntSetting d; - public Map e = new ConcurrentHashMap(); - private long f; - private boolean i; - private Map g; - private RegistryKey h; - private ClientWorld j; - private Frustum k; + private MultiSetting ores; + private TextSetting seed; + private IntSetting chunks; + public Map chunkOres = new ConcurrentHashMap(); + private long parsedSeed; + private boolean seedLoaded; + private Map oresByBiome; + private RegistryKey cachedDimension; + private ClientWorld cachedWorld; + private Frustum frustum; @Subscribe - public void a(TickEvent27 var1) { - if (b.player != null && this.i && this.d(new Object[]{95949034677572L})) { - int var9 = b.player.getChunkPos().x; - int var10 = b.player.getChunkPos().z; - int var11 = (Integer)this.d.getValue(); + public void onRender3D(Render3DEvent event) { + if (mc.player != null && this.seedLoaded && this.ensureWorldReady()) { + int centerChunkX = mc.player.getChunkPos().x; + int centerChunkZ = mc.player.getChunkPos().z; + int radius = this.chunks.getValue(); - for (int var12 = 0; var12 <= var11; var12++) { - for (int var13 = -var12 + var9; var13 <= var12 + var9; var13++) { - int var10003 = var10 + var12 - var11; - Object[] var10006 = new Object[]{null, null, null, 2776106951599L}; - var10006[2] = var10003; - var10006[1] = var13; - var10006[0] = var1; - this.j(var10006); + for (int ring = 0; ring <= radius; ring++) { + for (int chunkX = -ring + centerChunkX; chunkX <= ring + centerChunkX; chunkX++) { + this.renderChunk(event, chunkX, centerChunkZ + ring - radius); } - for (int var14 = -var12 + 1 + var9; var14 < var12 + var9; var14++) { - int var15 = var10 - var12 + var11 + 1; - Object[] var16 = new Object[]{null, null, null, 2776106951599L}; - var16[2] = var15; - var16[1] = var14; - var16[0] = var1; - this.j(var16); + for (int mirroredChunkX = -ring + 1 + centerChunkX; mirroredChunkX < ring + centerChunkX; mirroredChunkX++) { + this.renderChunk(event, mirroredChunkX, centerChunkZ - ring + radius + 1); } } } } - private void j(Object[] var1) { - TickEvent27 var5 = (TickEvent27)var1[0]; - int var2 = (Integer)var1[1]; - int var6 = (Integer)var1[2]; - long var3 = (Long)var1[3]; - var3 = 64714675753228L ^ var3; - long var7 = var3 ^ 92785305685805L; - long var9 = var3 ^ 21821788944969L; - if (this.k == null || this.k.isVisible(new Box(var2 << 4, -64.0, var6 << 4, (var2 << 4) + 16, 320.0, (var6 << 4) + 16))) { - ClientWorld var12 = b.world; - if (var12 != null) { - LongData var13 = new LongData(var12.getRegistryKey(), ChunkPos.toLong(var2, var6)); - if (this.e.containsKey(var13)) { - Map var14 = (Map)this.e.get(var13); + private void renderChunk(Render3DEvent event, int chunkX, int chunkZ) { + if (this.frustum == null || this.frustum.isVisible(new Box(chunkX << 4, -64.0, chunkZ << 4, (chunkX << 4) + 16, 320.0, (chunkZ << 4) + 16))) { + ClientWorld world = mc.world; + if (world != null) { + DimensionChunkKey chunkKey = new DimensionChunkKey(world.getRegistryKey(), ChunkPos.toLong(chunkX, chunkZ)); + if (this.chunkOres.containsKey(chunkKey)) { + Map oreMap = (Map)this.chunkOres.get(chunkKey); - for (Entry var16 : (Iterable)(var14.entrySet())) { - if (this.a.isSelected(new Object[]{((OreColorUtil)var16.getKey()).c, var9})) { - for (Vec3d var18 : (Iterable)((Set)var16.getValue())) { - MatrixCameraData var10000 = var5.b; - RenderHelper8 var10001 = var5.a; - float var10002 = (float)var18.x; - float var10003 = (float)var18.y; - float var10004 = (float)var18.z; - float var10005 = (float)(var18.x + 1.0); - float var10006 = (float)(var18.y + 1.0); - float var10007 = (float)(var18.z + 1.0); - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, ((OreColorUtil)var16.getKey()).k, var7}; - var10011[7] = var10007; - var10011[6] = var10006; - var10011[5] = var10005; - var10011[4] = var10004; - var10011[3] = var10003; - var10011[2] = var10002; - var10011[1] = var10001; - var10011[0] = var10000; - RenderState.g(var10011); + for (Entry entry : (Iterable)(oreMap.entrySet())) { + if (this.ores.isSelected(((OreDefinition)entry.getKey()).name)) { + for (Vec3d pos : (Iterable)((Set)entry.getValue())) { + ShapeRenderer.drawBoxOutline(event.context, event.renderer, (float)pos.x, (float)pos.y, (float)pos.z, (float)(pos.x + 1.0), (float)(pos.y + 1.0), (float)(pos.z + 1.0), ((OreDefinition)entry.getKey()).color); } } } @@ -143,20 +103,20 @@ public class OreSimulation extends Module { } @Subscribe - public void a(TickEvent22 var1) { - this.k = var1.a(new Object[0]); + public void onFrustumSetup(FrustumSetupEvent event) { + this.frustum = event.getFrustum(); } @Subscribe - public void a(BlockPosBlockEvent var1) { - if (!var1.a_class_2680(new Object[0]).isOpaque()) { - if (b.world != null) { - LongData var5 = new LongData(b.world.getRegistryKey(), ChunkPos.toLong(var1.a(new Object[0]))); - if (this.e.containsKey(var5)) { - Vec3d var6 = Vec3d.of(var1.a(new Object[0])); + public void onBlockStateUpdate(BlockStateUpdateEvent event) { + if (!event.getState().isOpaque()) { + if (mc.world != null) { + DimensionChunkKey chunkKey = new DimensionChunkKey(mc.world.getRegistryKey(), ChunkPos.toLong(event.getPos())); + if (this.chunkOres.containsKey(chunkKey)) { + Vec3d blockVec = Vec3d.of(event.getPos()); - for (Set var8 : (Iterable)(((Map)this.e.get(var5)).values())) { - var8.remove(var6); + for (Set positions : (Iterable)(((Map)this.chunkOres.get(chunkKey)).values())) { + positions.remove(blockVec); } } } @@ -164,104 +124,75 @@ public class OreSimulation extends Module { } @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 22594282158762L; - long var6 = var2 ^ 13444384898553L; - if (((String)this.c.getValue()).isEmpty()) { - b.player.sendMessage(Text.of("Please set a seed"), false); - this.toggle(new Object[]{var4}); + public void onEnable() { + if (this.seed.getValue().isEmpty()) { + mc.player.sendMessage(Text.of("Please set a seed"), false); + this.toggle(); } else { - this.l(new Object[]{var6}); + this.loadSeed(); } } @Override - public void onDisable(Object[] var1) { - this.e.clear(); - this.g = null; - this.h = null; - this.j = null; - this.i = false; + public void onDisable() { + this.chunkOres.clear(); + this.oresByBiome = null; + this.cachedDimension = null; + this.cachedWorld = null; + this.seedLoaded = false; } - private void k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 64714675753228L ^ var2; - long var4 = var2 ^ 128451297919236L; - if (b.player != null) { - for (Chunk var8 : (Iterable)(a(new Object[]{false}))) { - this.m(new Object[]{var8, var4}); + private void simulateLoadedChunks() { + if (mc.player != null) { + for (Chunk chunk : (Iterable)(getLoadedChunks(false))) { + this.simulateChunk(chunk); } } } - public static Iterable a(Object[] var0) { - boolean var1 = (Boolean)var0[0]; - return () -> new OreSimulationHelper(var1, 22514788653595L); + public static Iterable getLoadedChunks(boolean requireLoadedNeighbours) { + return () -> new LoadedChunkIterator(requireLoadedNeighbours); } - private void l(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 64714675753228L ^ var2; - long var4 = var2 ^ 23782784347996L; - long var6 = var2 ^ 32440197080247L; - - long var8; + private void loadSeed() { + long parsed; try { - var8 = Long.parseLong(((String)this.c.getValue()).toString()); - } catch (NumberFormatException var10) { - this.i = false; - this.e.clear(); - this.g = null; - this.h = null; - this.j = null; - TpsTimer var10000 = Prestige.v; - Object[] var10007 = new Object[]{null, null, null, NotificationType.ERROR, var4}; - var10007[2] = 6000L; - var10007[1] = "Invalid seed!"; - var10007[0] = "Ore Simulation"; - var10000.a(var10007); + parsed = Long.parseLong(this.seed.getValue().toString()); + } catch (NumberFormatException exception) { + this.seedLoaded = false; + this.chunkOres.clear(); + this.oresByBiome = null; + this.cachedDimension = null; + this.cachedWorld = null; + Prestige.notificationManager.addNotification("Ore Simulation", "Invalid seed!", 6000L, NotificationType.ERROR); return; } - this.f = var8; - this.i = true; - this.h = null; - this.j = null; - this.d(new Object[]{var6}); + this.parsedSeed = parsed; + this.seedLoaded = true; + this.cachedDimension = null; + this.cachedWorld = null; + this.ensureWorldReady(); } - private boolean d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 64714675753228L ^ var2; - long var4 = var2 ^ 38290697504492L; - long var6 = var2 ^ 5737900942308L; - long var8 = var2 ^ 56056860859111L; - long var10 = var2 ^ 53382997508982L; - Event.b(); - ClientWorld var13 = b.world; - if (this.i && var13 != null) { - RegistryKey var14 = var13.getRegistryKey(); - if (var13 == this.j && var14.equals(this.h) && this.g != null) { + private boolean ensureWorldReady() { + ClientWorld world = mc.world; + if (this.seedLoaded && world != null) { + RegistryKey dimension = world.getRegistryKey(); + if (world == this.cachedWorld && dimension.equals(this.cachedDimension) && this.oresByBiome != null) { return true; } else { - Map var15 = OreColorUtil.a(new Object[]{var14.getValue().getPath(), var4}); - if (var15 != null && !var15.isEmpty()) { - this.g = var15; - this.h = var14; - this.j = var13; - this.e.clear(); - this.k(new Object[]{var10}); + Map biomeOres = OreDefinition.getOresByBiome(dimension.getValue().getPath()); + if (biomeOres != null && !biomeOres.isEmpty()) { + this.oresByBiome = biomeOres; + this.cachedDimension = dimension; + this.cachedWorld = world; + this.chunkOres.clear(); + this.simulateLoadedChunks(); return true; } else { - TpsTimer var10000 = Prestige.v; - Object[] var10007 = new Object[]{null, null, null, NotificationType.ERROR, var8}; - var10007[2] = 6000L; - var10007[1] = "No ores registered for this dimension"; - var10007[0] = "Ore Simulation"; - var10000.a(var10007); - this.toggle(new Object[]{var6}); + Prestige.notificationManager.addNotification("Ore Simulation", "No ores registered for this dimension", 6000L, NotificationType.ERROR); + this.toggle(); return false; } } @@ -271,129 +202,97 @@ public class OreSimulation extends Module { } @Subscribe - public void a(TickEvent13 var1) { - if (this.d(new Object[]{95949034677572L})) { - this.m(new Object[]{var1.a(new Object[0]), 21018349512502L}); + public void onChunkData(ChunkDataEvent event) { + if (this.ensureWorldReady()) { + this.simulateChunk(event.getChunk()); } } - private void m(Object[] var1) { - Chunk var2 = (Chunk)var1[0]; - long var3 = (Long)var1[1]; - var3 = 64714675753228L ^ var3; - long var5 = var3 ^ 48101512546857L; - long var7 = var3 ^ 113981655001071L; - long var9 = var3 ^ 78945745916203L; - Event.b(); - ClientWorld var12 = b.world; - if (var12 != null && var12 == this.j && this.i && this.g != null && var12.getRegistryKey().equals(this.h)) { - ChunkPos var13 = var2.getPos(); - LongData var14 = new LongData(var12.getRegistryKey(), var13.toLong()); - if (!this.e.containsKey(var14)) { - HashSet var15 = new HashSet(); - ChunkPos.stream(var13, 1).forEach(lpL370_0 -> { - Event.b(); - Chunk var6 = var12.getChunk(((net.minecraft.util.math.ChunkPos)lpL370_0).x, ((net.minecraft.util.math.ChunkPos)lpL370_0).z, ChunkStatus.BIOMES, false); - if (var6 != null) { - for (ChunkSection var10 : var6.getSectionArray()) { - var10.getBiomeContainer().forEachValue(lpL371_0 -> var15.add(((net.minecraft.registry.entry.RegistryEntry)lpL371_0).getKey().get())); + private void simulateChunk(Chunk chunk) { + ClientWorld world = mc.world; + if (world != null && world == this.cachedWorld && this.seedLoaded && this.oresByBiome != null && world.getRegistryKey().equals(this.cachedDimension)) { + ChunkPos chunkPos = chunk.getPos(); + DimensionChunkKey chunkKey = new DimensionChunkKey(world.getRegistryKey(), chunkPos.toLong()); + if (!this.chunkOres.containsKey(chunkKey)) { + HashSet biomeKeys = new HashSet(); + ChunkPos.stream(chunkPos, 1).forEach(neighborPos -> { + Chunk neighborChunk = world.getChunk(neighborPos.x, neighborPos.z, ChunkStatus.BIOMES, false); + if (neighborChunk != null) { + for (ChunkSection section : neighborChunk.getSectionArray()) { + section.getBiomeContainer().forEachValue(biomeEntry -> biomeKeys.add(((net.minecraft.registry.entry.RegistryEntry)biomeEntry).getKey().get())); } } }); - Set var16 = (Set)var15.stream() - .flatMap(lpL369_0 -> this.b_List_______(new Object[]{((net.minecraft.registry.RegistryKey)lpL369_0), 120992536422161L}).stream()) + Set candidateOres = (Set)biomeKeys.stream() + .flatMap(biomeKey -> this.getOresForBiome(((net.minecraft.registry.RegistryKey)biomeKey)).stream()) .collect(Collectors.toSet()); - int var17 = var13.x << 4; - int var18 = var13.z << 4; - ChunkRandom var19 = new ChunkRandom(RandomProvider.XOROSHIRO.create(0L)); - long var20 = var19.setPopulationSeed(this.f, var17, var18); - HashMap var22 = new HashMap(); + int chunkBlockX = chunkPos.x << 4; + int chunkBlockZ = chunkPos.z << 4; + ChunkRandom random = new ChunkRandom(RandomProvider.XOROSHIRO.create(0L)); + long populationSeed = random.setPopulationSeed(this.parsedSeed, chunkBlockX, chunkBlockZ); + HashMap oresInChunk = new HashMap(); - for (OreColorUtil var24 : (Iterable)(var16)) { - HashSet var25 = new HashSet(); - var19.setDecoratorSeed(var20, var24.b, var24.a); - int var26 = var24.d.get(var19); + for (OreDefinition ore : (Iterable)(candidateOres)) { + HashSet positions = new HashSet(); + random.setDecoratorSeed(populationSeed, ore.index, ore.step); + int count = ore.count.get(random); - for (int var27 = 0; var27 < var26; var27++) { - if (var24.g == 1.0F || !(var19.nextFloat() >= 1.0F / var24.g)) { - int var28 = var19.nextInt(16) + var17; - int var29 = var19.nextInt(16) + var18; - int var30 = var24.e.get(var19, var24.f); - BlockPos var31 = new BlockPos(var28, var30, var29); - RegistryKey var32 = var2.getBiomeForNoiseGen( - BiomeCoords.fromBlock(var28), BiomeCoords.fromBlock(var30), BiomeCoords.fromBlock(var29) + for (int attempt = 0; attempt < count; attempt++) { + if (ore.rarity == 1.0F || !(random.nextFloat() >= 1.0F / ore.rarity)) { + int oreX = random.nextInt(16) + chunkBlockX; + int oreZ = random.nextInt(16) + chunkBlockZ; + int oreY = ore.heightProvider.get(random, ore.heightContext); + BlockPos origin = new BlockPos(oreX, oreY, oreZ); + RegistryKey originBiome = chunk.getBiomeForNoiseGen( + BiomeCoords.fromBlock(oreX), BiomeCoords.fromBlock(oreY), BiomeCoords.fromBlock(oreZ) ) .getKey() .get(); - if (this.b_List_______(new Object[]{var32, var9}).contains(var24)) { - if (var24.l) { - var25.addAll(this.c(new Object[]{var12, var19, var31, var24, var7})); + if (this.getOresForBiome(originBiome).contains(ore)) { + if (ore.scattered) { + positions.addAll(this.generateScatteredOre(world, random, origin, ore)); } else { - var25.addAll(this.a_ArrayList(new Object[]{var12, var19, var31, var24, var5})); + positions.addAll(this.generateVein(world, random, origin, ore)); } } } } - if (!var25.isEmpty()) { - var22.put(var24, var25); + if (!positions.isEmpty()) { + oresInChunk.put(ore, positions); } } - this.e.put(var14, var22); + this.chunkOres.put(chunkKey, oresInChunk); } } } - private List b_List_______(Object[] var1) { - RegistryKey var4 = (RegistryKey)var1[0]; - return this.g == null ? Collections.emptyList() : (List)this.g.getOrDefault(var4, Collections.emptyList()); + private List getOresForBiome(RegistryKey biome) { + return this.oresByBiome == null ? Collections.emptyList() : (List)this.oresByBiome.getOrDefault(biome, Collections.emptyList()); } - private ArrayList a_ArrayList(Object[] var1) { - ClientWorld var7 = (ClientWorld)var1[0]; - ChunkRandom var3 = (ChunkRandom)var1[1]; - BlockPos var2 = (BlockPos)var1[2]; - OreColorUtil var4 = (OreColorUtil)var1[3]; - long var5 = (Long)var1[4]; - var5 = 64714675753228L ^ var5; - long var8 = var5 ^ 6699754321079L; - Event.b(); - int var11 = var4.i; - float var12 = var3.nextFloat() * (float) Math.PI; - float var13 = var11 / 8.0F; - int var14 = MathHelper.ceil((var11 / 16.0F * 2.0F + 1.0F) / 2.0F); - double var15 = var2.getX() + Math.sin(var12) * var13; - double var17 = var2.getX() - Math.sin(var12) * var13; - double var19 = var2.getZ() + Math.cos(var12) * var13; - double var21 = var2.getZ() - Math.cos(var12) * var13; - double var23 = var2.getY() + var3.nextInt(3) - 2; - double var25 = var2.getY() + var3.nextInt(3) - 2; - int var27 = var2.getX() - MathHelper.ceil(var13) - var14; - int var28 = var2.getY() - 2 - var14; - int var29 = var2.getZ() - MathHelper.ceil(var13) - var14; - int var30 = 2 * (MathHelper.ceil(var13) + var14); - int var31 = 2 * (2 + var14); + private ArrayList generateVein(ClientWorld world, ChunkRandom random, BlockPos origin, OreDefinition ore) { + int veinSize = ore.size; + float angle = random.nextFloat() * (float) Math.PI; + float halfLength = veinSize / 8.0F; + int maxRadius = MathHelper.ceil((veinSize / 16.0F * 2.0F + 1.0F) / 2.0F); + double startX = origin.getX() + Math.sin(angle) * halfLength; + double endX = origin.getX() - Math.sin(angle) * halfLength; + double startZ = origin.getZ() + Math.cos(angle) * halfLength; + double endZ = origin.getZ() - Math.cos(angle) * halfLength; + double startY = origin.getY() + random.nextInt(3) - 2; + double endY = origin.getY() + random.nextInt(3) - 2; + int minX = origin.getX() - MathHelper.ceil(halfLength) - maxRadius; + int minY = origin.getY() - 2 - maxRadius; + int minZ = origin.getZ() - MathHelper.ceil(halfLength) - maxRadius; + int horizontalSize = 2 * (MathHelper.ceil(halfLength) + maxRadius); + int verticalSize = 2 * (2 + maxRadius); - for (int var32 = var27; var32 <= var27 + var30; var32++) { - for (int var33 = var29; var33 <= var29 + var30; var33++) { - if (var28 <= var7.getTopY(Type.MOTION_BLOCKING, var32, var33)) { - Object[] var10018 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, null, null, var4, var8}; - var10018[13] = var31; - var10018[12] = var30; - var10018[11] = var29; - var10018[10] = var28; - var10018[9] = var27; - var10018[8] = var25; - var10018[7] = var23; - var10018[6] = var21; - var10018[5] = var19; - var10018[4] = var17; - var10018[3] = var15; - var10018[2] = var11; - var10018[1] = var3; - var10018[0] = var7; - return this.b_ArrayList(var10018); + for (int columnX = minX; columnX <= minX + horizontalSize; columnX++) { + for (int columnZ = minZ; columnZ <= minZ + horizontalSize; columnZ++) { + if (minY <= world.getTopY(Type.MOTION_BLOCKING, columnX, columnZ)) { + return this.generateVeinPart(world, random, veinSize, startX, endX, startZ, endZ, startY, endY, minX, minY, minZ, horizontalSize, verticalSize, ore); } } } @@ -401,57 +300,38 @@ public class OreSimulation extends Module { return new ArrayList(); } - private ArrayList b_ArrayList(Object[] var1) { - ClientWorld var4 = (ClientWorld)var1[0]; - ChunkRandom var2 = (ChunkRandom)var1[1]; - int var24 = (Integer)var1[2]; - double var9 = (Double)var1[3]; - double var11 = (Double)var1[4]; - double var13 = (Double)var1[5]; - double var15 = (Double)var1[6]; - double var17 = (Double)var1[7]; - double var19 = (Double)var1[8]; - int var21 = (Integer)var1[9]; - int var3 = (Integer)var1[10]; - int var6 = (Integer)var1[11]; - int var8 = (Integer)var1[12]; - int var5 = (Integer)var1[13]; - OreColorUtil var7 = (OreColorUtil)var1[14]; - long var22 = (Long)var1[15]; - var22 = 64714675753228L ^ var22; - long var25 = var22 ^ 14942108637690L; - BitSet var28 = new BitSet(var8 * var5 * var8); - Mutable var29 = new Mutable(); - double[] var30 = new double[var24 * 4]; - Event.b(); - ArrayList var31 = new ArrayList(); + private ArrayList generateVeinPart(ClientWorld world, ChunkRandom random, int veinSize, double startX, double endX, double startZ, double endZ, double startY, double endY, int minX, int minY, int minZ, int horizontalSize, int verticalSize, OreDefinition ore) { + BitSet visited = new BitSet(horizontalSize * verticalSize * horizontalSize); + Mutable mutablePos = new Mutable(); + double[] spheres = new double[veinSize * 4]; + ArrayList positions = new ArrayList(); - for (int var32 = 0; var32 < var24; var32++) { - float var41 = (float)var32 / var24; - double var33 = MathHelper.lerp((double)var41, var9, var11); - double var35 = MathHelper.lerp((double)var41, var17, var19); - double var37 = MathHelper.lerp((double)var41, var13, var15); - double var39 = var2.nextDouble() * var24 / 16.0; - double var42 = ((MathHelper.sin((float) Math.PI * var41) + 1.0F) * var39 + 1.0) / 2.0; - var30[var32 * 4] = var33; - var30[var32 * 4 + 1] = var35; - var30[var32 * 4 + 2] = var37; - var30[var32 * 4 + 3] = var42; + for (int sphereIndex = 0; sphereIndex < veinSize; sphereIndex++) { + float progress = (float)sphereIndex / veinSize; + double sphereX = MathHelper.lerp((double)progress, startX, endX); + double sphereY = MathHelper.lerp((double)progress, startY, endY); + double sphereZ = MathHelper.lerp((double)progress, startZ, endZ); + double randomScale = random.nextDouble() * veinSize / 16.0; + double sphereRadius = ((MathHelper.sin((float) Math.PI * progress) + 1.0F) * randomScale + 1.0) / 2.0; + spheres[sphereIndex * 4] = sphereX; + spheres[sphereIndex * 4 + 1] = sphereY; + spheres[sphereIndex * 4 + 2] = sphereZ; + spheres[sphereIndex * 4 + 3] = sphereRadius; } - for (int var66 = 0; var66 < var24 - 1; var66++) { - if (!(var30[var66 * 4 + 3] <= 0.0)) { - for (int var72 = var66 + 1; var72 < var24; var72++) { - if (!(var30[var72 * 4 + 3] <= 0.0)) { - double var68 = var30[var66 * 4] - var30[var72 * 4]; - double var69 = var30[var66 * 4 + 1] - var30[var72 * 4 + 1]; - double var70 = var30[var66 * 4 + 2] - var30[var72 * 4 + 2]; - double var71 = var30[var66 * 4 + 3] - var30[var72 * 4 + 3]; - if (var71 * var71 > var68 * var68 + var69 * var69 + var70 * var70) { - if (var71 > 0.0) { - var30[var72 * 4 + 3] = -1.0; + for (int firstIndex = 0; firstIndex < veinSize - 1; firstIndex++) { + if (!(spheres[firstIndex * 4 + 3] <= 0.0)) { + for (int secondIndex = firstIndex + 1; secondIndex < veinSize; secondIndex++) { + if (!(spheres[secondIndex * 4 + 3] <= 0.0)) { + double deltaX = spheres[firstIndex * 4] - spheres[secondIndex * 4]; + double deltaY = spheres[firstIndex * 4 + 1] - spheres[secondIndex * 4 + 1]; + double deltaZ = spheres[firstIndex * 4 + 2] - spheres[secondIndex * 4 + 2]; + double deltaRadius = spheres[firstIndex * 4 + 3] - spheres[secondIndex * 4 + 3]; + if (deltaRadius * deltaRadius > deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ) { + if (deltaRadius > 0.0) { + spheres[secondIndex * 4 + 3] = -1.0; } else { - var30[var66 * 4 + 3] = -1.0; + spheres[firstIndex * 4 + 3] = -1.0; } } } @@ -459,36 +339,36 @@ public class OreSimulation extends Module { } } - for (int var67 = 0; var67 < var24; var67++) { - double var73 = var30[var67 * 4 + 3]; - if (!(var73 < 0.0)) { - double var43 = var30[var67 * 4]; - double var45 = var30[var67 * 4 + 1]; - double var47 = var30[var67 * 4 + 2]; - int var49 = Math.max(MathHelper.floor(var43 - var73), var21); - int var50 = Math.max(MathHelper.floor(var45 - var73), var3); - int var51 = Math.max(MathHelper.floor(var47 - var73), var6); - int var52 = Math.max(MathHelper.floor(var43 + var73), var49); - int var53 = Math.max(MathHelper.floor(var45 + var73), var50); - int var54 = Math.max(MathHelper.floor(var47 + var73), var51); + for (int index = 0; index < veinSize; index++) { + double radius = spheres[index * 4 + 3]; + if (!(radius < 0.0)) { + double centerX = spheres[index * 4]; + double centerY = spheres[index * 4 + 1]; + double centerZ = spheres[index * 4 + 2]; + int fromX = Math.max(MathHelper.floor(centerX - radius), minX); + int fromY = Math.max(MathHelper.floor(centerY - radius), minY); + int fromZ = Math.max(MathHelper.floor(centerZ - radius), minZ); + int toX = Math.max(MathHelper.floor(centerX + radius), fromX); + int toY = Math.max(MathHelper.floor(centerY + radius), fromY); + int toZ = Math.max(MathHelper.floor(centerZ + radius), fromZ); - for (int var55 = var49; var55 <= var52; var55++) { - double var56 = (var55 + 0.5 - var43) / var73; - if (var56 * var56 < 1.0) { - for (int var58 = var50; var58 <= var53; var58++) { - double var59 = (var58 + 0.5 - var45) / var73; - if (var56 * var56 + var59 * var59 < 1.0) { - for (int var61 = var51; var61 <= var54; var61++) { - double var62 = (var61 + 0.5 - var47) / var73; - if (var56 * var56 + var59 * var59 + var62 * var62 < 1.0) { - int var64 = var55 - var21 + (var58 - var3) * var8 + (var61 - var6) * var8 * var5; - if (!var28.get(var64)) { - var28.set(var64); - var29.set(var55, var58, var61); - if (var58 >= -64 - && var58 < 320 - && this.a_boolean___________________________________(new Object[]{var4, var29, var7, var2, var25})) { - var31.add(new Vec3d(var55, var58, var61)); + for (int blockX = fromX; blockX <= toX; blockX++) { + double normX = (blockX + 0.5 - centerX) / radius; + if (normX * normX < 1.0) { + for (int blockY = fromY; blockY <= toY; blockY++) { + double normY = (blockY + 0.5 - centerY) / radius; + if (normX * normX + normY * normY < 1.0) { + for (int blockZ = fromZ; blockZ <= toZ; blockZ++) { + double normZ = (blockZ + 0.5 - centerZ) / radius; + if (normX * normX + normY * normY + normZ * normZ < 1.0) { + int bitIndex = blockX - minX + (blockY - minY) * horizontalSize + (blockZ - minZ) * horizontalSize * verticalSize; + if (!visited.get(bitIndex)) { + visited.set(bitIndex); + mutablePos.set(blockX, blockY, blockZ); + if (blockY >= -64 + && blockY < 320 + && this.shouldPlaceOre(world, mutablePos, ore, random)) { + positions.add(new Vec3d(blockX, blockY, blockZ)); } } } @@ -500,29 +380,15 @@ public class OreSimulation extends Module { } } - return var31; + return positions; } - private boolean a_boolean___________________________________(Object[] var1) { - ClientWorld var2 = (ClientWorld)var1[0]; - BlockPos var5 = (BlockPos)var1[1]; - OreColorUtil var3 = (OreColorUtil)var1[2]; - ChunkRandom var4 = (ChunkRandom)var1[3]; - long var6 = (Long)var1[4]; - var6 = 64714675753228L ^ var6; - long var8 = var6 ^ 65468701798799L; - long var10 = var6 ^ 115423491876968L; - Event.b(); - BlockState var13 = var2.getBlockState(var5); + private boolean shouldPlaceOre(ClientWorld world, BlockPos pos, OreDefinition ore, ChunkRandom random) { + BlockState state = world.getBlockState(pos); - for (Target var15 : (Iterable)(var3.j)) { - boolean var16 = var13.isOf(var15.state.getBlock()) || var15.target.test(var13, var4); - if (var16) { - float var10002 = var3.h; - Object[] var10005 = new Object[]{null, null, var8}; - var10005[1] = var10002; - var10005[0] = var4; - if (this.e(var10005) || !this.f(new Object[]{var2, var5, var10})) { + for (Target target : (Iterable)(ore.targets)) { + if (state.isOf(target.state.getBlock()) || target.target.test(state, random)) { + if (this.shouldNotDiscard(random, ore.discardOnAirChance) || !this.isExposedToAir(world, pos)) { return true; } } @@ -531,26 +397,20 @@ public class OreSimulation extends Module { return false; } - private boolean e(Object[] var1) { - ChunkRandom var2 = (ChunkRandom)var1[0]; - float var5 = (Float)var1[1]; - if (var5 <= 0.0F) { + private boolean shouldNotDiscard(ChunkRandom random, float discardChance) { + if (discardChance <= 0.0F) { return true; } else { - return var5 >= 1.0F ? false : var2.nextFloat() >= var5; + return discardChance >= 1.0F ? false : random.nextFloat() >= discardChance; } } - private boolean f(Object[] var1) { - ClientWorld var4 = (ClientWorld)var1[0]; - BlockPos var5 = (BlockPos)var1[1]; - Direction[] var7 = Direction.values(); - int var8 = var7.length; - Event.b(); + private boolean isExposedToAir(ClientWorld world, BlockPos pos) { + Direction[] directions = Direction.values(); + int directionCount = directions.length; - for (int var9 = 0; var9 < var8; var9++) { - Direction var10 = var7[var9]; - if (var4.getBlockState(var5.offset(var10)).isAir()) { + for (int directionIndex = 0; directionIndex < directionCount; directionIndex++) { + if (world.getBlockState(pos.offset(directions[directionIndex])).isAir()) { return true; } } @@ -558,117 +418,24 @@ public class OreSimulation extends Module { return false; } - private ArrayList c(Object[] var1) { - ClientWorld var6 = (ClientWorld)var1[0]; - ChunkRandom var4 = (ChunkRandom)var1[1]; - BlockPos var5 = (BlockPos)var1[2]; - OreColorUtil var7 = (OreColorUtil)var1[3]; - long var2 = (Long)var1[4]; - var2 = 64714675753228L ^ var2; - long var8 = var2 ^ 81370436481930L; - long var10 = var2 ^ 137780163744135L; - Event.b(); - ArrayList var13 = new ArrayList(); - int var14 = var4.nextInt(var7.i + 1); + private ArrayList generateScatteredOre(ClientWorld world, ChunkRandom random, BlockPos origin, OreDefinition ore) { + ArrayList positions = new ArrayList(); + int attempts = random.nextInt(ore.size + 1); - for (int var15 = 0; var15 < var14; var15++) { - int var16 = Math.min(var15, 7); - Object[] var10005 = new Object[]{null, null, var8}; - var10005[1] = var16; - var10005[0] = var4; - int var17 = this.a_int_______________(var10005) + var5.getX(); - var10005 = new Object[]{null, null, var8}; - var10005[1] = var16; - var10005[0] = var4; - int var18 = this.a_int_______________(var10005) + var5.getY(); - var10005 = new Object[]{null, null, var8}; - var10005[1] = var16; - var10005[0] = var4; - int var19 = this.a_int_______________(var10005) + var5.getZ(); - BlockPos var20 = new BlockPos(var17, var18, var19); - if (this.a_boolean___________________________________(new Object[]{var6, var20, var7, var4, var10})) { - var13.add(new Vec3d(var17, var18, var19)); + for (int attempt = 0; attempt < attempts; attempt++) { + int spread = Math.min(attempt, 7); + int oreX = this.getSpread(random, spread) + origin.getX(); + int oreY = this.getSpread(random, spread) + origin.getY(); + int oreZ = this.getSpread(random, spread) + origin.getZ(); + if (this.shouldPlaceOre(world, new BlockPos(oreX, oreY, oreZ), ore, random)) { + positions.add(new Vec3d(oreX, oreY, oreZ)); } } - return var13; + return positions; } - private int a_int_______________(Object[] var1) { - ChunkRandom var2 = (ChunkRandom)var1[0]; - int var3 = (Integer)var1[1]; - return Math.round((var2.nextFloat() - var2.nextFloat()) * var3); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static NumberFormatException a(NumberFormatException var0) { - return var0; + private int getSpread(ChunkRandom random, int spread) { + return Math.round((random.nextFloat() - random.nextFloat()) * spread); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/PearlTrajectory.java b/src/main/java/dev/zprestige/prestige/module/visual/PearlTrajectory.java index 52ff38b..8ee39d5 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/PearlTrajectory.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/PearlTrajectory.java @@ -6,23 +6,18 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent25; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.math.PearlTrajectoryHelper; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render2DEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.math.PearlLandingMarker; +import dev.zprestige.prestige.render.MsdfFont; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -37,200 +32,145 @@ import net.minecraft.util.math.Vec3d; import org.joml.Matrix4f; public class PearlTrajectory extends Module { - private BoolSetting d; - private BoolSetting a; - private ColorSetting c; - private BoolSetting e; - private FloatSetting f; - private BoolSetting g; - private ColorSetting h; - private static final int i = 400; - private static final Identifier j = Identifier.of("minecraft", "textures/item/ender_pearl.png"); - private static FontRenderer k; - private Map l = new HashMap(); - private Map m = new HashMap(); - private Map n = new HashMap(); - private static final float p = 1.0F; + private BoolSetting renderLine; + private BoolSetting themeColor; + private ColorSetting lineColor; + private BoolSetting landingTag; + private FloatSetting tagScale; + private BoolSetting tagBackground; + private ColorSetting tagBgColor; + private static final Identifier PEARL_TEXTURE_ID = Identifier.of("minecraft", "textures/item/ender_pearl.png"); + private static GlTextureHandle pearlTexture; + private Map landingMarkers = new HashMap(); + private Map spawnTimes = new HashMap(); + private Map predictedPaths = new HashMap(); public PearlTrajectory() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.c - .setVisibility_ColorSetting(new Object[]{(Predicate)lpL376_0 -> (Boolean)this.d.getValue() && !(Boolean)this.a.getValue(), 119980880492450L}); - this.a.setVisibility_BoolSetting(new Object[]{(Predicate)lpL377_0 -> (Boolean)this.d.getValue(), 73196168581295L}); - this.g.setVisibility_BoolSetting(new Object[]{(Predicate)lpL374_0 -> (Boolean)this.e.getValue(), 73196168581295L}); - this.h - .setVisibility_ColorSetting(new Object[]{(Predicate)lpL373_0 -> (Boolean)this.e.getValue() && (Boolean)this.g.getValue(), 119980880492450L}); - this.f.setVisibility_FloatSetting(new Object[]{(Predicate)lpL375_0 -> (Boolean)this.e.getValue(), 35046756052036L}); + this.lineColor + .visibleWhen((Predicate)ignored -> this.renderLine.getValue() && !this.themeColor.getValue()); + this.themeColor.visibleWhen((Predicate)ignored -> this.renderLine.getValue()); + this.tagBackground.visibleWhen((Predicate)ignored -> this.landingTag.getValue()); + this.tagBgColor + .visibleWhen((Predicate)ignored -> this.landingTag.getValue() && this.tagBackground.getValue()); + this.tagScale.visibleWhen((Predicate)ignored -> this.landingTag.getValue()); } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null && b.player != null) { - this.n.clear(); + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { + this.predictedPaths.clear(); - for (Entity var8 : b.world.getEntities()) { - if (var8 instanceof EnderPearlEntity var9) { - this.n.put(var9.getId(), this.a_ArrayList_(new Object[]{var9, 96388204327615L})); + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EnderPearlEntity pearl) { + this.predictedPaths.put(pearl.getId(), this.simulatePearlPath(pearl)); } } } } @Subscribe - public void a(TickEvent27 var1) { - if (b.world != null && b.player != null) { - this.l.clear(); - long var11 = System.currentTimeMillis(); - HashSet var13 = new HashSet(); + public void onRender3D(Render3DEvent event) { + if (mc.world != null && mc.player != null) { + this.landingMarkers.clear(); + long now = System.currentTimeMillis(); + HashSet activePearlIds = new HashSet(); - for (Entity var15 : b.world.getEntities()) { - if (var15 instanceof EnderPearlEntity var16) { - int var17 = var16.getId(); - var13.add(var17); - this.m.putIfAbsent(var17, var11); - ArrayList var18 = (ArrayList)this.n.get(var17); - if (var18 == null) { - var18 = this.a_ArrayList_(new Object[]{var16, 96388204327615L}); - this.n.put(var17, var18); + for (Entity entity : mc.world.getEntities()) { + if (entity instanceof EnderPearlEntity pearl) { + int pearlId = pearl.getId(); + activePearlIds.add(pearlId); + this.spawnTimes.putIfAbsent(pearlId, now); + ArrayList path = (ArrayList)this.predictedPaths.get(pearlId); + if (path == null) { + path = this.simulatePearlPath(pearl); + this.predictedPaths.put(pearlId, path); } - if (var18.size() >= 2) { - float var19 = (var18.size() - 1) / 20.0F; - long var20 = var11 - (Long)this.m.get(var17); - float var22 = Math.min(1.0F, (float)var20 / 1000.0F); - float var23 = Math.min(1.0F, var19 / 1.0F); - float var24 = var22 * var23; - if ((Boolean)this.d.getValue() && var24 > 0.01F) { - Color var25 = this.a.getValue() ? MathHelper4.d(new Object[]{122780339483702L}) : (Color)this.c.getValue(); - int var26 = Math.max(0, Math.min(255, (int)(var25.getAlpha() * var24))); - Color var27 = new Color(var25.getRed(), var25.getGreen(), var25.getBlue(), var26); - RenderState.c(new Object[]{var1.b, var1.a, var18, var27, 78587127157390L}); + if (path.size() >= 2) { + float flightSeconds = (path.size() - 1) / 20.0F; + float alpha = Math.min(1.0F, (float)(now - (Long)this.spawnTimes.get(pearlId)) / 1000.0F) * Math.min(1.0F, flightSeconds / 1.0F); + if (this.renderLine.getValue() && alpha > 0.01F) { + Color baseColor = this.themeColor.getValue() ? UiMath.getAccentColor() : this.lineColor.getValue(); + int lineAlpha = Math.max(0, Math.min(255, (int)(baseColor.getAlpha() * alpha))); + Color fadedLineColor = new Color(baseColor.getRed(), baseColor.getGreen(), baseColor.getBlue(), lineAlpha); + ShapeRenderer.drawPath(event.context, event.renderer, path, fadedLineColor); } - Vec3d var28 = (Vec3d)var18.get(var18.size() - 1); - this.l.put(var17, new PearlTrajectoryHelper(var28, var19, var24)); + Vec3d landingPos = (Vec3d)path.get(path.size() - 1); + this.landingMarkers.put(pearlId, new PearlLandingMarker(landingPos, flightSeconds, alpha)); } } } - this.m.keySet().retainAll(var13); + this.spawnTimes.keySet().retainAll(activePearlIds); } } @Subscribe - public void a(TickEvent25 var1) { - if ((Boolean)this.e.getValue()) { - if (this.d(new Object[]{103087567018346L})) { - if (!this.l.isEmpty()) { - boolean var29 = (Boolean)this.g.getValue(); - Color var30 = var29 ? (Color)this.h.getValue() : null; - Font var31 = Prestige.c.a(new Object[]{1236438218049L}); - float var32 = var31.c_float___(new Object[]{78913221670390L}); - if (k == null) { - k = FontRenderer.d_FontRenderer(new Object[]{j, 15872041225672L}); + public void onRender2D(Render2DEvent event) { + if (this.landingTag.getValue()) { + if (this.canRenderOverlay()) { + if (!this.landingMarkers.isEmpty()) { + boolean showBackground = this.tagBackground.getValue(); + Color backgroundColor = showBackground ? this.tagBgColor.getValue() : null; + MsdfFont font = Prestige.fontManager.getDefaultFont(); + float lineHeight = font.getLineHeight(); + if (pearlTexture == null) { + pearlTexture = GlTextureHandle.wrapMinecraftTexture(PEARL_TEXTURE_ID); } - float var33 = 1.0F; - float var34 = 16.0F * var33; - float var35 = 3.0F; - float var36 = 0.5F; - float var37 = 4.0F; - float var38 = 3.0F; - float var39 = 5.0F; - Color var40 = new Color(255, 255, 255, 50); + float iconSize = 16.0F * 1.0F; + float spacing = 3.0F; + float dividerThickness = 0.5F; + float paddingX = 4.0F; + float paddingY = 3.0F; + float cornerRadius = 5.0F; + Color dividerColor = new Color(255, 255, 255, 50); - for (PearlTrajectoryHelper var42 : (Iterable)(this.l.values())) { - if (!(var42.c <= 0.01F)) { - Vec3d var43 = MatrixStack.a_class_243_______________(new Object[]{var42.a.add(0.0, 0.6, 0.0), 73023576373275L}); - if (!(var43.z < 0.0) && !(var43.z >= 1.0)) { - String var44 = String.format("%.1fs", var42.b); - float var45 = (Float)this.f.getValue(); - float var46 = var31.a_float______________(new Object[]{var44, 47859522476307L}); - float var47 = Math.max(var34, var46); - float var48 = var34 + var35 + var36 + var35 + var32; - float var49 = var47 + 2.0F * var37; - float var50 = var48 + 2.0F * var38; - float var51 = (float)var43.x / var45; - float var52 = (float)var43.y / var45; - Matrix4f var53 = new Matrix4f().scale(var45, var45, var45); - float var54 = var51 - var49 / 2.0F; - float var55 = var52 - var50 / 2.0F; - float var56 = var42.c; - Color var10000; - if (var30 == null) { - var10000 = null; + for (PearlLandingMarker marker : (Iterable)(this.landingMarkers.values())) { + if (!(marker.alpha <= 0.01F)) { + Vec3d screenPos = Render2D.worldToScreen(marker.landingPos.add(0.0, 0.6, 0.0)); + if (!(screenPos.z < 0.0) && !(screenPos.z >= 1.0)) { + String timeText = String.format("%.1fs", marker.flightSeconds); + float scale = this.tagScale.getValue(); + float textWidth = font.getTextWidth(timeText); + float contentWidth = Math.max(iconSize, textWidth); + float contentHeight = iconSize + spacing + dividerThickness + spacing + lineHeight; + float panelWidth = contentWidth + 2.0F * paddingX; + float panelHeight = contentHeight + 2.0F * paddingY; + float centerX = (float)screenPos.x / scale; + float centerY = (float)screenPos.y / scale; + Matrix4f matrix = new Matrix4f().scale(scale, scale, scale); + float panelX = centerX - panelWidth / 2.0F; + float panelY = centerY - panelHeight / 2.0F; + float alpha = marker.alpha; + Color fadedBackground; + if (backgroundColor == null) { + fadedBackground = null; } else { - Object[] var10004 = new Object[]{null, null, 125804553652472L}; - var10004[1] = var56; - var10004[0] = var30; - var10000 = a(var10004); + fadedBackground = scaleAlpha(backgroundColor, alpha); } - Color var57 = var10000; - Object[] var70 = new Object[]{null, null, 125804553652472L}; - var70[1] = var56; - var70[0] = var40; - Color var58 = a(var70); - Color var59 = new Color(255, 255, 255, (int)(255.0F * var56)); - if (var29) { - if (var56 > 0.3F) { - RenderHelper8 var67 = var1.a; - MatrixCameraData var10001 = var1.b; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, 35553070502242L}; - var10011[8] = var39; - var10011[7] = 5; - var10011[6] = var50; - var10011[5] = var49; - var10011[4] = var55; - var10011[3] = var54; - var10011[2] = var53; - var10011[1] = var10001; - var10011[0] = var67; - RenderTarget.e(var10011); + Color panelColor = fadedBackground; + Color fadedDivider = scaleAlpha(dividerColor, alpha); + Color textColor = new Color(255, 255, 255, (int)(255.0F * alpha)); + if (showBackground) { + if (alpha > 0.3F) { + BlurredRoundedRectShader.drawBlurredRect(event.renderer, event.context, matrix, panelX, panelY, panelWidth, panelHeight, 5, cornerRadius); } - RenderHelper8 var68 = var1.a; - MatrixCameraData var69 = var1.b; - Object[] var73 = new Object[]{null, null, null, null, null, null, null, null, null, 16042616216793L}; - var73[8] = var39; - var73[7] = var57; - var73[6] = var50; - var73[5] = var49; - var73[4] = var55; - var73[3] = var54; - var73[2] = var53; - var73[1] = var69; - var73[0] = var68; - RoundedPosColorShader.c(var73); + RoundedRectShader.drawRoundedRect(event.renderer, event.context, matrix, panelX, panelY, panelWidth, panelHeight, panelColor, cornerRadius); } - float var60 = var51 - var34 / 2.0F; - float var61 = var55 + var38; - Object[] var10009 = new Object[]{null, null, null, null, var53, k, var59, 73467207830142L}; - var10009[3] = var34; - var10009[2] = var34; - var10009[1] = var61; - var10009[0] = var60; - MatrixStack.v(var10009); - float var62 = var54 + var37; - float var63 = var54 + var49 - var37; - float var64 = var61 + var34 + var35; - float var71 = var64 + var36; - Object[] var10008 = new Object[]{null, null, null, null, null, var58, 43912076835818L}; - var10008[4] = var71; - var10008[3] = var63; - var10008[2] = var64; - var10008[1] = var62; - var10008[0] = var53; - RenderState.l(var10008); - float var65 = var51 - var46 / 2.0F; - float var66 = var64 + var36 + var35; - var10008 = new Object[]{null, null, null, null, var59, 36494305523424L}; - var10008[3] = var66; - var10008[2] = var65; - var10008[1] = var44; - var10008[0] = var53; - var31.v(var10008); + float iconX = centerX - iconSize / 2.0F; + float iconY = panelY + paddingY; + Render2D.drawTexture(iconX, iconY, iconSize, iconSize, matrix, pearlTexture, textColor); + float dividerLeft = panelX + paddingX; + float dividerRight = panelX + panelWidth - paddingX; + float dividerY = iconY + iconSize + spacing; + ShapeRenderer.drawRect(matrix, dividerLeft, dividerY, dividerRight, dividerY + dividerThickness, fadedDivider); + font.drawText(matrix, timeText, centerX - textWidth / 2.0F, dividerY + dividerThickness + spacing, textColor); } } } @@ -239,108 +179,33 @@ public class PearlTrajectory extends Module { } } - private static Color a(Object[] var0) { - Color var3 = (Color)var0[0]; - float var4 = (Float)var0[1]; - int var5 = Math.max(0, Math.min(255, (int)(var3.getAlpha() * var4))); - return new Color(var3.getRed(), var3.getGreen(), var3.getBlue(), var5); + private static Color scaleAlpha(Color color, float factor) { + int alpha = Math.max(0, Math.min(255, (int)(color.getAlpha() * factor))); + return new Color(color.getRed(), color.getGreen(), color.getBlue(), alpha); } - private ArrayList a_ArrayList_(Object[] var1) { - EnderPearlEntity var2 = (EnderPearlEntity)var1[0]; - long var3 = (Long)var1[1]; - var3 = 85817529300934L ^ var3; - long var5 = var3 ^ 110538259599995L; - Event.b(); - ArrayList var8 = new ArrayList(); - dev.zprestige.prestige.combat.PearlTrajectoryHelper var9 = new dev.zprestige.prestige.combat.PearlTrajectoryHelper( - b.world, b.player, Items.ENDER_PEARL.getDefaultStack(), var5 + private ArrayList simulatePearlPath(EnderPearlEntity pearl) { + ArrayList points = new ArrayList(); + dev.zprestige.prestige.combat.PearlTrajectorySimulatedPearl simulated = new dev.zprestige.prestige.combat.PearlTrajectorySimulatedPearl( + mc.world, mc.player, Items.ENDER_PEARL.getDefaultStack() ); - var9.setPosition(var2.getX(), var2.getY(), var2.getZ()); - var9.setVelocity(var2.getVelocity()); - int var10 = 0; + simulated.setPosition(pearl.getX(), pearl.getY(), pearl.getZ()); + simulated.setVelocity(pearl.getVelocity()); + int steps = 0; - while (!var9.a && var10++ < 400) { - var8.add(new Vec3d(var9.getX(), var9.getY(), var9.getZ())); - var9.tick(); + while (!simulated.landed && steps++ < 400) { + points.add(new Vec3d(simulated.getX(), simulated.getY(), simulated.getZ())); + simulated.tick(); } - if (var9.a) { - var8.add(new Vec3d(var9.getX(), var9.getY(), var9.getZ())); + if (simulated.landed) { + points.add(new Vec3d(simulated.getX(), simulated.getY(), simulated.getZ())); } - return var8; + return points; } - private boolean d(Object[] var1) { - return b.currentScreen == null || b.currentScreen instanceof ChatScreen; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private boolean canRenderOverlay() { + return mc.currentScreen == null || mc.currentScreen instanceof ChatScreen; } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/RenderOptimizer.java b/src/main/java/dev/zprestige/prestige/module/visual/RenderOptimizer.java index 1ae3e98..0c4d091 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/RenderOptimizer.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/RenderOptimizer.java @@ -3,170 +3,100 @@ package dev.zprestige.prestige.module.visual; import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.TickEvent; -import dev.zprestige.prestige.event.TickEvent18; -import dev.zprestige.prestige.event.TickEvent2; -import dev.zprestige.prestige.event.TickEvent20; -import dev.zprestige.prestige.event.TickEvent21; -import dev.zprestige.prestige.event.TickEvent23; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.event.TickEvent26; -import dev.zprestige.prestige.event.TickEvent31; -import dev.zprestige.prestige.event.TickEvent8; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.FireOverlayEvent; +import dev.zprestige.prestige.event.LoadingScreenEvent; +import dev.zprestige.prestige.event.FullBrightEvent; +import dev.zprestige.prestige.event.HurtCamEvent; +import dev.zprestige.prestige.event.AddParticleEvent; +import dev.zprestige.prestige.event.RainGradientEvent; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.event.OverlayMessageEvent; +import dev.zprestige.prestige.event.RenderScoreboardEvent; +import dev.zprestige.prestige.event.ScreenBackgroundEvent; public class RenderOptimizer extends Module { public RenderOptimizer() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private BoolSetting a; - private BoolSetting c; - private BoolSetting e; - private BoolSetting f; - private BoolSetting g; - private BoolSetting h; - private BoolSetting i; - private BoolSetting j; - private BoolSetting k; + private BoolSetting hurtCam; + private BoolSetting fire; + private BoolSetting particles; + private BoolSetting backgroundTint; + private BoolSetting fullBright; + private BoolSetting removeWeather; + private BoolSetting shortenLoadingScreen; + private BoolSetting noScoreboard; + private BoolSetting noTitle; + private BoolSetting noHotbarText; @Subscribe - public void a(TickEvent20 var1) { - if ((Boolean)this.d.getValue()) { - var1.a_void_____(new Object[0]); + public void onHurtCam(HurtCamEvent event) { + if (this.hurtCam.getValue()) { + event.cancel(); } } @Subscribe - public void a(TickEvent var1) { - if ((Boolean)this.a.getValue()) { - var1.a_void_____(new Object[0]); + public void onFireOverlay(FireOverlayEvent event) { + if (this.fire.getValue()) { + event.cancel(); } } @Subscribe - public void a(TickEvent21 var1) { - if ((Boolean)this.c.getValue()) { - var1.a_void_____(new Object[0]); + public void onAddParticle(AddParticleEvent event) { + if (this.particles.getValue()) { + event.cancel(); } } @Subscribe - public void a(TickEvent8 var1) { - if ((Boolean)this.e.getValue() && b.world != null) { - var1.a_void_____(new Object[0]); + public void onScreenBackground(ScreenBackgroundEvent event) { + if (this.backgroundTint.getValue() && mc.world != null) { + event.cancel(); } } @Subscribe - public void a(TickEvent2 var1) { - if ((Boolean)this.f.getValue()) { - var1.a_void_____(new Object[0]); + public void onFullBright(FullBrightEvent event) { + if (this.fullBright.getValue()) { + event.cancel(); } } @Subscribe - public void a(TickEvent23 var1) { - if ((Boolean)this.g.getValue()) { - var1.a_void_____(new Object[0]); + public void onRainGradient(RainGradientEvent event) { + if (this.removeWeather.getValue()) { + event.cancel(); } } @Subscribe - public void a(TickEvent18 var1) { - if ((Boolean)this.h.getValue()) { - var1.a_void_____(new Object[0]); + public void onLoadingScreen(LoadingScreenEvent event) { + if (this.shortenLoadingScreen.getValue()) { + event.cancel(); } } @Subscribe - public void a(TickEvent31 var1) { - if ((Boolean)this.i.getValue()) { - var1.a_void_____(new Object[0]); + public void onRenderScoreboard(RenderScoreboardEvent event) { + if (this.noScoreboard.getValue()) { + event.cancel(); } } @Subscribe - public void a(TickEvent24 var1) { - if ((Boolean)this.j.getValue()) { - b.inGameHud.clearTitle(); + public void onFrame(FrameEvent event) { + if (this.noTitle.getValue()) { + mc.inGameHud.clearTitle(); } } @Subscribe - public void a(TickEvent26 var1) { - if ((Boolean)this.k.getValue()) { - var1.a_void_____(new Object[0]); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public void onOverlayMessage(OverlayMessageEvent event) { + if (this.noHotbarText.getValue()) { + event.cancel(); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/ShieldRenderer.java b/src/main/java/dev/zprestige/prestige/module/visual/ShieldRenderer.java index 38e7203..a4226c3 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/ShieldRenderer.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/ShieldRenderer.java @@ -6,13 +6,9 @@ import dev.zprestige.prestige.EnumSetting; import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.BoolPositionEvent; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.LivingEvent; -import dev.zprestige.prestige.event.TickEvent19; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.ShieldRenderSettingsEvent; +import dev.zprestige.prestige.event.ShieldBreakEvent; +import dev.zprestige.prestige.event.ClientTickEvent; import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -25,123 +21,52 @@ public class ShieldRenderer extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - private BoolSetting a; - private EnumSetting c; - private FloatSetting e; - private FloatSetting f; - private FloatSetting g; - private FloatSetting h; - private FloatSetting i; - private FloatSetting j; - private ColorSetting k; - private ColorSetting l; - private static final Map m = new HashMap(); - private static final Map n = new HashMap(); - private static final long p = 5370769767999209572L; + private BoolSetting overlay; + private BoolSetting renderSelf; + private EnumSetting renderMode; + private FloatSetting xOffset; + private FloatSetting yOffset; + private FloatSetting zOffset; + private FloatSetting xScale; + private FloatSetting yScale; + private FloatSetting zScale; + private ColorSetting defaultColor; + private ColorSetting brokenColor; + private static final Map blockingTicks = new HashMap(); + private static final Map brokenTicksRemaining = new HashMap(); + private static final long BROKEN_DURATION_TICKS = 5370769767999209572L; @Subscribe - public void a(BoolPositionEvent var1) { - var1.b = this.isEnabled(); - var1.a = (Boolean)this.d.getValue(); - var1.d = new Vec3d(((Float)this.e.getValue()).floatValue(), ((Float)this.f.getValue()).floatValue(), ((Float)this.g.getValue()).floatValue()); - var1.e = new Vec3d(((Float)this.h.getValue()).floatValue(), ((Float)this.i.getValue()).floatValue(), ((Float)this.j.getValue()).floatValue()); - var1.c = (Boolean)this.a.getValue(); - var1.f = ((String)this.c.getValue()).toString(); - var1.g = (Color)this.k.getValue(); - var1.h = (Color)this.l.getValue(); + public void onShieldRenderSettings(ShieldRenderSettingsEvent event) { + event.enabled = this.isEnabled(); + event.overlay = this.overlay.getValue(); + event.offset = new Vec3d(this.xOffset.getValue().floatValue(), this.yOffset.getValue().floatValue(), this.zOffset.getValue().floatValue()); + event.scale = new Vec3d(this.xScale.getValue().floatValue(), this.yScale.getValue().floatValue(), this.zScale.getValue().floatValue()); + event.renderSelf = this.renderSelf.getValue(); + event.renderMode = this.renderMode.getValue().toString(); + event.defaultColor = this.defaultColor.getValue(); + event.brokenColor = this.brokenColor.getValue(); } @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - - for (PlayerEntity var6 : b.world.getPlayers()) { - UUID var7 = var6.getUuid(); - if (var6.isUsingItem() && var6.getStackInHand(var6.getActiveHand()).getItem() instanceof ShieldItem) { - m.put(var7, (Integer)m.getOrDefault(var7, 0) + 1); + public void onClientTick(ClientTickEvent event) { + for (PlayerEntity player : mc.world.getPlayers()) { + UUID uuid = player.getUuid(); + if (player.isUsingItem() && player.getStackInHand(player.getActiveHand()).getItem() instanceof ShieldItem) { + blockingTicks.put(uuid, (Integer)blockingTicks.getOrDefault(uuid, 0) + 1); } else { - m.remove(var7); + blockingTicks.remove(uuid); } } - n.entrySet().removeIf(lpL391_0 -> (Integer)((java.util.Map.Entry)lpL391_0).getValue() <= 1); - n.replaceAll((lpL390_0, lpL390_1) -> ((java.lang.Integer)lpL390_1) > 1 ? ((java.lang.Integer)lpL390_1) - 1 : ((java.lang.Integer)lpL390_1)); + brokenTicksRemaining.entrySet().removeIf(entry -> (Integer)((java.util.Map.Entry)entry).getValue() <= 1); + brokenTicksRemaining.replaceAll((playerId, ticksLeft) -> ((java.lang.Integer)ticksLeft) > 1 ? ((java.lang.Integer)ticksLeft) - 1 : ((java.lang.Integer)ticksLeft)); } @Subscribe - public void a(LivingEvent var1) { - Event.b(); - if (var1.a instanceof PlayerEntity var5) { - n.put(var5.getUuid(), (int)p); - } - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public void onShieldBreak(ShieldBreakEvent event) { + if (event.entity instanceof PlayerEntity player) { + brokenTicksRemaining.put(player.getUuid(), (int)BROKEN_DURATION_TICKS); } } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/StorageESP.java b/src/main/java/dev/zprestige/prestige/module/visual/StorageESP.java index aedd89a..cbf3ffc 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/StorageESP.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/StorageESP.java @@ -5,22 +5,20 @@ import dev.zprestige.prestige.ColorSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.data.IntData3; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.render.DrawMode; -import dev.zprestige.prestige.render.RenderContract5; -import dev.zprestige.prestige.render.RenderContract6; -import dev.zprestige.prestige.render.RenderUtil; -import dev.zprestige.prestige.render.StorageESPHelper; -import dev.zprestige.prestige.render.TextRenderer; +import dev.zprestige.prestige.data.StorageBlockMarker; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.render.DrawPipeline; +import dev.zprestige.prestige.render.RenderEvents; +import dev.zprestige.prestige.render.RenderCallback; +import dev.zprestige.prestige.render.RenderCore; +import dev.zprestige.prestige.render.StorageOutlineRenderer; +import dev.zprestige.prestige.render.MappedMeshBuilder; import dev.zprestige.prestige.type.GlPrimitive; -import dev.zprestige.prestige.world.WorldHelper3; -import dev.zprestige.prestige.world.WorldHelper4; +import dev.zprestige.prestige.world.ClientChunkManagerAccessor; +import dev.zprestige.prestige.world.ClientChunkMapAccessor; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; @@ -38,103 +36,96 @@ import net.minecraft.block.entity.HopperBlockEntity; import net.minecraft.block.entity.ShulkerBoxBlockEntity; import net.minecraft.block.entity.TrappedChestBlockEntity; import net.minecraft.client.gui.screen.ChatScreen; -import net.minecraft.client.world.ClientChunkManager; import net.minecraft.util.math.BlockPos; import net.minecraft.world.chunk.WorldChunk; import org.joml.Matrix4f; import org.joml.Vector3d; public class StorageESP extends Module { - private MultiSetting a; - private BoolSetting d; - private ColorSetting c; - private ColorSetting e; - private ColorSetting f; - private ColorSetting g; - private ColorSetting h; - private ColorSetting i; - private ColorSetting j; - private ColorSetting k; - private ColorSetting l; - private ColorSetting m; - private static final int n = 2; - private static final float o = 15.0F; - private static StorageESPHelper p; - private boolean q = false; - private List r = new ArrayList(); + private MultiSetting targets; + private BoolSetting fill; + private ColorSetting chestsColor; + private ColorSetting trappedChestsColor; + private ColorSetting enderChestsColor; + private ColorSetting shulkersColor; + private ColorSetting barrelsColor; + private ColorSetting hoppersColor; + private ColorSetting dispensersColor; + private ColorSetting droppersColor; + private ColorSetting furnacesColor; + private ColorSetting brewingStandsColor; + private static StorageOutlineRenderer outlineRenderer; + private boolean callbackRegistered = false; + private List markers = new ArrayList(); public StorageESP() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.i - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL325_0 -> this.a.isSelected(new Object[]{"Hoppers", 47850572908778L}), 119980880492450L} + this.hoppersColor + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Hoppers") ); - this.c - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL330_0 -> this.a.isSelected(new Object[]{"Chests", 47850572908778L}), 119980880492450L} + this.chestsColor + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Chests") ); - this.h - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL326_0 -> this.a.isSelected(new Object[]{"Barrels", 47850572908778L}), 119980880492450L} + this.barrelsColor + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Barrels") ); - this.m - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL321_0 -> this.a.isSelected(new Object[]{"Brewing Stands", 47850572908778L}), 119980880492450L} + this.brewingStandsColor + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Brewing Stands") ); - this.k - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL323_0 -> this.a.isSelected(new Object[]{"Droppers", 47850572908778L}), 119980880492450L} + this.droppersColor + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Droppers") ); - this.j - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL324_0 -> this.a.isSelected(new Object[]{"Dispensers", 47850572908778L}), 119980880492450L} + this.dispensersColor + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Dispensers") ); - this.l - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL322_0 -> this.a.isSelected(new Object[]{"Furnaces", 47850572908778L}), 119980880492450L} + this.furnacesColor + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Furnaces") ); - this.g - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL327_0 -> this.a.isSelected(new Object[]{"Shulker Boxes", 47850572908778L}), 119980880492450L} + this.shulkersColor + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Shulker Boxes") ); - this.e - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL329_0 -> this.a.isSelected(new Object[]{"Trapped Chests", 47850572908778L}), 119980880492450L} + this.trappedChestsColor + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Trapped Chests") ); - this.f - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL328_0 -> this.a.isSelected(new Object[]{"Ender Chests", 47850572908778L}), 119980880492450L} + this.enderChestsColor + .visibleWhen( + (Predicate)ignored -> this.targets.isSelected("Ender Chests") ); } @Override - public void onDisable(Object[] var1) { - this.r.clear(); + public void onDisable() { + this.markers.clear(); } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null && b.player != null) { - this.r.clear(); - ClientChunkManager var11 = b.world.getChunkManager(); - AtomicReferenceArray var12 = new WorldHelper4(new WorldHelper3(var11).a(new Object[]{30990328564204L})).a(new Object[]{48873265602176L}); + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { + this.markers.clear(); + AtomicReferenceArray loadedChunks = new ClientChunkMapAccessor(new ClientChunkManagerAccessor(mc.world.getChunkManager()).getChunkMap()).getChunks(); - for (int var13 = 0; var13 < var12.length(); var13++) { - WorldChunk var14 = (WorldChunk)var12.get(var13); - if (var14 != null) { - for (Entry var16 : var14.getBlockEntities().entrySet()) { - BlockEntity var17 = (BlockEntity)var16.getValue(); - if (var17 != null) { - Color var18 = this.a(new Object[]{var17, 125353077803274L}); - if (var18 != null) { - BlockPos var19 = (BlockPos)var16.getKey(); - if (var19 != null) { - int var20 = var18.getRGB(); - int var21 = var20 >> 16 & 0xFF; - int var22 = var20 >> 8 & 0xFF; - int var23 = var20 & 0xFF; - int var24 = 0xFF000000 | var23 << 16 | var22 << 8 | var21; - this.r.add(new IntData3(var19.getX(), var19.getY(), var19.getZ(), var24)); + for (int chunkIndex = 0; chunkIndex < loadedChunks.length(); chunkIndex++) { + WorldChunk chunk = (WorldChunk)loadedChunks.get(chunkIndex); + if (chunk != null) { + for (Entry entry : chunk.getBlockEntities().entrySet()) { + BlockEntity blockEntity = (BlockEntity)entry.getValue(); + if (blockEntity != null) { + Color color = this.getStorageColor(blockEntity); + if (color != null) { + BlockPos pos = (BlockPos)entry.getKey(); + if (pos != null) { + int rgb = color.getRGB(); + int abgrColor = 0xFF000000 | (rgb & 0xFF) << 16 | (rgb >> 8 & 0xFF) << 8 | (rgb >> 16 & 0xFF); + this.markers.add(new StorageBlockMarker(pos.getX(), pos.getY(), pos.getZ(), abgrColor)); } } } @@ -145,402 +136,95 @@ public class StorageESP extends Module { } @Override - public void onEnable(Object[] var1) { - if (!this.q) { - RenderContract5.c.register((RenderContract6)(lpL320_0, lpL320_1) -> { + public void onEnable() { + if (!this.callbackRegistered) { + RenderEvents.AFTER_HUD_RENDER.register((RenderCallback)(buffers, context) -> { if (this.isEnabled()) { - if (this.d(new Object[]{122305991367488L})) { - StorageESPHelper var12 = a_StorageESPHelper(new Object[]{122641494347933L}); - float var10003 = this.d.getValue() ? 0.3F : 0.0F; - Object[] var10006 = new Object[]{null, null, null, 46077004212060L}; - var10006[2] = var10003; - var10006[1] = 15.0F; - var10006[0] = 2; - var12.b(var10006); + if (this.canRenderOverlay()) { + getOutlineRenderer().renderOutline(2, 15.0F, this.fill.getValue() ? 0.3F : 0.0F); } } }); - this.q = true; + this.callbackRegistered = true; } } @Subscribe - public void a(TickEvent27 var1) { - if (b.world != null && b.player != null) { - if (this.d(new Object[]{122305991367488L})) { - StorageESPHelper var23 = a_StorageESPHelper(new Object[]{122641494347933L}); - DrawMode var24 = var23.a_DrawMode_(new Object[]{94040189489481L}); - TextRenderer var25 = var1.a.a(new Object[]{var24, 66081470011557L}); - Matrix4f var26 = new Matrix4f(); - boolean var27 = false; - var25.k(new Object[]{111161505170643L}); + public void onRender3D(Render3DEvent event) { + if (mc.world != null && mc.player != null) { + if (this.canRenderOverlay()) { + DrawPipeline maskPipeline = getOutlineRenderer().getMaskDrawMode(); + MappedMeshBuilder meshBuilder = event.renderer.getBuffer(maskPipeline); + Matrix4f matrix = new Matrix4f(); + boolean anyDrawn = false; + meshBuilder.beginShape(); - for (IntData3 var29 : (Iterable)(this.r)) { - int var30 = var29.b8(); - MatrixCameraData var10000 = var1.b; - double var10001 = var29.b5(); - double var10002 = var29.b6(); - double var10003 = var29.b7(); - Object[] var10006 = new Object[]{null, null, null, null, 121644458201375L}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var10000; - Vector3d var31 = RenderUtil.a_Vector3d(var10006); - var10000 = var1.b; - var10001 = var29.b5() + 1.0F; - var10002 = var29.b6() + 1.0F; - var10003 = var29.b7() + 1.0F; - var10006 = new Object[]{null, null, null, null, 121644458201375L}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var10000; - Vector3d var32 = RenderUtil.a_Vector3d(var10006); - float var33 = (float)var31.x; - float var34 = (float)var31.y; - float var35 = (float)var31.z; - float var36 = (float)var32.x; - float var37 = (float)var32.y; - float var38 = (float)var32.z; - Object[] var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var37; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var40 = var25.d_TextRenderer(var10007); - Object[] var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var41 = var40.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var37; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var42 = var41.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var43 = var42.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var37; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var44 = var43.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var45 = var44.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var37; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var46 = var45.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var47 = var46.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var34; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var48 = var47.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var49 = var48.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var34; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var50 = var49.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var51 = var50.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var34; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var52 = var51.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var53 = var52.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var34; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var54 = var53.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var55 = var54.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var34; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var56 = var55.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var57 = var56.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var34; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var58 = var57.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var59 = var58.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var37; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var60 = var59.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var61 = var60.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var37; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var62 = var61.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var63 = var62.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var34; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var64 = var63.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var65 = var64.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var37; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var66 = var65.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var67 = var66.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var37; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var68 = var67.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var69 = var68.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var34; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var70 = var69.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var71 = var70.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var34; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var72 = var71.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var73 = var72.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var34; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var74 = var73.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var75 = var74.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var37; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var76 = var75.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var77 = var76.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var37; - var10007[1] = var33; - var10007[0] = var26; - TextRenderer var78 = var77.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var79 = var78.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var34; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var80 = var79.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var81 = var80.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var35; - var10007[2] = var37; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var82 = var81.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var83 = var82.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var37; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var84 = var83.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - TextRenderer var85 = var84.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, 24356912433638L}; - var10007[3] = var38; - var10007[2] = var34; - var10007[1] = var36; - var10007[0] = var26; - TextRenderer var86 = var85.d_TextRenderer(var10007); - var10004 = new Object[]{null, 75189690902744L}; - var10004[0] = var30; - var86.e_TextRenderer(var10004); - var27 = true; + for (StorageBlockMarker marker : (Iterable)(this.markers)) { + int abgrColor = marker.abgrColor(); + CameraMatrices camera = event.context; + double worldX = marker.x(); + double worldY = marker.y(); + double worldZ = marker.z(); + Vector3d minCorner = RenderCore.toCameraRelative(camera, worldX, worldY, worldZ); + camera = event.context; + worldX = marker.x() + 1.0F; + worldY = marker.y() + 1.0F; + worldZ = marker.z() + 1.0F; + Vector3d maxCorner = RenderCore.toCameraRelative(camera, worldX, worldY, worldZ); + float minX = (float)minCorner.x; + float minY = (float)minCorner.y; + float minZ = (float)minCorner.z; + float maxX = (float)maxCorner.x; + float maxY = (float)maxCorner.y; + float maxZ = (float)maxCorner.z; + meshBuilder.appendTransformedPosition(matrix, minX, maxY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, maxY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, maxY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, maxY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, minY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, minY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, minY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, minY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, minY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, minY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, maxY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, maxY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, minY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, maxY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, maxY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, minY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, minY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, minY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, maxY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, minX, maxY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, minY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, maxY, minZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, maxY, maxZ).appendInt(abgrColor).appendTransformedPosition(matrix, maxX, minY, maxZ).appendInt(abgrColor); + anyDrawn = true; } - if (var27) { - ((TextRenderer)var25.i_WorldContract(new Object[]{GlPrimitive.QUADS, 3098493320255L})).h_TextRenderer(new Object[0]); + if (anyDrawn) { + ((MappedMeshBuilder)meshBuilder.generateIndices(GlPrimitive.QUADS)).clearBaseVertex(); } else { - var25.h_TextRenderer(new Object[0]); + meshBuilder.clearBaseVertex(); } } } } - private boolean d(Object[] var1) { - return b.currentScreen == null || b.currentScreen instanceof ChatScreen; + private boolean canRenderOverlay() { + return mc.currentScreen == null || mc.currentScreen instanceof ChatScreen; } - private Color a(Object[] var1) { - BlockEntity var4 = (BlockEntity)var1[0]; - long var2 = (Long)var1[1]; - var2 = 5434553841031L ^ var2; - long var5 = var2 ^ 102762619384935L; - if (var4 instanceof TrappedChestBlockEntity) { - return this.a.isSelected(new Object[]{"Trapped Chests", var5}) ? (Color)this.e.getValue() : null; - } else if (var4 instanceof ChestBlockEntity) { - return this.a.isSelected(new Object[]{"Chests", var5}) ? (Color)this.c.getValue() : null; - } else if (var4 instanceof EnderChestBlockEntity) { - return this.a.isSelected(new Object[]{"Ender Chests", var5}) ? (Color)this.f.getValue() : null; - } else if (var4 instanceof ShulkerBoxBlockEntity) { - return this.a.isSelected(new Object[]{"Shulker Boxes", var5}) ? (Color)this.g.getValue() : null; - } else if (var4 instanceof BarrelBlockEntity) { - return this.a.isSelected(new Object[]{"Barrels", var5}) ? (Color)this.h.getValue() : null; - } else if (var4 instanceof HopperBlockEntity) { - return this.a.isSelected(new Object[]{"Hoppers", var5}) ? (Color)this.i.getValue() : null; - } else if (var4 instanceof DropperBlockEntity) { - return this.a.isSelected(new Object[]{"Droppers", var5}) ? (Color)this.k.getValue() : null; - } else if (var4 instanceof DispenserBlockEntity) { - return this.a.isSelected(new Object[]{"Dispensers", var5}) ? (Color)this.j.getValue() : null; - } else if (var4 instanceof AbstractFurnaceBlockEntity) { - return this.a.isSelected(new Object[]{"Furnaces", var5}) ? (Color)this.l.getValue() : null; - } else if (var4 instanceof BrewingStandBlockEntity) { - return this.a.isSelected(new Object[]{"Brewing Stands", var5}) ? (Color)this.m.getValue() : null; + private Color getStorageColor(BlockEntity blockEntity) { + if (blockEntity instanceof TrappedChestBlockEntity) { + return this.targets.isSelected("Trapped Chests") ? this.trappedChestsColor.getValue() : null; + } else if (blockEntity instanceof ChestBlockEntity) { + return this.targets.isSelected("Chests") ? this.chestsColor.getValue() : null; + } else if (blockEntity instanceof EnderChestBlockEntity) { + return this.targets.isSelected("Ender Chests") ? this.enderChestsColor.getValue() : null; + } else if (blockEntity instanceof ShulkerBoxBlockEntity) { + return this.targets.isSelected("Shulker Boxes") ? this.shulkersColor.getValue() : null; + } else if (blockEntity instanceof BarrelBlockEntity) { + return this.targets.isSelected("Barrels") ? this.barrelsColor.getValue() : null; + } else if (blockEntity instanceof HopperBlockEntity) { + return this.targets.isSelected("Hoppers") ? this.hoppersColor.getValue() : null; + } else if (blockEntity instanceof DropperBlockEntity) { + return this.targets.isSelected("Droppers") ? this.droppersColor.getValue() : null; + } else if (blockEntity instanceof DispenserBlockEntity) { + return this.targets.isSelected("Dispensers") ? this.dispensersColor.getValue() : null; + } else if (blockEntity instanceof AbstractFurnaceBlockEntity) { + return this.targets.isSelected("Furnaces") ? this.furnacesColor.getValue() : null; + } else if (blockEntity instanceof BrewingStandBlockEntity) { + return this.targets.isSelected("Brewing Stands") ? this.brewingStandsColor.getValue() : null; } else { return null; } } - private static synchronized StorageESPHelper a_StorageESPHelper(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 5434553841031L ^ var1; - long var3 = var1 ^ 72456632945731L; - if (p == null) { - p = new StorageESPHelper(var3); + private static synchronized StorageOutlineRenderer getOutlineRenderer() { + if (outlineRenderer == null) { + outlineRenderer = new StorageOutlineRenderer(); } - return p; - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + return outlineRenderer; } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/TargetRenderer.java b/src/main/java/dev/zprestige/prestige/module/visual/TargetRenderer.java index d20b9c5..d3025f0 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/TargetRenderer.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/TargetRenderer.java @@ -4,19 +4,14 @@ import dev.zprestige.prestige.EnumSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderUtil; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.RenderCore; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import dev.zprestige.prestige.world.PositionUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.math.Vec3d; import org.joml.Matrix4f; @@ -28,407 +23,173 @@ public class TargetRenderer extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private EnumSetting a; - private FontRenderer b; - private FontRenderer c; - private static final float d = 850.0F; - private static final float e = 1100.0F; - private static final float f = 14.0F; - private float g; - private Vec3d h; - private float i; - private float j; - private float k = 0.0F; - private long l = System.currentTimeMillis(); - private long m = 0L; - private long n = 0L; - private boolean o = false; - private float p = 0.0F; + private EnumSetting mode; + private GlTextureHandle squareTexture; + private GlTextureHandle glowTexture; + private float fadeProgress; + private Vec3d smoothedPos; + private float targetWidth; + private float targetHeight; + private float spinAngle = 0.0F; + private long animationStartTime = System.currentTimeMillis(); + private long lastFrameTime = 0L; + private long transitionStartTime = 0L; + private boolean hadTarget = false; + private float transitionStartProgress = 0.0F; @Subscribe - public void a(TickEvent27 var1) { - Event.b(); - long var17 = System.currentTimeMillis(); - float var19 = this.m == 0L ? 0.0F : Math.min(0.1F, (float)(var17 - this.m) / 1000.0F); - this.m = var17; - this.k = (float)(var17 % 3600L) * 0.1F; - PlayerEntity var20 = Prestige.n.a(new Object[0]); - boolean var21 = var20 != null; - if (var21 != this.o) { - this.n = var17; - this.p = this.g; - this.o = var21; + public void onRender3D(Render3DEvent event) { + long now = System.currentTimeMillis(); + float deltaSeconds = this.lastFrameTime == 0L ? 0.0F : Math.min(0.1F, (float)(now - this.lastFrameTime) / 1000.0F); + this.lastFrameTime = now; + this.spinAngle = (float)(now % 3600L) * 0.1F; + PlayerEntity target = Prestige.targetTracker.getTarget(); + boolean hasTarget = target != null; + if (hasTarget != this.hadTarget) { + this.transitionStartTime = now; + this.transitionStartProgress = this.fadeProgress; + this.hadTarget = hasTarget; } - long var22 = var17 - this.n; - if (var21) { - float var24 = Math.min(1.0F, (float)var22 / 850.0F); - Object[] var10003 = new Object[]{null, 130206190942635L}; - var10003[0] = var24; - float var25 = b_float________________(var10003); - this.g = this.p + (1.0F - this.p) * var25; + long transitionElapsed = now - this.transitionStartTime; + if (hasTarget) { + float easedIn = smootherStep(Math.min(1.0F, (float)transitionElapsed / 850.0F)); + this.fadeProgress = this.transitionStartProgress + (1.0F - this.transitionStartProgress) * easedIn; } else { - float var28 = Math.min(1.0F, (float)var22 / 1100.0F); - Object[] var34 = new Object[]{null, 130206190942635L}; - var34[0] = var28; - float var31 = b_float________________(var34); - this.g = this.p * (1.0F - var31); + float easedOut = smootherStep(Math.min(1.0F, (float)transitionElapsed / 1100.0F)); + this.fadeProgress = this.transitionStartProgress * (1.0F - easedOut); } - float var10001 = this.g; - Object[] var10004 = new Object[]{null, 23951640555617L}; - var10004[0] = var10001; - this.g = c(var10004); - if (var20 != null) { - this.j = var20.getHeight(); - this.i = var20.getWidth(); - Vec3d var29 = PositionUtil.c(new Object[]{var20, 91425777529078L}); - float var32 = MatrixStack.a_float_______________(new Object[]{601921721859L}); - float var35 = (float)var29.x; - float var37 = (float)var20.getX(); - Object[] var10007 = new Object[]{null, null, var32}; - var10007[1] = var37; - var10007[0] = var35; - double var10002 = this.e(var10007); - float var38 = (float)var29.y; - float var10005 = (float)var20.getY(); - Object[] var10008 = new Object[]{null, null, var32}; - var10008[1] = var10005; - var10008[0] = var38; - double var36 = this.e(var10008) + this.j / 2.0F; - var10005 = (float)var29.z; - float var10006 = (float)var20.getZ(); - Object[] var10009 = new Object[]{null, null, var32}; - var10009[1] = var10006; - var10009[0] = var10005; - Vec3d var26 = new Vec3d(var10002, var36, this.e(var10009)); - if (this.h != null && !(this.h.distanceTo(var26) > 50.0)) { - float var27 = 1.0F - (float)Math.exp(-var19 * 14.0F); - this.h = new Vec3d(this.h.x + (var26.x - this.h.x) * var27, this.h.y + (var26.y - this.h.y) * var27, this.h.z + (var26.z - this.h.z) * var27); + this.fadeProgress = clamp01(this.fadeProgress); + if (target != null) { + this.targetHeight = target.getHeight(); + this.targetWidth = target.getWidth(); + Vec3d lastPos = PositionUtil.getLastPos(target); + float tickDelta = Render2D.getTickDelta(); + double interpolatedX = this.lerp((float)lastPos.x, (float)target.getX(), tickDelta); + double centerY = this.lerp((float)lastPos.y, (float)target.getY(), tickDelta) + this.targetHeight / 2.0F; + Vec3d targetCenter = new Vec3d(interpolatedX, centerY, this.lerp((float)lastPos.z, (float)target.getZ(), tickDelta)); + if (this.smoothedPos != null && !(this.smoothedPos.distanceTo(targetCenter) > 50.0)) { + float followFactor = 1.0F - (float)Math.exp(-deltaSeconds * 14.0F); + this.smoothedPos = new Vec3d(this.smoothedPos.x + (targetCenter.x - this.smoothedPos.x) * followFactor, this.smoothedPos.y + (targetCenter.y - this.smoothedPos.y) * followFactor, this.smoothedPos.z + (targetCenter.z - this.smoothedPos.z) * followFactor); } else { - this.h = var26; + this.smoothedPos = targetCenter; } } - if (!(this.g < 0.01F) && this.h != null && this.j != -1.0F) { - String var30 = (String)this.a.getValue(); - switch (var30) { + if (!(this.fadeProgress < 0.01F) && this.smoothedPos != null && this.targetHeight != -1.0F) { + switch (this.mode.getValue()) { case "Ghost": - this.j(new Object[]{var1, 73191366651491L}); + this.renderGhost(event); break; case "Square": - this.k(new Object[]{var1, 127351246602272L}); + this.renderSquare(event); } } else { - this.k = 0.0F; + this.spinAngle = 0.0F; } } - private static float b_float________________(Object[] var0) { - float var3 = (Float)var0[0]; - long var1 = (Long)var0[1]; - var1 = 32576321123276L ^ var1; - long var4 = var1 ^ 138553846184454L; - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var3; - var3 = c(var10003); - return var3 * var3 * var3 * (var3 * (var3 * 6.0F - 15.0F) + 10.0F); + private static float smootherStep(float progress) { + progress = clamp01(progress); + return progress * progress * progress * (progress * (progress * 6.0F - 15.0F) + 10.0F); } - private static float c(Object[] var0) { - float var3 = (Float)var0[0]; - return var3 < 0.0F ? 0.0F : (var3 > 1.0F ? 1.0F : var3); + private static float clamp01(float value) { + return value < 0.0F ? 0.0F : (value > 1.0F ? 1.0F : value); } - public void j(Object[] var1) { - TickEvent27 var2 = (TickEvent27)var1[0]; - long var3 = (Long)var1[1]; - var3 = 32576321123276L ^ var3; - long var5 = var3 ^ 28748280522648L; - long var7 = var3 ^ 54509508021424L; - long var9 = var3 ^ 111761811171581L; - if (this.h != null) { - if (this.c == null) { - this.c = TextureUtil.a(new Object[]{"assets/prestige/particles/glow.png", var5}); + public void renderGhost(Render3DEvent event) { + if (this.smoothedPos != null) { + if (this.glowTexture == null) { + this.glowTexture = TextureLoader.loadTexture("assets/prestige/particles/glow.png"); } - MatrixCameraData var10000 = var2.b; - double var10001 = this.h.x; - double var10002 = this.h.y; - double var10003 = this.h.z; - Object[] var10006 = new Object[]{null, null, null, null, var7}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var10000; - Vector3d var12 = RenderUtil.a_Vector3d(var10006); - Matrix4f var13 = new Matrix4f(); - var13.translate((float)var12.x, (float)var12.y, (float)var12.z); - Quaternionf var14 = new Quaternionf().identity(); - var14.rotateY(-var2.b.bC().getYaw() * (float) Math.PI / 180.0F); - var14.rotateX(var2.b.bC().getPitch() * (float) Math.PI / 180.0F); - var13.rotate(var14); - float var15 = (float)( - (float)(System.currentTimeMillis() - this.l) / 3000.0F + Math.sin((float)(System.currentTimeMillis() - this.l) / 2500.0F) / 10.0 + Vector3d cameraRelativePos = RenderCore.toCameraRelative(event.context, this.smoothedPos.x, this.smoothedPos.y, this.smoothedPos.z); + Matrix4f matrix = new Matrix4f(); + matrix.translate((float)cameraRelativePos.x, (float)cameraRelativePos.y, (float)cameraRelativePos.z); + Quaternionf billboardRotation = new Quaternionf().identity(); + billboardRotation.rotateY(-event.context.camera().getYaw() * (float) Math.PI / 180.0F); + billboardRotation.rotateX(event.context.camera().getPitch() * (float) Math.PI / 180.0F); + matrix.rotate(billboardRotation); + float orbitPhase = (float)( + (float)(System.currentTimeMillis() - this.animationStartTime) / 3000.0F + Math.sin((float)(System.currentTimeMillis() - this.animationStartTime) / 2500.0F) / 10.0 ); - float var16 = -0.05F; - float var17 = this.j / 4.0F; - boolean var18 = true; - Color var19 = (Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue(); - int var20 = var19.getRed(); - int var21 = var19.getGreen(); - int var22 = var19.getBlue(); + float sizeBias = -0.05F; + float ringY = this.targetHeight / 4.0F; + boolean invertFade = true; + Color menuColor = Prestige.moduleManager.getMenu().getMenuColor().getValue(); + int baseRed = menuColor.getRed(); + int baseGreen = menuColor.getGreen(); + int baseBlue = menuColor.getBlue(); - for (int var23 = 0; var23 < 4; var23++) { - float var24 = var15 * 360.0F; - float var25 = var24 + 150.0F; + for (int ring = 0; ring < 4; ring++) { + float startAngle = orbitPhase * 360.0F; + float endAngle = startAngle + 150.0F; - for (float var26 = var24; var26 < var24 + 100.0F; var26++) { - float var60 = var24 - 90.0F; - Object[] var10004 = new Object[]{null, null, var25}; - var10004[1] = var60; - var10004[0] = var26; - float var27 = d(var10004); - float var28 = this.i * this.g; - double var29 = Math.toRadians(var26); - double var31 = Math.sin(var29 * 1.5); - double var33 = Math.cos(var29); - double var35 = Math.sin(var29); - double var37 = var17 + var31 * 0.25; - float var39 = 0.15F * (Math.max(0.15F, var18 ? var27 : (1.0F - var27) * 1.5F) + 0.45F); - float var40 = var39 * (1.7F + (0.5F - var16) * 2.0F); - if (var18) { - var27 = 1.0F - var27; + for (float angle = startAngle; angle < startAngle + 100.0F; angle++) { + float arcProgress = inverseLerp(angle, startAngle - 90.0F, endAngle); + float radius = this.targetWidth * this.fadeProgress; + double angleRad = Math.toRadians(angle); + double wave = Math.sin(angleRad * 1.5); + double cosAngle = Math.cos(angleRad); + double sinAngle = Math.sin(angleRad); + double waveY = ringY + wave * 0.25; + float baseSize = (0.15F * (Math.max(0.15F, invertFade ? arcProgress : (1.0F - arcProgress) * 1.5F) + 0.45F)) * (1.7F + (0.5F - sizeBias) * 2.0F); + if (invertFade) { + arcProgress = 1.0F - arcProgress; } - float var41 = 5.0F; - float var42 = 1.0F - (float)Math.pow(var27, var41); - float var43 = var40 * var42 * this.g; - float var44 = 0.5F; - float var45 = 1.0F - (float)Math.pow(var27, var44); - float var46 = var40 * var45 * this.g; - float var47 = (float)(var33 * var28); - float var48 = (float)((var37 - 0.9F) * this.g); - float var49 = (float)(var35 * var28); - float var50 = Math.min(var46 * 2.5F, 1.0F); - int var51 = (int)(var20 * (1.0F - var50) + 255.0F * var50); - int var52 = (int)(var21 * (1.0F - var50) + 255.0F * var50); - int var53 = (int)(var22 * (1.0F - var50) + 255.0F * var50); - float var54 = var51 / 255.0F; - float var55 = var52 / 255.0F; - float var56 = var53 / 255.0F; - Color var57 = new Color(var54, var55, var56, var46); - RenderHelper8 var59 = var2.a; - MatrixCameraData var61 = var2.b; - FontRenderer var62 = this.c; - float var63 = var47 - var43 / 2.0F; - float var10005 = var48 - var43 / 2.0F; - float var10007 = var47 + var43 / 2.0F; - float var10008 = var48 + var43 / 2.0F; - Object[] var10018 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, var9}; - var10018[15] = true; - var10018[14] = 0.0F; - var10018[13] = var57; - var10018[12] = var57; - var10018[11] = var57; - var10018[10] = var57; - var10018[9] = var49; - var10018[8] = var10008; - var10018[7] = var10007; - var10018[6] = var49; - var10018[5] = var10005; - var10018[4] = var63; - var10018[3] = var62; - var10018[2] = var13; - var10018[1] = var61; - var10018[0] = var59; - RoundedTextureShader.o(var10018); + float quadSize = baseSize * (1.0F - (float)Math.pow(arcProgress, 5.0F)) * this.fadeProgress; + float alpha = baseSize * (1.0F - (float)Math.pow(arcProgress, 0.5F)) * this.fadeProgress; + float offsetX = (float)(cosAngle * radius); + float offsetY = (float)((waveY - 0.9F) * this.fadeProgress); + float offsetZ = (float)(sinAngle * radius); + float whiteBlend = Math.min(alpha * 2.5F, 1.0F); + int red = (int)(baseRed * (1.0F - whiteBlend) + 255.0F * whiteBlend); + int green = (int)(baseGreen * (1.0F - whiteBlend) + 255.0F * whiteBlend); + int blue = (int)(baseBlue * (1.0F - whiteBlend) + 255.0F * whiteBlend); + Color particleColor = new Color(red / 255.0F, green / 255.0F, blue / 255.0F, alpha); + RoundedTextureShader.drawWorldTextureGradient(event.renderer, event.context, matrix, this.glowTexture, offsetX - quadSize / 2.0F, offsetY - quadSize / 2.0F, offsetZ, offsetX + quadSize / 2.0F, offsetY + quadSize / 2.0F, offsetZ, particleColor, particleColor, particleColor, particleColor, 0.0F, true); } - var15 *= -1.35F; - var18 = !var18; - var17 += this.j / 4.0F; + orbitPhase *= -1.35F; + invertFade = !invertFade; + ringY += this.targetHeight / 4.0F; } } } - public void k(Object[] var1) { - TickEvent27 var2 = (TickEvent27)var1[0]; - long var3 = (Long)var1[1]; - var3 = 32576321123276L ^ var3; - long var5 = var3 ^ 47721645099483L; - long var7 = var3 ^ 897906434803L; - long var9 = var3 ^ 93355001628350L; - long var11 = var3 ^ 60121678075077L; - if (this.b == null) { - this.b = TextureUtil.a(new Object[]{"assets/prestige/icons/target.png", var5}); + public void renderSquare(Render3DEvent event) { + if (this.squareTexture == null) { + this.squareTexture = TextureLoader.loadTexture("assets/prestige/icons/target.png"); } - MatrixCameraData var10000 = var2.b; - double var10001 = this.h.x; - double var10002 = this.h.y; - double var10003 = this.h.z; - Object[] var10006 = new Object[]{null, null, null, null, var7}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var10000; - Vector3d var14 = RenderUtil.a_Vector3d(var10006); - Matrix4f var15 = new Matrix4f(); - var15.translate((float)var14.x, (float)var14.y, (float)var14.z); - Quaternionf var16 = new Quaternionf().identity(); - var16.rotateY(-var2.b.bC().getYaw() * (float) Math.PI / 180.0F); - var16.rotateX((float)(var2.b.bC().getPitch() * (float) Math.PI / 180.0F + Math.sin(this.k / 50.0F) / 4.0)); - var16.rotateZ((float)Math.toRadians(this.k)); - var15.rotate(var16); - float var17 = (this.j / 2.0F + 0.5F) * 80.0F / 100.0F * this.g * 0.85F; - float var18 = var17 / 2.0F; - int var25 = ((Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue()).brighter().getRGB(); - int var30 = ((Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue()).getRGB(); - float var34 = (float)(Math.sin(System.currentTimeMillis() * 0.001) * 0.5 + 0.5); - var10006 = new Object[]{null, null, null, var11}; - var10006[2] = var34; - var10006[1] = var30; - var10006[0] = var25; - Color var19 = this.a(var10006); - int var26 = ((Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue()).brighter().getRGB(); - int var31 = ((Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue()).getRGB(); - float var35 = (float)(Math.sin(System.currentTimeMillis() * 0.001 + 1.0) * 0.5 + 0.5); - var10006 = new Object[]{null, null, null, var11}; - var10006[2] = var35; - var10006[1] = var31; - var10006[0] = var26; - Color var20 = this.a(var10006); - int var27 = ((Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue()).brighter().getRGB(); - int var32 = ((Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue()).getRGB(); - float var36 = (float)(Math.sin(System.currentTimeMillis() * 0.001 + 2.0) * 0.5 + 0.5); - var10006 = new Object[]{null, null, null, var11}; - var10006[2] = var36; - var10006[1] = var32; - var10006[0] = var27; - Color var21 = this.a(var10006); - int var28 = ((Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue()).brighter().getRGB(); - int var33 = ((Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue()).getRGB(); - float var37 = (float)(Math.sin(System.currentTimeMillis() * 0.001 + 3.0) * 0.5 + 0.5); - var10006 = new Object[]{null, null, null, var11}; - var10006[2] = var37; - var10006[1] = var33; - var10006[0] = var28; - Color var22 = this.a(var10006); - RenderHelper8 var24 = var2.a; - MatrixCameraData var29 = var2.b; - FontRenderer var38 = this.b; - float var10004 = -var18; - float var10005 = -var18; - Object[] var10018 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, var9}; - var10018[15] = false; - var10018[14] = 0.0F; - var10018[13] = var22; - var10018[12] = var21; - var10018[11] = var20; - var10018[10] = var19; - var10018[9] = 0.0F; - var10018[8] = var18; - var10018[7] = var18; - var10018[6] = 0.0F; - var10018[5] = var10005; - var10018[4] = var10004; - var10018[3] = var38; - var10018[2] = var15; - var10018[1] = var29; - var10018[0] = var24; - RoundedTextureShader.o(var10018); + Vector3d cameraRelativePos = RenderCore.toCameraRelative(event.context, this.smoothedPos.x, this.smoothedPos.y, this.smoothedPos.z); + Matrix4f matrix = new Matrix4f(); + matrix.translate((float)cameraRelativePos.x, (float)cameraRelativePos.y, (float)cameraRelativePos.z); + Quaternionf rotation = new Quaternionf().identity(); + rotation.rotateY(-event.context.camera().getYaw() * (float) Math.PI / 180.0F); + rotation.rotateX((float)(event.context.camera().getPitch() * (float) Math.PI / 180.0F + Math.sin(this.spinAngle / 50.0F) / 4.0)); + rotation.rotateZ((float)Math.toRadians(this.spinAngle)); + matrix.rotate(rotation); + float halfSize = ((this.targetHeight / 2.0F + 0.5F) * 80.0F / 100.0F * this.fadeProgress * 0.85F) / 2.0F; + Color bottomLeftColor = this.interpolateColor(Prestige.moduleManager.getMenu().getMenuColor().getValue().brighter().getRGB(), Prestige.moduleManager.getMenu().getMenuColor().getValue().getRGB(), (float)(Math.sin(System.currentTimeMillis() * 0.001) * 0.5 + 0.5)); + Color bottomRightColor = this.interpolateColor(Prestige.moduleManager.getMenu().getMenuColor().getValue().brighter().getRGB(), Prestige.moduleManager.getMenu().getMenuColor().getValue().getRGB(), (float)(Math.sin(System.currentTimeMillis() * 0.001 + 1.0) * 0.5 + 0.5)); + Color topRightColor = this.interpolateColor(Prestige.moduleManager.getMenu().getMenuColor().getValue().brighter().getRGB(), Prestige.moduleManager.getMenu().getMenuColor().getValue().getRGB(), (float)(Math.sin(System.currentTimeMillis() * 0.001 + 2.0) * 0.5 + 0.5)); + Color topLeftColor = this.interpolateColor(Prestige.moduleManager.getMenu().getMenuColor().getValue().brighter().getRGB(), Prestige.moduleManager.getMenu().getMenuColor().getValue().getRGB(), (float)(Math.sin(System.currentTimeMillis() * 0.001 + 3.0) * 0.5 + 0.5)); + RoundedTextureShader.drawWorldTextureGradient(event.renderer, event.context, matrix, this.squareTexture, -halfSize, -halfSize, 0.0F, halfSize, halfSize, 0.0F, bottomLeftColor, bottomRightColor, topRightColor, topLeftColor, 0.0F, false); } - public static float d(Object[] var0) { - float var2 = (Float)var0[0]; - float var1 = (Float)var0[1]; - float var3 = (Float)var0[2]; - return (var2 - var1) / (var3 - var1); + public static float inverseLerp(float value, float start, float end) { + return (value - start) / (end - start); } - private float e(Object[] var1) { - float var3 = (Float)var1[0]; - float var4 = (Float)var1[1]; - float var2 = (Float)var1[2]; - return var3 + var2 * (var4 - var3); + private float lerp(float start, float end, float delta) { + return start + delta * (end - start); } - private Color a(Object[] var1) { - int var2 = (Integer)var1[0]; - int var3 = (Integer)var1[1]; - float var6 = (Float)var1[2]; - int var7 = (int)((var2 >> 16 & 0xFF) * (1.0F - var6) + (var3 >> 16 & 0xFF) * var6); - int var8 = (int)((var2 >> 8 & 0xFF) * (1.0F - var6) + (var3 >> 8 & 0xFF) * var6); - int var9 = (int)((var2 & 0xFF) * (1.0F - var6) + (var3 & 0xFF) * var6); - return new Color(var7 << 16 | var8 << 8 | var9); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private Color interpolateColor(int fromRgb, int toRgb, float progress) { + return new Color(((int)((fromRgb >> 16 & 0xFF) * (1.0F - progress) + (toRgb >> 16 & 0xFF) * progress)) << 16 | ((int)((fromRgb >> 8 & 0xFF) * (1.0F - progress) + (toRgb >> 8 & 0xFF) * progress)) << 8 | ((int)((fromRgb & 0xFF) * (1.0F - progress) + (toRgb & 0xFF) * progress))); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/TotemAnimation.java b/src/main/java/dev/zprestige/prestige/module/visual/TotemAnimation.java index a5a6806..5d7014c 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/TotemAnimation.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/TotemAnimation.java @@ -3,87 +3,17 @@ package dev.zprestige.prestige.module.visual; import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.IntEvent; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.FloatingItemTickEvent; public class TotemAnimation extends Module { public TotemAnimation() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private IntSetting a; + private IntSetting speed; @Subscribe - public void a(IntEvent var1) { - var1.b(new Object[]{(Integer)this.a.getValue()}); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void onFloatingItemTick(FloatingItemTickEvent event) { + event.setExtraTicks(this.speed.getValue()); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/Trails.java b/src/main/java/dev/zprestige/prestige/module/visual/Trails.java index 99aaf50..9782422 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/Trails.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/Trails.java @@ -7,22 +7,17 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.math.TrailsHelper; -import dev.zprestige.prestige.math.TrailsHelper2; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderUtil; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.math.TrailTracker; +import dev.zprestige.prestige.math.TrailMark; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.RenderCore; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -35,523 +30,225 @@ import org.joml.Matrix4f; import org.joml.Vector3d; public class Trails extends Module { - private BoolSetting d; - private EnumSetting a; - private IntSetting c; - private FloatSetting e; - private BoolSetting f; - private ColorSetting g; - private static FontRenderer h; - private static final int i = 4; - private Map j = new HashMap(); - private List k = new ArrayList(); + private BoolSetting selfOnly; + private EnumSetting mode; + private IntSetting duration; + private FloatSetting size; + private BoolSetting themeColor; + private ColorSetting color; + private static GlTextureHandle glowTexture; + private Map trackers = new HashMap(); + private List marks = new ArrayList(); public Trails() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.g.setVisibility_ColorSetting(new Object[]{(Predicate)lpL335_0 -> !(Boolean)this.f.getValue(), 119980880492450L}); + this.color.visibleWhen((Predicate)ignored -> !this.themeColor.getValue()); } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null && b.player != null) { - HashSet var7 = new HashSet(); - String var8 = (String)this.a.getValue(); + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { + HashSet seenIds = new HashSet(); + String currentMode = this.mode.getValue(); - double var9 = switch (var8) { + double minSpacing = switch (currentMode) { case "Particles" -> 0.25; case "Ring" -> 0.65; case "Footsteps" -> 0.75; default -> 0.5; }; - int var11 = (Integer)this.c.getValue(); + int lifetimeMs = this.duration.getValue(); - for (PlayerEntity var13 : b.world.getPlayers()) { - int var14 = var13.getId(); - var7.add(var14); - if ((!(Boolean)this.d.getValue() || var13 == b.player) && var13.isOnGround()) { - TrailsHelper var15 = (TrailsHelper)this.j.get(var14); - Vec3d var16 = new Vec3d(var13.getX(), var13.getY(), var13.getZ()); - if (var15 == null) { - var15 = new TrailsHelper(); - var15.a = var16; - this.j.put(var14, var15); + for (PlayerEntity player : mc.world.getPlayers()) { + int entityId = player.getId(); + seenIds.add(entityId); + if ((!this.selfOnly.getValue() || player == mc.player) && player.isOnGround()) { + TrailTracker tracker = (TrailTracker)this.trackers.get(entityId); + Vec3d currentPos = new Vec3d(player.getX(), player.getY(), player.getZ()); + if (tracker == null) { + tracker = new TrailTracker(); + tracker.lastPos = currentPos; + this.trackers.put(entityId, tracker); } else { - double var17 = var16.x - var15.a.x; - double var19 = var16.z - var15.a.z; - double var21 = Math.sqrt(var17 * var17 + var19 * var19); - if (!(var21 < var9)) { - float var23 = var13.getYaw(); - switch (var8) { + double deltaX = currentPos.x - tracker.lastPos.x; + double deltaZ = currentPos.z - tracker.lastPos.z; + if (!(Math.sqrt(deltaX * deltaX + deltaZ * deltaZ) < minSpacing)) { + float yaw = player.getYaw(); + switch (currentMode) { case "Footsteps": - boolean var38 = var15.b; - double var39 = Math.toRadians(var23); - double var40 = 0.18; - double var41 = Math.cos(var39) * var40 * (var38 ? -1 : 1); - double var33 = Math.sin(var39) * var40 * (var38 ? -1 : 1); - Vec3d var35 = new Vec3d(var16.x + var41, var16.y, var16.z + var33); - this.k.add(new TrailsHelper2(var35, var8, var11, var23, var38, null, 138117324316801L)); - var15.b = !var38; + boolean leftFoot = tracker.leftFoot; + double yawRadians = Math.toRadians(yaw); + double footOffset = 0.18; + double offsetX = Math.cos(yawRadians) * footOffset * (leftFoot ? -1 : 1); + double offsetZ = Math.sin(yawRadians) * footOffset * (leftFoot ? -1 : 1); + Vec3d footPos = new Vec3d(currentPos.x + offsetX, currentPos.y, currentPos.z + offsetZ); + this.marks.add(new TrailMark(footPos, currentMode, lifetimeMs, yaw, leftFoot, null)); + tracker.leftFoot = !leftFoot; break; case "Particles": - for (int var26 = 0; var26 < 4; var26++) { - double var27 = Math.random() * Math.PI * 2.0; - double var29 = 0.025 + Math.random() * 0.05; - Vec3d var31 = new Vec3d(Math.cos(var27) * var29, 0.05 + Math.random() * 0.05, Math.sin(var27) * var29); - this.k.add(new TrailsHelper2(var16, var8, var11, var23, false, var31, 138117324316801L)); + for (int particleIndex = 0; particleIndex < 4; particleIndex++) { + double angle = Math.random() * Math.PI * 2.0; + double horizontalSpeed = 0.025 + Math.random() * 0.05; + Vec3d velocity = new Vec3d(Math.cos(angle) * horizontalSpeed, 0.05 + Math.random() * 0.05, Math.sin(angle) * horizontalSpeed); + this.marks.add(new TrailMark(currentPos, currentMode, lifetimeMs, yaw, false, velocity)); } break; default: - this.k.add(new TrailsHelper2(var16, var8, var11, var23, false, null, 138117324316801L)); + this.marks.add(new TrailMark(currentPos, currentMode, lifetimeMs, yaw, false, null)); } - var15.a = var16; + tracker.lastPos = currentPos; } } } } - this.j.keySet().retainAll(var7); + this.trackers.keySet().retainAll(seenIds); } } @Subscribe - public void a(TickEvent27 var1) { - long var19 = System.currentTimeMillis(); - Event.b(); - this.k.removeIf(lpL334_0 -> var19 - ((dev.zprestige.prestige.math.TrailsHelper2)lpL334_0).b >= ((dev.zprestige.prestige.math.TrailsHelper2)lpL334_0).c); - if (!this.k.isEmpty()) { - Color var21 = this.f.getValue() ? MathHelper4.d(new Object[]{122780339483702L}) : (Color)this.g.getValue(); - Color var22 = var21.darker(); - Color var23 = var21.brighter(); - float var24 = (Float)this.e.getValue(); + public void onRender3D(Render3DEvent event) { + long now = System.currentTimeMillis(); + this.marks.removeIf(candidate -> now - ((dev.zprestige.prestige.math.TrailMark)candidate).spawnTime >= ((dev.zprestige.prestige.math.TrailMark)candidate).lifetimeMs); + if (!this.marks.isEmpty()) { + Color baseColor = this.themeColor.getValue() ? UiMath.getAccentColor() : this.color.getValue(); + Color darkColor = baseColor.darker(); + Color brightColor = baseColor.brighter(); + float sizeScale = this.size.getValue(); - for (TrailsHelper2 var26 : (Iterable)(this.k)) { - float var27 = (float)(var19 - var26.b) / var26.c; - if (!(var27 < 0.0F) && !(var27 > 1.0F)) { - Object[] var10004 = new Object[]{null, 28503932810326L}; - var10004[0] = var27; - float var28 = 1.0F - b_float_________________(var10004); - Color var29; - Color var30; - if (var26.d.equals("Footsteps")) { - var29 = var21; - var10004 = new Object[]{null, null, 49996634410410L}; - var10004[1] = 0.3F; - var10004[0] = var21; - var30 = b_Color___(var10004); + for (TrailMark mark : (Iterable)(this.marks)) { + float progress = (float)(now - mark.spawnTime) / mark.lifetimeMs; + if (!(progress < 0.0F) && !(progress > 1.0F)) { + float fadeAlpha = 1.0F - smootherStep(progress); + Color primaryColor; + Color secondaryColor; + if (mark.mode.equals("Footsteps")) { + primaryColor = baseColor; + secondaryColor = lightenColor(baseColor, 0.3F); } else { - float var10002 = var26.i; - Object[] var10005 = new Object[]{null, null, null, 89203639344671L}; - var10005[2] = var10002; - var10005[1] = var23; - var10005[0] = var22; - var29 = c_Color_(var10005); - var10005 = new Object[]{null, null, null, 89203639344671L}; - var10005[2] = 0.6F; - var10005[1] = var23; - var10005[0] = var29; - var30 = c_Color_(var10005); + primaryColor = blendColors(darkColor, brightColor, mark.colorBlend); + secondaryColor = blendColors(primaryColor, brightColor, 0.6F); } - String var31 = var26.d; - switch (var31) { + switch (mark.mode) { case "Footsteps": - Object[] var35 = new Object[]{null, null, null, null, null, null, 41713175379068L}; - var35[5] = var24; - var35[4] = var28; - var35[3] = var30; - var35[2] = var29; - var35[1] = var26; - var35[0] = var1; - this.j(var35); + this.renderFootstep(event, mark, primaryColor, secondaryColor, fadeAlpha, sizeScale); break; case "Ring": - Object[] var10010 = new Object[]{null, null, null, null, null, null, null, 29073417628285L}; - var10010[6] = var27; - var10010[5] = var24; - var10010[4] = var28; - var10010[3] = var30; - var10010[2] = var29; - var10010[1] = var26; - var10010[0] = var1; - this.k(var10010); + this.renderRing(event, mark, primaryColor, secondaryColor, fadeAlpha, sizeScale, progress); break; case "Particles": - Object[] var10009 = new Object[]{null, null, null, null, null, null, 52348321139318L}; - var10009[5] = var27; - var10009[4] = var24; - var10009[3] = var28; - var10009[2] = var29; - var10009[1] = var26; - var10009[0] = var1; - this.l(var10009); + this.renderParticle(event, mark, primaryColor, fadeAlpha, sizeScale, progress); } } } } } - private void j(Object[] var1) { - TickEvent27 var3 = (TickEvent27)var1[0]; - TrailsHelper2 var4 = (TrailsHelper2)var1[1]; - Color var2 = (Color)var1[2]; - Color var6 = (Color)var1[3]; - float var5 = (Float)var1[4]; - float var7 = (Float)var1[5]; - long var8 = (Long)var1[6]; - var8 = 3784339827904L ^ var8; - long var10 = var8 ^ 78557536447428L; - long var12 = var8 ^ 51590760504804L; - long var14 = var8 ^ 79317468135843L; - long var16 = var8 ^ 33038936377119L; - n(new Object[]{var16}); - Vec3d var18 = var4.a.add(0.0, 0.02, 0.0); - MatrixCameraData var10000 = var3.b; - double var10001 = var18.x; - double var10002 = var18.y; - double var10003 = var18.z; - Object[] var10006 = new Object[]{null, null, null, null, var14}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var10000; - Vector3d var19 = RenderUtil.a_Vector3d(var10006); - Matrix4f var20 = new Matrix4f(); - var20.translate((float)var19.x, (float)var19.y, (float)var19.z); - var20.rotateY(-var4.e); - var20.rotateX((float)Math.toRadians(90.0)); - var20.scale(0.04F); - float var21 = 4.0F * var7; - float var22 = 7.5F * var7; - float var23 = var21 * 1.55F; - float var24 = var22 * 1.4F; - RenderHelper8 var26 = var3.a; - MatrixCameraData var28 = var3.b; - FontRenderer var30 = h; - float var10004 = -var23; - float var10005 = -var24; - float var10011 = var5 * 0.45F; - Object[] var10014 = new Object[]{null, null, var10}; - var10014[1] = var10011; - var10014[0] = var2; - Color var10010 = a(var10014); - var10014 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, var12}; - var10014[11] = 0.0F; - var10014[10] = var10010; - var10014[9] = 0.0F; - var10014[8] = var24; - var10014[7] = var23; - var10014[6] = 0.0F; - var10014[5] = var10005; - var10014[4] = var10004; - var10014[3] = var30; - var10014[2] = var20; - var10014[1] = var28; - var10014[0] = var26; - RoundedTextureShader.m(var10014); - RenderHelper8 var27 = var3.a; - MatrixCameraData var29 = var3.b; - FontRenderer var31 = h; - var10004 = -var21; - var10005 = -var22; - var10014 = new Object[]{null, null, var10}; - var10014[1] = var5; - var10014[0] = var6; - var10010 = a(var10014); - var10014 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, var12}; - var10014[11] = 0.0F; - var10014[10] = var10010; - var10014[9] = 0.0F; - var10014[8] = var22; - var10014[7] = var21; - var10014[6] = 0.0F; - var10014[5] = var10005; - var10014[4] = var10004; - var10014[3] = var31; - var10014[2] = var20; - var10014[1] = var29; - var10014[0] = var27; - RoundedTextureShader.m(var10014); + private void renderFootstep(Render3DEvent event, TrailMark mark, Color glowColor, Color coreColor, float alpha, float scale) { + loadGlowTexture(); + Vec3d raisedPos = mark.pos.add(0.0, 0.02, 0.0); + Vector3d cameraRelativePos = RenderCore.toCameraRelative(event.context, raisedPos.x, raisedPos.y, raisedPos.z); + Matrix4f matrix = new Matrix4f(); + matrix.translate((float)cameraRelativePos.x, (float)cameraRelativePos.y, (float)cameraRelativePos.z); + matrix.rotateY(-mark.yawRadians); + matrix.rotateX((float)Math.toRadians(90.0)); + matrix.scale(0.04F); + float halfWidth = 4.0F * scale; + float halfLength = 7.5F * scale; + float glowHalfWidth = halfWidth * 1.55F; + float glowHalfLength = halfLength * 1.4F; + RoundedTextureShader.drawWorldTexture(event.renderer, event.context, matrix, glowTexture, -glowHalfWidth, -glowHalfLength, 0.0F, glowHalfWidth, glowHalfLength, 0.0F, scaleAlpha(glowColor, alpha * 0.45F), 0.0F); + RoundedTextureShader.drawWorldTexture(event.renderer, event.context, matrix, glowTexture, -halfWidth, -halfLength, 0.0F, halfWidth, halfLength, 0.0F, scaleAlpha(coreColor, alpha), 0.0F); } - private void k(Object[] var1) { - TickEvent27 var6 = (TickEvent27)var1[0]; - TrailsHelper2 var2 = (TrailsHelper2)var1[1]; - Color var7 = (Color)var1[2]; - Color var8 = (Color)var1[3]; - float var10 = (Float)var1[4]; - float var5 = (Float)var1[5]; - float var9 = (Float)var1[6]; - long var3 = (Long)var1[7]; - var3 = 3784339827904L ^ var3; - long var11 = var3 ^ 132988020407749L; - long var13 = var3 ^ 92377531242007L; - float var15 = (0.05F + 0.55F * c(new Object[]{var9})) * var5; - MatrixCameraData var10000 = var6.b; - RenderHelper8 var10001 = var6.a; - float var10002 = (float)var2.a.x; - float var10003 = (float)var2.a.y + 0.01F; - float var10004 = (float)var2.a.z; - Object[] var10012 = new Object[]{null, null, var11}; - var10012[1] = var10; - var10012[0] = var8; - Color var10008 = a(var10012); - Object[] var10013 = new Object[]{null, null, var11}; - var10013[1] = var10; - var10013[0] = var7; - var10012 = new Object[]{null, null, null, null, null, null, null, null, var10008, a(var10013), var13}; - var10012[7] = 0.12F; - var10012[6] = 0.018F; - var10012[5] = var15; - var10012[4] = var10004; - var10012[3] = var10003; - var10012[2] = var10002; - var10012[1] = var10001; - var10012[0] = var10000; - RenderState.f(var10012); + private void renderRing(Render3DEvent event, TrailMark mark, Color glowColor, Color ringColor, float alpha, float scale, float progress) { + float radius = (0.05F + 0.55F * easeOutQuad(progress)) * scale; + ShapeRenderer.drawGlowRing(event.context, event.renderer, (float)mark.pos.x, (float)mark.pos.y + 0.01F, (float)mark.pos.z, radius, 0.018F, 0.12F, scaleAlpha(ringColor, alpha), scaleAlpha(glowColor, alpha)); } - private void l(Object[] var1) { - TickEvent27 var8 = (TickEvent27)var1[0]; - TrailsHelper2 var4 = (TrailsHelper2)var1[1]; - Color var2 = (Color)var1[2]; - float var3 = (Float)var1[3]; - float var7 = (Float)var1[4]; - float var9 = (Float)var1[5]; - long var5 = (Long)var1[6]; - var5 = 3784339827904L ^ var5; - long var10 = var5 ^ 84794635181518L; - long var12 = var5 ^ 49976521378908L; - long var14 = var5 ^ 22403254530325L; - n(new Object[]{var14}); - float var16 = var4.c * var9 / 50.0F; - Vec3d var17 = var4.g.multiply(var16); - double var18 = 9.0E-4 * var16 * var16; - Vec3d var20 = var4.a.add(var17.x, var17.y - var18 + 0.05, var17.z); - float var21 = (1.6F - 0.5F * var9) * 2.5F * var7; - Object[] var10008 = new Object[]{null, null, var10}; - var10008[1] = var3; - var10008[0] = var2; - Object[] var10007 = new Object[]{null, null, null, a(var10008), var12}; - var10007[2] = var21; - var10007[1] = var20; - var10007[0] = var8; - this.m(var10007); + private void renderParticle(Render3DEvent event, TrailMark mark, Color particleColor, float alpha, float scale, float progress) { + loadGlowTexture(); + float ageTicks = mark.lifetimeMs * progress / 50.0F; + Vec3d displacement = mark.velocity.multiply(ageTicks); + this.drawGlowBillboard(event, mark.pos.add(displacement.x, displacement.y - (9.0E-4 * ageTicks * ageTicks) + 0.05, displacement.z), (1.6F - 0.5F * progress) * 2.5F * scale, scaleAlpha(particleColor, alpha)); } - private void m(Object[] var1) { - TickEvent27 var4 = (TickEvent27)var1[0]; - Vec3d var2 = (Vec3d)var1[1]; - float var7 = (Float)var1[2]; - Color var3 = (Color)var1[3]; - long var5 = (Long)var1[4]; - var5 = 3784339827904L ^ var5; - long var8 = var5 ^ 11556483287922L; - long var10 = var5 ^ 119068663453493L; - if (var3.getAlpha() > 0) { - MatrixCameraData var10000 = var4.b; - double var10001 = var2.x; - double var10002 = var2.y; - double var10003 = var2.z; - Object[] var10006 = new Object[]{null, null, null, null, var10}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var10000; - Vector3d var12 = RenderUtil.a_Vector3d(var10006); - Matrix4f var13 = new Matrix4f(); - var13.translate((float)var12.x, (float)var12.y, (float)var12.z); - var13.scale(0.04F); - var13.rotateY((float)Math.toRadians(-var4.b.bC().getYaw())); - var13.rotateX((float)Math.toRadians(var4.b.bC().getPitch())); - RenderHelper8 var15 = var4.a; - MatrixCameraData var16 = var4.b; - FontRenderer var17 = h; - Object[] var10014 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, var8}; - var10014[11] = 0.0F; - var10014[10] = var3; - var10014[9] = 0.0F; - var10014[8] = var7; - var10014[7] = var7; - var10014[6] = 0.0F; - var10014[5] = 0.0F; - var10014[4] = 0.0F; - var10014[3] = var17; - var10014[2] = var13; - var10014[1] = var16; - var10014[0] = var15; - RoundedTextureShader.m(var10014); + private void drawGlowBillboard(Render3DEvent event, Vec3d pos, float quadSize, Color tint) { + if (tint.getAlpha() > 0) { + Vector3d cameraRelativePos = RenderCore.toCameraRelative(event.context, pos.x, pos.y, pos.z); + Matrix4f matrix = new Matrix4f(); + matrix.translate((float)cameraRelativePos.x, (float)cameraRelativePos.y, (float)cameraRelativePos.z); + matrix.scale(0.04F); + matrix.rotateY((float)Math.toRadians(-event.context.camera().getYaw())); + matrix.rotateX((float)Math.toRadians(event.context.camera().getPitch())); + RoundedTextureShader.drawWorldTexture(event.renderer, event.context, matrix, glowTexture, 0.0F, 0.0F, 0.0F, quadSize, quadSize, 0.0F, tint, 0.0F); } } - private static void n(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 3784339827904L ^ var1; - long var3 = var1 ^ 139538915246420L; - if (h == null) { - h = TextureUtil.a(new Object[]{"assets/prestige/particles/glow.png", var3}); + private static void loadGlowTexture() { + if (glowTexture == null) { + glowTexture = TextureLoader.loadTexture("assets/prestige/particles/glow.png"); } } @Override - public void onDisable(Object[] var1) { - this.k.clear(); - this.j.clear(); + public void onDisable() { + this.marks.clear(); + this.trackers.clear(); } - private static float b_float_________________(Object[] var0) { - float var1 = (Float)var0[0]; - if (var1 <= 0.0F) { + private static float smootherStep(float progress) { + if (progress <= 0.0F) { return 0.0F; } else { - return var1 >= 1.0F ? 1.0F : var1 * var1 * var1 * (var1 * (var1 * 6.0F - 15.0F) + 10.0F); + return progress >= 1.0F ? 1.0F : progress * progress * progress * (progress * (progress * 6.0F - 15.0F) + 10.0F); } } - private static float c(Object[] var0) { - float var1 = (Float)var0[0]; - return 1.0F - (1.0F - var1) * (1.0F - var1); + private static float easeOutQuad(float progress) { + return 1.0F - (1.0F - progress) * (1.0F - progress); } - private static Color a(Object[] var0) { - Color var4 = (Color)var0[0]; - float var3 = (Float)var0[1]; - int var5 = Math.max(0, Math.min(255, (int)(var4.getAlpha() * var3))); - return new Color(var4.getRed(), var4.getGreen(), var4.getBlue(), var5); + private static Color scaleAlpha(Color baseColor, float alphaScale) { + int alpha = Math.max(0, Math.min(255, (int)(baseColor.getAlpha() * alphaScale))); + return new Color(baseColor.getRed(), baseColor.getGreen(), baseColor.getBlue(), alpha); } - private static Color b_Color___(Object[] var0) { - Color var4 = (Color)var0[0]; - float var3 = (Float)var0[1]; - long var1 = (Long)var0[2]; - var1 = 3784339827904L ^ var1; - long var5 = var1 ^ 48320050385056L; - if (var3 < 0.0F) { - var3 = 0.0F; + private static Color lightenColor(Color baseColor, float amount) { + if (amount < 0.0F) { + amount = 0.0F; } - if (var3 > 1.0F) { - var3 = 1.0F; + if (amount > 1.0F) { + amount = 1.0F; } - int var8 = (int)(var4.getRed() + (255 - var4.getRed()) * var3); - int var9 = (int)(var4.getGreen() + (255 - var4.getGreen()) * var3); - int var10 = (int)(var4.getBlue() + (255 - var4.getBlue()) * var3); - Object[] var10005 = new Object[]{null, var5}; - var10005[0] = var8; - int var10002 = a_int________________(var10005); - Object[] var10006 = new Object[]{null, var5}; - var10006[0] = var9; - int var10003 = a_int________________(var10006); - Object[] var10007 = new Object[]{null, var5}; - var10007[0] = var10; - return new Color(var10002, var10003, a_int________________(var10007), var4.getAlpha()); + int red = (int)(baseColor.getRed() + (255 - baseColor.getRed()) * amount); + int green = (int)(baseColor.getGreen() + (255 - baseColor.getGreen()) * amount); + int blue = (int)(baseColor.getBlue() + (255 - baseColor.getBlue()) * amount); + return new Color(clampColorComponent(red), clampColorComponent(green), clampColorComponent(blue), baseColor.getAlpha()); } - private static Color c_Color_(Object[] var0) { - Color var1 = (Color)var0[0]; - Color var4 = (Color)var0[1]; - float var5 = (Float)var0[2]; - long var2 = (Long)var0[3]; - var2 = 3784339827904L ^ var2; - long var6 = var2 ^ 96394298671893L; - if (var5 < 0.0F) { - var5 = 0.0F; + private static Color blendColors(Color from, Color to, float progress) { + if (progress < 0.0F) { + progress = 0.0F; } - if (var5 > 1.0F) { - var5 = 1.0F; + if (progress > 1.0F) { + progress = 1.0F; } - float var9 = 1.0F - var5; - int var10 = (int)(var1.getRed() * var9 + var4.getRed() * var5); - int var11 = (int)(var1.getGreen() * var9 + var4.getGreen() * var5); - int var12 = (int)(var1.getBlue() * var9 + var4.getBlue() * var5); - int var13 = (int)(var1.getAlpha() * var9 + var4.getAlpha() * var5); - Object[] var10005 = new Object[]{null, var6}; - var10005[0] = var10; - int var10002 = a_int________________(var10005); - Object[] var10006 = new Object[]{null, var6}; - var10006[0] = var11; - int var10003 = a_int________________(var10006); - Object[] var10007 = new Object[]{null, var6}; - var10007[0] = var12; - int var10004 = a_int________________(var10007); - Object[] var10008 = new Object[]{null, var6}; - var10008[0] = var13; - return new Color(var10002, var10003, var10004, a_int________________(var10008)); + float inverse = 1.0F - progress; + int red = (int)(from.getRed() * inverse + to.getRed() * progress); + int green = (int)(from.getGreen() * inverse + to.getGreen() * progress); + int blue = (int)(from.getBlue() * inverse + to.getBlue() * progress); + int alpha = (int)(from.getAlpha() * inverse + to.getAlpha() * progress); + return new Color(clampColorComponent(red), clampColorComponent(green), clampColorComponent(blue), clampColorComponent(alpha)); } - private static int a_int________________(Object[] var0) { - int var3 = (Integer)var0[0]; - return var3 < 0 ? 0 : (var3 > 255 ? 255 : var3); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static int clampColorComponent(int component) { + return component < 0 ? 0 : (component > 255 ? 255 : component); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/Trajectories.java b/src/main/java/dev/zprestige/prestige/module/visual/Trajectories.java index b8cbed7..3d82f70 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/Trajectories.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/Trajectories.java @@ -5,22 +5,16 @@ import dev.zprestige.prestige.EnumSetting; import dev.zprestige.prestige.Gamemode; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.combat.TrajectoriesHelper; -import dev.zprestige.prestige.data.BoolData3; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; +import dev.zprestige.prestige.combat.TrajectoriesSimulatedPearl; +import dev.zprestige.prestige.data.TrajectoryPath; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.ShapeRenderer; import dev.zprestige.prestige.world.PositionUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Set; import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.world.ClientWorld; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.EntityType; @@ -39,535 +33,270 @@ public class Trajectories extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private static final float[] a = new float[]{0.0F, -10.0F, 10.0F}; - public EnumSetting c; - public ColorSetting d; - private ArrayList e = new ArrayList(); - private boolean i = false; - private ItemStack f; - private String h; - private boolean g; - private boolean j; - private int k; - private float l; - private float m; - private double n; - private double o; - private double p; - private static final float q = 12.0F; - private static final float r = 7.0F; - private static final float s = 20.0F; - private float t = 0.0F; - private float u = 0.0F; - private float v = 0.0F; - private boolean w = false; - private long x = 0L; + private static final float[] MULTISHOT_ANGLES = new float[]{0.0F, -10.0F, 10.0F}; + public EnumSetting render; + public ColorSetting color; + private ArrayList paths = new ArrayList(); + private boolean cacheValid = false; + private ItemStack cachedStack; + private String cachedMode; + private boolean cachedUsingItem; + private boolean cachedCrossbowCharged; + private int cachedUseTime; + private float cachedPitch; + private float cachedYaw; + private double cachedPosX; + private double cachedPosY; + private double cachedPosZ; + private float fadeAlpha = 0.0F; + private float smoothPitch = 0.0F; + private float smoothYaw = 0.0F; + private boolean rotationInitialized = false; + private long lastFrameTime = 0L; @Override - public Set getGamemodes(Object[] var1) { + public Set getGamemodes() { return Set.of(Gamemode.Crystal, Gamemode.Mace); } @Subscribe - public void a(TickEvent27 var1) { - if (b.player != null) { - ItemStack var15 = b.player.getMainHandStack(); - String var16 = ((String)this.c.getValue()).toString(); - Vec3d var17 = MatrixStack.b(new Object[]{b.player, 78245126833881L}); - boolean var18 = b.player.isUsingItem(); - int var19 = b.player.getItemUseTime(); - boolean var20 = var15.isOf(Items.CROSSBOW) && CrossbowItem.isCharged(var15); - long var21 = System.currentTimeMillis(); - float var23 = this.x == 0L ? 0.016F : (float)(var21 - this.x) / 1000.0F; - boolean var24 = this.x != 0L && var21 - this.x > 1000L; - this.x = var21; - var23 = Math.min(var23, 0.1F); - float var25 = b.player.getPitch(); - float var26 = b.player.getYaw(); - if (this.w && !var24) { - float var10001 = this.u; - Object[] var10007 = new Object[]{null, null, null, null, 56959580732021L}; - var10007[3] = 20.0F; - var10007[2] = var23; - var10007[1] = var25; - var10007[0] = var10001; - this.u = b_float__________________(var10007); - var10001 = this.v; - float var10002 = this.v; - Object[] var10005 = new Object[]{null, var26}; - var10005[0] = var10002; - this.v = var10001 + c(var10005) * (1.0F - (float)Math.exp(-20.0F * var23)); + public void onRender3D(Render3DEvent event) { + if (mc.player != null) { + ItemStack heldStack = mc.player.getMainHandStack(); + String mode = this.render.getValue().toString(); + Vec3d playerPos = Render2D.getInterpolatedPos(mc.player); + boolean usingItem = mc.player.isUsingItem(); + int useTime = mc.player.getItemUseTime(); + boolean crossbowCharged = heldStack.isOf(Items.CROSSBOW) && CrossbowItem.isCharged(heldStack); + long now = System.currentTimeMillis(); + float deltaSeconds = this.lastFrameTime == 0L ? 0.016F : (float)(now - this.lastFrameTime) / 1000.0F; + boolean afterPause = this.lastFrameTime != 0L && now - this.lastFrameTime > 1000L; + this.lastFrameTime = now; + deltaSeconds = Math.min(deltaSeconds, 0.1F); + float pitch = mc.player.getPitch(); + float yaw = mc.player.getYaw(); + if (this.rotationInitialized && !afterPause) { + this.smoothPitch = smoothTowards(this.smoothPitch, pitch, deltaSeconds, 20.0F); + this.smoothYaw = this.smoothYaw + angleDifference(this.smoothYaw, yaw) * (1.0F - (float)Math.exp(-20.0F * deltaSeconds)); } else { - this.u = var25; - this.v = var26; - this.w = true; + this.smoothPitch = pitch; + this.smoothYaw = yaw; + this.rotationInitialized = true; } - boolean var27 = this.a(new Object[]{var15, var16, 68228975196473L}); - float var32 = this.t; - float var33 = var27 ? 1.0F : 0.0F; - float var10004 = var27 ? 12.0F : 7.0F; - Object[] var34 = new Object[]{null, null, null, null, 56959580732021L}; - var34[3] = var10004; - var34[2] = var23; - var34[1] = var33; - var34[0] = var32; - this.t = b_float__________________(var34); - if (var27) { - if (!this.i - || var15 != this.f - || !var16.equals(this.h) - || var18 != this.g - || var20 != this.j - || var19 != this.k - || this.u != this.l - || this.v != this.m - || var17.x != this.n - || var17.y != this.o - || var17.z != this.p) { - this.j(new Object[]{var15, var16, 44771390742457L}); - this.f = var15; - this.h = var16; - this.g = var18; - this.j = var20; - this.k = var19; - this.l = this.u; - this.m = this.v; - this.n = var17.x; - this.o = var17.y; - this.p = var17.z; - this.i = true; + boolean predicting = this.shouldPredict(heldStack, mode); + this.fadeAlpha = smoothTowards(this.fadeAlpha, predicting ? 1.0F : 0.0F, deltaSeconds, predicting ? 12.0F : 7.0F); + if (predicting) { + if (!this.cacheValid + || heldStack != this.cachedStack + || !mode.equals(this.cachedMode) + || usingItem != this.cachedUsingItem + || crossbowCharged != this.cachedCrossbowCharged + || useTime != this.cachedUseTime + || this.smoothPitch != this.cachedPitch + || this.smoothYaw != this.cachedYaw + || playerPos.x != this.cachedPosX + || playerPos.y != this.cachedPosY + || playerPos.z != this.cachedPosZ) { + this.rebuildPaths(heldStack, mode); + this.cachedStack = heldStack; + this.cachedMode = mode; + this.cachedUsingItem = usingItem; + this.cachedCrossbowCharged = crossbowCharged; + this.cachedUseTime = useTime; + this.cachedPitch = this.smoothPitch; + this.cachedYaw = this.smoothYaw; + this.cachedPosX = playerPos.x; + this.cachedPosY = playerPos.y; + this.cachedPosZ = playerPos.z; + this.cacheValid = true; } - } else if (this.t < 0.005F && !this.e.isEmpty()) { - this.e.clear(); - this.i = false; + } else if (this.fadeAlpha < 0.005F && !this.paths.isEmpty()) { + this.paths.clear(); + this.cacheValid = false; } - if (!(this.t < 0.005F)) { - for (BoolData3 var29 : (Iterable)(this.e)) { - this.k(new Object[]{var1, var29, 49091042478923L}); + if (!(this.fadeAlpha < 0.005F)) { + for (TrajectoryPath path : (Iterable)(this.paths)) { + this.renderPath(event, path); } } } } - private boolean a(Object[] var1) { - ItemStack var2 = (ItemStack)var1[0]; - String var5 = (String)var1[1]; - boolean var7 = var5.equals("Bows") || var5.equals("Crossbow") || var5.equals("All"); - boolean var8 = var5.equals("Bows") || var5.equals("Bow") || var5.equals("All"); - boolean var9 = var5.equals("Pearl") || var5.equals("All"); - if (var2.isOf(Items.CROSSBOW) && var7) { - return CrossbowItem.isCharged(var2); + private boolean shouldPredict(ItemStack stack, String mode) { + boolean crossbowEnabled = mode.equals("Bows") || mode.equals("Crossbow") || mode.equals("All"); + boolean bowEnabled = mode.equals("Bows") || mode.equals("Bow") || mode.equals("All"); + boolean pearlEnabled = mode.equals("Pearl") || mode.equals("All"); + if (stack.isOf(Items.CROSSBOW) && crossbowEnabled) { + return CrossbowItem.isCharged(stack); } else { - return var2.isOf(Items.BOW) && b.player.isUsingItem() && var8 ? true : var2.isOf(Items.ENDER_PEARL) && var9; + return stack.isOf(Items.BOW) && mc.player.isUsingItem() && bowEnabled ? true : stack.isOf(Items.ENDER_PEARL) && pearlEnabled; } } - private static float b_float__________________(Object[] var0) { - float var1 = (Float)var0[0]; - float var5 = (Float)var0[1]; - float var6 = (Float)var0[2]; - float var4 = (Float)var0[3]; - return var1 + (var5 - var1) * (1.0F - (float)Math.exp(-var4 * var6)); + private static float smoothTowards(float current, float target, float deltaTime, float speed) { + return current + (target - current) * (1.0F - (float)Math.exp(-speed * deltaTime)); } - private static float c(Object[] var0) { - float var2 = (Float)var0[0]; - float var1 = (Float)var0[1]; - return ((var1 - var2) % 360.0F + 540.0F) % 360.0F - 180.0F; + private static float angleDifference(float fromAngle, float toAngle) { + return ((toAngle - fromAngle) % 360.0F + 540.0F) % 360.0F - 180.0F; } - private void j(Object[] var1) { - ItemStack var2 = (ItemStack)var1[0]; - String var5 = (String)var1[1]; - long var3 = (Long)var1[2]; - var3 = 123598832424487L ^ var3; - long var6 = var3 ^ 105193676660312L; - long var8 = var3 ^ 71729562861207L; - Event.b(); - this.e.clear(); - boolean var11 = var5.equals("Bows") || var5.equals("Crossbow") || var5.equals("All"); - boolean var12 = var5.equals("Bows") || var5.equals("Bow") || var5.equals("All"); - boolean var13 = var5.equals("Pearl") || var5.equals("All"); - if (var2.isOf(Items.CROSSBOW) && var11) { - if (!CrossbowItem.isCharged(var2)) { + private void rebuildPaths(ItemStack stack, String mode) { + this.paths.clear(); + boolean crossbowEnabled = mode.equals("Bows") || mode.equals("Crossbow") || mode.equals("All"); + boolean bowEnabled = mode.equals("Bows") || mode.equals("Bow") || mode.equals("All"); + boolean pearlEnabled = mode.equals("Pearl") || mode.equals("All"); + if (stack.isOf(Items.CROSSBOW) && crossbowEnabled) { + if (!CrossbowItem.isCharged(stack)) { return; } - var2.getItem(); - boolean var15 = EnchantmentHelper.getLevel( - b.world.getRegistryManager().getOptional(Enchantments.MULTISHOT.getRegistryRef()).get().getEntry(Enchantments.MULTISHOT.getValue()).get(), - var2 + stack.getItem(); + if (EnchantmentHelper.getLevel( + mc.world.getRegistryManager().getOptional(Enchantments.MULTISHOT.getRegistryRef()).get().getEntry(Enchantments.MULTISHOT.getValue()).get(), + stack ) - > 0; - if (var15) { - ArrayList var17 = this.e; - float var10002 = a[0]; - Object[] var23 = new Object[]{null, Items.ARROW.getDefaultStack(), var2, var8}; - var23[0] = var10002; - var17.add(this.b_BoolData3(var23)); - var17 = this.e; - var10002 = a[1]; - var23 = new Object[]{null, Items.ARROW.getDefaultStack(), var2, var8}; - var23[0] = var10002; - var17.add(this.b_BoolData3(var23)); - var17 = this.e; - var10002 = a[2]; - var23 = new Object[]{null, Items.ARROW.getDefaultStack(), var2, var8}; - var23[0] = var10002; - var17.add(this.b_BoolData3(var23)); + > 0) { + this.paths.add(this.simulateArrowPath(MULTISHOT_ANGLES[0], Items.ARROW.getDefaultStack(), stack)); + this.paths.add(this.simulateArrowPath(MULTISHOT_ANGLES[1], Items.ARROW.getDefaultStack(), stack)); + this.paths.add(this.simulateArrowPath(MULTISHOT_ANGLES[2], Items.ARROW.getDefaultStack(), stack)); } else { - ArrayList var20 = this.e; - Object[] var26 = new Object[]{null, Items.ARROW.getDefaultStack(), var2, var8}; - var26[0] = 0.0F; - var20.add(this.b_BoolData3(var26)); + this.paths.add(this.simulateArrowPath(0.0F, Items.ARROW.getDefaultStack(), stack)); } - } else if (var2.isOf(Items.BOW) && b.player.isUsingItem() && var12) { - ArrayList var10000 = this.e; - Object[] var10007 = new Object[]{null, Items.ARROW.getDefaultStack(), var2, var8}; - var10007[0] = 0.0F; - var10000.add(this.b_BoolData3(var10007)); - } else if (var2.isOf(Items.ENDER_PEARL) && var13) { - this.e.add(this.a_BoolData3(new Object[]{var6})); + } else if (stack.isOf(Items.BOW) && mc.player.isUsingItem() && bowEnabled) { + this.paths.add(this.simulateArrowPath(0.0F, Items.ARROW.getDefaultStack(), stack)); + } else if (stack.isOf(Items.ENDER_PEARL) && pearlEnabled) { + this.paths.add(this.simulatePearlPath()); } } - private void k(Object[] var1) { - TickEvent27 var2 = (TickEvent27)var1[0]; - BoolData3 var3 = (BoolData3)var1[1]; - long var4 = (Long)var1[2]; - var4 = 123598832424487L ^ var4; - long var6 = var4 ^ 8967109307519L; - long var8 = var4 ^ 79717573006245L; - Event.b(); - ArrayList var11 = var3.b9(); - if (var11.size() > 1) { - Color var12 = (Color)this.d.getValue(); - long var13 = System.currentTimeMillis(); - Object[] var10007 = new Object[]{null, null, null, null, var6}; - var10007[3] = var13; - var10007[2] = var12; - var10007[1] = var11; - var10007[0] = var2; - this.l(var10007); - Vec3d var10002 = (Vec3d)var11.get(var11.size() - 1); - boolean var10004 = var3.b_(); - Object[] var10008 = new Object[]{null, null, null, null, null, var8}; - var10008[4] = var13; - var10008[3] = var10004; - var10008[2] = var12; - var10008[1] = var10002; - var10008[0] = var2; - this.m(var10008); + private void renderPath(Render3DEvent event, TrajectoryPath path) { + ArrayList points = path.points(); + if (points.size() > 1) { + Color beamColor = this.color.getValue(); + long now = System.currentTimeMillis(); + this.drawBeam(event, points, beamColor, now); + this.drawImpactMarker(event, (Vec3d)points.get(points.size() - 1), beamColor, path.landed(), now); } } - private void l(Object[] var1) { - TickEvent27 var4 = (TickEvent27)var1[0]; - ArrayList var3 = (ArrayList)var1[1]; - Color var2 = (Color)var1[2]; - long var5 = (Long)var1[3]; - long var7 = (Long)var1[4]; - var7 = 123598832424487L ^ var7; - long var9 = var7 ^ 109930941461946L; - long var11 = var7 ^ 21820500128038L; - long var13 = var7 ^ 39696662745329L; - int var16 = var3.size() - 1; - int var17 = Math.min(28, var16); - Event.b(); + private void drawBeam(Render3DEvent event, ArrayList points, Color beamColor, long now) { + int lastIndex = points.size() - 1; + int segmentCount = Math.min(28, lastIndex); - for (int var18 = 0; var18 < var17; var18++) { - float var19 = var17 == 1 ? 0.0F : (float)var18 / (var17 - 1); - int var20 = Math.round(255.0F - var19 * 175.0F); - MatrixCameraData var10000 = var4.b; - RenderHelper8 var10001 = var4.a; - Object[] var10008 = new Object[]{null, null, null, null, var13}; - var10008[3] = var16; - var10008[2] = var17; - var10008[1] = var18; - var10008[0] = var3; - ArrayList var10002 = a_ArrayList__(var10008); - var10008 = new Object[]{null, null, var11}; - var10008[1] = var20; - var10008[0] = var2; - RenderState.c(new Object[]{var10000, var10001, var10002, this.a_Color_____(var10008), var9}); + for (int segment = 0; segment < segmentCount; segment++) { + int segmentAlpha = Math.round(255.0F - (segmentCount == 1 ? 0.0F : (float)segment / (segmentCount - 1)) * 175.0F); + ShapeRenderer.drawPath(event.context, event.renderer, sliceSegment(points, segment, segmentCount, lastIndex), this.withFade(beamColor, segmentAlpha)); } - float var23 = (float)(var5 % 1200L) / 1200.0F; - int var24 = (int)(var23 * var17); + int pulseHead = (int)(((float)(now % 1200L) / 1200.0F) * segmentCount); - for (int var25 = 0; var25 < 4; var25++) { - int var21 = var24 - var25; - if (var21 >= 0 && var21 < var17) { - MatrixCameraData var26 = var4.b; - RenderHelper8 var27 = var4.a; - Object[] var30 = new Object[]{null, null, null, null, var13}; - var30[3] = var16; - var30[2] = var17; - var30[1] = var21; - var30[0] = var3; - ArrayList var28 = a_ArrayList__(var30); - int var10005 = 255 - var25 * 55; - var30 = new Object[]{null, null, var11}; - var30[1] = var10005; - var30[0] = var2; - RenderState.c(new Object[]{var26, var27, var28, this.a_Color_____(var30), var9}); + for (int trail = 0; trail < 4; trail++) { + int pulseSegment = pulseHead - trail; + if (pulseSegment >= 0 && pulseSegment < segmentCount) { + ShapeRenderer.drawPath(event.context, event.renderer, sliceSegment(points, pulseSegment, segmentCount, lastIndex), this.withFade(beamColor, 255 - trail * 55)); } } } - private static ArrayList a_ArrayList__(Object[] var0) { - ArrayList var3 = (ArrayList)var0[0]; - int var6 = (Integer)var0[1]; - int var5 = (Integer)var0[2]; - int var4 = (Integer)var0[3]; - Event.b(); - int var8 = var6 * var4 / var5; - int var9 = (var6 + 1) * var4 / var5; - ArrayList var10 = new ArrayList(var9 - var8 + 1); + private static ArrayList sliceSegment(ArrayList points, int segmentIndex, int segmentCount, int lastIndex) { + int startIndex = segmentIndex * lastIndex / segmentCount; + int endIndex = (segmentIndex + 1) * lastIndex / segmentCount; + ArrayList slice = new ArrayList(endIndex - startIndex + 1); - for (int var11 = var8; var11 <= var9; var11++) { - var10.add((Vec3d)var3.get(var11)); + for (int pointIndex = startIndex; pointIndex <= endIndex; pointIndex++) { + slice.add((Vec3d)points.get(pointIndex)); } - return var10; + return slice; } - private void m(Object[] var1) { - TickEvent27 var3 = (TickEvent27)var1[0]; - Vec3d var2 = (Vec3d)var1[1]; - Color var9 = (Color)var1[2]; - boolean var8 = (Boolean)var1[3]; - long var4 = (Long)var1[4]; - long var6 = (Long)var1[5]; - var6 = 123598832424487L ^ var6; - long var10 = var6 ^ 26103282198177L; - long var12 = var6 ^ 45222597199940L; - long var14 = var6 ^ 91805394325244L; - float var16 = (float)var2.x; - float var17 = (float)var2.y; - float var18 = (float)var2.z; - long var19 = var8 ? 700L : 1500L; - float var21 = (float)(var4 % var19) / (float)var19; - float var22 = 0.5F * (1.0F + (float)Math.sin(var21 * (float) (Math.PI * 2))); - float var23 = (var8 ? 0.45F : 0.25F) + 0.1F * var22; - Object[] var10005 = new Object[]{null, null, var14}; - var10005[1] = 255; - var10005[0] = var9; - Color var24 = this.a_Color_____(var10005); - MatrixCameraData var10000 = var3.b; - RenderHelper8 var10001 = var3.a; - Object[] var10012 = new Object[]{null, null, var14}; - var10012[1] = 0; - var10012[0] = var9; - Object[] var10010 = new Object[]{null, null, null, null, null, null, var24, this.a_Color_____(var10012), var10}; - var10010[5] = var23; - var10010[4] = var18; - var10010[3] = var17; - var10010[2] = var16; - var10010[1] = var10001; - var10010[0] = var10000; - RenderState.d(var10010); - var10000 = var3.b; - var10001 = var3.a; - float var33 = var23 + 0.08F; - Object[] var10014 = new Object[]{null, null, var14}; - var10014[1] = 60; - var10014[0] = var9; - var10012 = new Object[]{null, null, null, null, null, null, null, null, var24, this.a_Color_____(var10014), var12}; - var10012[7] = 0.06F; - var10012[6] = 0.02F; - var10012[5] = var33; - var10012[4] = var18; - var10012[3] = var17; - var10012[2] = var16; - var10012[1] = var10001; - var10012[0] = var10000; - RenderState.f(var10012); - if (var8) { - float var25 = (float)(var4 % 500L) / 500.0F; - float var26 = 0.3F + var25 * 0.9F; - float var27 = 1.0F - var25; - var10000 = var3.b; - var10001 = var3.a; - int var34 = Math.round(255.0F * var27); - Object[] var10013 = new Object[]{null, null, var14}; - var10013[1] = var34; - var10013[0] = var9; - Color var10008 = this.a_Color_____(var10013); - int var10011 = Math.round(60.0F * var27); - var10014 = new Object[]{null, null, var14}; - var10014[1] = var10011; - var10014[0] = var9; - var10012 = new Object[]{null, null, null, null, null, null, null, null, var10008, this.a_Color_____(var10014), var12}; - var10012[7] = 0.05F; - var10012[6] = 0.02F; - var10012[5] = var26; - var10012[4] = var18; - var10012[3] = var17; - var10012[2] = var16; - var10012[1] = var10001; - var10012[0] = var10000; - RenderState.f(var10012); + private void drawImpactMarker(Render3DEvent event, Vec3d landingPos, Color ringColor, boolean landed, long now) { + float posX = (float)landingPos.x; + float posY = (float)landingPos.y; + float posZ = (float)landingPos.z; + long pulsePeriod = landed ? 700L : 1500L; + float discRadius = (landed ? 0.45F : 0.25F) + 0.1F * (0.5F * (1.0F + (float)Math.sin(((float)(now % pulsePeriod) / (float)pulsePeriod) * (float) (Math.PI * 2)))); + Color solidColor = this.withFade(ringColor, 255); + ShapeRenderer.drawDisc(event.context, event.renderer, posX, posY, posZ, discRadius, solidColor, this.withFade(ringColor, 0)); + ShapeRenderer.drawGlowRing(event.context, event.renderer, posX, posY, posZ, discRadius + 0.08F, 0.02F, 0.06F, solidColor, this.withFade(ringColor, 60)); + if (landed) { + float ripplePhase = (float)(now % 500L) / 500.0F; + float rippleRadius = 0.3F + ripplePhase * 0.9F; + float rippleFade = 1.0F - ripplePhase; + ShapeRenderer.drawGlowRing(event.context, event.renderer, posX, posY, posZ, rippleRadius, 0.02F, 0.05F, this.withFade(ringColor, Math.round(255.0F * rippleFade)), this.withFade(ringColor, Math.round(60.0F * rippleFade))); } } - private Color a_Color_____(Object[] var1) { - Color var2 = (Color)var1[0]; - int var3 = (Integer)var1[1]; - return new Color(var2.getRed(), var2.getGreen(), var2.getBlue(), MathHelper.clamp(Math.round(var3 * this.t), 0, 255)); + private Color withFade(Color baseColor, int alpha) { + return new Color(baseColor.getRed(), baseColor.getGreen(), baseColor.getBlue(), MathHelper.clamp(Math.round(alpha * this.fadeAlpha), 0, 255)); } - private BoolData3 a_BoolData3(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 123598832424487L ^ var2; - long var4 = var2 ^ 81979255385229L; - long var6 = var2 ^ 53041597253432L; - long var8 = var2 ^ 31473421864860L; - long var10 = var2 ^ 117515664896908L; - ArrayList var13 = new ArrayList(); - ClientPlayerEntity var14 = b.player; - Vec3d var15 = MatrixStack.b(new Object[]{b.player, var6}); - Vec3d var16 = PositionUtil.b(new Object[]{var8}); - Event.b(); - var14.setPosition(var15.x, var15.y, var15.z); - ClientWorld var17 = b.world; - TrajectoriesHelper var18 = new TrajectoriesHelper(var17, var14, Items.ENDER_PEARL.getDefaultStack(), var10); - var18.setVelocity(var14, this.u, this.v, 0.0F, 1.5F, 1.0F); - int var19 = 0; + private TrajectoryPath simulatePearlPath() { + ArrayList points = new ArrayList(); + ClientPlayerEntity player = mc.player; + Vec3d renderPos = Render2D.getInterpolatedPos(mc.player); + Vec3d originalPos = PositionUtil.getPlayerPos(); + player.setPosition(renderPos.x, renderPos.y, renderPos.z); + TrajectoriesSimulatedPearl pearl = new TrajectoriesSimulatedPearl(mc.world, player, Items.ENDER_PEARL.getDefaultStack()); + pearl.setVelocity(player, this.smoothPitch, this.smoothYaw, 0.0F, 1.5F, 1.0F); + int steps = 0; - while (!var18.a && var19++ < 1000) { - var13.add(PositionUtil.a(new Object[]{var18, var4})); - var18.tick(); + while (!pearl.landed && steps++ < 1000) { + points.add(PositionUtil.getEntityPos(pearl)); + pearl.tick(); } - var14.setPosition(var16); + player.setPosition(originalPos); - for (int var20 = 0; var20 < var13.size() - 1; var20++) { - Vec3d var21 = (Vec3d)var13.get(var20); - var13.set(var20, new Vec3d(var21.x, var21.y - 0.1F, var21.z)); + for (int pointIndex = 0; pointIndex < points.size() - 1; pointIndex++) { + Vec3d point = (Vec3d)points.get(pointIndex); + points.set(pointIndex, new Vec3d(point.x, point.y - 0.1F, point.z)); } - return new BoolData3(var13, true); + return new TrajectoryPath(points, true); } - private BoolData3 b_BoolData3(Object[] var1) { - float var2 = (Float)var1[0]; - ItemStack var4 = (ItemStack)var1[1]; - ItemStack var3 = (ItemStack)var1[2]; - long var5 = (Long)var1[3]; - var5 = 123598832424487L ^ var5; - long var7 = var5 ^ 92495623130178L; - long var9 = var5 ^ 51321322858487L; - long var11 = var5 ^ 2265100758867L; - ArrayList var14 = new ArrayList(); - Item var15 = var3.getItem(); - ClientPlayerEntity var16 = b.player; - Vec3d var17 = MatrixStack.b(new Object[]{b.player, var9}); - Vec3d var18 = PositionUtil.b(new Object[]{var11}); - float var19 = var16.getPitch(); - float var20 = var16.getYaw(); - Event.b(); - var16.setPosition(var17.x, var17.y, var17.z); - var16.setPitch(this.u); - var16.setYaw(this.v); - dev.zprestige.prestige.world.TrajectoriesHelper var21 = new dev.zprestige.prestige.world.TrajectoriesHelper(EntityType.ARROW, var16, b.world, var4); - if (var15 instanceof CrossbowItem) { - Vec3d var22 = var16.getOppositeRotationVector(1.0F); - Quaternionf var23 = new Quaternionf().setAngleAxis((double)(var2 * (float) (Math.PI / 180.0)), var22.x, var22.y, var22.z); - Vec3d var24 = var16.getRotationVec(1.0F); - Vector3f var25 = var24.toVector3f().rotate(var23); - var21.setVelocity(var25.x(), var25.y(), var25.z(), 3.15F, 1.0F); + private TrajectoryPath simulateArrowPath(float angleOffset, ItemStack arrowStack, ItemStack weaponStack) { + ArrayList points = new ArrayList(); + Item weapon = weaponStack.getItem(); + ClientPlayerEntity player = mc.player; + Vec3d renderPos = Render2D.getInterpolatedPos(mc.player); + Vec3d originalPos = PositionUtil.getPlayerPos(); + float originalPitch = player.getPitch(); + float originalYaw = player.getYaw(); + player.setPosition(renderPos.x, renderPos.y, renderPos.z); + player.setPitch(this.smoothPitch); + player.setYaw(this.smoothYaw); + dev.zprestige.prestige.world.SimulatedBowArrow arrow = new dev.zprestige.prestige.world.SimulatedBowArrow(EntityType.ARROW, player, mc.world, arrowStack); + if (weapon instanceof CrossbowItem) { + Vec3d axis = player.getOppositeRotationVector(1.0F); + Quaternionf rotation = new Quaternionf().setAngleAxis((double)(angleOffset * (float) (Math.PI / 180.0)), axis.x, axis.y, axis.z); + Vector3f direction = player.getRotationVec(1.0F).toVector3f().rotate(rotation); + arrow.setVelocity(direction.x(), direction.y(), direction.z(), 3.15F, 1.0F); } else { - var21.setVelocity(var16, this.u, this.v, 0.0F, BowItem.getPullProgress(b.player.getItemUseTime()) * 3.0F, 1.0F); + arrow.setVelocity(player, this.smoothPitch, this.smoothYaw, 0.0F, BowItem.getPullProgress(mc.player.getItemUseTime()) * 3.0F, 1.0F); } - var21.b = true; - int var27 = 0; + arrow.inFlight = true; + int steps = 0; - while (var21.b && var27++ < 1000) { - var14.add(PositionUtil.a(new Object[]{var21, var7})); - var21.tick(); + while (arrow.inFlight && steps++ < 1000) { + points.add(PositionUtil.getEntityPos(arrow)); + arrow.tick(); } - var16.setPosition(var18); - var16.setPitch(var19); - var16.setYaw(var20); + player.setPosition(originalPos); + player.setPitch(originalPitch); + player.setYaw(originalYaw); - for (int var28 = 0; var28 < var14.size() - 1; var28++) { - Vec3d var29 = (Vec3d)var14.get(var28); - var14.set(var28, new Vec3d(var29.x, var29.y - 0.1F, var29.z)); + for (int pointIndex = 0; pointIndex < points.size() - 1; pointIndex++) { + Vec3d point = (Vec3d)points.get(pointIndex); + points.set(pointIndex, new Vec3d(point.x, point.y - 0.1F, point.z)); } - return new BoolData3(var14, var21.a); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + return new TrajectoryPath(points, arrow.hitEntity); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/TwoDESP.java b/src/main/java/dev/zprestige/prestige/module/visual/TwoDESP.java index 6825d08..5382006 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/TwoDESP.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/TwoDESP.java @@ -9,22 +9,19 @@ import dev.zprestige.prestige.Module; import dev.zprestige.prestige.MultiSetting; import dev.zprestige.prestige.Subscribe; import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.TwoDESPHelper; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent22; -import dev.zprestige.prestige.event.TickEvent25; -import dev.zprestige.prestige.math.Point3D; -import dev.zprestige.prestige.render.Font; -import dev.zprestige.prestige.render.MatrixStack; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderState; -import dev.zprestige.prestige.render.RenderTarget; -import dev.zprestige.prestige.render.RoundedPosColorShader; +import dev.zprestige.prestige.combat.TwoDEspTarget; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.FrustumSetupEvent; +import dev.zprestige.prestige.event.Render2DEvent; +import dev.zprestige.prestige.math.TwoDEspBox; +import dev.zprestige.prestige.render.MsdfFont; +import dev.zprestige.prestige.render.Render2D; +import dev.zprestige.prestige.render.BufferSource; +import dev.zprestige.prestige.render.ShapeRenderer; +import dev.zprestige.prestige.render.BlurredRoundedRectShader; +import dev.zprestige.prestige.render.RoundedRectShader; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; @@ -42,248 +39,187 @@ import org.joml.Matrix4f; import org.joml.Vector4f; public class TwoDESP extends Module { - private BoolSetting d; - private EnumSetting a; - private FloatSetting c; - private FloatSetting e; - private MultiSetting f; - private FloatSetting g; - private FloatSetting h; - private BoolSetting i; - private FloatSetting j; - private EnumSetting k; - private BoolSetting l; - private BoolSetting m; - private FloatSetting n; - private IntSetting o; - private IntSetting p; - private BoolSetting q; - private ColorSetting r; - private ColorSetting s; - private ColorSetting t; - private ColorSetting u; - private ColorSetting v; - private Frustum w; - private long x = 0L; - private long y = 0L; - private Map z = new LinkedHashMap(); - private Map A = new HashMap(); + private BoolSetting showInvisibles; + private EnumSetting style; + private FloatSetting rounding; + private FloatSetting lineWidth; + private MultiSetting features; + private FloatSetting fillAlpha; + private FloatSetting glowStrength; + private BoolSetting animated; + private FloatSetting animationSpeed; + private EnumSetting healthPosition; + private BoolSetting healthText; + private BoolSetting healthShine; + private FloatSetting fadeSpeed; + private IntSetting maxDistance; + private IntSetting limit; + private BoolSetting menuColor; + private ColorSetting boxColor; + private ColorSetting gradientColor; + private ColorSetting friendColor; + private ColorSetting healthHigh; + private ColorSetting healthLow; + private Frustum frustum; + private long lastFrameTime = 0L; + private long frameCounter = 0L; + private Map visibleTargets = new LinkedHashMap(); + private Map animatedBoxes = new HashMap(); public TwoDESP() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.l - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL350_0 -> this.f.isSelected(new Object[]{"Health Bar", 47850572908778L}), 73196168581295L} + this.healthText + .visibleWhen( + (Predicate)ignored -> this.features.isSelected("Health Bar") ); - this.u - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL346_0 -> this.f.isSelected(new Object[]{"Health Bar", 47850572908778L}), 119980880492450L} + this.healthHigh + .visibleWhen( + (Predicate)ignored -> this.features.isSelected("Health Bar") ); - this.m - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL349_0 -> this.f.isSelected(new Object[]{"Health Bar", 47850572908778L}), 73196168581295L} + this.healthShine + .visibleWhen( + (Predicate)ignored -> this.features.isSelected("Health Bar") ); - this.j - .setVisibility_FloatSetting( - new Object[]{ - (Predicate)lpL352_0 -> this.f.isSelected(new Object[]{"Gradient", 47850572908778L}) && (Boolean)this.i.getValue(), 35046756052036L - } + this.animationSpeed + .visibleWhen( + (Predicate)ignored -> this.features.isSelected("Gradient") && this.animated.getValue() ); - this.k - .setVisibility_EnumSetting( - new Object[]{(Predicate)lpL351_0 -> this.f.isSelected(new Object[]{"Health Bar", 47850572908778L}), 90319707064974L} + this.healthPosition + .visibleWhen( + (Predicate)ignored -> this.features.isSelected("Health Bar") ); - this.g - .setVisibility_FloatSetting(new Object[]{(Predicate)lpL355_0 -> this.f.isSelected(new Object[]{"Fill", 47850572908778L}), 35046756052036L}); - this.i - .setVisibility_BoolSetting( - new Object[]{(Predicate)lpL353_0 -> this.f.isSelected(new Object[]{"Gradient", 47850572908778L}), 73196168581295L} + this.fillAlpha + .visibleWhen((Predicate)ignored -> this.features.isSelected("Fill")); + this.animated + .visibleWhen( + (Predicate)ignored -> this.features.isSelected("Gradient") ); - this.r.setVisibility_ColorSetting(new Object[]{(Predicate)lpL348_0 -> !(Boolean)this.q.getValue(), 119980880492450L}); - this.s - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL347_0 -> this.f.isSelected(new Object[]{"Gradient", 47850572908778L}), 119980880492450L} + this.boxColor.visibleWhen((Predicate)ignored -> !this.menuColor.getValue()); + this.gradientColor + .visibleWhen( + (Predicate)ignored -> this.features.isSelected("Gradient") ); - this.v - .setVisibility_ColorSetting( - new Object[]{(Predicate)lpL345_0 -> this.f.isSelected(new Object[]{"Health Bar", 47850572908778L}), 119980880492450L} + this.healthLow + .visibleWhen( + (Predicate)ignored -> this.features.isSelected("Health Bar") ); - this.h - .setVisibility_FloatSetting(new Object[]{(Predicate)lpL354_0 -> this.f.isSelected(new Object[]{"Glow", 47850572908778L}), 35046756052036L}); + this.glowStrength + .visibleWhen((Predicate)ignored -> this.features.isSelected("Glow")); } @Subscribe - public void a(TickEvent19 var1) { - if (b.world != null && b.player != null) { - this.z.clear(); - int var9 = (Integer)this.o.getValue(); - boolean var10 = (Boolean)this.d.getValue(); - ArrayList var11 = new ArrayList(); + public void onClientTick(ClientTickEvent event) { + if (mc.world != null && mc.player != null) { + this.visibleTargets.clear(); + int maxRange = this.maxDistance.getValue(); + boolean includeInvisible = this.showInvisibles.getValue(); + ArrayList candidates = new ArrayList(); - for (PlayerEntity var13 : b.world.getPlayers()) { - if (var13 != b.player && Prestige.i.a_boolean_(new Object[]{var13, 54363558999103L}) && !var13.isRemoved()) { - float var14 = b.player.distanceTo(var13); - if (!(var14 > var9) && (var10 || !var13.isInvisible())) { - TwoDESPHelper var15 = new TwoDESPHelper(); - var15.a = var13; - var15.b = var13.getName().getString(); - var15.c = var13.getHealth() + var13.getAbsorptionAmount(); - var15.d = Math.max(1.0F, var13.getMaxHealth()); - var15.e = var13.getWidth(); - var15.f = var13.getHeight(); - var15.g = var14; - var15.h = Prestige.g.a(new Object[]{var15.b, 24848952222090L}); - var11.add(var15); + for (PlayerEntity player : mc.world.getPlayers()) { + if (player != mc.player && Prestige.botFilter.isValidTarget(player) && !player.isRemoved()) { + float distance = mc.player.distanceTo(player); + if (!(distance > maxRange) && (includeInvisible || !player.isInvisible())) { + TwoDEspTarget espTarget = new TwoDEspTarget(); + espTarget.player = player; + espTarget.name = player.getName().getString(); + espTarget.health = player.getHealth() + player.getAbsorptionAmount(); + espTarget.maxHealth = Math.max(1.0F, player.getMaxHealth()); + espTarget.width = player.getWidth(); + espTarget.height = player.getHeight(); + espTarget.distance = distance; + espTarget.friend = Prestige.friendManager.isFriend(espTarget.name); + candidates.add(espTarget); } } } - var11.sort(Comparator.comparingDouble(lpL344_0 -> ((dev.zprestige.prestige.combat.TwoDESPHelper)lpL344_0).g)); + candidates.sort(Comparator.comparingDouble(candidate -> ((dev.zprestige.prestige.combat.TwoDEspTarget)candidate).distance)); - for (int var16 = 0; var16 < var11.size() && var16 < this.p.getValue(); var16++) { - TwoDESPHelper var17 = (TwoDESPHelper)var11.get(var16); - this.z.put(var17.a.getUuid(), var17); + for (int index = 0; index < candidates.size() && index < this.limit.getValue(); index++) { + TwoDEspTarget nearest = (TwoDEspTarget)candidates.get(index); + this.visibleTargets.put(nearest.player.getUuid(), nearest); } } } @Subscribe - public void a(TickEvent22 var1) { - this.w = var1.a(new Object[0]); + public void onFrustumSetup(FrustumSetupEvent event) { + this.frustum = event.getFrustum(); } @Subscribe - public void a(TickEvent25 var1) { - if (b.world != null && b.player != null) { - if (b.currentScreen == null || b.currentScreen instanceof ChatScreen) { - this.y++; - long var19 = System.currentTimeMillis(); - float var21 = this.x == 0L ? 0.0F : Math.min(0.1F, (float)(var19 - this.x) / 1000.0F); - this.x = var19; - float var22 = 1.0F - (float)Math.exp(-var21 * (Float)this.n.getValue()); - int var23 = b.getWindow().getScaledWidth(); - int var24 = b.getWindow().getScaledHeight(); - Font var25 = Prestige.c.a(new Object[]{1236438218049L}); - Matrix4f var26 = new Matrix4f(); - Color var27 = this.q.getValue() - ? (Color)Prestige.moduleManager.getMenu(new Object[0]).getMenuColor(new Object[0]).getValue() - : (Color)this.r.getValue(); - Color var28 = (Color)this.s.getValue(); - float var29 = this.f.isSelected(new Object[]{"Gradient", 47850572908778L}) && this.i.getValue() - ? (float)((Math.sin(var19 / 1000.0 * ((Float)this.j.getValue()).floatValue()) + 1.0) * 0.5) + public void onRender2D(Render2DEvent event) { + if (mc.world != null && mc.player != null) { + if (mc.currentScreen == null || mc.currentScreen instanceof ChatScreen) { + this.frameCounter++; + long now = System.currentTimeMillis(); + float deltaSeconds = this.lastFrameTime == 0L ? 0.0F : Math.min(0.1F, (float)(now - this.lastFrameTime) / 1000.0F); + this.lastFrameTime = now; + float fadeStep = 1.0F - (float)Math.exp(-deltaSeconds * this.fadeSpeed.getValue()); + int screenWidth = mc.getWindow().getScaledWidth(); + int screenHeight = mc.getWindow().getScaledHeight(); + MsdfFont font = Prestige.fontManager.getDefaultFont(); + Matrix4f matrix = new Matrix4f(); + Color baseColor = this.menuColor.getValue() + ? Prestige.moduleManager.getMenu().getMenuColor().getValue() + : this.boxColor.getValue(); + Color secondaryColor = this.gradientColor.getValue(); + float gradientPhase = this.features.isSelected("Gradient") && this.animated.getValue() + ? (float)((Math.sin(now / 1000.0 * this.animationSpeed.getValue().floatValue()) + 1.0) * 0.5) : 0.0F; - for (Entry var31 : (Iterable)(this.z.entrySet())) { - UUID var32 = (UUID)var31.getKey(); - TwoDESPHelper var33 = (TwoDESPHelper)var31.getValue(); - PlayerEntity var34 = var33.a; - if (var34 != null && !var34.isRemoved() && (this.w == null || this.w.isVisible(var34.getBoundingBox()))) { - Vec3d var35 = MatrixStack.b(new Object[]{var34, 78245126833881L}); - float var10002 = var33.e; - float var10003 = var33.f; - Object[] var10006 = new Object[]{null, null, null, 134641612236124L}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var35; - float[] var36 = this.a(var10006); - if (var36 != null) { - float var10000 = var36[0]; - var10002 = var23 + 20; - Object[] var10005 = new Object[]{null, null, null, 90144406875187L}; - var10005[2] = var10002; - var10005[1] = -20.0F; - var10005[0] = var10000; - float var37 = d(var10005); - var10000 = var36[1]; - var10002 = var24 + 20; - var10005 = new Object[]{null, null, null, 90144406875187L}; - var10005[2] = var10002; - var10005[1] = -20.0F; - var10005[0] = var10000; - float var38 = d(var10005); - var10000 = var36[2]; - var10002 = var23 + 20; - var10005 = new Object[]{null, null, null, 90144406875187L}; - var10005[2] = var10002; - var10005[1] = -20.0F; - var10005[0] = var10000; - float var39 = d(var10005); - var10000 = var36[3]; - var10002 = var24 + 20; - var10005 = new Object[]{null, null, null, 90144406875187L}; - var10005[2] = var10002; - var10005[1] = -20.0F; - var10005[0] = var10000; - float var40 = d(var10005); - if (!(var39 - var37 < 3.0F) && !(var40 - var38 < 3.0F)) { - Point3D var41 = (Point3D)this.A.get(var32); - if (var41 == null) { - var41 = new Point3D(); - var41.e = 0.0F; - this.A.put(var32, var41); + for (Entry entry : (Iterable)(this.visibleTargets.entrySet())) { + UUID uuid = (UUID)entry.getKey(); + TwoDEspTarget espTarget = (TwoDEspTarget)entry.getValue(); + PlayerEntity player = espTarget.player; + if (player != null && !player.isRemoved() && (this.frustum == null || this.frustum.isVisible(player.getBoundingBox()))) { + Vec3d renderPos = Render2D.getInterpolatedPos(player); + float upperBound = espTarget.width; + float[] screenBounds = this.projectBoundingBox(renderPos, upperBound, espTarget.height); + if (screenBounds != null) { + float rawCoord = screenBounds[0]; + upperBound = screenWidth + 20; + float minX = clamp(rawCoord, -20.0F, upperBound); + rawCoord = screenBounds[1]; + upperBound = screenHeight + 20; + float minY = clamp(rawCoord, -20.0F, upperBound); + rawCoord = screenBounds[2]; + upperBound = screenWidth + 20; + float maxX = clamp(rawCoord, -20.0F, upperBound); + rawCoord = screenBounds[3]; + upperBound = screenHeight + 20; + float maxY = clamp(rawCoord, -20.0F, upperBound); + if (!(maxX - minX < 3.0F) && !(maxY - minY < 3.0F)) { + TwoDEspBox box = (TwoDEspBox)this.animatedBoxes.get(uuid); + if (box == null) { + box = new TwoDEspBox(); + box.alpha = 0.0F; + this.animatedBoxes.put(uuid, box); } - var41.a = var37; - var41.b = var38; - var41.c = var39; - var41.d = var40; - float var10001 = var41.e; - var10006 = new Object[]{null, null, null, 42082820314752L}; - var10006[2] = var22; - var10006[1] = 1.0F; - var10006[0] = var10001; - var41.e = b_float___________________(var10006); - var41.f = this.y; - var41.g = var33; - RenderHelper8 var48 = var1.a; - MatrixCameraData var55 = var1.b; - Object[] var10013 = new Object[]{null, null, null, null, null, null, null, null, null, null, 78522822944826L}; - var10013[9] = var19; - var10013[8] = var29; - var10013[7] = var28; - var10013[6] = var27; - var10013[5] = var41; - var10013[4] = var33; - var10013[3] = var25; - var10013[2] = var26; - var10013[1] = var55; - var10013[0] = var48; - this.j(var10013); + box.minX = minX; + box.minY = minY; + box.maxX = maxX; + box.maxY = maxY; + box.alpha = lerp(box.alpha, 1.0F, fadeStep); + box.lastFrame = this.frameCounter; + box.target = espTarget; + this.renderTarget(event.renderer, event.context, matrix, font, espTarget, box, baseColor, secondaryColor, gradientPhase, now); } } } } - Iterator var42 = this.A.entrySet().iterator(); + Iterator boxIterator = this.animatedBoxes.entrySet().iterator(); - while (var42.hasNext()) { - Entry var43 = (Entry)var42.next(); - Point3D var44 = (Point3D)var43.getValue(); - if (var44.f != this.y) { - float var49 = var44.e; - Object[] var62 = new Object[]{null, null, null, 42082820314752L}; - var62[2] = var22; - var62[1] = 0.0F; - var62[0] = var49; - var44.e = b_float___________________(var62); - if (!(var44.e < 0.02F) && var44.g != null) { - RenderHelper8 var50 = var1.a; - MatrixCameraData var56 = var1.b; - TwoDESPHelper var60 = var44.g; - Object[] var63 = new Object[]{null, null, null, null, null, null, null, null, null, null, 78522822944826L}; - var63[9] = var19; - var63[8] = var29; - var63[7] = var28; - var63[6] = var27; - var63[5] = var44; - var63[4] = var60; - var63[3] = var25; - var63[2] = var26; - var63[1] = var56; - var63[0] = var50; - this.j(var63); + while (boxIterator.hasNext()) { + TwoDEspBox fadingBox = (TwoDEspBox)((Entry)boxIterator.next()).getValue(); + if (fadingBox.lastFrame != this.frameCounter) { + fadingBox.alpha = lerp(fadingBox.alpha, 0.0F, fadeStep); + if (!(fadingBox.alpha < 0.02F) && fadingBox.target != null) { + this.renderTarget(event.renderer, event.context, matrix, font, fadingBox.target, fadingBox, baseColor, secondaryColor, gradientPhase, now); } else { - var42.remove(); + boxIterator.remove(); } } } @@ -292,1147 +228,339 @@ public class TwoDESP extends Module { } @Override - public void onDisable(Object[] var1) { - this.A.clear(); - this.z.clear(); - this.x = 0L; + public void onDisable() { + this.animatedBoxes.clear(); + this.visibleTargets.clear(); + this.lastFrameTime = 0L; } - private void j(Object[] var1) { - RenderHelper8 var3 = (RenderHelper8)var1[0]; - MatrixCameraData var14 = (MatrixCameraData)var1[1]; - Matrix4f var4 = (Matrix4f)var1[2]; - Font var5 = (Font)var1[3]; - TwoDESPHelper var13 = (TwoDESPHelper)var1[4]; - Point3D var2 = (Point3D)var1[5]; - Color var10 = (Color)var1[6]; - Color var12 = (Color)var1[7]; - float var11 = (Float)var1[8]; - long var6 = (Long)var1[9]; - long var8 = (Long)var1[10]; - var8 = 5437566087809L ^ var8; - long var15 = var8 ^ 70499333495722L; - long var17 = var8 ^ 57838912502400L; - long var19 = var8 ^ 134877643836561L; - long var21 = var8 ^ 49658717802141L; - long var23 = var8 ^ 88513148419423L; - long var25 = var8 ^ 71379644903388L; - long var27 = var8 ^ 107093311527222L; - long var29 = var8 ^ 102121887172249L; - long var31 = var8 ^ 136938965861949L; - long var33 = var8 ^ 114476324000337L; - long var35 = var8 ^ 9040879832580L; - long var37 = var8 ^ 130621728408040L; - Event.b(); - float var10001 = var2.e; - Object[] var10004 = new Object[]{null, var15}; - var10004[0] = var10001; - float var40 = c_float__(var10004); - if (!(var40 < 0.02F)) { - float var41 = var2.a; - float var42 = var2.b; - float var43 = var2.c; - float var44 = var2.d; - float var45 = var43 - var41; - float var46 = var44 - var42; - Color var47 = var13.h ? (Color)this.t.getValue() : var10; - boolean var48 = this.f.isSelected(new Object[]{"Gradient", var33}); - Color var49 = var47; - Color var50 = var48 && !var13.h ? var12 : var47; - if (var48 && (Boolean)this.i.getValue() && !var13.h) { - Object[] var10005 = new Object[]{null, null, null, var27}; - var10005[2] = var11; - var10005[1] = var12; - var10005[0] = var47; - Color var51 = b_Color____(var10005); - var10005 = new Object[]{null, null, null, var27}; - var10005[2] = var11; - var10005[1] = var47; - var10005[0] = var12; - Color var52 = b_Color____(var10005); - var49 = var51; - var50 = var52; + private void renderTarget(BufferSource buffers, CameraMatrices context, Matrix4f matrix, MsdfFont font, TwoDEspTarget espTarget, TwoDEspBox box, Color baseColor, Color secondaryColor, float gradientPhase, long now) { + float alpha = clamp01(box.alpha); + if (!(alpha < 0.02F)) { + float minX = box.minX; + float minY = box.minY; + float maxX = box.maxX; + float maxY = box.maxY; + float boxWidth = maxX - minX; + float boxHeight = maxY - minY; + Color primaryColor = espTarget.friend ? this.friendColor.getValue() : baseColor; + boolean useGradient = this.features.isSelected("Gradient"); + Color topColor = primaryColor; + Color bottomColor = useGradient && !espTarget.friend ? secondaryColor : primaryColor; + if (useGradient && this.animated.getValue() && !espTarget.friend) { + Color animatedTop = lerpColor(primaryColor, secondaryColor, gradientPhase); + Color animatedBottom = lerpColor(secondaryColor, primaryColor, gradientPhase); + topColor = animatedTop; + bottomColor = animatedBottom; } - var10004 = new Object[]{null, null, var31}; - var10004[1] = var40; - var10004[0] = var49; - Color var58 = a_Color______(var10004); - var10004 = new Object[]{null, null, var31}; - var10004[1] = var40; - var10004[0] = var50; - Color var59 = a_Color______(var10004); - float var53 = (Float)this.e.getValue(); - float var54 = Math.min((Float)this.c.getValue(), Math.min(var45, var46) * 0.4F); - if (var54 < 0.0F) { - var54 = 0.0F; + Color fadedTop = scaleAlpha(topColor, alpha); + Color fadedBottom = scaleAlpha(bottomColor, alpha); + float strokeWidth = this.lineWidth.getValue(); + float radius = Math.min(this.rounding.getValue(), Math.min(boxWidth, boxHeight) * 0.4F); + if (radius < 0.0F) { + radius = 0.0F; } - if (this.f.isSelected(new Object[]{"Glow", var33})) { - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var17}; - var10011[7] = var54; - var10011[6] = var40; - var10011[5] = var47; - var10011[4] = var44; - var10011[3] = var43; - var10011[2] = var42; - var10011[1] = var41; - var10011[0] = var4; - this.o(var10011); + if (this.features.isSelected("Glow")) { + this.drawGlow(matrix, minX, minY, maxX, maxY, primaryColor, alpha, radius); } - if (this.f.isSelected(new Object[]{"Fill", var33})) { - var10001 = var40 * (Float)this.g.getValue(); - var10004 = new Object[]{null, null, var31}; - var10004[1] = var10001; - var10004[0] = var47; - Color var55 = a_Color______(var10004); - Object[] var10009 = new Object[]{null, null, null, null, null, null, null, var35}; - var10009[6] = var54; - var10009[5] = var55; - var10009[4] = var44; - var10009[3] = var43; - var10009[2] = var42; - var10009[1] = var41; - var10009[0] = var4; - MatrixStack.n(var10009); + if (this.features.isSelected("Fill")) { + Render2D.drawRoundedRect(matrix, minX, minY, maxX, maxY, scaleAlpha(primaryColor, alpha * this.fillAlpha.getValue()), radius); } - String var60 = (String)this.a.getValue(); - switch (var60) { + switch (this.style.getValue()) { case "Box": - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, null, var37}; - var10012[8] = var54; - var10012[7] = var53; - var10012[6] = var59; - var10012[5] = var58; - var10012[4] = var44; - var10012[3] = var43; - var10012[2] = var42; - var10012[1] = var41; - var10012[0] = var4; - this.k(var10012); + this.drawBox(matrix, minX, minY, maxX, maxY, fadedTop, fadedBottom, strokeWidth, radius); break; case "Corners": - Object[] var69 = new Object[]{null, null, null, null, null, null, null, null, var21}; - var69[7] = var53; - var69[6] = var59; - var69[5] = var58; - var69[4] = var44; - var69[3] = var43; - var69[2] = var42; - var69[1] = var41; - var69[0] = var4; - this.l(var69); + this.drawCorners(matrix, minX, minY, maxX, maxY, fadedTop, fadedBottom, strokeWidth); break; case "Brackets": - Object[] var68 = new Object[]{null, null, null, null, null, null, null, null, var19}; - var68[7] = var53; - var68[6] = var59; - var68[5] = var58; - var68[4] = var44; - var68[3] = var43; - var68[2] = var42; - var68[1] = var41; - var68[0] = var4; - this.m(var68); + this.drawBrackets(matrix, minX, minY, maxX, maxY, fadedTop, fadedBottom, strokeWidth); } - if (this.f.isSelected(new Object[]{"Health Bar", var33})) { - float var10007 = var13.c; - float var10008 = var13.d; - Object[] var10013 = new Object[]{null, null, null, null, null, null, null, null, null, null, var25}; - var10013[9] = var6; - var10013[8] = var40; - var10013[7] = var10008; - var10013[6] = var10007; - var10013[5] = var44; - var10013[4] = var43; - var10013[3] = var42; - var10013[2] = var41; - var10013[1] = var5; - var10013[0] = var4; - this.q(var10013); + if (this.features.isSelected("Health Bar")) { + this.drawHealthBar(matrix, font, minX, minY, maxX, maxY, espTarget.health, espTarget.maxHealth, alpha, now); } - if (this.f.isSelected(new Object[]{"Name Tag", var33})) { - String var66 = var13.b; - Object[] var70 = new Object[]{null, null, null, null, null, null, null, null, null, var29}; - var70[8] = var40; - var70[7] = var66; - var70[6] = var43; - var70[5] = var42; - var70[4] = var41; - var70[3] = var5; - var70[2] = var4; - var70[1] = var14; - var70[0] = var3; - this.r(var70); + if (this.features.isSelected("Name Tag")) { + this.drawNameTag(buffers, context, matrix, font, minX, minY, maxX, espTarget.name, alpha); } - if (this.f.isSelected(new Object[]{"Distance", var33})) { - float var67 = var13.g; - Object[] var71 = new Object[]{null, null, null, null, null, null, null, null, null, var23}; - var71[8] = var40; - var71[7] = var67; - var71[6] = var43; - var71[5] = var44; - var71[4] = var41; - var71[3] = var5; - var71[2] = var4; - var71[1] = var14; - var71[0] = var3; - this.s(var71); + if (this.features.isSelected("Distance")) { + this.drawDistanceTag(buffers, context, matrix, font, minX, maxY, maxX, espTarget.distance, alpha); } } } - private void k(Object[] var1) { - Matrix4f var9 = (Matrix4f)var1[0]; - float var2 = (Float)var1[1]; - float var3 = (Float)var1[2]; - float var5 = (Float)var1[3]; - float var4 = (Float)var1[4]; - Color var12 = (Color)var1[5]; - Color var11 = (Color)var1[6]; - float var10 = (Float)var1[7]; - float var6 = (Float)var1[8]; - long var7 = (Long)var1[9]; - var7 = 5437566087809L ^ var7; - long var13 = var7 ^ 69984260505063L; - long var15 = var7 ^ 21983777775710L; - Color var17 = c(new Object[]{var12, var11, var13}); - Color var18 = new Color(0, 0, 0, Math.round(80.0F * (var17.getAlpha() / 255.0F))); - float var10001 = var2 - 0.5F; - float var10002 = var3 - 0.5F; - float var10003 = var5 + 0.5F; - float var10004 = var4 + 0.5F; - float var10006 = var6 + 0.5F; - Object[] var10010 = new Object[]{null, null, null, null, null, null, null, null, var15}; - var10010[7] = 1.0F; - var10010[6] = var10006; - var10010[5] = var18; - var10010[4] = var10004; - var10010[3] = var10003; - var10010[2] = var10002; - var10010[1] = var10001; - var10010[0] = var9; - p(var10010); - var10010 = new Object[]{null, null, null, null, null, null, null, null, var15}; - var10010[7] = var10; - var10010[6] = var6; - var10010[5] = var17; - var10010[4] = var4; - var10010[3] = var5; - var10010[2] = var3; - var10010[1] = var2; - var10010[0] = var9; - p(var10010); + private void drawBox(Matrix4f matrix, float minX, float minY, float maxX, float maxY, Color topColor, Color bottomColor, float strokeWidth, float radius) { + Color outlineColor = averageColor(topColor, bottomColor); + drawRoundedOutline(matrix, minX - 0.5F, minY - 0.5F, maxX + 0.5F, maxY + 0.5F, new Color(0, 0, 0, Math.round(80.0F * (outlineColor.getAlpha() / 255.0F))), radius + 0.5F, 1.0F); + drawRoundedOutline(matrix, minX, minY, maxX, maxY, outlineColor, radius, strokeWidth); } - private void l(Object[] var1) { - Matrix4f var9 = (Matrix4f)var1[0]; - float var2 = (Float)var1[1]; - float var7 = (Float)var1[2]; - float var11 = (Float)var1[3]; - float var3 = (Float)var1[4]; - Color var10 = (Color)var1[5]; - Color var8 = (Color)var1[6]; - float var6 = (Float)var1[7]; - long var4 = (Long)var1[8]; - var4 = 5437566087809L ^ var4; - long var12 = var4 ^ 6866449549507L; - long var14 = var4 ^ 65682793450132L; - float var16 = var11 - var2; - float var17 = var3 - var7; - float var10000 = Math.min(var16, var17) * 0.28F; - Object[] var10005 = new Object[]{null, null, null, var14}; - var10005[2] = 22.0F; - var10005[1] = 4.0F; - var10005[0] = var10000; - float var18 = d(var10005); - float var19 = var6 * 0.5F; - Color var20 = new Color(0, 0, 0, Math.round(120.0F * (var10.getAlpha() / 255.0F))); - float var10002 = var2 - var19; - float var10003 = var7 - var19; - float var10004 = var2 + var18; - float var43 = var7 + var19; - Object[] var10010 = new Object[]{null, null, null, null, null, var10, var20, var12}; - var10010[4] = var43; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var9; - this.n(var10010); - var10002 = var2 - var19; - var10003 = var7 - var19; - var10004 = var2 + var19; - float var44 = var7 + var18; - var10010 = new Object[]{null, null, null, null, null, var10, var20, var12}; - var10010[4] = var44; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var9; - this.n(var10010); - var10002 = var11 - var18; - var10003 = var7 - var19; - var10004 = var11 + var19; - float var45 = var7 + var19; - var10010 = new Object[]{null, null, null, null, null, var10, var20, var12}; - var10010[4] = var45; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var9; - this.n(var10010); - var10002 = var11 - var19; - var10003 = var7 - var19; - var10004 = var11 + var19; - float var46 = var7 + var18; - var10010 = new Object[]{null, null, null, null, null, var10, var20, var12}; - var10010[4] = var46; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var9; - this.n(var10010); - var10002 = var2 - var19; - var10003 = var3 - var19; - var10004 = var2 + var18; - float var47 = var3 + var19; - var10010 = new Object[]{null, null, null, null, null, var8, var20, var12}; - var10010[4] = var47; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var9; - this.n(var10010); - var10002 = var2 - var19; - var10003 = var3 - var18; - var10004 = var2 + var19; - float var48 = var3 + var19; - var10010 = new Object[]{null, null, null, null, null, var8, var20, var12}; - var10010[4] = var48; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var9; - this.n(var10010); - var10002 = var11 - var18; - var10003 = var3 - var19; - var10004 = var11 + var19; - float var49 = var3 + var19; - var10010 = new Object[]{null, null, null, null, null, var8, var20, var12}; - var10010[4] = var49; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var9; - this.n(var10010); - var10002 = var11 - var19; - var10003 = var3 - var18; - var10004 = var11 + var19; - float var50 = var3 + var19; - var10010 = new Object[]{null, null, null, null, null, var8, var20, var12}; - var10010[4] = var50; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var9; - this.n(var10010); + private void drawCorners(Matrix4f matrix, float minX, float minY, float maxX, float maxY, Color topColor, Color bottomColor, float strokeWidth) { + float cornerLength = clamp(Math.min(maxX - minX, maxY - minY) * 0.28F, 4.0F, 22.0F); + float halfWidth = strokeWidth * 0.5F; + Color shadowColor = new Color(0, 0, 0, Math.round(120.0F * (topColor.getAlpha() / 255.0F))); + this.drawShadowedRect(matrix, minX - halfWidth, minY - halfWidth, minX + cornerLength, minY + halfWidth, topColor, shadowColor); + this.drawShadowedRect(matrix, minX - halfWidth, minY - halfWidth, minX + halfWidth, minY + cornerLength, topColor, shadowColor); + this.drawShadowedRect(matrix, maxX - cornerLength, minY - halfWidth, maxX + halfWidth, minY + halfWidth, topColor, shadowColor); + this.drawShadowedRect(matrix, maxX - halfWidth, minY - halfWidth, maxX + halfWidth, minY + cornerLength, topColor, shadowColor); + this.drawShadowedRect(matrix, minX - halfWidth, maxY - halfWidth, minX + cornerLength, maxY + halfWidth, bottomColor, shadowColor); + this.drawShadowedRect(matrix, minX - halfWidth, maxY - cornerLength, minX + halfWidth, maxY + halfWidth, bottomColor, shadowColor); + this.drawShadowedRect(matrix, maxX - cornerLength, maxY - halfWidth, maxX + halfWidth, maxY + halfWidth, bottomColor, shadowColor); + this.drawShadowedRect(matrix, maxX - halfWidth, maxY - cornerLength, maxX + halfWidth, maxY + halfWidth, bottomColor, shadowColor); } - private void m(Object[] var1) { - Matrix4f var2 = (Matrix4f)var1[0]; - float var6 = (Float)var1[1]; - float var10 = (Float)var1[2]; - float var7 = (Float)var1[3]; - float var11 = (Float)var1[4]; - Color var3 = (Color)var1[5]; - Color var4 = (Color)var1[6]; - float var5 = (Float)var1[7]; - long var8 = (Long)var1[8]; - var8 = 5437566087809L ^ var8; - long var12 = var8 ^ 56905653874846L; - long var14 = var8 ^ 89880989911759L; - long var16 = var8 ^ 119010383546520L; - float var18 = var11 - var10; - float var10000 = var18 * 0.35F; - Object[] var10005 = new Object[]{null, null, null, var16}; - var10005[2] = 26.0F; - var10005[1] = 5.0F; - var10005[0] = var10000; - float var19 = d(var10005); - float var20 = var5 * 0.5F; - float var21 = (var10 + var11) * 0.5F; - Color var22 = new Color(0, 0, 0, Math.round(120.0F * (var3.getAlpha() / 255.0F))); - float var10002 = var6 - var20; - float var10003 = var10 - var20; - float var10004 = var6 + var20; - float var39 = var10 + var19; - Object[] var10010 = new Object[]{null, null, null, null, null, var3, var22, var14}; - var10010[4] = var39; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var2; - this.n(var10010); - var10002 = var6 - var20; - var10003 = var21 - var19 * 0.4F; - var10004 = var6 + var20; - float var40 = var21 + var19 * 0.4F; - var10010 = new Object[]{null, null, null, null, null, c(new Object[]{var3, var4, var12}), var22, var14}; - var10010[4] = var40; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var2; - this.n(var10010); - var10002 = var6 - var20; - var10003 = var11 - var19; - var10004 = var6 + var20; - float var41 = var11 + var20; - var10010 = new Object[]{null, null, null, null, null, var4, var22, var14}; - var10010[4] = var41; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var2; - this.n(var10010); - var10002 = var7 - var20; - var10003 = var10 - var20; - var10004 = var7 + var20; - float var42 = var10 + var19; - var10010 = new Object[]{null, null, null, null, null, var3, var22, var14}; - var10010[4] = var42; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var2; - this.n(var10010); - var10002 = var7 - var20; - var10003 = var21 - var19 * 0.4F; - var10004 = var7 + var20; - float var43 = var21 + var19 * 0.4F; - var10010 = new Object[]{null, null, null, null, null, c(new Object[]{var3, var4, var12}), var22, var14}; - var10010[4] = var43; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var2; - this.n(var10010); - var10002 = var7 - var20; - var10003 = var11 - var19; - var10004 = var7 + var20; - float var44 = var11 + var20; - var10010 = new Object[]{null, null, null, null, null, var4, var22, var14}; - var10010[4] = var44; - var10010[3] = var10004; - var10010[2] = var10003; - var10010[1] = var10002; - var10010[0] = var2; - this.n(var10010); + private void drawBrackets(Matrix4f matrix, float minX, float minY, float maxX, float maxY, Color topColor, Color bottomColor, float strokeWidth) { + float bracketLength = clamp((maxY - minY) * 0.35F, 5.0F, 26.0F); + float halfWidth = strokeWidth * 0.5F; + float centerY = (minY + maxY) * 0.5F; + Color shadowColor = new Color(0, 0, 0, Math.round(120.0F * (topColor.getAlpha() / 255.0F))); + this.drawShadowedRect(matrix, minX - halfWidth, minY - halfWidth, minX + halfWidth, minY + bracketLength, topColor, shadowColor); + this.drawShadowedRect(matrix, minX - halfWidth, centerY - bracketLength * 0.4F, minX + halfWidth, centerY + bracketLength * 0.4F, averageColor(topColor, bottomColor), shadowColor); + this.drawShadowedRect(matrix, minX - halfWidth, maxY - bracketLength, minX + halfWidth, maxY + halfWidth, bottomColor, shadowColor); + this.drawShadowedRect(matrix, maxX - halfWidth, minY - halfWidth, maxX + halfWidth, minY + bracketLength, topColor, shadowColor); + this.drawShadowedRect(matrix, maxX - halfWidth, centerY - bracketLength * 0.4F, maxX + halfWidth, centerY + bracketLength * 0.4F, averageColor(topColor, bottomColor), shadowColor); + this.drawShadowedRect(matrix, maxX - halfWidth, maxY - bracketLength, maxX + halfWidth, maxY + halfWidth, bottomColor, shadowColor); } - private void n(Object[] var1) { - Matrix4f var2 = (Matrix4f)var1[0]; - float var3 = (Float)var1[1]; - float var4 = (Float)var1[2]; - float var10 = (Float)var1[3]; - float var5 = (Float)var1[4]; - Color var7 = (Color)var1[5]; - Color var6 = (Color)var1[6]; - long var8 = (Long)var1[7]; - var8 = 5437566087809L ^ var8; - long var11 = var8 ^ 57793146413317L; - float var10001 = var3 - 0.5F; - float var10002 = var4 - 0.5F; - float var10003 = var10 + 0.5F; - float var10004 = var5 + 0.5F; - Object[] var10008 = new Object[]{null, null, null, null, null, var6, var11}; - var10008[4] = var10004; - var10008[3] = var10003; - var10008[2] = var10002; - var10008[1] = var10001; - var10008[0] = var2; - MatrixStack.r(var10008); - var10008 = new Object[]{null, null, null, null, null, var7, var11}; - var10008[4] = var5; - var10008[3] = var10; - var10008[2] = var4; - var10008[1] = var3; - var10008[0] = var2; - MatrixStack.r(var10008); + private void drawShadowedRect(Matrix4f matrix, float x1, float y1, float x2, float y2, Color color, Color shadowColor) { + Render2D.drawRect(matrix, x1 - 0.5F, y1 - 0.5F, x2 + 0.5F, y2 + 0.5F, shadowColor); + Render2D.drawRect(matrix, x1, y1, x2, y2, color); } - private void o(Object[] var1) { - Matrix4f var4 = (Matrix4f)var1[0]; - float var8 = (Float)var1[1]; - float var11 = (Float)var1[2]; - float var7 = (Float)var1[3]; - float var10 = (Float)var1[4]; - Color var9 = (Color)var1[5]; - float var6 = (Float)var1[6]; - float var5 = (Float)var1[7]; - long var2 = (Long)var1[8]; - var2 = 5437566087809L ^ var2; - long var12 = var2 ^ 86001372118539L; - long var14 = var2 ^ 61917817914885L; - Event.b(); - float var17 = 4.0F; - float var18 = (Float)this.h.getValue(); + private void drawGlow(Matrix4f matrix, float minX, float minY, float maxX, float maxY, Color color, float alpha, float radius) { + float layers = 4.0F; + float strength = this.glowStrength.getValue(); - for (int var19 = 1; var19 <= var17; var19++) { - float var20 = var19 / var17; - float var21 = var18 * var20; - float var22 = var6 * 0.14F * (1.0F - var20); - int var10002 = var9.getRed(); - int var10003 = var9.getGreen(); - int var10004 = var9.getBlue(); - Object[] var10008 = new Object[]{null, var12}; - var10008[0] = var22; - Color var23 = new Color(var10002, var10003, var10004, a_int_________________(var10008)); - float var10001 = var8 - var21; - float var25 = var11 - var21; - float var26 = var7 + var21; - float var27 = var10 + var21; - float var10006 = var5 + var21; - Object[] var10009 = new Object[]{null, null, null, null, null, null, null, var14}; - var10009[6] = var10006; - var10009[5] = var23; - var10009[4] = var27; - var10009[3] = var26; - var10009[2] = var25; - var10009[1] = var10001; - var10009[0] = var4; - MatrixStack.n(var10009); + for (int layer = 1; layer <= layers; layer++) { + float progress = layer / layers; + float expand = strength * progress; + float layerAlpha = alpha * 0.14F * (1.0F - progress); + Render2D.drawRoundedRect(matrix, minX - expand, minY - expand, maxX + expand, maxY + expand, new Color(color.getRed(), color.getGreen(), color.getBlue(), toAlphaByte(layerAlpha)), radius + expand); } } - private static void p(Object[] var0) { - Matrix4f var4 = (Matrix4f)var0[0]; - float var3 = (Float)var0[1]; - float var8 = (Float)var0[2]; - float var10 = (Float)var0[3]; - float var1 = (Float)var0[4]; - Color var9 = (Color)var0[5]; - float var5 = (Float)var0[6]; - float var2 = (Float)var0[7]; - long var6 = (Long)var0[8]; - var6 = 5437566087809L ^ var6; - long var11 = var6 ^ 36196417274046L; - RenderHelper8 var10000 = MatrixStack.g; - MatrixCameraData var10001 = MatrixStack.h; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, null, null, var11}; - var10012[9] = var2; - var10012[8] = var5; - var10012[7] = var9; - var10012[6] = var1; - var10012[5] = var10; - var10012[4] = var8; - var10012[3] = var3; - var10012[2] = var4; - var10012[1] = var10001; - var10012[0] = var10000; - RenderState.C(var10012); + private static void drawRoundedOutline(Matrix4f matrix, float x1, float y1, float x2, float y2, Color color, float radius, float thickness) { + ShapeRenderer.drawRoundedRectOutline(Render2D.currentBuffers, Render2D.currentContext, matrix, x1, y1, x2, y2, color, radius, thickness); } - private void q(Object[] var1) { - Matrix4f var4 = (Matrix4f)var1[0]; - Font var2 = (Font)var1[1]; - float var14 = (Float)var1[2]; - float var6 = (Float)var1[3]; - float var5 = (Float)var1[4]; - float var11 = (Float)var1[5]; - float var3 = (Float)var1[6]; - float var13 = (Float)var1[7]; - float var12 = (Float)var1[8]; - long var7 = (Long)var1[9]; - long var9 = (Long)var1[10]; - var9 = 5437566087809L ^ var9; - long var15 = var9 ^ 4428948817655L; - long var17 = var9 ^ 48408362557173L; - long var19 = var9 ^ 133426880095119L; - long var21 = var9 ^ 64073203559255L; - long var23 = var9 ^ 41230823818347L; - long var25 = var9 ^ 62202941512544L; - long var27 = var9 ^ 70663756624400L; - long var29 = var9 ^ 46746568911314L; - long var31 = var9 ^ 83707440354137L; - long var33 = var9 ^ 100734159960582L; - Event.b(); - float var10001 = var3 / var13; - Object[] var10004 = new Object[]{null, var15}; - var10004[0] = var10001; - float var36 = c_float__(var10004); - Color var37 = (Color)this.u.getValue(); - Color var38 = (Color)this.v.getValue(); - Object[] var10005 = new Object[]{null, null, null, var23}; - var10005[2] = var36; - var10005[1] = var37; - var10005[0] = var38; - Color var39 = b_Color____(var10005); - float var83 = var12 * 0.63F; - Object[] var10008 = new Object[]{null, var21}; - var10008[0] = var83; - Color var41 = new Color(0, 0, 0, a_int_________________(var10008)); - String var42 = (String)this.k.getValue(); - float var43 = 2.6F; - float var44 = 3.0F; - float var45 = 1.6F; - boolean var50 = var42.equals("Left") || var42.equals("Right"); - float var46; - float var47; - float var48; - float var49; - if (var50) { - if (var42.equals("Left")) { - var48 = var14 - var44; - var46 = var48 - var43; + private void drawHealthBar(Matrix4f matrix, MsdfFont font, float minX, float minY, float maxX, float maxY, float health, float maxHealth, float alpha, long now) { + float healthFraction = clamp01(health / maxHealth); + Color highColor = this.healthHigh.getValue(); + Color lowColor = this.healthLow.getValue(); + Color fillColor = lerpColor(lowColor, highColor, healthFraction); + Color backgroundColor = new Color(0, 0, 0, toAlphaByte(alpha * 0.63F)); + String position = this.healthPosition.getValue(); + float barThickness = 2.6F; + float barGap = 3.0F; + float barRadius = 1.6F; + boolean vertical = position.equals("Left") || position.equals("Right"); + float barMinX; + float barMinY; + float barMaxX; + float barMaxY; + if (vertical) { + if (position.equals("Left")) { + barMaxX = minX - barGap; + barMinX = barMaxX - barThickness; } else { - var46 = var5 + var44; - var48 = var46 + var43; + barMinX = maxX + barGap; + barMaxX = barMinX + barThickness; } - var47 = var6; - var49 = var11; + barMinY = minY; + barMaxY = maxY; } else { - if (var42.equals("Top")) { - var49 = var6 - var44; - var47 = var49 - var43; + if (position.equals("Top")) { + barMaxY = minY - barGap; + barMinY = barMaxY - barThickness; } else { - var47 = var11 + var44; - var49 = var47 + var43; + barMinY = maxY + barGap; + barMaxY = barMinY + barThickness; } - var46 = var14; - var48 = var5; + barMinX = minX; + barMaxX = maxX; } - var10001 = var46 - 0.6F; - float var10002 = var47 - 0.6F; - float var10003 = var48 + 0.6F; - float var79 = var49 + 0.6F; - Object[] var10009 = new Object[]{null, null, null, null, null, null, null, var31}; - var10009[6] = var45; - var10009[5] = var41; - var10009[4] = var79; - var10009[3] = var10003; - var10009[2] = var10002; - var10009[1] = var10001; - var10009[0] = var4; - MatrixStack.n(var10009); - if (var50) { - float var51 = (var49 - var47) * var36; - float var52 = var49 - var51; - if (var51 > 1.0F) { - var10009 = new Object[]{null, null, var25}; - var10009[1] = var12; - var10009[0] = var38; - Color var84 = a_Color______(var10009); - Object[] var10010 = new Object[]{null, null, var25}; - var10010[1] = var12; - var10010[0] = var38; - Color var10006 = a_Color______(var10010); - Object[] var10011 = new Object[]{null, null, var25}; - var10011[1] = var12; - var10011[0] = var39; - Color var10007 = a_Color______(var10011); - Object[] var10012 = new Object[]{null, null, var25}; - var10012[1] = var12; - var10012[0] = var39; - var10012 = new Object[]{null, null, null, null, null, var84, var10006, var10007, a_Color______(var10012), new Vector4f(var45), var19}; - var10012[4] = var49; - var10012[3] = var48; - var10012[2] = var52; - var10012[1] = var46; - var10012[0] = var4; - RenderState.w(var10012); + Render2D.drawRoundedRect(matrix, barMinX - 0.6F, barMinY - 0.6F, barMaxX + 0.6F, barMaxY + 0.6F, backgroundColor, barRadius); + if (vertical) { + float fillHeight = (barMaxY - barMinY) * healthFraction; + float fillTop = barMaxY - fillHeight; + if (fillHeight > 1.0F) { + ShapeRenderer.drawGradientRoundedRect(matrix, barMinX, fillTop, barMaxX, barMaxY, scaleAlpha(lowColor, alpha), scaleAlpha(lowColor, alpha), scaleAlpha(fillColor, alpha), scaleAlpha(fillColor, alpha), new Vector4f(barRadius)); } - if ((Boolean)this.m.getValue() && var51 > 4.0F) { - float var53 = (float)(var7 % 1600L / 1600.0); - float var54 = var52 + (var49 - var52) * var53; - float var55 = Math.min(8.0F, var51 * 0.35F); - float var85 = var12 * 0.28F * (1.0F - Math.abs(var53 - 0.5F) * 2.0F); - var10008 = new Object[]{null, var21}; - var10008[0] = var85; - Color var56 = new Color(255, 255, 255, a_int_________________(var10008)); - var10002 = var54 - var55 * 0.5F; - float var80 = var54 + var55 * 0.5F; - var10008 = new Object[]{null, null, null, null, null, var56, var33}; - var10008[4] = var80; - var10008[3] = var48; - var10008[2] = var10002; - var10008[1] = var46; - var10008[0] = var4; - MatrixStack.r(var10008); + if (this.healthShine.getValue() && fillHeight > 4.0F) { + float shinePhase = (float)(now % 1600L / 1600.0); + float shineCenterY = fillTop + (barMaxY - fillTop) * shinePhase; + float shineHeight = Math.min(8.0F, fillHeight * 0.35F); + Render2D.drawRect(matrix, barMinX, shineCenterY - shineHeight * 0.5F, barMaxX, shineCenterY + shineHeight * 0.5F, new Color(255, 255, 255, toAlphaByte(alpha * 0.28F * (1.0F - Math.abs(shinePhase - 0.5F) * 2.0F)))); } } else { - float var60 = (var48 - var46) * var36; - float var62 = var46 + var60; - if (var60 > 1.0F) { - var10009 = new Object[]{null, null, var25}; - var10009[1] = var12; - var10009[0] = var38; - Color var86 = a_Color______(var10009); - Object[] var100 = new Object[]{null, null, var25}; - var100[1] = var12; - var100[0] = var39; - Color var89 = a_Color______(var100); - Object[] var101 = new Object[]{null, null, var25}; - var101[1] = var12; - var101[0] = var39; - Color var90 = a_Color______(var101); - Object[] var103 = new Object[]{null, null, var25}; - var103[1] = var12; - var103[0] = var38; - var103 = new Object[]{null, null, null, null, null, var86, var89, var90, a_Color______(var103), new Vector4f(var45), var19}; - var103[4] = var49; - var103[3] = var62; - var103[2] = var47; - var103[1] = var46; - var103[0] = var4; - RenderState.w(var103); + float fillWidth = (barMaxX - barMinX) * healthFraction; + float fillRight = barMinX + fillWidth; + if (fillWidth > 1.0F) { + ShapeRenderer.drawGradientRoundedRect(matrix, barMinX, barMinY, fillRight, barMaxY, scaleAlpha(lowColor, alpha), scaleAlpha(fillColor, alpha), scaleAlpha(fillColor, alpha), scaleAlpha(lowColor, alpha), new Vector4f(barRadius)); } - if ((Boolean)this.m.getValue() && var60 > 4.0F) { - float var64 = (float)(var7 % 1600L / 1600.0); - float var66 = var46 + var60 * var64; - float var68 = Math.min(8.0F, var60 * 0.35F); - float var87 = var12 * 0.28F * (1.0F - Math.abs(var64 - 0.5F) * 2.0F); - var10008 = new Object[]{null, var21}; - var10008[0] = var87; - Color var70 = new Color(255, 255, 255, a_int_________________(var10008)); - var10001 = var66 - var68 * 0.5F; - var10003 = var66 + var68 * 0.5F; - var10008 = new Object[]{null, null, null, null, null, var70, var33}; - var10008[4] = var49; - var10008[3] = var10003; - var10008[2] = var47; - var10008[1] = var10001; - var10008[0] = var4; - MatrixStack.r(var10008); + if (this.healthShine.getValue() && fillWidth > 4.0F) { + float sweepPhase = (float)(now % 1600L / 1600.0); + float shineCenterX = barMinX + fillWidth * sweepPhase; + float shineWidth = Math.min(8.0F, fillWidth * 0.35F); + Render2D.drawRect(matrix, shineCenterX - shineWidth * 0.5F, barMinY, shineCenterX + shineWidth * 0.5F, barMaxY, new Color(255, 255, 255, toAlphaByte(alpha * 0.28F * (1.0F - Math.abs(sweepPhase - 0.5F) * 2.0F)))); } } - if ((Boolean)this.l.getValue()) { - String var61 = String.valueOf(Math.round(var3)); - float var88 = var12 * 0.55F; - var10008 = new Object[]{null, var21}; - var10008[0] = var88; - Color var63 = new Color(0, 0, 0, a_int_________________(var10008)); - float var65 = 0.5F; - float var67 = var2.a_float______________(new Object[]{var61, var17}) * var65; - float var69 = var2.c_float___(new Object[]{var27}) * var65; - float var57; - float var71; - if (var50) { - var71 = (var46 + var48) * 0.5F - var67 * 0.5F; - var57 = var49 + 2.0F; + if (this.healthText.getValue()) { + String hpText = String.valueOf(Math.round(health)); + Color textBackground = new Color(0, 0, 0, toAlphaByte(alpha * 0.55F)); + float textScale = 0.5F; + float textWidth = font.getTextWidth(hpText) * textScale; + float textHeight = font.getLineHeight() * textScale; + float textY; + float textX; + if (vertical) { + textX = (barMinX + barMaxX) * 0.5F - textWidth * 0.5F; + textY = barMaxY + 2.0F; } else { - var71 = (var46 + var48) * 0.5F - var67 * 0.5F; - var57 = var42.equals("Top") ? var47 - var69 - 2.0F : var49 + 2.0F; + textX = (barMinX + barMaxX) * 0.5F - textWidth * 0.5F; + textY = position.equals("Top") ? barMinY - textHeight - 2.0F : barMaxY + 2.0F; } - var10001 = var71 - 2.0F; - var10002 = var57 - 1.0F; - var10003 = var71 + var67 + 2.0F; - float var81 = var57 + var69 + 1.0F; - var10009 = new Object[]{null, null, null, null, null, null, null, var31}; - var10009[6] = 1.5F; - var10009[5] = var63; - var10009[4] = var81; - var10009[3] = var10003; - var10009[2] = var10002; - var10009[1] = var10001; - var10009[0] = var4; - MatrixStack.n(var10009); - Color var10000 = new Color(240, 240, 245); - var10004 = new Object[]{null, null, var25}; - var10004[1] = var12; - var10004[0] = var10000; - Color var58 = a_Color______(var10004); - var10009 = new Object[]{null, null, null, null, null, var58, var29}; - var10009[4] = var65; - var10009[3] = var57; - var10009[2] = var71; - var10009[1] = var61; - var10009[0] = var4; - var2.w(var10009); + Render2D.drawRoundedRect(matrix, textX - 2.0F, textY - 1.0F, textX + textWidth + 2.0F, textY + textHeight + 1.0F, textBackground, 1.5F); + font.drawTextScaled(matrix, hpText, textX, textY, textScale, scaleAlpha(new Color(240, 240, 245), alpha)); } } - private void r(Object[] var1) { - RenderHelper8 var10 = (RenderHelper8)var1[0]; - MatrixCameraData var7 = (MatrixCameraData)var1[1]; - Matrix4f var3 = (Matrix4f)var1[2]; - Font var5 = (Font)var1[3]; - float var4 = (Float)var1[4]; - float var2 = (Float)var1[5]; - float var11 = (Float)var1[6]; - String var12 = (String)var1[7]; - float var6 = (Float)var1[8]; - long var8 = (Long)var1[9]; - var8 = 5437566087809L ^ var8; - long var13 = var8 ^ 52831183632304L; - long var15 = var8 ^ 88966295022204L; - long var17 = var8 ^ 101494182599509L; - long var19 = var8 ^ 40237477949989L; - long var21 = var8 ^ 64576446339139L; - float var23 = var5.a_float______________(new Object[]{var12, var13}); - float var24 = var5.c_float___(new Object[]{var17}); - float var25 = 4.0F; - float var26 = 1.5F; - float var27 = var23 + var25 * 2.0F; - float var28 = (var4 + var11) * 0.5F; - float var29 = var28 - var27 * 0.5F; - float var30 = var29 + var27; - float var31 = var2 - 3.0F; - float var32 = var31 - (var24 + var26 * 2.0F); - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var15}; - var10011[7] = var6; - var10011[6] = var31; - var10011[5] = var30; - var10011[4] = var32; - var10011[3] = var29; - var10011[2] = var3; - var10011[1] = var7; - var10011[0] = var10; - this.t(var10011); - Color var10000 = new Color(240, 240, 250); - Object[] var10004 = new Object[]{null, null, var19}; - var10004[1] = var6; - var10004[0] = var10000; - Color var33 = a_Color______(var10004); - float var10003 = var29 + var25; - float var35 = var32 + var26; - Object[] var10008 = new Object[]{null, null, null, null, var33, var21}; - var10008[3] = var35; - var10008[2] = var10003; - var10008[1] = var12; - var10008[0] = var3; - var5.v(var10008); + private void drawNameTag(BufferSource buffers, CameraMatrices context, Matrix4f matrix, MsdfFont font, float minX, float minY, float maxX, String playerName, float alpha) { + float textWidth = font.getTextWidth(playerName); + float lineHeight = font.getLineHeight(); + float paddingX = 4.0F; + float paddingY = 1.5F; + float labelWidth = textWidth + paddingX * 2.0F; + float labelLeft = ((minX + maxX) * 0.5F) - labelWidth * 0.5F; + float labelRight = labelLeft + labelWidth; + float labelBottom = minY - 3.0F; + float labelTop = labelBottom - (lineHeight + paddingY * 2.0F); + this.drawLabelBackground(buffers, context, matrix, labelLeft, labelTop, labelRight, labelBottom, alpha); + font.drawText(matrix, playerName, labelLeft + paddingX, labelTop + paddingY, scaleAlpha(new Color(240, 240, 250), alpha)); } - private void s(Object[] var1) { - RenderHelper8 var10 = (RenderHelper8)var1[0]; - MatrixCameraData var6 = (MatrixCameraData)var1[1]; - Matrix4f var8 = (Matrix4f)var1[2]; - Font var9 = (Font)var1[3]; - float var5 = (Float)var1[4]; - float var11 = (Float)var1[5]; - float var7 = (Float)var1[6]; - float var4 = (Float)var1[7]; - float var12 = (Float)var1[8]; - long var2 = (Long)var1[9]; - var2 = 5437566087809L ^ var2; - long var13 = var2 ^ 66439921077366L; - long var15 = var2 ^ 101754693915066L; - long var17 = var2 ^ 88164886159507L; - long var19 = var2 ^ 45050123749859L; - long var21 = var2 ^ 64801460353873L; - int var24 = (int)var4; - Event.b(); - int var25 = (int)(var4 * 10.0F) - var24 * 10; - if (var25 < 0) { - var25 = -var25; + private void drawDistanceTag(BufferSource buffers, CameraMatrices context, Matrix4f matrix, MsdfFont font, float minX, float maxY, float maxX, float distance, float alpha) { + int wholeMeters = (int)distance; + int tenths = (int)(distance * 10.0F) - wholeMeters * 10; + if (tenths < 0) { + tenths = -tenths; } - String var26 = var24 + "." + var25 + "m"; - float var27 = 0.75F; - float var28 = var9.a_float______________(new Object[]{var26, var13}) * var27; - float var29 = var9.c_float___(new Object[]{var17}) * var27; - float var30 = 3.5F; - float var31 = 1.5F; - float var32 = var28 + var30 * 2.0F; - float var33 = (var5 + var7) * 0.5F; - float var34 = var33 - var32 * 0.5F; - float var35 = var34 + var32; - float var36 = var11 + 3.0F; - float var37 = var36 + var29 + var31 * 2.0F; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, var15}; - var10011[7] = var12; - var10011[6] = var37; - var10011[5] = var35; - var10011[4] = var36; - var10011[3] = var34; - var10011[2] = var8; - var10011[1] = var6; - var10011[0] = var10; - this.t(var10011); - Color var10000 = new Color(200, 200, 220); - Object[] var10004 = new Object[]{null, null, var19}; - var10004[1] = var12; - var10004[0] = var10000; - Color var38 = a_Color______(var10004); - float var10003 = var34 + var30; - float var40 = var36 + var31; - Object[] var10009 = new Object[]{null, null, null, null, null, var38, var21}; - var10009[4] = var27; - var10009[3] = var40; - var10009[2] = var10003; - var10009[1] = var26; - var10009[0] = var8; - var9.w(var10009); + String distanceText = wholeMeters + "." + tenths + "m"; + float textScale = 0.75F; + float textWidth = font.getTextWidth(distanceText) * textScale; + float textHeight = font.getLineHeight() * textScale; + float paddingX = 3.5F; + float paddingY = 1.5F; + float labelWidth = textWidth + paddingX * 2.0F; + float labelLeft = ((minX + maxX) * 0.5F) - labelWidth * 0.5F; + float labelRight = labelLeft + labelWidth; + float labelTop = maxY + 3.0F; + this.drawLabelBackground(buffers, context, matrix, labelLeft, labelTop, labelRight, labelTop + textHeight + paddingY * 2.0F, alpha); + font.drawTextScaled(matrix, distanceText, labelLeft + paddingX, labelTop + paddingY, textScale, scaleAlpha(new Color(200, 200, 220), alpha)); } - private void t(Object[] var1) { - RenderHelper8 var7 = (RenderHelper8)var1[0]; - MatrixCameraData var2 = (MatrixCameraData)var1[1]; - Matrix4f var10 = (Matrix4f)var1[2]; - float var6 = (Float)var1[3]; - float var8 = (Float)var1[4]; - float var11 = (Float)var1[5]; - float var9 = (Float)var1[6]; - float var5 = (Float)var1[7]; - long var3 = (Long)var1[8]; - var3 = 5437566087809L ^ var3; - long var12 = var3 ^ 71488456665735L; - long var14 = var3 ^ 122897708558140L; - long var16 = var3 ^ 125706923072239L; - long var18 = var3 ^ 110048169098932L; - float var20 = var11 - var6; - float var21 = var9 - var8; - if (this.f.isSelected(new Object[]{"Blur Labels", var18})) { - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var14}; - var10011[8] = 2.5F; - var10011[7] = 5; - var10011[6] = var21; - var10011[5] = var20; - var10011[4] = var8; - var10011[3] = var6; - var10011[2] = var10; - var10011[1] = var2; - var10011[0] = var7; - RenderTarget.e(var10011); + private void drawLabelBackground(BufferSource buffers, CameraMatrices context, Matrix4f matrix, float x1, float y1, float x2, float y2, float alpha) { + float width = x2 - x1; + float height = y2 - y1; + if (this.features.isSelected("Blur Labels")) { + BlurredRoundedRectShader.drawBlurredRect(buffers, context, matrix, x1, y1, width, height, 5, 2.5F); } - float var10005 = var5 * 0.72F; - Object[] var10008 = new Object[]{null, var16}; - var10008[0] = var10005; - Color var22 = new Color(16, 16, 22, a_int_________________(var10008)); - Object[] var24 = new Object[]{null, null, null, null, null, null, null, null, null, var12}; - var24[8] = 2.5F; - var24[7] = var22; - var24[6] = var21; - var24[5] = var20; - var24[4] = var8; - var24[3] = var6; - var24[2] = var10; - var24[1] = var2; - var24[0] = var7; - RoundedPosColorShader.c(var24); + RoundedRectShader.drawRoundedRect(buffers, context, matrix, x1, y1, width, height, new Color(16, 16, 22, toAlphaByte(alpha * 0.72F)), 2.5F); } - private float[] a(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - float var3 = (Float)var1[1]; - float var6 = (Float)var1[2]; - long var4 = (Long)var1[3]; - var4 = 5437566087809L ^ var4; - long var7 = var4 ^ 66986878808006L; - Event.b(); - double var10 = var3 * 0.5; - double var12 = var6; - float var14 = Float.POSITIVE_INFINITY; - float var15 = Float.POSITIVE_INFINITY; - float var16 = Float.NEGATIVE_INFINITY; - float var17 = Float.NEGATIVE_INFINITY; + private float[] projectBoundingBox(Vec3d pos, float entityWidth, float entityHeight) { + double halfWidth = entityWidth * 0.5; + double fullHeight = entityHeight; + float minX = Float.POSITIVE_INFINITY; + float minY = Float.POSITIVE_INFINITY; + float maxX = Float.NEGATIVE_INFINITY; + float maxY = Float.NEGATIVE_INFINITY; - for (int var18 = 0; var18 < 8; var18++) { - double var19 = var2.x + ((var18 & 1) == 0 ? -var10 : var10); - double var21 = var2.y + ((var18 & 2) == 0 ? 0.0 : var12); - double var23 = var2.z + ((var18 & 4) == 0 ? -var10 : var10); - Vec3d var25 = MatrixStack.a_class_243_______________(new Object[]{new Vec3d(var19, var21, var23), var7}); - if (var25.z < 0.0 || var25.z >= 1.0) { + for (int corner = 0; corner < 8; corner++) { + Vec3d projected = Render2D.worldToScreen(new Vec3d(pos.x + ((corner & 1) == 0 ? -halfWidth : halfWidth), pos.y + ((corner & 2) == 0 ? 0.0 : fullHeight), pos.z + ((corner & 4) == 0 ? -halfWidth : halfWidth))); + if (projected.z < 0.0 || projected.z >= 1.0) { return null; } - float var26 = (float)var25.x; - float var27 = (float)var25.y; - if (var26 < var14) { - var14 = var26; + float screenX = (float)projected.x; + float screenY = (float)projected.y; + if (screenX < minX) { + minX = screenX; } - if (var26 > var16) { - var16 = var26; + if (screenX > maxX) { + maxX = screenX; } - if (var27 < var15) { - var15 = var27; + if (screenY < minY) { + minY = screenY; } - if (var27 > var17) { - var17 = var27; + if (screenY > maxY) { + maxY = screenY; } } - return new float[]{var14, var15, var16, var17}; + return new float[]{minX, minY, maxX, maxY}; } - private static Color a_Color______(Object[] var0) { - Color var1 = (Color)var0[0]; - float var4 = (Float)var0[1]; - long var2 = (Long)var0[2]; - var2 = 5437566087809L ^ var2; - long var5 = var2 ^ 62019225104150L; - long var7 = var2 ^ 27069973455766L; - float var10000 = var1.getAlpha(); - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var4; - int var9 = Math.round(var10000 * c_float__(var10004)); - int var10002 = var1.getRed(); - int var10003 = var1.getGreen(); - int var11 = var1.getBlue(); - Object[] var10008 = new Object[]{null, var7}; - var10008[0] = var9; - return new Color(var10002, var10003, var11, c_int__(var10008)); + private static Color scaleAlpha(Color color, float factor) { + float baseAlpha = color.getAlpha(); + int alpha = Math.round(baseAlpha * clamp01(factor)); + return new Color(color.getRed(), color.getGreen(), color.getBlue(), clampByte(alpha)); } - private static Color b_Color____(Object[] var0) { - Color var2 = (Color)var0[0]; - Color var3 = (Color)var0[1]; - float var1 = (Float)var0[2]; - long var4 = (Long)var0[3]; - var4 = 5437566087809L ^ var4; - long var6 = var4 ^ 41278750437405L; - long var8 = var4 ^ 5994508123293L; - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var1; - var1 = c_float__(var10003); - int var10 = Math.round(var2.getRed() + (var3.getRed() - var2.getRed()) * var1); - int var11 = Math.round(var2.getGreen() + (var3.getGreen() - var2.getGreen()) * var1); - int var12 = Math.round(var2.getBlue() + (var3.getBlue() - var2.getBlue()) * var1); - int var13 = Math.round(var2.getAlpha() + (var3.getAlpha() - var2.getAlpha()) * var1); - Object[] var10005 = new Object[]{null, var8}; - var10005[0] = var10; - int var10002 = c_int__(var10005); - Object[] var10006 = new Object[]{null, var8}; - var10006[0] = var11; - int var16 = c_int__(var10006); - Object[] var10007 = new Object[]{null, var8}; - var10007[0] = var12; - int var10004 = c_int__(var10007); - Object[] var10008 = new Object[]{null, var8}; - var10008[0] = var13; - return new Color(var10002, var16, var10004, c_int__(var10008)); + private static Color lerpColor(Color startColor, Color endColor, float progress) { + progress = clamp01(progress); + int red = Math.round(startColor.getRed() + (endColor.getRed() - startColor.getRed()) * progress); + int green = Math.round(startColor.getGreen() + (endColor.getGreen() - startColor.getGreen()) * progress); + int blue = Math.round(startColor.getBlue() + (endColor.getBlue() - startColor.getBlue()) * progress); + int alpha = Math.round(startColor.getAlpha() + (endColor.getAlpha() - startColor.getAlpha()) * progress); + return new Color(clampByte(red), clampByte(green), clampByte(blue), clampByte(alpha)); } - private static Color c(Object[] var0) { - Color var2 = (Color)var0[0]; - Color var1 = (Color)var0[1]; + private static Color averageColor(Color first, Color second) { return new Color( - (var2.getRed() + var1.getRed()) / 2, - (var2.getGreen() + var1.getGreen()) / 2, - (var2.getBlue() + var1.getBlue()) / 2, - (var2.getAlpha() + var1.getAlpha()) / 2 + (first.getRed() + second.getRed()) / 2, + (first.getGreen() + second.getGreen()) / 2, + (first.getBlue() + second.getBlue()) / 2, + (first.getAlpha() + second.getAlpha()) / 2 ); } - private static float b_float___________________(Object[] var0) { - float var3 = (Float)var0[0]; - float var2 = (Float)var0[1]; - float var1 = (Float)var0[2]; - long var4 = (Long)var0[3]; - var4 = 5437566087809L ^ var4; - long var6 = var4 ^ 36502000330000L; - float var10001 = var2 - var3; - Object[] var10005 = new Object[]{null, var6}; - var10005[0] = var1; - return var3 + var10001 * c_float__(var10005); + private static float lerp(float current, float target, float factor) { + return current + (target - current) * clamp01(factor); } - private static float c_float__(Object[] var0) { - float var3 = (Float)var0[0]; - return var3 < 0.0F ? 0.0F : (var3 > 1.0F ? 1.0F : var3); + private static float clamp01(float value) { + return value < 0.0F ? 0.0F : (value > 1.0F ? 1.0F : value); } - private static float d(Object[] var0) { - float var1 = (Float)var0[0]; - float var5 = (Float)var0[1]; - float var2 = (Float)var0[2]; - return var1 < var5 ? var5 : (var1 > var2 ? var2 : var1); + private static float clamp(float value, float min, float max) { + return value < min ? min : (value > max ? max : value); } - private static int a_int_________________(Object[] var0) { - float var1 = (Float)var0[0]; - Event.b(); - int var5 = Math.round(var1 * 255.0F); - return var5 < 0 ? 0 : (var5 > 255 ? 255 : var5); + private static int toAlphaByte(float fraction) { + int scaled = Math.round(fraction * 255.0F); + return scaled < 0 ? 0 : (scaled > 255 ? 255 : scaled); } - private static int c_int__(Object[] var0) { - int var1 = (Integer)var0[0]; - return var1 < 0 ? 0 : (var1 > 255 ? 255 : var1); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static int clampByte(int value) { + return value < 0 ? 0 : (value > 255 ? 255 : value); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/Weather.java b/src/main/java/dev/zprestige/prestige/module/visual/Weather.java index 1371119..7f23211 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/Weather.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/Weather.java @@ -7,21 +7,16 @@ import dev.zprestige.prestige.FloatSetting; import dev.zprestige.prestige.IntSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent27; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.math.WeatherHelper; -import dev.zprestige.prestige.render.FontRenderer; -import dev.zprestige.prestige.render.RenderHelper27; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.render.RenderUtil; +import dev.zprestige.prestige.event.Render3DEvent; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.math.WeatherParticle; +import dev.zprestige.prestige.render.GlTextureHandle; +import dev.zprestige.prestige.render.StopWatch; +import dev.zprestige.prestige.render.RenderCore; import dev.zprestige.prestige.render.RoundedTextureShader; -import dev.zprestige.prestige.render.TextureUtil; +import dev.zprestige.prestige.render.TextureLoader; import dev.zprestige.prestige.world.PositionUtil; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Iterator; import java.util.function.Predicate; @@ -34,360 +29,223 @@ import org.joml.Matrix4f; import org.joml.Vector3d; public class Weather extends Module { - private EnumSetting a; - private IntSetting c; - private IntSetting d; - private FloatSetting e; - private FloatSetting f; - private BoolSetting g; - private ColorSetting h; - private static FontRenderer i; - private ArrayList j = new ArrayList(); - private RenderHelper27 k = new RenderHelper27(26293358099357L); - private Vec3d l = null; + private EnumSetting mode; + private IntSetting density; + private IntSetting radius; + private FloatSetting speed; + private FloatSetting size; + private BoolSetting themeColor; + private ColorSetting color; + private static GlTextureHandle glowTexture; + private ArrayList particles = new ArrayList(); + private StopWatch frameTimer = new StopWatch(); + private Vec3d lastCenter = null; public Weather() { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); - this.h.setVisibility_ColorSetting(new Object[]{(Predicate)lpL357_0 -> !(Boolean)this.g.getValue(), 119980880492450L}); + this.color.visibleWhen((Predicate)ignored -> !this.themeColor.getValue()); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 126115243174136L; - this.j.clear(); - this.k.a_void_____________________(new Object[]{var4}); - this.l = null; + public void onDisable() { + this.particles.clear(); + this.frameTimer.reset(); + this.lastCenter = null; } @Subscribe - public void a(TickEvent27 var1) { - if (b.player != null && b.world != null) { - float var17 = Math.min(this.k.a_float__________________(new Object[]{45633363943154L}) / 50.0F, 4.0F); - this.k.a_void_____________________(new Object[]{93540861878173L}); - String var18 = (String)this.a.getValue(); - int var19 = (Integer)this.c.getValue(); - int var20 = (Integer)this.d.getValue(); - Vec3d var21 = PositionUtil.b(new Object[]{118247215910525L}); - boolean var22 = this.j.isEmpty() || this.l != null && this.l.squaredDistanceTo(var21) > 256.0; - this.l = var21; - if (var22) { - int var23 = 0; + public void onRender3D(Render3DEvent event) { + if (mc.player != null && mc.world != null) { + float elapsedTicks = Math.min(this.frameTimer.getElapsed() / 50.0F, 4.0F); + this.frameTimer.reset(); + String currentMode = this.mode.getValue(); + int maxParticles = this.density.getValue(); + int spawnRadius = this.radius.getValue(); + Vec3d playerPos = PositionUtil.getPlayerPos(); + boolean needsRefill = this.particles.isEmpty() || this.lastCenter != null && this.lastCenter.squaredDistanceTo(playerPos) > 256.0; + this.lastCenter = playerPos; + if (needsRefill) { + int attempts = 0; - for (int var24 = var19 * 6; this.j.size() < var19 && var23 < var24; var23++) { - Object[] var10006 = new Object[]{null, null, null, 7641560533586L}; - var10006[2] = var20; - var10006[1] = var21; - var10006[0] = var18; - WeatherHelper var25 = this.a(var10006); - if (var25 != null) { - this.j.add(var25); + for (int maxAttempts = maxParticles * 6; this.particles.size() < maxParticles && attempts < maxAttempts; attempts++) { + WeatherParticle spawned = this.createParticle(currentMode, playerPos, spawnRadius); + if (spawned != null) { + this.particles.add(spawned); } } } else { - int var26 = (int)Math.ceil(var17 * Math.max(1, var19 / 20)); + int spawnBudget = (int)Math.ceil(elapsedTicks * Math.max(1, maxParticles / 20)); - for (int var28 = 0; this.j.size() < var19 && var28 < var26; var28++) { - Object[] var32 = new Object[]{null, null, null, 7641560533586L}; - var32[2] = var20; - var32[1] = var21; - var32[0] = var18; - WeatherHelper var30 = this.a(var32); - if (var30 != null) { - this.j.add(var30); + for (int spawnAttempt = 0; this.particles.size() < maxParticles && spawnAttempt < spawnBudget; spawnAttempt++) { + WeatherParticle newParticle = this.createParticle(currentMode, playerPos, spawnRadius); + if (newParticle != null) { + this.particles.add(newParticle); } } } - Iterator var27 = this.j.iterator(); + Iterator iterator = this.particles.iterator(); - while (var27.hasNext()) { - WeatherHelper var29 = (WeatherHelper)var27.next(); - float var10001 = var17 * (Float)this.e.getValue(); - Object[] var10004 = new Object[]{null, 671520226978L}; - var10004[0] = var10001; - var29.a(var10004); - if (var29.c > var29.d) { - var27.remove(); - } else if (var29.a.squaredDistanceTo(var21) > var20 * 1.6 * (var20 * 1.6)) { - var27.remove(); + while (iterator.hasNext()) { + WeatherParticle particle = (WeatherParticle)iterator.next(); + particle.advance(elapsedTicks * this.speed.getValue()); + if (particle.age > particle.maxAge) { + iterator.remove(); + } else if (particle.pos.squaredDistanceTo(playerPos) > spawnRadius * 1.6 * (spawnRadius * 1.6)) { + iterator.remove(); } else { - BlockState var31 = b.world.getBlockState(BlockPos.ofFloored(var29.a)); - if (!var31.isAir() && !var31.isReplaceable() && var31.getFluidState().isEmpty()) { - var27.remove(); + BlockState blockState = mc.world.getBlockState(BlockPos.ofFloored(particle.pos)); + if (!blockState.isAir() && !blockState.isReplaceable() && blockState.getFluidState().isEmpty()) { + iterator.remove(); } } } - this.j(new Object[]{var1, var18, 25400547519706L}); + this.renderParticles(event, currentMode); } } - private WeatherHelper a(Object[] var1) { - String var4 = (String)var1[0]; - Vec3d var2 = (Vec3d)var1[1]; - int var3 = (Integer)var1[2]; - long var5 = (Long)var1[3]; - var5 = 121544606961880L ^ var5; - long var7 = var5 ^ 66204901888124L; - Event.b(); - double var10 = Math.random() * Math.PI * 2.0; - double var12 = Math.sqrt(Math.random()) * var3; - double var14 = var2.x + Math.cos(var10) * var12; - double var16 = var2.z + Math.sin(var10) * var12; - double var18; - Vec3d var20; - short var21; - switch (var4) { + private WeatherParticle createParticle(String weatherMode, Vec3d center, int spawnRadius) { + double angle = Math.random() * Math.PI * 2.0; + double distance = Math.sqrt(Math.random()) * spawnRadius; + double x = center.x + Math.cos(angle) * distance; + double z = center.z + Math.sin(angle) * distance; + double y; + Vec3d velocity; + short maxAge; + switch (weatherMode) { case "Rain": - var18 = var2.y - 4.0 + Math.random() * 28.0; - short var30 = 21973; - var20 = new Vec3d(0.0, -0.45, 0.0); - var21 = 200; + y = center.y - 4.0 + Math.random() * 28.0; + velocity = new Vec3d(0.0, -0.45, 0.0); + maxAge = 200; break; case "Snow": - var18 = var2.y - 3.0 + Math.random() * 23.0; - short var29 = 20256; - var20 = new Vec3d((Math.random() - 0.5) * 0.02, -0.06, (Math.random() - 0.5) * 0.02); - var21 = 600; + y = center.y - 3.0 + Math.random() * 23.0; + velocity = new Vec3d((Math.random() - 0.5) * 0.02, -0.06, (Math.random() - 0.5) * 0.02); + maxAge = 600; break; case "Fireflies": - var18 = var2.y - 1.0 + Math.random() * 6.0; - short var28 = 31547; - var20 = new Vec3d((Math.random() - 0.5) * 0.015, (Math.random() - 0.5) * 0.01, (Math.random() - 0.5) * 0.015); - var21 = 400; + y = center.y - 1.0 + Math.random() * 6.0; + velocity = new Vec3d((Math.random() - 0.5) * 0.015, (Math.random() - 0.5) * 0.01, (Math.random() - 0.5) * 0.015); + maxAge = 400; break; case "Embers": - var18 = var2.y - 4.0 + Math.random() * 12.0; - short var10000 = 21621; - var20 = new Vec3d((Math.random() - 0.5) * 0.01, 0.05 + Math.random() * 0.02, (Math.random() - 0.5) * 0.01); - var21 = 300; + y = center.y - 4.0 + Math.random() * 12.0; + velocity = new Vec3d((Math.random() - 0.5) * 0.01, 0.05 + Math.random() * 0.02, (Math.random() - 0.5) * 0.01); + maxAge = 300; break; default: return null; } - Vec3d var22 = new Vec3d(var14, var18, var16); - if (var4.equals("Rain") || var4.equals("Snow")) { - int var26 = b.world.getTopY(Type.MOTION_BLOCKING, MathHelper.floor(var14), MathHelper.floor(var16)); - if (var18 < var26) { + Vec3d spawnPos = new Vec3d(x, y, z); + if (weatherMode.equals("Rain") || weatherMode.equals("Snow")) { + if (y < mc.world.getTopY(Type.MOTION_BLOCKING, MathHelper.floor(x), MathHelper.floor(z))) { return null; } } - BlockState var27 = b.world.getBlockState(BlockPos.ofFloored(var22)); - if (!var27.isAir() && !var27.isReplaceable() && var27.getFluidState().isEmpty()) { + BlockState blockState = mc.world.getBlockState(BlockPos.ofFloored(spawnPos)); + if (!blockState.isAir() && !blockState.isReplaceable() && blockState.getFluidState().isEmpty()) { return null; } else { - WeatherHelper var24 = new WeatherHelper(var22, var20, var21, var7); - var24.c = (float)(Math.random() * var21 * 0.5); - return var24; + WeatherParticle particle = new WeatherParticle(spawnPos, velocity, maxAge); + particle.age = (float)(Math.random() * maxAge * 0.5); + return particle; } } - private void j(Object[] var1) { - TickEvent27 var2 = (TickEvent27)var1[0]; - String var3 = (String)var1[1]; - long var4 = (Long)var1[2]; - var4 = 121544606961880L ^ var4; - long var6 = var4 ^ 66545282385461L; - long var8 = var4 ^ 125325640790362L; - long var10 = var4 ^ 25511153347869L; - long var12 = var4 ^ 24439689758772L; - long var14 = var4 ^ 105713303031319L; - long var16 = var4 ^ 19906549461631L; - if (!this.j.isEmpty()) { - if (i == null) { - i = TextureUtil.a(new Object[]{"assets/prestige/particles/glow.png", var6}); + private void renderParticles(Render3DEvent event, String weatherMode) { + if (!this.particles.isEmpty()) { + if (glowTexture == null) { + glowTexture = TextureLoader.loadTexture("assets/prestige/particles/glow.png"); } - boolean var19 = (Boolean)this.g.getValue(); - Color var20 = var19 ? MathHelper4.d(new Object[]{var12}).darker() : null; - Color var21 = var19 ? MathHelper4.d(new Object[]{var12}).brighter() : null; - Color var22 = var19 ? null : (Color)this.h.getValue(); - float var23 = (Float)this.f.getValue(); - boolean var26 = true; - float var24; - float var25; - switch (var3) { + boolean useTheme = this.themeColor.getValue(); + Color themeDark = useTheme ? UiMath.getAccentColor().darker() : null; + Color themeBright = useTheme ? UiMath.getAccentColor().brighter() : null; + Color customColor = useTheme ? null : this.color.getValue(); + float sizeScale = this.size.getValue(); + boolean facePitch = true; + float width; + float height; + switch (weatherMode) { case "Rain": - var24 = 0.5F; - var25 = 4.5F; - var26 = false; + width = 0.5F; + height = 4.5F; + facePitch = false; break; case "Snow": - var24 = 1.6F; - var25 = 1.6F; + width = 1.6F; + height = 1.6F; break; case "Fireflies": - var24 = 2.5F; - var25 = 2.5F; + width = 2.5F; + height = 2.5F; break; case "Embers": - var24 = 1.4F; - var25 = 1.4F; + width = 1.4F; + height = 1.4F; break; default: - var24 = 2.0F; - var25 = 2.0F; + width = 2.0F; + height = 2.0F; } - var24 *= var23; - var25 *= var23; - Vec3d var27 = PositionUtil.b(new Object[]{var16}); - int var43 = (Integer)this.d.getValue(); + width *= sizeScale; + height *= sizeScale; + Vec3d playerPos = PositionUtil.getPlayerPos(); + int renderRadius = this.radius.getValue(); - for (WeatherHelper var30 : (Iterable)(new ArrayList(this.j))) { - double var31 = var30.a.distanceTo(var27); - if (!(var31 > var43 * 1.5)) { - float var33 = var30.c / var30.d; - float var34; - if (var33 < 0.1F) { - var34 = var33 / 0.1F; - } else if (var33 > 0.7F) { - var34 = (1.0F - var33) / 0.3F; + for (WeatherParticle particle : (Iterable)(new ArrayList(this.particles))) { + if (!(particle.pos.distanceTo(playerPos) > renderRadius * 1.5)) { + float lifeProgress = particle.age / particle.maxAge; + float fade; + if (lifeProgress < 0.1F) { + fade = lifeProgress / 0.1F; + } else if (lifeProgress > 0.7F) { + fade = (1.0F - lifeProgress) / 0.3F; } else { - var34 = 1.0F; + fade = 1.0F; } - if (var3.equals("Fireflies")) { - var34 *= 0.35F + 0.65F * (float)(Math.sin(var30.c * 0.12 + var30.e) * 0.5 + 0.5); - } else if (var3.equals("Embers")) { - var34 *= 0.6F + 0.4F * (float)(Math.sin(var30.c * 0.4 + var30.e) * 0.5 + 0.5); + if (weatherMode.equals("Fireflies")) { + fade *= 0.35F + 0.65F * (float)(Math.sin(particle.age * 0.12 + particle.phase) * 0.5 + 0.5); + } else if (weatherMode.equals("Embers")) { + fade *= 0.6F + 0.4F * (float)(Math.sin(particle.age * 0.4 + particle.phase) * 0.5 + 0.5); } - int var35 = MathHelper.clamp((int)(255.0F * var34), 0, 255); - Color var10000; - if (var19) { - float var10002 = var30.f; - Object[] var10005 = new Object[]{null, null, null, var14}; - var10005[2] = var10002; - var10005[1] = var21; - var10005[0] = var20; - var10000 = a_Color_______(var10005); + int alpha = MathHelper.clamp((int)(255.0F * fade), 0, 255); + Color resolvedColor; + if (useTheme) { + resolvedColor = blendColors(themeDark, themeBright, particle.colorBlend); } else { - var10000 = var22; + resolvedColor = customColor; } - Color var36 = var10000; - Color var37 = new Color(var36.getRed(), var36.getGreen(), var36.getBlue(), var35); - MatrixCameraData var44 = var2.b; - double var10001 = var30.a.x; - double var47 = var30.a.y; - double var10003 = var30.a.z; - Object[] var10006 = new Object[]{null, null, null, null, var10}; - var10006[3] = var10003; - var10006[2] = var47; - var10006[1] = var10001; - var10006[0] = var44; - Vector3d var38 = RenderUtil.a_Vector3d(var10006); - Matrix4f var39 = new Matrix4f(); - var39.translate((float)var38.x, (float)var38.y, (float)var38.z); - var39.scale(0.04F); - var39.rotateY((float)Math.toRadians(-var2.b.bC().getYaw())); - if (var26) { - var39.rotateX((float)Math.toRadians(var2.b.bC().getPitch())); + Color particleColor = resolvedColor; + Color fadedColor = new Color(particleColor.getRed(), particleColor.getGreen(), particleColor.getBlue(), alpha); + Vector3d cameraRelativePos = RenderCore.toCameraRelative(event.context, particle.pos.x, particle.pos.y, particle.pos.z); + Matrix4f matrix = new Matrix4f(); + matrix.translate((float)cameraRelativePos.x, (float)cameraRelativePos.y, (float)cameraRelativePos.z); + matrix.scale(0.04F); + matrix.rotateY((float)Math.toRadians(-event.context.camera().getYaw())); + if (facePitch) { + matrix.rotateX((float)Math.toRadians(event.context.camera().getPitch())); } - RenderHelper8 var45 = var2.a; - MatrixCameraData var46 = var2.b; - FontRenderer var48 = i; - Object[] var10014 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, var8}; - var10014[11] = 0.0F; - var10014[10] = var37; - var10014[9] = 0.0F; - var10014[8] = var25; - var10014[7] = var24; - var10014[6] = 0.0F; - var10014[5] = 0.0F; - var10014[4] = 0.0F; - var10014[3] = var48; - var10014[2] = var39; - var10014[1] = var46; - var10014[0] = var45; - RoundedTextureShader.m(var10014); + RoundedTextureShader.drawWorldTexture(event.renderer, event.context, matrix, glowTexture, 0.0F, 0.0F, 0.0F, width, height, 0.0F, fadedColor, 0.0F); } } } } - private static Color a_Color_______(Object[] var0) { - Color var5 = (Color)var0[0]; - Color var4 = (Color)var0[1]; - float var1 = (Float)var0[2]; - var1 = MathHelper.clamp(var1, 0.0F, 1.0F); - float var6 = 1.0F - var1; - int var7 = (int)(var5.getRed() * var6 + var4.getRed() * var1); - int var8 = (int)(var5.getGreen() * var6 + var4.getGreen() * var1); - int var9 = (int)(var5.getBlue() * var6 + var4.getBlue() * var1); - return new Color(MathHelper.clamp(var7, 0, 255), MathHelper.clamp(var8, 0, 255), MathHelper.clamp(var9, 0, 255)); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static Color blendColors(Color from, Color to, float progress) { + progress = MathHelper.clamp(progress, 0.0F, 1.0F); + float inverse = 1.0F - progress; + int red = (int)(from.getRed() * inverse + to.getRed() * progress); + int green = (int)(from.getGreen() * inverse + to.getGreen() * progress); + int blue = (int)(from.getBlue() * inverse + to.getBlue() * progress); + return new Color(MathHelper.clamp(red, 0, 255), MathHelper.clamp(green, 0, 255), MathHelper.clamp(blue, 0, 255)); } } diff --git a/src/main/java/dev/zprestige/prestige/module/visual/XRay.java b/src/main/java/dev/zprestige/prestige/module/visual/XRay.java index 844e966..84f7015 100644 --- a/src/main/java/dev/zprestige/prestige/module/visual/XRay.java +++ b/src/main/java/dev/zprestige/prestige/module/visual/XRay.java @@ -3,10 +3,8 @@ package dev.zprestige.prestige.module.visual; import dev.zprestige.prestige.BoolSetting; import dev.zprestige.prestige.Module; import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.BlockBoolEvent; -import dev.zprestige.prestige.event.TickEvent2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.event.BlockVisibilityEvent; +import dev.zprestige.prestige.event.FullBrightEvent; import java.util.Arrays; import java.util.List; import net.minecraft.block.Block; @@ -17,54 +15,49 @@ public class XRay extends Module { dev.zprestige.prestige.ui.bridge.Bootstrap.pre(this); } - private BoolSetting d; - public static List a; + private BoolSetting fullBright; + public static List xrayBlocks; @Override - public void onEnable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 137403884361407L; - this.j(new Object[]{var4}); + public void onEnable() { + this.reloadChunks(); } @Override - public void onDisable(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 43382272281820L; - this.j(new Object[]{var4}); + public void onDisable() { + this.reloadChunks(); } @Subscribe - public void a(TickEvent2 var1) { - if ((Boolean)this.d.getValue()) { - var1.a_void_____(new Object[0]); + public void onFullBright(FullBrightEvent event) { + if (this.fullBright.getValue()) { + event.cancel(); } } @Subscribe - public void a(BlockBoolEvent var1) { - if (var1.a(new Object[0]) != null && this.a(new Object[]{var1.a(new Object[0]), 55406673852401L})) { - var1.b(new Object[]{true}); + public void onBlockVisibility(BlockVisibilityEvent event) { + if (event.getBlock() != null && this.isXrayBlock(event.getBlock())) { + event.setVisible(true); } - var1.a_void_____(new Object[0]); + event.cancel(); } - public boolean a(Object[] var1) { - Block var4 = (Block)var1[0]; - return a.contains(var4); + public boolean isXrayBlock(Block block) { + return xrayBlocks.contains(block); } - public void j(Object[] var1) { - if (b.worldRenderer != null) { - b.worldRenderer.reload(); - b.worldRenderer.scheduleTerrainUpdate(); + public void reloadChunks() { + if (mc.worldRenderer != null) { + mc.worldRenderer.reload(); + mc.worldRenderer.scheduleTerrainUpdate(); } } static { - long[] var0 = new long[]{-965180847646834672L, -4560921742666629086L, 8926569193743056950L, -2692947904796033016L, -5341203359162433522L, -8772031253911175139L, 4452274398816108577L, 8145793621648474163L, -1652677113121079279L, 3146527104435224615L, -7982608722943803344L, -8189377747177439206L, 8467311858359992366L, -7691443587048800234L, 3707995835305295902L, 2996114386201870360L, 556036769766703136L, -1130760903583596533L, -3911967465734668275L, -9165016964744085479L, -4361975451606843350L, -3399299295743049681L, 405124933383880711L, -5938611710645501933L, -8795471080878768119L, 542933309877911579L, -9135026719944605668L, 5335918290235555855L, 1628068299134730275L, -65652401935220724L, 7789352679435665460L, -392972435088998351L, -1650343343856549870L, -1390015927117938667L, -7181382681249185755L, -1773966826351362038L, 645987347883622445L, -5139079277634912225L, -374112086935994315L, -7644537617848991706L, -5167832597622947817L, -8010885589324791758L, -6404928211326599132L, 4273689366590652460L, -3635677455148122069L, 5671192315058716712L, 2588953419276353542L, -8924114486789406679L, -4278980353982463980L}; - Block[] var10000 = new Block[]{ + long[] slotIndices = new long[]{-965180847646834672L, -4560921742666629086L, 8926569193743056950L, -2692947904796033016L, -5341203359162433522L, -8772031253911175139L, 4452274398816108577L, 8145793621648474163L, -1652677113121079279L, 3146527104435224615L, -7982608722943803344L, -8189377747177439206L, 8467311858359992366L, -7691443587048800234L, 3707995835305295902L, 2996114386201870360L, 556036769766703136L, -1130760903583596533L, -3911967465734668275L, -9165016964744085479L, -4361975451606843350L, -3399299295743049681L, 405124933383880711L, -5938611710645501933L, -8795471080878768119L, 542933309877911579L, -9135026719944605668L, 5335918290235555855L, 1628068299134730275L, -65652401935220724L, 7789352679435665460L, -392972435088998351L, -1650343343856549870L, -1390015927117938667L, -7181382681249185755L, -1773966826351362038L, 645987347883622445L, -5139079277634912225L, -374112086935994315L, -7644537617848991706L, -5167832597622947817L, -8010885589324791758L, -6404928211326599132L, 4273689366590652460L, -3635677455148122069L, 5671192315058716712L, 2588953419276353542L, -8924114486789406679L, -4278980353982463980L}; + Block[] blockArray = new Block[]{ Blocks.EMERALD_ORE, Blocks.EMERALD_BLOCK, Blocks.DIAMOND_ORE, @@ -120,122 +113,54 @@ public class XRay extends Module { null, null }; - var10000[(int)var0[46]] = Blocks.IRON_ORE; - var10000[(int)var0[22]] = Blocks.IRON_BLOCK; - var10000[(int)var0[3]] = Blocks.COAL_ORE; - var10000[(int)var0[24]] = Blocks.COAL_BLOCK; - var10000[(int)var0[35]] = Blocks.REDSTONE_ORE; - var10000[(int)var0[17]] = Blocks.REDSTONE_BLOCK; - var10000[(int)var0[29]] = Blocks.LAPIS_ORE; - var10000[(int)var0[18]] = Blocks.LAPIS_BLOCK; - var10000[(int)var0[4]] = Blocks.NETHER_QUARTZ_ORE; - var10000[(int)var0[27]] = Blocks.NETHER_GOLD_ORE; - var10000[(int)var0[0]] = Blocks.DEEPSLATE_EMERALD_ORE; - var10000[(int)var0[8]] = Blocks.DEEPSLATE_DIAMOND_ORE; - var10000[(int)var0[32]] = Blocks.DEEPSLATE_GOLD_ORE; - var10000[(int)var0[23]] = Blocks.DEEPSLATE_IRON_ORE; - var10000[(int)var0[48]] = Blocks.DEEPSLATE_COAL_ORE; - var10000[(int)var0[33]] = Blocks.ANCIENT_DEBRIS; - var10000[(int)var0[13]] = Blocks.WATER; - var10000[(int)var0[40]] = Blocks.LAVA; - var10000[(int)var0[15]] = Blocks.OBSIDIAN; - var10000[(int)var0[19]] = Blocks.CRYING_OBSIDIAN; - var10000[(int)var0[11]] = Blocks.BEACON; - var10000[(int)var0[25]] = Blocks.ENDER_CHEST; - var10000[(int)var0[26]] = Blocks.CHEST; - var10000[(int)var0[5]] = Blocks.TRAPPED_CHEST; - var10000[(int)var0[14]] = Blocks.BARREL; - var10000[(int)var0[37]] = Blocks.HOPPER; - var10000[(int)var0[16]] = Blocks.FURNACE; - var10000[(int)var0[6]] = Blocks.BLAST_FURNACE; - var10000[(int)var0[1]] = Blocks.SMOKER; - var10000[(int)var0[28]] = Blocks.ANVIL; - var10000[(int)var0[42]] = Blocks.ENCHANTING_TABLE; - var10000[(int)var0[34]] = Blocks.BREWING_STAND; - var10000[(int)var0[39]] = Blocks.DISPENSER; - var10000[(int)var0[9]] = Blocks.DROPPER; - var10000[(int)var0[45]] = Blocks.GLOWSTONE; - var10000[(int)var0[47]] = Blocks.SEA_LANTERN; - var10000[(int)var0[20]] = Blocks.TORCH; - var10000[(int)var0[44]] = Blocks.SOUL_TORCH; - var10000[(int)var0[43]] = Blocks.CAMPFIRE; - var10000[(int)var0[36]] = Blocks.SOUL_CAMPFIRE; - var10000[(int)var0[12]] = Blocks.SPAWNER; - var10000[(int)var0[21]] = Blocks.END_PORTAL_FRAME; - var10000[(int)var0[10]] = Blocks.END_GATEWAY; - var10000[(int)var0[31]] = Blocks.NETHER_PORTAL; - var10000[(int)var0[41]] = Blocks.MOSSY_COBBLESTONE; - var10000[(int)var0[7]] = Blocks.STONE_BRICKS; - var10000[(int)var0[30]] = Blocks.OAK_PLANKS; - var10000[(int)var0[38]] = Blocks.NOTE_BLOCK; - a = Arrays.asList(var10000); - } - - private static Field g(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field h(Class var0, String var1, Class var2) { - Field var3 = g(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = h(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method g(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method h(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = g(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = h(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + blockArray[(int)slotIndices[46]] = Blocks.IRON_ORE; + blockArray[(int)slotIndices[22]] = Blocks.IRON_BLOCK; + blockArray[(int)slotIndices[3]] = Blocks.COAL_ORE; + blockArray[(int)slotIndices[24]] = Blocks.COAL_BLOCK; + blockArray[(int)slotIndices[35]] = Blocks.REDSTONE_ORE; + blockArray[(int)slotIndices[17]] = Blocks.REDSTONE_BLOCK; + blockArray[(int)slotIndices[29]] = Blocks.LAPIS_ORE; + blockArray[(int)slotIndices[18]] = Blocks.LAPIS_BLOCK; + blockArray[(int)slotIndices[4]] = Blocks.NETHER_QUARTZ_ORE; + blockArray[(int)slotIndices[27]] = Blocks.NETHER_GOLD_ORE; + blockArray[(int)slotIndices[0]] = Blocks.DEEPSLATE_EMERALD_ORE; + blockArray[(int)slotIndices[8]] = Blocks.DEEPSLATE_DIAMOND_ORE; + blockArray[(int)slotIndices[32]] = Blocks.DEEPSLATE_GOLD_ORE; + blockArray[(int)slotIndices[23]] = Blocks.DEEPSLATE_IRON_ORE; + blockArray[(int)slotIndices[48]] = Blocks.DEEPSLATE_COAL_ORE; + blockArray[(int)slotIndices[33]] = Blocks.ANCIENT_DEBRIS; + blockArray[(int)slotIndices[13]] = Blocks.WATER; + blockArray[(int)slotIndices[40]] = Blocks.LAVA; + blockArray[(int)slotIndices[15]] = Blocks.OBSIDIAN; + blockArray[(int)slotIndices[19]] = Blocks.CRYING_OBSIDIAN; + blockArray[(int)slotIndices[11]] = Blocks.BEACON; + blockArray[(int)slotIndices[25]] = Blocks.ENDER_CHEST; + blockArray[(int)slotIndices[26]] = Blocks.CHEST; + blockArray[(int)slotIndices[5]] = Blocks.TRAPPED_CHEST; + blockArray[(int)slotIndices[14]] = Blocks.BARREL; + blockArray[(int)slotIndices[37]] = Blocks.HOPPER; + blockArray[(int)slotIndices[16]] = Blocks.FURNACE; + blockArray[(int)slotIndices[6]] = Blocks.BLAST_FURNACE; + blockArray[(int)slotIndices[1]] = Blocks.SMOKER; + blockArray[(int)slotIndices[28]] = Blocks.ANVIL; + blockArray[(int)slotIndices[42]] = Blocks.ENCHANTING_TABLE; + blockArray[(int)slotIndices[34]] = Blocks.BREWING_STAND; + blockArray[(int)slotIndices[39]] = Blocks.DISPENSER; + blockArray[(int)slotIndices[9]] = Blocks.DROPPER; + blockArray[(int)slotIndices[45]] = Blocks.GLOWSTONE; + blockArray[(int)slotIndices[47]] = Blocks.SEA_LANTERN; + blockArray[(int)slotIndices[20]] = Blocks.TORCH; + blockArray[(int)slotIndices[44]] = Blocks.SOUL_TORCH; + blockArray[(int)slotIndices[43]] = Blocks.CAMPFIRE; + blockArray[(int)slotIndices[36]] = Blocks.SOUL_CAMPFIRE; + blockArray[(int)slotIndices[12]] = Blocks.SPAWNER; + blockArray[(int)slotIndices[21]] = Blocks.END_PORTAL_FRAME; + blockArray[(int)slotIndices[10]] = Blocks.END_GATEWAY; + blockArray[(int)slotIndices[31]] = Blocks.NETHER_PORTAL; + blockArray[(int)slotIndices[41]] = Blocks.MOSSY_COBBLESTONE; + blockArray[(int)slotIndices[7]] = Blocks.STONE_BRICKS; + blockArray[(int)slotIndices[30]] = Blocks.OAK_PLANKS; + blockArray[(int)slotIndices[38]] = Blocks.NOTE_BLOCK; + xrayBlocks = Arrays.asList(blockArray); } } diff --git a/src/main/java/dev/zprestige/prestige/network/BlockChangeListener.java b/src/main/java/dev/zprestige/prestige/network/BlockChangeListener.java new file mode 100644 index 0000000..8dad335 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/network/BlockChangeListener.java @@ -0,0 +1,74 @@ +package dev.zprestige.prestige.network; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.math.BlockChangeTracker; +import dev.zprestige.prestige.render.MinecraftAccess; +import net.minecraft.block.Blocks; +import net.minecraft.item.BlockItem; +import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; +import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; +import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket; +import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; + +public final class BlockChangeListener implements MinecraftAccess { + @Subscribe + public void onPacketReceive(PacketReceiveEvent event) { + long now = System.currentTimeMillis(); + if (event.getPacket() instanceof BlockUpdateS2CPacket blockUpdate) { + if (blockUpdate.getState() != null && (blockUpdate.getState().isAir() || blockUpdate.getState().getBlock() == Blocks.FIRE)) { + BlockChangeTracker.markCleared(blockUpdate.getPos(), now); + } + } else if (event.getPacket() instanceof ChunkDeltaUpdateS2CPacket deltaUpdate) { + deltaUpdate.visitUpdates((pos, state) -> { + if (state.isAir() || state.getBlock() == Blocks.FIRE) { + BlockChangeTracker.markCleared(pos, now); + } + }); + } else if (event.getPacket() instanceof ExplosionS2CPacket explosion) { + Vec3d center = explosion.center(); + BlockChangeTracker.EXPLOSIONS.put(BlockPos.ofFloored(center.x, center.y, center.z), now); + } + + pruneOldEntries(now); + } + + @Subscribe + public void onPacketSend(PacketSendEvent event) { + if (event.getPacket() instanceof PlayerInteractBlockC2SPacket interactPacket) { + if (mc.player != null && mc.world != null) { + if (mc.player.getStackInHand(interactPacket.getHand()).getItem() instanceof BlockItem) { + BlockHitResult hitResult = interactPacket.getBlockHitResult(); + BlockPos clickedPos = hitResult.getBlockPos(); + if (mc.world.getBlockState(clickedPos).getBlock() != Blocks.RESPAWN_ANCHOR) { + long now = System.currentTimeMillis(); + BlockChangeTracker.PLACED_BLOCKS.put(clickedPos.offset(hitResult.getSide()).toImmutable(), now); + if (mc.world.getBlockState(clickedPos).isReplaceable()) { + BlockChangeTracker.PLACED_BLOCKS.put(clickedPos.toImmutable(), now); + } + + pruneOldEntries(now); + } + } + } + } + } + + private static void pruneOldEntries(long now) { + if (BlockChangeTracker.CLEARED_BLOCKS.size() > 256) { + BlockChangeTracker.CLEARED_BLOCKS.entrySet().removeIf(clearedEntry -> now - (Long)((java.util.Map.Entry)clearedEntry).getValue() > 2000L); + } + + if (BlockChangeTracker.EXPLOSIONS.size() > 64) { + BlockChangeTracker.EXPLOSIONS.entrySet().removeIf(explosionEntry -> now - (Long)((java.util.Map.Entry)explosionEntry).getValue() > 2000L); + } + + if (BlockChangeTracker.PLACED_BLOCKS.size() > 256) { + BlockChangeTracker.PLACED_BLOCKS.entrySet().removeIf(placedEntry -> now - (Long)((java.util.Map.Entry)placedEntry).getValue() > 2000L); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/network/InteractItemPacketAccessor.java b/src/main/java/dev/zprestige/prestige/network/InteractItemPacketAccessor.java new file mode 100644 index 0000000..37003d6 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/network/InteractItemPacketAccessor.java @@ -0,0 +1,23 @@ +package dev.zprestige.prestige.network; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import dev.zprestige.prestige.reflect.MappedField; +import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket; + +public class InteractItemPacketAccessor { + private static final MappedField YAW_FIELD = FieldAccessor.mappedField(PlayerInteractItemC2SPacket.class, "yaw", float.class); + private static final MappedField PITCH_FIELD = FieldAccessor.mappedField(PlayerInteractItemC2SPacket.class, "pitch", float.class); + private final PlayerInteractItemC2SPacket packet; + + public InteractItemPacketAccessor(PlayerInteractItemC2SPacket interactPacket) { + this.packet = interactPacket; + } + + public void setYaw(float yaw) { + YAW_FIELD.setFloat(this.packet, yaw); + } + + public void setPitch(float pitch) { + PITCH_FIELD.setFloat(this.packet, pitch); + } +} diff --git a/src/main/java/dev/zprestige/prestige/network/InventorySwapQueue.java b/src/main/java/dev/zprestige/prestige/network/InventorySwapQueue.java new file mode 100644 index 0000000..0a3f544 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/network/InventorySwapQueue.java @@ -0,0 +1,246 @@ +package dev.zprestige.prestige.network; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.inventory.InventoryUtil; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.QueuedSwapClick; +import dev.zprestige.prestige.type.SwapQueueResult; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.List; +import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket; +import net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket; +import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket.Mode; +import net.minecraft.screen.slot.SlotActionType; +import net.minecraft.util.PlayerInput; + +public class InventorySwapQueue implements MinecraftAccess { + public static boolean queueingEnabled = true; + private final ArrayDeque pendingSwaps; + private final List pendingCallbacks; + private volatile boolean serverSprinting; + private volatile boolean serverMoving; + private boolean wasSprinting; + private boolean holdingInput; + private boolean resumeSprint; + private int waitTicks; + + public InventorySwapQueue() { + super(); + this.pendingSwaps = new ArrayDeque(); + this.pendingCallbacks = new ArrayList(); + Prestige.eventBus.register(this); + } + + public SwapQueueResult requestSwap(int slot, int button) { + return this.requestSwap(null, slot, button, null); + } + + public SwapQueueResult requestSwapThen(int slot, int button, Runnable callback) { + return this.requestSwap(null, slot, button, callback); + } + + public SwapQueueResult requestSwapFor(Object owner, int slot, int button) { + return this.requestSwap(owner, slot, button, null); + } + + public SwapQueueResult requestSwap(Object owner, int slot, int button, Runnable callback) { + if (Prestige.selfDestructed || mc.player == null || mc.world == null || mc.interactionManager == null) { + return SwapQueueResult.REJECTED; + } else if (!queueingEnabled) { + InventoryUtil.clickSlot(slot, button, SlotActionType.SWAP); + return SwapQueueResult.IMMEDIATE; + } else if (mc.isOnThread() && this.isServerStationary()) { + InventoryUtil.clickSlot(slot, button, SlotActionType.SWAP); + return SwapQueueResult.IMMEDIATE; + } else { + synchronized (this) { + this.pendingSwaps.add(new QueuedSwapClick(owner, slot, button, callback)); + this.waitTicks = 0; + } + + return SwapQueueResult.QUEUED; + } + } + + public int cancelSwaps(Object owner) { + if (owner == null) { + return 0; + } else { + synchronized (this) { + int sizeBefore = this.pendingSwaps.size(); + this.pendingSwaps.removeIf(request -> ((dev.zprestige.prestige.render.QueuedSwapClick)request).owner == owner); + int removed = sizeBefore - this.pendingSwaps.size(); + if (removed > 0 && this.pendingSwaps.isEmpty()) { + this.waitTicks = 0; + if (this.holdingInput && this.wasSprinting) { + this.resumeSprint = true; + } + } + + return removed; + } + } + } + + // $VF: Could not create synchronized statement, marking monitor enters and exits + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public boolean hasPendingSwaps() { + synchronized (this){} // $VF: monitorenter + + try { + // $VF: monitorexit + return !this.pendingSwaps.isEmpty(); + } finally { + // $VF: monitorexit + } + } + + public boolean shouldHoldInput() { + if (!Prestige.selfDestructed && queueingEnabled) { + boolean pending; + synchronized (this) { + pending = !this.pendingSwaps.isEmpty(); + } + + if (pending) { + if (!this.holdingInput && mc.player != null) { + this.wasSprinting = mc.player.isSprinting(); + } + + this.holdingInput = true; + } else if (this.holdingInput) { + this.holdingInput = false; + this.wasSprinting = false; + } + + return pending; + } else { + return false; + } + } + + public boolean consumeResumeSprint() { + if (!Prestige.selfDestructed && this.resumeSprint) { + this.resumeSprint = false; + return true; + } else { + return false; + } + } + + public void onPacketSent(Packet packet) { + if (packet instanceof ClientCommandC2SPacket commandPacket) { + if (commandPacket.getMode() == Mode.START_SPRINTING) { + this.serverSprinting = true; + } else if (commandPacket.getMode() == Mode.STOP_SPRINTING) { + this.serverSprinting = false; + } + } + + if (packet instanceof PlayerInputC2SPacket inputPacket) { + PlayerInput input = inputPacket.input(); + this.serverMoving = input.forward() || input.backward() || input.left() || input.right() || input.jump(); + } + } + + @Subscribe + public void onGameJoin(GameJoinEvent event) { + synchronized (this) { + this.pendingSwaps.clear(); + this.waitTicks = 0; + } + + this.pendingCallbacks.clear(); + this.serverSprinting = false; + this.serverMoving = false; + this.wasSprinting = false; + this.holdingInput = false; + this.resumeSprint = false; + } + + @Subscribe + public void onClientTick(ClientTickEvent event) { + if (!Prestige.selfDestructed) { + if (!this.pendingCallbacks.isEmpty()) { + ArrayList callbacks = new ArrayList(this.pendingCallbacks); + this.pendingCallbacks.clear(); + + for (Runnable callback : (Iterable)(callbacks)) { + try { + callback.run(); + } catch (Throwable ignored) { + } + } + } + + boolean pending; + synchronized (this) { + pending = !this.pendingSwaps.isEmpty(); + if (!pending) { + this.waitTicks = 0; + } + } + + if (pending && mc.player != null && mc.world != null) { + if (this.isServerStationary()) { + this.flushQueue(); + } else { + synchronized (this) { + this.waitTicks++; + if (this.waitTicks > 5) { + this.pendingSwaps.clear(); + this.waitTicks = 0; + } + } + } + } + } + } + + // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. + // $VF: Could not create synchronized statement, marking monitor enters and exits + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + private void flushQueue() { + synchronized (this){} // $VF: monitorenter + boolean monitorHeld = false /* VF: Semaphore variable */; + + ArrayList batch; + try { + monitorHeld = true; + if (this.pendingSwaps.isEmpty()) { + // $VF: monitorexit + return; + } + + batch = new ArrayList(this.pendingSwaps); + this.pendingSwaps.clear(); + this.waitTicks = 0; + // $VF: monitorexit + monitorHeld = false; + } finally { + if (monitorHeld) { + // $VF: monitorexit + } + } + + for (QueuedSwapClick request : (Iterable)(batch)) { + InventoryUtil.clickSlot(request.slotId, request.hotbarSlot, SlotActionType.SWAP); + if (request.callback != null) { + this.pendingCallbacks.add(request.callback); + } + } + + if (this.wasSprinting) { + this.resumeSprint = true; + } + } + + private boolean isServerStationary() { + return !this.serverSprinting && !this.serverMoving; + } +} diff --git a/src/main/java/dev/zprestige/prestige/network/NetworkHelper.java b/src/main/java/dev/zprestige/prestige/network/NetworkHelper.java deleted file mode 100644 index 66ba598..0000000 --- a/src/main/java/dev/zprestige/prestige/network/NetworkHelper.java +++ /dev/null @@ -1,81 +0,0 @@ -package dev.zprestige.prestige.network; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; - -public class NetworkHelper { - private final PlayerInteractEntityC2SPacket a; - - public NetworkHelper(PlayerInteractEntityC2SPacket var1) { - this.a = var1; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/network/NetworkHelper2.java b/src/main/java/dev/zprestige/prestige/network/NetworkHelper2.java deleted file mode 100644 index 420d810..0000000 --- a/src/main/java/dev/zprestige/prestige/network/NetworkHelper2.java +++ /dev/null @@ -1,111 +0,0 @@ -package dev.zprestige.prestige.network; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.MethodValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket; - -public class NetworkHelper2 { - private static final MethodValue a = FieldAccessor.a_MethodValue(new Object[]{PlayerInteractItemC2SPacket.class, "yaw", float.class, 0L}); - private static final MethodValue b = FieldAccessor.a_MethodValue(new Object[]{PlayerInteractItemC2SPacket.class, "pitch", float.class, 0L}); - private final PlayerInteractItemC2SPacket c; - - public NetworkHelper2(PlayerInteractItemC2SPacket var1) { - this.c = var1; - } - - public void a(Object[] var1) { - float var4 = (Float)var1[0]; - long var2 = (Long)var1[1]; - var2 = 102937265826405L ^ var2; - long var5 = var2 ^ 74219396763671L; - MethodValue var10000 = a; - PlayerInteractItemC2SPacket var10001 = this.c; - Object[] var10005 = new Object[]{null, null, var5}; - var10005[1] = var4; - var10005[0] = var10001; - var10000.b(var10005); - } - - public void b(Object[] var1) { - float var4 = (Float)var1[0]; - long var2 = (Long)var1[1]; - var2 = 102937265826405L ^ var2; - long var5 = var2 ^ 62337086345182L; - MethodValue var10000 = b; - PlayerInteractItemC2SPacket var10001 = this.c; - Object[] var10005 = new Object[]{null, null, var5}; - var10005[1] = var4; - var10005[0] = var10001; - var10000.b(var10005); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/network/NetworkUtil.java b/src/main/java/dev/zprestige/prestige/network/NetworkUtil.java deleted file mode 100644 index 7a30bc8..0000000 --- a/src/main/java/dev/zprestige/prestige/network/NetworkUtil.java +++ /dev/null @@ -1,81 +0,0 @@ -package dev.zprestige.prestige.network; - -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.network.packet.Packet; - -public class NetworkUtil implements RenderContract2 { - public static void a(Object[] var0) { - Packet var3 = (Packet)var0[0]; - b.getNetworkHandler().sendPacket(var3); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/network/NetworkUtil2.java b/src/main/java/dev/zprestige/prestige/network/NetworkUtil2.java deleted file mode 100644 index ac5a6f1..0000000 --- a/src/main/java/dev/zprestige/prestige/network/NetworkUtil2.java +++ /dev/null @@ -1,162 +0,0 @@ -package dev.zprestige.prestige.network; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.math.MathUtil3; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.block.Blocks; -import net.minecraft.item.BlockItem; -import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; -import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; -import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket; -import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; - -public final class NetworkUtil2 implements RenderContract2 { - @Subscribe - public void a(PacketEvent var1) { - long var9 = System.currentTimeMillis(); - Event.b(); - if (var1.a(new Object[0]) instanceof BlockUpdateS2CPacket var11) { - if (var11.getState() != null && (var11.getState().isAir() || var11.getState().getBlock() == Blocks.FIRE)) { - BlockPos var10000 = var11.getPos(); - Object[] var10004 = new Object[]{null, null, 2240376780754L}; - var10004[1] = var9; - var10004[0] = var10000; - MathUtil3.c(var10004); - } - } else if (var1.a(new Object[0]) instanceof ChunkDeltaUpdateS2CPacket var12) { - var12.visitUpdates((lpL32_0, lpL32_1) -> { - if (((net.minecraft.block.BlockState)lpL32_1).isAir() || ((net.minecraft.block.BlockState)lpL32_1).getBlock() == Blocks.FIRE) { - Object[] var10004x = new Object[]{null, null, 2240376780754L}; - var10004x[1] = var9; - var10004x[0] = ((net.minecraft.util.math.BlockPos)lpL32_0); - MathUtil3.c(var10004x); - } - }); - } else if (var1.a(new Object[0]) instanceof ExplosionS2CPacket var13) { - Vec3d var23 = var13.center(); - double var15 = var23.x; - double var17 = var23.y; - double var19 = var23.z; - MathUtil3.g.put(BlockPos.ofFloored(var15, var17, var19), var9); - } - - Object[] var10003 = new Object[]{null, 89605591752417L}; - var10003[0] = var9; - a(var10003); - } - - @Subscribe - public void a(PacketEvent2 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket var7) { - if (b.player != null && b.world != null) { - if (b.player.getStackInHand(var7.getHand()).getItem() instanceof BlockItem) { - BlockHitResult var12 = var7.getBlockHitResult(); - BlockPos var9 = var12.getBlockPos(); - if (b.world.getBlockState(var9).getBlock() != Blocks.RESPAWN_ANCHOR) { - long var10 = System.currentTimeMillis(); - MathUtil3.h.put(var9.offset(var12.getSide()).toImmutable(), var10); - if (b.world.getBlockState(var9).isReplaceable()) { - MathUtil3.h.put(var9.toImmutable(), var10); - } - - Object[] var10003 = new Object[]{null, 89605591752417L}; - var10003[0] = var10; - a(var10003); - } - } - } - } - } - - private static void a(Object[] var0) { - long var1 = (Long)var0[0]; - if (MathUtil3.f.size() > 256) { - MathUtil3.f.entrySet().removeIf(lpL31_0 -> var1 - (Long)((java.util.Map.Entry)lpL31_0).getValue() > 2000L); - } - - if (MathUtil3.g.size() > 64) { - MathUtil3.g.entrySet().removeIf(lpL30_0 -> var1 - (Long)((java.util.Map.Entry)lpL30_0).getValue() > 2000L); - } - - if (MathUtil3.h.size() > 256) { - MathUtil3.h.entrySet().removeIf(lpL29_0 -> var1 - (Long)((java.util.Map.Entry)lpL29_0).getValue() > 2000L); - } - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/network/PacketManager.java b/src/main/java/dev/zprestige/prestige/network/PacketManager.java deleted file mode 100644 index 964a7d7..0000000 --- a/src/main/java/dev/zprestige/prestige/network/PacketManager.java +++ /dev/null @@ -1,148 +0,0 @@ -package dev.zprestige.prestige.network; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; -import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; -import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket; -import net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket; - -public class PacketManager implements RenderContract2 { - private int a; - private boolean c; - - public PacketManager(long var1) { - super(); - var1 = 0L; - var1 = 102105027492144L ^ var1; - long var3 = var1 ^ 88558921389742L; - this.a = -1; - Prestige.eventBus.register(new Object[]{this, var3}); - } - - @Subscribe - public void a(TickEvent5 var1) { - if (this.a != -1) { - this.b(new Object[]{98450005855358L}); - } - } - - @Subscribe - public void a(PacketEvent2 var1) { - if (this.a != -1) { - if (var1.a(new Object[0]) instanceof UpdateSelectedSlotC2SPacket && !this.c) { - var1.a_void_____(new Object[0]); - return; - } - - if (var1.a(new Object[0]) instanceof PlayerInteractItemC2SPacket - || var1.a(new Object[0]) instanceof PlayerInteractBlockC2SPacket - || var1.a(new Object[0]) instanceof PlayerInteractEntityC2SPacket - && InventoryUtil.a(new Object[]{b.player.getMainHandStack(), 127680976181311L})) { - this.b(new Object[]{98450005855358L}); - } - } - } - - public void a(Object[] var1) { - int var2 = (Integer)var1[0]; - long var3 = (Long)var1[1]; - var3 = 102105027492144L ^ var3; - long var5 = var3 ^ 88166742632087L; - this.a = var2; - this.c = true; - NetworkUtil.a(new Object[]{new UpdateSelectedSlotC2SPacket(var2), var5}); - this.c = false; - } - - public void b(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 102105027492144L ^ var2; - long var4 = var2 ^ 58839704735808L; - long var6 = var2 ^ 140159301866218L; - if (this.a != -1) { - this.c = true; - NetworkUtil.a(new Object[]{new UpdateSelectedSlotC2SPacket(InventoryUtil.a_int_____(new Object[]{var6})), var4}); - this.c = false; - this.a = -1; - } - } - - public int a_int__________________(Object[] var1) { - return this.a; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/network/PacketQueue.java b/src/main/java/dev/zprestige/prestige/network/PacketQueue.java deleted file mode 100644 index bdedb93..0000000 --- a/src/main/java/dev/zprestige/prestige/network/PacketQueue.java +++ /dev/null @@ -1,383 +0,0 @@ -package dev.zprestige.prestige.network; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.inventory.InventoryUtil; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderHelper15; -import dev.zprestige.prestige.type.PacketResult; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.List; -import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket; -import net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket; -import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket.Mode; -import net.minecraft.screen.slot.SlotActionType; -import net.minecraft.util.PlayerInput; - -public class PacketQueue implements RenderContract2 { - public static boolean a = true; - private static final int c = 5; - private final ArrayDeque d; - private final List e; - private volatile boolean f; - private volatile boolean g; - private boolean h; - private boolean i; - private boolean j; - private int k; - - public PacketQueue(long var1) { - super(); - var1 = 0L; - var1 = 59328805024258L ^ var1; - long var3 = var1 ^ 31199158213519L; - this.d = new ArrayDeque(); - this.e = new ArrayList(); - Prestige.eventBus.register(new Object[]{this, var3}); - } - - public PacketResult a(Object[] var1) { - int var2 = (Integer)var1[0]; - int var3 = (Integer)var1[1]; - long var4 = (Long)var1[2]; - var4 = 59328805024258L ^ var4; - long var6 = var4 ^ 53959615707372L; - Object[] var10007 = new Object[]{null, null, null, null, var6}; - var10007[2] = var3; - var10007[1] = var2; - var10007[0] = null; - return this.d(var10007); - } - - public PacketResult b(Object[] var1) { - int var2 = (Integer)var1[0]; - int var3 = (Integer)var1[1]; - Runnable var4 = (Runnable)var1[2]; - long var5 = (Long)var1[3]; - var5 = 59328805024258L ^ var5; - long var7 = var5 ^ 71317711165431L; - Object[] var10007 = new Object[]{null, null, null, var4, var7}; - var10007[2] = var3; - var10007[1] = var2; - var10007[0] = null; - return this.d(var10007); - } - - public PacketResult c(Object[] var1) { - Object var5 = var1[0]; - int var4 = (Integer)var1[1]; - int var6 = (Integer)var1[2]; - long var2 = (Long)var1[3]; - var2 = 59328805024258L ^ var2; - long var7 = var2 ^ 103336935611973L; - Object[] var10007 = new Object[]{null, null, null, null, var7}; - var10007[2] = var6; - var10007[1] = var4; - var10007[0] = var5; - return this.d(var10007); - } - - public PacketResult d(Object[] var1) { - Object var5 = var1[0]; - int var7 = (Integer)var1[1]; - int var6 = (Integer)var1[2]; - Runnable var2 = (Runnable)var1[3]; - long var3 = (Long)var1[4]; - var3 = 59328805024258L ^ var3; - long var8 = var3 ^ 28513772488895L; - long var10 = var3 ^ 72919772776651L; - if (Prestige.w || b.player == null || b.world == null || b.interactionManager == null) { - return PacketResult.REJECTED; - } else if (!a) { - Object[] var17 = new Object[]{null, null, SlotActionType.SWAP, var10}; - var17[1] = var6; - var17[0] = var7; - InventoryUtil.e(var17); - return PacketResult.IMMEDIATE; - } else if (b.isOnThread() && this.d_boolean_____(new Object[]{var8})) { - Object[] var10005 = new Object[]{null, null, SlotActionType.SWAP, var10}; - var10005[1] = var6; - var10005[0] = var7; - InventoryUtil.e(var10005); - return PacketResult.IMMEDIATE; - } else { - synchronized (this) { - this.d.add(new RenderHelper15(var5, var7, var6, var2)); - this.k = 0; - } - - return PacketResult.QUEUED; - } - } - - public int a_int___________________(Object[] var1) { - Object var2 = var1[0]; - if (var2 == null) { - return 0; - } else { - synchronized (this) { - int var7 = this.d.size(); - this.d.removeIf(lpL23_0 -> ((dev.zprestige.prestige.render.RenderHelper15)lpL23_0).a == var2); - int var8 = var7 - this.d.size(); - if (var8 > 0 && this.d.isEmpty()) { - this.k = 0; - if (this.i && this.h) { - this.j = true; - } - } - - return var8; - } - } - } - - // $VF: Could not create synchronized statement, marking monitor enters and exits - // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) - public boolean a_boolean____________________________________(Object[] var1) { - Event.b(); - PacketQueue var5 = this; - synchronized (this){} // $VF: monitorenter - - try { - boolean var10000 = !this.d.isEmpty(); - // $VF: monitorexit - return var10000; - } finally { - // $VF: monitorexit - } - } - - public boolean b_boolean______(Object[] var1) { - if (!Prestige.w && a) { - boolean var5; - synchronized (this) { - var5 = !this.d.isEmpty(); - } - - if (var5) { - if (!this.i && b.player != null) { - this.h = b.player.isSprinting(); - } - - this.i = true; - } else if (this.i) { - this.i = false; - this.h = false; - } - - return var5; - } else { - return false; - } - } - - public boolean c_boolean___(Object[] var1) { - if (!Prestige.w && this.j) { - this.j = false; - return true; - } else { - return false; - } - } - - public void a_void___________(Object[] var1) { - Packet var4 = (Packet)var1[0]; - if (var4 instanceof ClientCommandC2SPacket var6) { - if (var6.getMode() == Mode.START_SPRINTING) { - this.f = true; - } else if (var6.getMode() == Mode.STOP_SPRINTING) { - this.f = false; - } - } - - if (var4 instanceof PlayerInputC2SPacket var8) { - PlayerInput var7 = var8.input(); - this.g = var7.forward() || var7.backward() || var7.left() || var7.right() || var7.jump(); - } - } - - @Subscribe - public void a(TickEvent3 var1) { - synchronized (this) { - this.d.clear(); - this.k = 0; - } - - this.e.clear(); - this.f = false; - this.g = false; - this.h = false; - this.i = false; - this.j = false; - } - - @Subscribe - public void a(TickEvent19 var1) { - if (!Prestige.w) { - if (!this.e.isEmpty()) { - ArrayList var9 = new ArrayList(this.e); - this.e.clear(); - - for (Runnable var11 : (Iterable)(var9)) { - try { - var11.run(); - } catch (Throwable var16) { - } - } - } - - boolean var18; - synchronized (this) { - var18 = !this.d.isEmpty(); - if (!var18) { - this.k = 0; - } - } - - if (var18 && b.player != null && b.world != null) { - if (this.d_boolean_____(new Object[]{17526588285803L})) { - this.b_void____(new Object[]{102904732075667L}); - } else { - synchronized (this) { - this.k++; - if (this.k > 5) { - this.d.clear(); - this.k = 0; - } - } - } - } - } - } - - // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow. - // $VF: Could not create synchronized statement, marking monitor enters and exits - // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) - private void b_void____(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 59328805024258L ^ var2; - long var4 = var2 ^ 66165550897038L; - Event.b(); - PacketQueue var8 = this; - synchronized (this){} // $VF: monitorenter - boolean var11 = false /* VF: Semaphore variable */; - - ArrayList var7; - try { - var11 = true; - if (this.d.isEmpty()) { - // $VF: monitorexit - return; - } - - var7 = new ArrayList(this.d); - this.d.clear(); - this.k = 0; - // $VF: monitorexit - var11 = false; - } finally { - if (var11) { - // $VF: monitorexit - } - } - - for (RenderHelper15 var9 : (Iterable)(var7)) { - int var10000 = var9.b; - int var10001 = var9.c; - Object[] var10005 = new Object[]{null, null, SlotActionType.SWAP, var4}; - var10005[1] = var10001; - var10005[0] = var10000; - InventoryUtil.e(var10005); - if (var9.d != null) { - this.e.add(var9.d); - } - } - - if (this.h) { - this.j = true; - } - } - - private boolean d_boolean_____(Object[] var1) { - return !this.f && !this.g; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/network/PacketSender.java b/src/main/java/dev/zprestige/prestige/network/PacketSender.java new file mode 100644 index 0000000..c3cdffd --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/network/PacketSender.java @@ -0,0 +1,10 @@ +package dev.zprestige.prestige.network; + +import dev.zprestige.prestige.render.MinecraftAccess; +import net.minecraft.network.packet.Packet; + +public class PacketSender implements MinecraftAccess { + public static void sendPacket(Packet packet) { + mc.getNetworkHandler().sendPacket(packet); + } +} diff --git a/src/main/java/dev/zprestige/prestige/network/PingManager.java b/src/main/java/dev/zprestige/prestige/network/PingManager.java deleted file mode 100644 index 146a9ee..0000000 --- a/src/main/java/dev/zprestige/prestige/network/PingManager.java +++ /dev/null @@ -1,139 +0,0 @@ -package dev.zprestige.prestige.network; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.render.RenderContract2; -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashSet; -import java.util.UUID; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket; - -public class PingManager implements RenderContract2 { - private final Object2IntMap a; - private final HashSet c; - private static final long e = 5903295852427870243L; - - public PingManager(long var1) { - super(); - var1 = 0L; - var1 = 140135262182266L ^ var1; - long var3 = var1 ^ 50219082031318L; - this.a = new Object2IntOpenHashMap(); - this.c = new HashSet(); - Prestige.eventBus.register(new Object[]{this, var3}); - } - - @Subscribe - public void a(PacketEvent var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof EntityStatusS2CPacket var5 && var5.getStatus() == (int)e && var5.getEntity(b.world) instanceof PlayerEntity var8) { - int var9 = this.a.getOrDefault(var8.getUuid(), 0); - this.a.put(var8.getUuid(), ++var9); - } - } - - @Subscribe - public void a(TickEvent19 var1) { - if (!this.a.isEmpty()) { - this.c.clear(); - - for (PlayerEntity var6 : b.world.getPlayers()) { - UUID var7 = var6.getUuid(); - this.c.add(var7); - if (var6.deathTime > 0 || var6.getHealth() <= 0.0F || var6.isDead()) { - this.a.removeInt(var7); - } - } - - if (!this.a.isEmpty()) { - this.a.keySet().retainAll(this.c); - } - } - } - - @Subscribe - public void a(TickEvent3 var1) { - this.a.clear(); - } - - public int a(Object[] var1) { - PlayerEntity var4 = (PlayerEntity)var1[0]; - return this.a.getOrDefault(var4.getUuid(), 0); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/network/SilentSlotManager.java b/src/main/java/dev/zprestige/prestige/network/SilentSlotManager.java new file mode 100644 index 0000000..fa05296 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/network/SilentSlotManager.java @@ -0,0 +1,67 @@ +package dev.zprestige.prestige.network; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.inventory.InventoryUtil; +import dev.zprestige.prestige.render.MinecraftAccess; +import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; +import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; +import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket; +import net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket; + +public class SilentSlotManager implements MinecraftAccess { + private int spoofedSlot; + private boolean sendingOwnPacket; + + public SilentSlotManager() { + super(); + this.spoofedSlot = -1; + Prestige.eventBus.register(this); + } + + @Subscribe + public void onDoItemUse(DoItemUseEvent event) { + if (this.spoofedSlot != -1) { + this.restoreSlot(); + } + } + + @Subscribe + public void onPacketSend(PacketSendEvent event) { + if (this.spoofedSlot != -1) { + if (event.getPacket() instanceof UpdateSelectedSlotC2SPacket && !this.sendingOwnPacket) { + event.cancel(); + return; + } + + if (event.getPacket() instanceof PlayerInteractItemC2SPacket + || event.getPacket() instanceof PlayerInteractBlockC2SPacket + || event.getPacket() instanceof PlayerInteractEntityC2SPacket + && InventoryUtil.isSword(mc.player.getMainHandStack())) { + this.restoreSlot(); + } + } + } + + public void spoofSlot(int slot) { + this.spoofedSlot = slot; + this.sendingOwnPacket = true; + PacketSender.sendPacket(new UpdateSelectedSlotC2SPacket(slot)); + this.sendingOwnPacket = false; + } + + public void restoreSlot() { + if (this.spoofedSlot != -1) { + this.sendingOwnPacket = true; + PacketSender.sendPacket(new UpdateSelectedSlotC2SPacket(InventoryUtil.getSelectedSlot())); + this.sendingOwnPacket = false; + this.spoofedSlot = -1; + } + } + + public int getSpoofedSlot() { + return this.spoofedSlot; + } +} diff --git a/src/main/java/dev/zprestige/prestige/network/TotemPopManager.java b/src/main/java/dev/zprestige/prestige/network/TotemPopManager.java new file mode 100644 index 0000000..a9b9e23 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/network/TotemPopManager.java @@ -0,0 +1,63 @@ +package dev.zprestige.prestige.network; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.render.MinecraftAccess; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import java.util.HashSet; +import java.util.UUID; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket; + +public class TotemPopManager implements MinecraftAccess { + private final Object2IntMap popCounts; + private final HashSet presentPlayers; + private static final long TOTEM_POP_STATUS = 5903295852427870243L; + + public TotemPopManager() { + super(); + this.popCounts = new Object2IntOpenHashMap(); + this.presentPlayers = new HashSet(); + Prestige.eventBus.register(this); + } + + @Subscribe + public void onPacketReceive(PacketReceiveEvent event) { + if (event.getPacket() instanceof EntityStatusS2CPacket statusPacket && statusPacket.getStatus() == (int)TOTEM_POP_STATUS && statusPacket.getEntity(mc.world) instanceof PlayerEntity player) { + int pops = this.popCounts.getOrDefault(player.getUuid(), 0); + this.popCounts.put(player.getUuid(), ++pops); + } + } + + @Subscribe + public void onClientTick(ClientTickEvent event) { + if (!this.popCounts.isEmpty()) { + this.presentPlayers.clear(); + + for (PlayerEntity player : mc.world.getPlayers()) { + UUID uuid = player.getUuid(); + this.presentPlayers.add(uuid); + if (player.deathTime > 0 || player.getHealth() <= 0.0F || player.isDead()) { + this.popCounts.removeInt(uuid); + } + } + + if (!this.popCounts.isEmpty()) { + this.popCounts.keySet().retainAll(this.presentPlayers); + } + } + } + + @Subscribe + public void onGameJoin(GameJoinEvent event) { + this.popCounts.clear(); + } + + public int getPopCount(PlayerEntity player) { + return this.popCounts.getOrDefault(player.getUuid(), 0); + } +} diff --git a/src/main/java/dev/zprestige/prestige/reflect/BoundField.java b/src/main/java/dev/zprestige/prestige/reflect/BoundField.java new file mode 100644 index 0000000..50df48c --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/reflect/BoundField.java @@ -0,0 +1,19 @@ +package dev.zprestige.prestige.reflect; + +public class BoundField { + private final Object target; + public final FieldAccessor accessor; + + public BoundField(FieldAccessor fieldAccessor, Object instance) { + this.accessor = fieldAccessor; + this.target = instance; + } + + public Object get() { + return this.accessor.get(this.target); + } + + public void set(Object value) { + this.accessor.set(this.target, value); + } +} diff --git a/src/main/java/dev/zprestige/prestige/reflect/CameraAccessor.java b/src/main/java/dev/zprestige/prestige/reflect/CameraAccessor.java new file mode 100644 index 0000000..e620aa5 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/reflect/CameraAccessor.java @@ -0,0 +1,35 @@ +package dev.zprestige.prestige.reflect; + +import net.minecraft.client.render.Camera; + +public class CameraAccessor { + private static final MethodAccessor SET_POS = MethodAccessor.ofMapped( + Camera.class, "setPos", void.class, new Class[]{double.class, double.class, double.class} + ); + private static final MethodAccessor SET_ROTATION; + private final Camera camera; + + public CameraAccessor(Camera targetCamera) { + this.camera = targetCamera; + } + + public void setPos(double x, double y, double z) { + try { + SET_POS.invoke(this.camera, new Object[]{x, y, z}); + } catch (Throwable invokeError) { + throw new RuntimeException(invokeError); + } + } + + public void setRotation(float yaw, float pitch) { + try { + SET_ROTATION.invoke(this.camera, new Object[]{yaw, pitch}); + } catch (Throwable invokeError) { + throw new RuntimeException(invokeError); + } + } + + static { + SET_ROTATION = MethodAccessor.ofMapped(Camera.class, "setRotation", void.class, new Class[]{float.class, float.class}); + } +} diff --git a/src/main/java/dev/zprestige/prestige/reflect/FieldAccessor.java b/src/main/java/dev/zprestige/prestige/reflect/FieldAccessor.java index 385c570..5757365 100644 --- a/src/main/java/dev/zprestige/prestige/reflect/FieldAccessor.java +++ b/src/main/java/dev/zprestige/prestige/reflect/FieldAccessor.java @@ -1,302 +1,180 @@ package dev.zprestige.prestige.reflect; -import dev.zprestige.prestige.event.Event; import java.lang.invoke.VarHandle; import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.concurrent.ConcurrentHashMap; import net.lenni0451.classtransform.TransformerManager; import net.lenni0451.classtransform.utils.ASMUtils; public class FieldAccessor extends ReflectionBase { - private final Field b; - private final boolean c; - private final Object d; - private final long e; - private final VarHandle f; - private final Object g; - private static final ConcurrentHashMap h = new ConcurrentHashMap(); + private final Field field; + private final boolean isStaticField; + private final Object staticBase; + private final long fieldOffset; + private final VarHandle varHandle; + private final Object boundInstance; + private static final ConcurrentHashMap MAPPED_FIELD_ACCESSORS = new ConcurrentHashMap(); - private FieldAccessor(Field var1, boolean var2, Object var3, long var4, VarHandle var6, Object var7) { - this.b = var1; - this.c = var2; - this.d = var3; - this.e = var4; - this.f = var6; - this.g = var7; + private FieldAccessor(Field reflectField, boolean staticField, Object base, long offset, VarHandle handle, Object instance) { + this.field = reflectField; + this.isStaticField = staticField; + this.staticBase = base; + this.fieldOffset = offset; + this.varHandle = handle; + this.boundInstance = instance; } - private FieldAccessor(FieldSpec var1, Object var2) { - this(var1.a, var1.b, var1.c, var1.d, var1.e, var2); + private FieldAccessor(ResolvedField resolved, Object instance) { + this(resolved.field, resolved.isStatic, resolved.staticBase, resolved.offset, resolved.varHandle, instance); } - public static FieldAccessor a(Object[] var0) { - Class var1 = (Class)var0[0]; - String var4 = (String)var0[1]; - long var2 = (Long)var0[2]; - var2 = 81099604477280L ^ var2; - long var5 = var2 ^ 10354602078213L; - FieldSpec var7 = ReflectionBase.a_FieldSpec(new Object[]{var1, var4, var5}); - return new FieldAccessor(var7, null); + public static FieldAccessor of(Class owner, String name) { + return new FieldAccessor(ReflectionBase.resolveDeclaredField(owner, name), null); } - public static FieldValue b(Object[] var0) { - Object var1 = var0[0]; - String var5 = (String)var0[1]; - Class var6 = (Class)var0[2]; - Class var2 = (Class)var0[3]; - long var3 = (Long)var0[4]; - var3 = 81099604477280L ^ var3; - long var7 = var3 ^ 60490741841137L; - long var9 = var3 ^ 123110825884294L; - Event.b(); - Class var12 = var1.getClass(); - ReflectDescriptor var13 = new ReflectDescriptor(var6, var5, var2, var12); - FieldAccessor var14 = (FieldAccessor)h.get(var13); - if (var14 == null) { - String var15 = ASMUtils.toFieldDescriptor(var2); - String var16 = TransformerManager.getRemapper().getRemapper().reverse().map(var6.getName().replace('.', '/')); - String var17 = TransformerManager.getRemapper().getRemapper().reverse().mapDesc(var15); - String var18 = TransformerManager.getRemapper().getRemapper().mapFieldName(var16, var5, var17); - FieldSpec var19 = ReflectionBase.b_FieldSpec(new Object[]{var12, var18, var15, var9}); - var14 = new FieldAccessor(var19, null); - FieldAccessor var20 = (FieldAccessor)h.putIfAbsent(var13, var14); - if (var20 != null) { - var14 = var20; + public static BoundField bindMapped(Object instance, String name, Class owner, Class type) { + Class runtimeClass = instance.getClass(); + FieldCacheKey cacheKey = new FieldCacheKey(owner, name, type, runtimeClass); + FieldAccessor accessor = (FieldAccessor)MAPPED_FIELD_ACCESSORS.get(cacheKey); + if (accessor == null) { + String runtimeDescriptor = ASMUtils.toFieldDescriptor(type); + String namedOwner = TransformerManager.getRemapper().getRemapper().reverse().map(owner.getName().replace('.', '/')); + String namedDescriptor = TransformerManager.getRemapper().getRemapper().reverse().mapDesc(runtimeDescriptor); + accessor = new FieldAccessor(ReflectionBase.resolveFieldByDescriptor(runtimeClass, TransformerManager.getRemapper().getRemapper().mapFieldName(namedOwner, name, namedDescriptor), runtimeDescriptor), null); + FieldAccessor existing = (FieldAccessor)MAPPED_FIELD_ACCESSORS.putIfAbsent(cacheKey, accessor); + if (existing != null) { + accessor = existing; } } - return var14.d_FieldValue(new Object[]{var1, var7}); + return accessor.bind(instance); } - public Field a_Field(Object[] var1) { - return this.b; + public Field getField() { + return this.field; } - public Object a_Object_(Object[] var1) { - Object var4 = var1[0]; - long var2 = (Long)var1[1]; - var2 = 81099604477280L ^ var2; - long var5 = var2 ^ 123908732068046L; - + public Object get(Object target) { try { - if (a != null) { - return this.c_Object(new Object[]{var4, var5}); - } else if (this.f != null) { - return this.c ? (Object)this.f.get() : (Object)this.f.get((Object)var4); + if (UNSAFE != null) { + return this.unsafeGet(target); + } else if (this.varHandle != null) { + return this.isStaticField ? this.varHandle.get() : this.varHandle.get(target); } else { - return this.c ? this.b.get(null) : this.b.get(var4); + return this.isStaticField ? this.field.get(null) : this.field.get(target); } - } catch (IllegalAccessException var9) { - throw new RuntimeException(var9); + } catch (IllegalAccessException accessError) { + throw new RuntimeException(accessError); } } - public void b_void_____(Object[] var1) { - Object var2 = var1[0]; - Object var5 = var1[1]; - long var3 = (Long)var1[2]; - var3 = 81099604477280L ^ var3; - long var6 = var3 ^ 37363395543600L; - if (this.c) { - if (a != null) { - this.d(new Object[]{null, var5, var6}); - } else if (this.f != null) { - this.f.set((Object)var5); + public void set(Object target, Object value) { + if (this.isStaticField) { + if (UNSAFE != null) { + this.unsafeSet(null, value); + } else if (this.varHandle != null) { + this.varHandle.set(value); } else { try { - this.b.set(null, var5); - } catch (IllegalAccessException var10) { - throw new RuntimeException(var10); + this.field.set(null, value); + } catch (IllegalAccessException staticAccessError) { + throw new RuntimeException(staticAccessError); } } - } else if (a != null) { - this.d(new Object[]{var2, var5, var6}); - } else if (this.f != null) { - this.f.set((Object)var2, (Object)var5); + } else if (UNSAFE != null) { + this.unsafeSet(target, value); + } else if (this.varHandle != null) { + this.varHandle.set(target, value); } else { try { - this.b.set(var2, var5); - } catch (IllegalAccessException var11) { - throw new RuntimeException(var11); + this.field.set(target, value); + } catch (IllegalAccessException instanceAccessError) { + throw new RuntimeException(instanceAccessError); } } } - public void c(Object[] var1) { - Object var2 = var1[0]; - long var3 = (Long)var1[1]; - var3 = 81099604477280L ^ var3; - long var5 = var3 ^ 123497463895845L; - if (!this.c) { - if (this.g == null) { + public void set(Object value) { + if (!this.isStaticField) { + if (this.boundInstance == null) { throw new IllegalStateException("set(value) without target only valid for static fields or when bound to an instance"); } else { - this.b_void_____(new Object[]{this.g, var2, var5}); + this.set(this.boundInstance, value); } } else { - this.b_void_____(new Object[]{null, var2, var5}); + this.set(null, value); } } - private Object c_Object(Object[] var1) { - Object var2 = var1[0]; - Class var6 = this.b.getType(); - Event.b(); - boolean var7 = var6.isPrimitive(); - Object var8 = this.c ? this.d : var2; - if (!var7) { - return a.getObject(var8, this.e); - } else if (var6 == int.class) { - return a.getInt(var8, this.e); - } else if (var6 == long.class) { - return a.getLong(var8, this.e); - } else if (var6 == boolean.class) { - return a.getBoolean(var8, this.e); - } else if (var6 == byte.class) { - return a.getByte(var8, this.e); - } else if (var6 == char.class) { - return a.getChar(var8, this.e); - } else if (var6 == short.class) { - return a.getShort(var8, this.e); - } else if (var6 == float.class) { - return a.getFloat(var8, this.e); + private Object unsafeGet(Object target) { + Class type = this.field.getType(); + boolean primitive = type.isPrimitive(); + Object base = this.isStaticField ? this.staticBase : target; + if (!primitive) { + return UNSAFE.getObject(base, this.fieldOffset); + } else if (type == int.class) { + return UNSAFE.getInt(base, this.fieldOffset); + } else if (type == long.class) { + return UNSAFE.getLong(base, this.fieldOffset); + } else if (type == boolean.class) { + return UNSAFE.getBoolean(base, this.fieldOffset); + } else if (type == byte.class) { + return UNSAFE.getByte(base, this.fieldOffset); + } else if (type == char.class) { + return UNSAFE.getChar(base, this.fieldOffset); + } else if (type == short.class) { + return UNSAFE.getShort(base, this.fieldOffset); + } else if (type == float.class) { + return UNSAFE.getFloat(base, this.fieldOffset); } else { - return var6 == double.class ? a.getDouble(var8, this.e) : a.getObject(var8, this.e); + return type == double.class ? UNSAFE.getDouble(base, this.fieldOffset) : UNSAFE.getObject(base, this.fieldOffset); } } - private void d(Object[] var1) { - Object var3 = var1[0]; - Object var2 = var1[1]; - Event.b(); - Class var7 = this.b.getType(); - Object var8 = this.c ? this.d : var3; - if (!var7.isPrimitive()) { - a.putObject(var8, this.e, var2); + private void unsafeSet(Object target, Object value) { + Class type = this.field.getType(); + Object base = this.isStaticField ? this.staticBase : target; + if (!type.isPrimitive()) { + UNSAFE.putObject(base, this.fieldOffset, value); } else { - if (var7 == int.class) { - a.putInt(var8, this.e, ((Number)var2).intValue()); - } else if (var7 == long.class) { - a.putLong(var8, this.e, ((Number)var2).longValue()); - } else if (var7 == boolean.class) { - a.putBoolean(var8, this.e, (Boolean)var2); - } else if (var7 == byte.class) { - a.putByte(var8, this.e, ((Number)var2).byteValue()); - } else if (var7 == char.class) { - a.putChar(var8, this.e, (Character)var2); - } else if (var7 == short.class) { - a.putShort(var8, this.e, ((Number)var2).shortValue()); - } else if (var7 == float.class) { - a.putFloat(var8, this.e, ((Number)var2).floatValue()); - } else if (var7 == double.class) { - a.putDouble(var8, this.e, ((Number)var2).doubleValue()); + if (type == int.class) { + UNSAFE.putInt(base, this.fieldOffset, ((Number)value).intValue()); + } else if (type == long.class) { + UNSAFE.putLong(base, this.fieldOffset, ((Number)value).longValue()); + } else if (type == boolean.class) { + UNSAFE.putBoolean(base, this.fieldOffset, (Boolean)value); + } else if (type == byte.class) { + UNSAFE.putByte(base, this.fieldOffset, ((Number)value).byteValue()); + } else if (type == char.class) { + UNSAFE.putChar(base, this.fieldOffset, (Character)value); + } else if (type == short.class) { + UNSAFE.putShort(base, this.fieldOffset, ((Number)value).shortValue()); + } else if (type == float.class) { + UNSAFE.putFloat(base, this.fieldOffset, ((Number)value).floatValue()); + } else if (type == double.class) { + UNSAFE.putDouble(base, this.fieldOffset, ((Number)value).doubleValue()); } } } - public FieldValue d_FieldValue(Object[] var1) { - Object var4 = var1[0]; - if (var4 == null) { + public BoundField bind(Object target) { + if (target == null) { throw new IllegalArgumentException("target cannot be null for instance bind"); - } else if (this.c) { + } else if (this.isStaticField) { throw new IllegalStateException("Cannot bind static field to instance; access static field via get()/set() or FieldAccessor.of(Class,..)"); } else { - return new FieldValue(this, var4); + return new BoundField(this, target); } } - public static MethodValue a_MethodValue(Object[] var0) { - Class var4 = (Class)var0[0]; - String var5 = (String)var0[1]; - Class var3 = (Class)var0[2]; - long var1 = (Long)var0[3]; - var1 = 81099604477280L ^ var1; - long var6 = var1 ^ 135772341581672L; - long var8 = var1 ^ 79727553084788L; - long var10 = var1 ^ 59566843252523L; - + public static MappedField mappedField(Class owner, String name, Class type) { try { - String var12 = ASMUtils.toFieldDescriptor(var3); - String var13 = TransformerManager.getRemapper().getRemapper().reverse().map(var4.getName().replace('.', '/')); - String var14 = TransformerManager.getRemapper().getRemapper().reverse().mapDesc(var12); - String var15 = TransformerManager.getRemapper().getRemapper().mapFieldName(var13, var5, var14); - FieldSpec var16 = ReflectionBase.b_FieldSpec(new Object[]{var4, var15, var12, var8}); - return new MethodValue(var16, var6); - } catch (Throwable var17) { - return new MethodValue(var4, var5, var3, var10); + String runtimeDescriptor = ASMUtils.toFieldDescriptor(type); + String namedOwner = TransformerManager.getRemapper().getRemapper().reverse().map(owner.getName().replace('.', '/')); + String namedDescriptor = TransformerManager.getRemapper().getRemapper().reverse().mapDesc(runtimeDescriptor); + return new MappedField(ReflectionBase.resolveFieldByDescriptor(owner, TransformerManager.getRemapper().getRemapper().mapFieldName(namedOwner, name, namedDescriptor), runtimeDescriptor)); + } catch (Throwable resolveError) { + return new MappedField(owner, name, type); } } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Exception a(Exception var0) { - return var0; - } } diff --git a/src/main/java/dev/zprestige/prestige/reflect/FieldCacheKey.java b/src/main/java/dev/zprestige/prestige/reflect/FieldCacheKey.java new file mode 100644 index 0000000..c9a8f75 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/reflect/FieldCacheKey.java @@ -0,0 +1,4 @@ +package dev.zprestige.prestige.reflect; + +public record FieldCacheKey(Class owner, String name, Object type, Class targetClass) { +} diff --git a/src/main/java/dev/zprestige/prestige/reflect/FieldSpec.java b/src/main/java/dev/zprestige/prestige/reflect/FieldSpec.java deleted file mode 100644 index ada8aae..0000000 --- a/src/main/java/dev/zprestige/prestige/reflect/FieldSpec.java +++ /dev/null @@ -1,20 +0,0 @@ -package dev.zprestige.prestige.reflect; - -import java.lang.invoke.VarHandle; -import java.lang.reflect.Field; - -public class FieldSpec { - public final Field a; - public final boolean b; - public final Object c; - public final long d; - public final VarHandle e; - - public FieldSpec(Field var1, boolean var2, Object var3, long var4, VarHandle var6) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = var4; - this.e = var6; - } -} diff --git a/src/main/java/dev/zprestige/prestige/reflect/FieldValue.java b/src/main/java/dev/zprestige/prestige/reflect/FieldValue.java deleted file mode 100644 index 525253f..0000000 --- a/src/main/java/dev/zprestige/prestige/reflect/FieldValue.java +++ /dev/null @@ -1,97 +0,0 @@ -package dev.zprestige.prestige.reflect; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class FieldValue { - private final Object a; - public final FieldAccessor b; - - public FieldValue(FieldAccessor var1, Object var2) { - this.b = var1; - this.a = var2; - } - - public Object a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 41663266876549L ^ var2; - long var4 = var2 ^ 58351355128518L; - return this.b.a_Object_(new Object[]{this.a, var4}); - } - - public void a_void_____________(Object[] var1) { - Object var2 = var1[0]; - long var3 = (Long)var1[1]; - var3 = 41663266876549L ^ var3; - long var5 = var3 ^ 118374854394974L; - this.b.b_void_____(new Object[]{this.a, var2, var5}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/reflect/MappedField.java b/src/main/java/dev/zprestige/prestige/reflect/MappedField.java new file mode 100644 index 0000000..728f05b --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/reflect/MappedField.java @@ -0,0 +1,137 @@ +package dev.zprestige.prestige.reflect; + +import java.lang.invoke.VarHandle; +import java.lang.reflect.Field; + +public final class MappedField { + private final boolean resolved; + private final long offset; + private final Object staticBase; + private final boolean isStatic; + private final boolean useUnsafe; + private final VarHandle varHandle; + private final Field field; + private final Class owner; + private final String name; + private final Class type; + + public MappedField(ResolvedField resolvedField) { + this.resolved = true; + this.offset = resolvedField.offset; + this.staticBase = resolvedField.staticBase; + this.isStatic = resolvedField.isStatic; + this.varHandle = resolvedField.varHandle; + this.field = resolvedField.field; + this.useUnsafe = ReflectionBase.UNSAFE != null && resolvedField.offset != -1L; + this.owner = null; + this.name = null; + this.type = null; + } + + public MappedField(Class fieldOwner, String fieldName, Class fieldType) { + this.resolved = false; + this.offset = -1L; + this.staticBase = null; + this.isStatic = false; + this.useUnsafe = false; + this.varHandle = null; + this.field = null; + this.owner = fieldOwner; + this.name = fieldName; + this.type = fieldType; + } + + private Object resolveTarget(Object target) { + return this.isStatic ? this.staticBase : target; + } + + public void setDouble(Object target, double value) { + if (!this.resolved) { + this.setViaLookup(target, value); + } else { + if (this.useUnsafe) { + ReflectionBase.UNSAFE.putDouble(this.resolveTarget(target), this.offset, value); + } else if (this.varHandle != null) { + if (this.isStatic) { + this.varHandle.set(value); + } else { + this.varHandle.set(target, value); + } + } else { + this.setReflective(target, value); + } + } + } + + public void setFloat(Object target, float value) { + if (!this.resolved) { + this.setViaLookup(target, value); + } else { + if (this.useUnsafe) { + ReflectionBase.UNSAFE.putFloat(this.resolveTarget(target), this.offset, value); + } else if (this.varHandle != null) { + if (this.isStatic) { + this.varHandle.set(value); + } else { + this.varHandle.set(target, value); + } + } else { + this.setReflective(target, value); + } + } + } + + public void set(Object target, Object value) { + if (!this.resolved) { + this.setViaLookup(target, value); + } else { + if (this.useUnsafe) { + ReflectionBase.UNSAFE.putObject(this.resolveTarget(target), this.offset, value); + } else if (this.varHandle != null) { + if (this.isStatic) { + this.varHandle.set(value); + } else { + this.varHandle.set(target, value); + } + } else { + this.setReflective(target, value); + } + } + } + + public Object get(Object target) { + if (!this.resolved) { + return this.getViaLookup(target); + } else if (this.useUnsafe) { + return ReflectionBase.UNSAFE.getObject(this.resolveTarget(target), this.offset); + } else if (this.varHandle != null) { + return this.isStatic ? this.varHandle.get() : this.varHandle.get(target); + } else { + return this.getReflective(target); + } + } + + private void setViaLookup(Object target, Object value) { + FieldAccessor.bindMapped(target, this.name, this.owner, this.type).set(value); + } + + private Object getViaLookup(Object target) { + return FieldAccessor.bindMapped(target, this.name, this.owner, this.type).get(); + } + + private void setReflective(Object target, Object value) { + try { + this.field.set(this.resolveTarget(target), value); + } catch (IllegalAccessException accessError) { + throw new RuntimeException(accessError); + } + } + + private Object getReflective(Object target) { + try { + return this.field.get(this.resolveTarget(target)); + } catch (IllegalAccessException accessError) { + throw new RuntimeException(accessError); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/reflect/MethodAccessor.java b/src/main/java/dev/zprestige/prestige/reflect/MethodAccessor.java index a322bf3..ed2743d 100644 --- a/src/main/java/dev/zprestige/prestige/reflect/MethodAccessor.java +++ b/src/main/java/dev/zprestige/prestige/reflect/MethodAccessor.java @@ -1,263 +1,132 @@ package dev.zprestige.prestige.reflect; -import dev.zprestige.prestige.data.StringData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.render.RenderHelper16; +import dev.zprestige.prestige.data.MethodLookupKey; +import dev.zprestige.prestige.render.BoundMethod; import java.lang.invoke.MethodHandle; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.concurrent.ConcurrentHashMap; import net.lenni0451.classtransform.TransformerManager; import net.lenni0451.classtransform.utils.ASMUtils; public class MethodAccessor extends ReflectionBase { - private final Method a; - private final MethodHandle b; - private final boolean c; - private final Object d; - private volatile MethodHandle e; - private volatile boolean f; - private static final Object[] g = new Object[0]; - private static final ConcurrentHashMap h = new ConcurrentHashMap(); + private final Method method; + private final MethodHandle methodHandle; + private final boolean isStaticMethod; + private final Object boundTarget; + private volatile MethodHandle spreadInvoker; + private volatile boolean spreadInvokerResolved; + private static final Object[] NO_ARGS = new Object[0]; + private static final ConcurrentHashMap MAPPED_METHOD_ACCESSORS = new ConcurrentHashMap(); - private MethodAccessor(Method var1, MethodHandle var2, boolean var3, Object var4) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = var4; + private MethodAccessor(Method reflectMethod, MethodHandle handle, boolean staticMethod, Object target) { + this.method = reflectMethod; + this.methodHandle = handle; + this.isStaticMethod = staticMethod; + this.boundTarget = target; } - private MethodAccessor(MethodSpec var1, Object var2) { - this(var1.a, var1.b, var1.c, var2); + private MethodAccessor(ResolvedMethod resolved, Object target) { + this(resolved.method, resolved.handle, resolved.isStatic, target); } - public static MethodAccessor a(Object[] var0) { - Class var2 = (Class)var0[0]; - String var1 = (String)var0[1]; - Class[] var5 = (Class[])var0[2]; - long var3 = (Long)var0[3]; - var3 = 68817367897026L ^ var3; - long var6 = var3 ^ 128125055887225L; - MethodSpec var8 = ReflectionBase.a_MethodSpec(new Object[]{var2, var1, var5, var6}); - return new MethodAccessor(var8, null); + public static MethodAccessor of(Class owner, String name, Class[] parameterTypes) { + return new MethodAccessor(ReflectionBase.resolveMethod(owner, name, parameterTypes), null); } - public static MethodAccessor c(Object[] var0) { - Object var2 = var0[0]; - String var3 = (String)var0[1]; - Class[] var1 = (Class[])var0[2]; - long var4 = (Long)var0[3]; - var4 = 68817367897026L ^ var4; - long var6 = var4 ^ 12317463153975L; - if (var2 == null) { + public static MethodAccessor forInstance(Object instance, String name, Class[] parameterTypes) { + if (instance == null) { throw new IllegalArgumentException("instance cannot be null"); } else { - MethodSpec var9 = ReflectionBase.a_MethodSpec(new Object[]{var2.getClass(), var3, var1, var6}); - return new MethodAccessor(var9, var2); + return new MethodAccessor(ReflectionBase.resolveMethod(instance.getClass(), name, parameterTypes), instance); } } - public static RenderHelper16 a_RenderHelper16(Object[] var0) { - Object var4 = var0[0]; - String var5 = (String)var0[1]; - Class var1 = (Class)var0[2]; - Class var2 = (Class)var0[3]; - Class[] var3 = (Class[])var0[4]; - long var6 = (Long)var0[5]; - var6 = 68817367897026L ^ var6; - long var8 = var6 ^ 49993015910790L; - long var10 = var6 ^ 103413622132717L; - StringData var13 = new StringData(var1, var5, var2, var3, var4.getClass()); - Event.b(); - MethodAccessor var14 = (MethodAccessor)h.get(var13); - if (var14 != null) { - return var14.c_RenderHelper16(new Object[]{var4, var10}); + public static BoundMethod bindMapped(Object instance, String name, Class owner, Class returnType, Class[] parameterTypes) { + MethodLookupKey cacheKey = new MethodLookupKey(owner, name, returnType, parameterTypes, instance.getClass()); + MethodAccessor cached = (MethodAccessor)MAPPED_METHOD_ACCESSORS.get(cacheKey); + if (cached != null) { + return cached.bindTo(instance); } else { - String var15 = TransformerManager.getRemapper().getRemapper().reverse().map(var1.getName().replace('.', '/')); - String var16 = TransformerManager.getRemapper().getRemapper().reverse().mapMethodDesc(ASMUtils.toDescriptor(var2, var3)); - String var17 = TransformerManager.getRemapper().getRemapper().mapMethodName(var15, var5, var16); - MethodAccessor var18 = c(new Object[]{var4, var17, var3, var8}); - MethodAccessor var19 = (MethodAccessor)h.putIfAbsent(var13, var18); - return (var19 != null ? var19 : var18).c_RenderHelper16(new Object[]{var4, var10}); + String namedOwner = TransformerManager.getRemapper().getRemapper().reverse().map(owner.getName().replace('.', '/')); + String namedDescriptor = TransformerManager.getRemapper().getRemapper().reverse().mapMethodDesc(ASMUtils.toDescriptor(returnType, parameterTypes)); + MethodAccessor accessor = forInstance(instance, TransformerManager.getRemapper().getRemapper().mapMethodName(namedOwner, name, namedDescriptor), parameterTypes); + MethodAccessor existing = (MethodAccessor)MAPPED_METHOD_ACCESSORS.putIfAbsent(cacheKey, accessor); + return (existing != null ? existing : accessor).bindTo(instance); } } - public static MethodAccessor e(Object[] var0) { - Class var6 = (Class)var0[0]; - String var3 = (String)var0[1]; - Class var1 = (Class)var0[2]; - Class[] var2 = (Class[])var0[3]; - long var4 = (Long)var0[4]; - var4 = 68817367897026L ^ var4; - long var7 = var4 ^ 85630767655394L; - StringData var9 = new StringData(var6, var3, var1, var2, var6); - MethodAccessor var10 = (MethodAccessor)h.get(var9); - if (var10 != null) { - return var10; + public static MethodAccessor ofMapped(Class owner, String name, Class returnType, Class[] parameterTypes) { + MethodLookupKey cacheKey = new MethodLookupKey(owner, name, returnType, parameterTypes, owner); + MethodAccessor cached = (MethodAccessor)MAPPED_METHOD_ACCESSORS.get(cacheKey); + if (cached != null) { + return cached; } else { - String var11 = TransformerManager.getRemapper().getRemapper().reverse().map(var6.getName().replace('.', '/')); - String var12 = TransformerManager.getRemapper().getRemapper().reverse().mapMethodDesc(ASMUtils.toDescriptor(var1, var2)); - String var13 = TransformerManager.getRemapper().getRemapper().mapMethodName(var11, var3, var12); - MethodAccessor var14 = a(new Object[]{var6, var13, var2, var7}); - MethodAccessor var15 = (MethodAccessor)h.putIfAbsent(var9, var14); - return var15 != null ? var15 : var14; + String namedOwner = TransformerManager.getRemapper().getRemapper().reverse().map(owner.getName().replace('.', '/')); + String namedDescriptor = TransformerManager.getRemapper().getRemapper().reverse().mapMethodDesc(ASMUtils.toDescriptor(returnType, parameterTypes)); + MethodAccessor accessor = of(owner, TransformerManager.getRemapper().getRemapper().mapMethodName(namedOwner, name, namedDescriptor), parameterTypes); + MethodAccessor existing = (MethodAccessor)MAPPED_METHOD_ACCESSORS.putIfAbsent(cacheKey, accessor); + return existing != null ? existing : accessor; } } - private MethodHandle a_MethodHandle_(Object[] var1) { - if (this.f) { - return this.e; + private MethodHandle getSpreadInvoker() { + if (this.spreadInvokerResolved) { + return this.spreadInvoker; } else { - MethodHandle var5 = null; + MethodHandle invoker = null; try { - int var6 = this.b.type().parameterCount(); - var5 = this.b.asType(this.b.type().generic()).asSpreader(Object[].class, var6); - } catch (Throwable var13) { + int parameterCount = this.methodHandle.type().parameterCount(); + invoker = this.methodHandle.asType(this.methodHandle.type().generic()).asSpreader(Object[].class, parameterCount); + } catch (Throwable ignored) { } - this.e = var5; - this.f = true; - return var5; + this.spreadInvoker = invoker; + this.spreadInvokerResolved = true; + return invoker; } } - public Method a_Method(Object[] var1) { - return this.a; + public Method getMethod() { + return this.method; } - public Object a_Object__(Object[] var1) throws Throwable { - Object var5 = var1[0]; - Object[] var2 = (Object[])var1[1]; - long var3 = (Long)var1[2]; - var3 = 68817367897026L ^ var3; - long var6 = var3 ^ 35452219203092L; - return this.b(new Object[]{var5, var2, var6}); + public Object call(Object target, Object[] args) throws Throwable { + return this.invoke(target, args); } - public Object b(Object[] var1) throws Throwable { - Object var4 = var1[0]; - Object[] var5 = (Object[])var1[1]; - long var2 = (Long)var1[2]; - var2 = 68817367897026L ^ var2; - long var6 = var2 ^ 57593098132257L; - Object[] var9; - if (this.c) { - var9 = var5 == null ? g : var5; + public Object invoke(Object target, Object[] args) throws Throwable { + Object[] fullArgs; + if (this.isStaticMethod) { + fullArgs = args == null ? NO_ARGS : args; } else { - if (var4 == null) { + if (target == null) { throw new IllegalArgumentException("Target instance required for non-static method"); } - int var10 = var5 == null ? 0 : var5.length; - var9 = new Object[var10 + 1]; - var9[0] = var4; - if (var10 > 0) { - System.arraycopy(var5, 0, var9, 1, var10); + int argCount = args == null ? 0 : args.length; + fullArgs = new Object[argCount + 1]; + fullArgs[0] = target; + if (argCount > 0) { + System.arraycopy(args, 0, fullArgs, 1, argCount); } } - MethodHandle var13 = this.a_MethodHandle_(new Object[]{var6}); - if (var13 != null) { - return (Object)var13.invoke(var9); + MethodHandle invoker = this.getSpreadInvoker(); + if (invoker != null) { + return invoker.invoke(fullArgs); } else { - return this.b.invokeWithArguments(var9); + return this.methodHandle.invokeWithArguments(fullArgs); } } - public RenderHelper16 c_RenderHelper16(Object[] var1) { - Object var2 = var1[0]; - if (this.c) { + public BoundMethod bindTo(Object target) { + if (this.isStaticMethod) { throw new IllegalStateException("Cannot bind static method to instance"); - } else if (var2 == null) { + } else if (target == null) { throw new IllegalArgumentException("Target instance required for non-static method"); } else { - return new RenderHelper16(this, var2); + return new BoundMethod(this, target); } } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Object[] d() { - return new Object[0]; - } - - private static Object[] a(Object var0, int var1) { - return new Object[]{var0, var1}; - } - - private static Object[] b(Object var0) { - return new Object[]{var0}; - } - - private static Throwable b(Throwable var0) { - return var0; - } } diff --git a/src/main/java/dev/zprestige/prestige/reflect/MethodHandleCache.java b/src/main/java/dev/zprestige/prestige/reflect/MethodHandleCache.java deleted file mode 100644 index c0c315f..0000000 --- a/src/main/java/dev/zprestige/prestige/reflect/MethodHandleCache.java +++ /dev/null @@ -1,119 +0,0 @@ -package dev.zprestige.prestige.reflect; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.render.Camera; - -public class MethodHandleCache { - private static final MethodAccessor a = MethodAccessor.e( - new Object[]{Camera.class, "setPos", void.class, new Class[]{double.class, double.class, double.class}, 0L} - ); - private static final MethodAccessor b; - private final Camera c; - - public MethodHandleCache(Camera var1) { - this.c = var1; - } - - public void a(Object[] var1) { - double var2 = (Double)var1[0]; - double var4 = (Double)var1[1]; - double var6 = (Double)var1[2]; - long var8 = (Long)var1[3]; - var8 = 31533240469600L ^ var8; - long var10 = var8 ^ 50275459632695L; - - try { - a.b(new Object[]{this.c, new Object[]{var2, var4, var6}, var10}); - } catch (Throwable var13) { - throw new RuntimeException(var13); - } - } - - public void b(Object[] var1) { - float var2 = (Float)var1[0]; - float var5 = (Float)var1[1]; - long var3 = (Long)var1[2]; - var3 = 31533240469600L ^ var3; - long var6 = var3 ^ 55335610542964L; - - try { - b.b(new Object[]{this.c, new Object[]{var2, var5}, var6}); - } catch (Throwable var9) { - throw new RuntimeException(var9); - } - } - - static { - Object var0 = new String[]{"setPos", "setRotation"}; - b = MethodAccessor.e(new Object[]{Camera.class, ((Object[])var0)[1], void.class, new Class[]{float.class, float.class}, 0L}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/reflect/MethodSpec.java b/src/main/java/dev/zprestige/prestige/reflect/MethodSpec.java deleted file mode 100644 index 49dedb5..0000000 --- a/src/main/java/dev/zprestige/prestige/reflect/MethodSpec.java +++ /dev/null @@ -1,16 +0,0 @@ -package dev.zprestige.prestige.reflect; - -import java.lang.invoke.MethodHandle; -import java.lang.reflect.Method; - -public class MethodSpec { - public final Method a; - public final MethodHandle b; - public final boolean c; - - public MethodSpec(Method var1, MethodHandle var2, boolean var3) { - this.a = var1; - this.b = var2; - this.c = var3; - } -} diff --git a/src/main/java/dev/zprestige/prestige/reflect/MethodValue.java b/src/main/java/dev/zprestige/prestige/reflect/MethodValue.java deleted file mode 100644 index 9703539..0000000 --- a/src/main/java/dev/zprestige/prestige/reflect/MethodValue.java +++ /dev/null @@ -1,260 +0,0 @@ -package dev.zprestige.prestige.reflect; - -import java.lang.invoke.VarHandle; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class MethodValue { - private final boolean a; - private final long b; - private final Object c; - private final boolean d; - private final boolean e; - private final VarHandle f; - private final Field g; - private final Class h; - private final String i; - private final Class j; - - public MethodValue(FieldSpec var1, long var2) { - this.a = true; - this.b = var1.d; - this.c = var1.c; - this.d = var1.b; - this.f = var1.e; - this.g = var1.a; - this.e = ReflectionBase.a != null && var1.d != -1L; - this.h = null; - this.i = null; - this.j = null; - } - - public MethodValue(Class var1, String var2, Class var3, long var4) { - this.a = false; - this.b = -1L; - this.c = null; - this.d = false; - this.e = false; - this.f = null; - this.g = null; - this.h = var1; - this.i = var2; - this.j = var3; - } - - private Object a(Object[] var1) { - Object var4 = var1[0]; - return this.d ? this.c : var4; - } - - public void a_void______________(Object[] var1) { - Object var2 = var1[0]; - double var3 = (Double)var1[1]; - long var5 = (Long)var1[2]; - var5 = 52553368039867L ^ var5; - long var7 = var5 ^ 65880657052537L; - long var9 = var5 ^ 64742562627896L; - long var11 = var5 ^ 60314311264557L; - if (!this.a) { - this.g(new Object[]{var2, var3, var11}); - } else { - if (this.e) { - ReflectionBase.a.putDouble(this.a(new Object[]{var2, var7}), this.b, var3); - } else if (this.f != null) { - if (this.d) { - this.f.set((double)var3); - } else { - this.f.set((Object)var2, (double)var3); - } - } else { - this.h(new Object[]{var2, var3, var9}); - } - } - } - - public void b(Object[] var1) { - Object var4 = var1[0]; - float var5 = (Float)var1[1]; - long var2 = (Long)var1[2]; - var2 = 52553368039867L ^ var2; - long var6 = var2 ^ 108899763810423L; - long var8 = var2 ^ 107761667355190L; - long var10 = var2 ^ 121200748313123L; - if (!this.a) { - this.g(new Object[]{var4, var5, var10}); - } else { - if (this.e) { - ReflectionBase.a.putFloat(this.a(new Object[]{var4, var6}), this.b, var5); - } else if (this.f != null) { - if (this.d) { - this.f.set((float)var5); - } else { - this.f.set((Object)var4, (float)var5); - } - } else { - this.h(new Object[]{var4, var5, var8}); - } - } - } - - public void f(Object[] var1) { - Object var5 = var1[0]; - Object var4 = var1[1]; - long var2 = (Long)var1[2]; - var2 = 52553368039867L ^ var2; - long var6 = var2 ^ 54268476751541L; - long var8 = var2 ^ 53130240507124L; - long var10 = var2 ^ 66431625934049L; - if (!this.a) { - this.g(new Object[]{var5, var4, var10}); - } else { - if (this.e) { - ReflectionBase.a.putObject(this.a(new Object[]{var5, var6}), this.b, var4); - } else if (this.f != null) { - if (this.d) { - this.f.set((Object)var4); - } else { - this.f.set((Object)var5, (Object)var4); - } - } else { - this.h(new Object[]{var5, var4, var8}); - } - } - } - - public Object b_Object(Object[] var1) { - Object var4 = var1[0]; - long var2 = (Long)var1[1]; - var2 = 52553368039867L ^ var2; - long var5 = var2 ^ 91599922475202L; - long var7 = var2 ^ 37377794584031L; - long var9 = var2 ^ 18105537663605L; - if (!this.a) { - return this.c(new Object[]{var4, var7}); - } else if (this.e) { - return ReflectionBase.a.getObject(this.a(new Object[]{var4, var9}), this.b); - } else if (this.f != null) { - return this.d ? (Object)this.f.get() : (Object)this.f.get((Object)var4); - } else { - return this.d(new Object[]{var4, var5}); - } - } - - private void g(Object[] var1) { - Object var3 = var1[0]; - Object var2 = var1[1]; - long var4 = (Long)var1[2]; - var4 = 52553368039867L ^ var4; - long var6 = var4 ^ 119917736554176L; - long var8 = var4 ^ 99292864920260L; - FieldAccessor.b(new Object[]{var3, this.i, this.h, this.j, var8}).a_void_____________(new Object[]{var2, var6}); - } - - private Object c(Object[] var1) { - Object var2 = var1[0]; - long var3 = (Long)var1[1]; - var3 = 52553368039867L ^ var3; - long var5 = var3 ^ 21438735426252L; - long var7 = var3 ^ 113212448984890L; - return FieldAccessor.b(new Object[]{var2, this.i, this.h, this.j, var7}).a(new Object[]{var5}); - } - - private void h(Object[] var1) { - Object var4 = var1[0]; - Object var5 = var1[1]; - long var2 = (Long)var1[2]; - var2 = 52553368039867L ^ var2; - long var6 = var2 ^ 51423854113786L; - - try { - this.g.set(this.a(new Object[]{var4, var6}), var5); - } catch (IllegalAccessException var9) { - throw new RuntimeException(var9); - } - } - - private Object d(Object[] var1) { - Object var2 = var1[0]; - long var3 = (Long)var1[1]; - var3 = 52553368039867L ^ var3; - long var5 = var3 ^ 119798619329292L; - - try { - return this.g.get(this.a(new Object[]{var2, var5})); - } catch (IllegalAccessException var8) { - throw new RuntimeException(var8); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static RuntimeException a(RuntimeException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/reflect/ReflectDescriptor.java b/src/main/java/dev/zprestige/prestige/reflect/ReflectDescriptor.java deleted file mode 100644 index a6705b7..0000000 --- a/src/main/java/dev/zprestige/prestige/reflect/ReflectDescriptor.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.reflect; - -public record ReflectDescriptor(Class aN, String aO, Object aP, Class aQ) { -} diff --git a/src/main/java/dev/zprestige/prestige/reflect/ReflectionBase.java b/src/main/java/dev/zprestige/prestige/reflect/ReflectionBase.java index de8f451..78dd571 100644 --- a/src/main/java/dev/zprestige/prestige/reflect/ReflectionBase.java +++ b/src/main/java/dev/zprestige/prestige/reflect/ReflectionBase.java @@ -1,14 +1,11 @@ package dev.zprestige.prestige.reflect; -import dev.zprestige.prestige.event.Event; -import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; import java.lang.invoke.MethodHandles.Lookup; import java.lang.reflect.AccessibleObject; import java.lang.reflect.Array; import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Arrays; @@ -17,211 +14,169 @@ import java.util.concurrent.ConcurrentHashMap; import sun.misc.Unsafe; public abstract class ReflectionBase { - public static final Unsafe a; - private static final Map b = new ConcurrentHashMap(); - private static final Map c = new ConcurrentHashMap(); + public static final Unsafe UNSAFE; + private static final Map RESOLVED_FIELDS = new ConcurrentHashMap(); + private static final Map RESOLVED_METHODS = new ConcurrentHashMap(); - public static AccessibleObject a_AccessibleObject(Object[] var0) { - AccessibleObject var3 = (AccessibleObject)var0[0]; - if (a == null) { - var3.setAccessible(true); - return var3; + public static AccessibleObject forceAccessible(AccessibleObject member) { + if (UNSAFE == null) { + member.setAccessible(true); + return member; } else { try { - a.putBoolean(var3, 12L, true); - return var3; - } catch (Throwable var5) { + UNSAFE.putBoolean(member, 12L, true); + return member; + } catch (Throwable unsafeError) { try { - var3.setAccessible(true); - } catch (Throwable var4) { + member.setAccessible(true); + } catch (Throwable ignored) { } - return var3; + return member; } } } - public static void a_void____________(Object[] var0) { - Field var3 = (Field)var0[0]; - + public static void removeFinalModifier(Field field) { try { - Field var4 = Field.class.getDeclaredField("modifiers"); - var4.setAccessible(true); - int var5 = var3.getModifiers(); - if ((var5 & 16) != 0) { - var4.setInt(var3, var5 & -17); + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + int modifiers = field.getModifiers(); + if ((modifiers & 16) != 0) { + modifiersField.setInt(field, modifiers & -17); } - } catch (Throwable var6) { + } catch (Throwable ignored) { } } - public static FieldSpec a_FieldSpec(Object[] var0) { - Class var1 = (Class)var0[0]; - String var4 = (String)var0[1]; - long var2 = (Long)var0[2]; - var2 = 40376972710807L ^ var2; - long var5 = var2 ^ 133172850120418L; - long var7 = var2 ^ 131683977832592L; - String var10 = var1.getName() + "#" + var4; - Event.b(); - FieldSpec var11 = (FieldSpec)b.get(var10); - if (var11 != null) { - return var11; + public static ResolvedField resolveDeclaredField(Class owner, String name) { + String cacheKey = owner.getName() + "#" + name; + ResolvedField resolved = (ResolvedField)RESOLVED_FIELDS.get(cacheKey); + if (resolved != null) { + return resolved; } else { try { - Field var12 = var1.getDeclaredField(var4); - a_AccessibleObject(new Object[]{var12, var5}); - a_void____________(new Object[]{var12, var7}); - boolean var13 = Modifier.isStatic(var12.getModifiers()); - VarHandle var14 = null; + Field field = owner.getDeclaredField(name); + forceAccessible(field); + removeFinalModifier(field); + boolean isStatic = Modifier.isStatic(field.getModifiers()); + VarHandle varHandle = null; try { - Lookup var15 = MethodHandles.privateLookupIn(var1, MethodHandles.lookup()); - if (var13) { - var14 = var15.findStaticVarHandle(var1, var4, var12.getType()); + Lookup lookup = MethodHandles.privateLookupIn(owner, MethodHandles.lookup()); + if (isStatic) { + varHandle = lookup.findStaticVarHandle(owner, name, field.getType()); } else { - var14 = var15.findVarHandle(var1, var4, var12.getType()); + varHandle = lookup.findVarHandle(owner, name, field.getType()); } - } catch (Throwable var22) { + } catch (Throwable ignored) { } - if (a == null) { - var11 = new FieldSpec(var12, var13, null, -1L, var14); - } else if (var13) { - Object var26 = a.staticFieldBase(var12); - long var16 = a.staticFieldOffset(var12); - var11 = new FieldSpec(var12, true, var26, var16, var14); + if (UNSAFE == null) { + resolved = new ResolvedField(field, isStatic, null, -1L, varHandle); + } else if (isStatic) { + resolved = new ResolvedField(field, true, UNSAFE.staticFieldBase(field), UNSAFE.staticFieldOffset(field), varHandle); } else { - long var27 = a.objectFieldOffset(var12); - var11 = new FieldSpec(var12, false, null, var27, var14); + resolved = new ResolvedField(field, false, null, UNSAFE.objectFieldOffset(field), varHandle); } - b.put(var10, var11); - return var11; - } catch (NoSuchFieldException var23) { - throw new RuntimeException("Field not found: " + var1 + "." + var4, var23); + RESOLVED_FIELDS.put(cacheKey, resolved); + return resolved; + } catch (NoSuchFieldException notFound) { + throw new RuntimeException("Field not found: " + owner + "." + name, notFound); } } } - public static FieldSpec b_FieldSpec(Object[] var0) { - Class var5 = (Class)var0[0]; - String var1 = (String)var0[1]; - String var2 = (String)var0[2]; - long var3 = (Long)var0[3]; - var3 = 40376972710807L ^ var3; - long var6 = var3 ^ 21823637373205L; - long var8 = var3 ^ 31901388848999L; - long var10 = var3 ^ 66489829358878L; - String var12 = var5.getName() + "#" + var1 + ":" + var2; - FieldSpec var13 = (FieldSpec)b.get(var12); - if (var13 != null) { - return var13; + public static ResolvedField resolveFieldByDescriptor(Class owner, String name, String descriptor) { + String cacheKey = owner.getName() + "#" + name + ":" + descriptor; + ResolvedField resolved = (ResolvedField)RESOLVED_FIELDS.get(cacheKey); + if (resolved != null) { + return resolved; } else { - Class var14 = var5; + Class currentClass = owner; - Class var15; + Class expectedType; try { - var15 = a_Class_(new Object[]{var2, var5.getClassLoader(), var10}); - } catch (ClassNotFoundException var31) { - throw new RuntimeException("Failed to parse field descriptor: " + var2, var31); + expectedType = parseFieldDescriptor(descriptor, owner.getClassLoader()); + } catch (ClassNotFoundException parseError) { + throw new RuntimeException("Failed to parse field descriptor: " + descriptor, parseError); } - while (var14 != null) { + while (currentClass != null) { try { - Field var16 = var14.getDeclaredField(var1); - if (!var16.getType().equals(var15)) { - String var51 = String.valueOf(var14); - String var10004 = String.valueOf(var15); - String var22 = String.valueOf(var16.getType()); - String var23 = var10004; - String var25 = var51; - throw new RuntimeException("Field type mismatch for " + var25 + "." + var1 + ": expected " + var23 + " but found " + var22); + Field field = currentClass.getDeclaredField(name); + if (!field.getType().equals(expectedType)) { + throw new RuntimeException("Field type mismatch for " + String.valueOf(currentClass) + "." + name + ": expected " + String.valueOf(expectedType) + " but found " + String.valueOf(field.getType())); } - a_AccessibleObject(new Object[]{var16, var6}); - a_void____________(new Object[]{var16, var8}); - boolean var17 = Modifier.isStatic(var16.getModifiers()); - VarHandle var18 = null; + forceAccessible(field); + removeFinalModifier(field); + boolean isStatic = Modifier.isStatic(field.getModifiers()); + VarHandle varHandle = null; try { - Lookup var19 = MethodHandles.privateLookupIn(var14, MethodHandles.lookup()); - if (var17) { - var18 = var19.findStaticVarHandle(var14, var1, var16.getType()); + Lookup lookup = MethodHandles.privateLookupIn(currentClass, MethodHandles.lookup()); + if (isStatic) { + varHandle = lookup.findStaticVarHandle(currentClass, name, field.getType()); } else { - var18 = var19.findVarHandle(var14, var1, var16.getType()); + varHandle = lookup.findVarHandle(currentClass, name, field.getType()); } - } catch (Throwable var30) { + } catch (Throwable ignored) { } - if (a == null) { - var13 = new FieldSpec(var16, var17, null, -1L, var18); - } else if (var17) { - Object var35 = a.staticFieldBase(var16); - long var20 = a.staticFieldOffset(var16); - var13 = new FieldSpec(var16, true, var35, var20, var18); + if (UNSAFE == null) { + resolved = new ResolvedField(field, isStatic, null, -1L, varHandle); + } else if (isStatic) { + resolved = new ResolvedField(field, true, UNSAFE.staticFieldBase(field), UNSAFE.staticFieldOffset(field), varHandle); } else { - long var36 = a.objectFieldOffset(var16); - var13 = new FieldSpec(var16, false, null, var36, var18); + resolved = new ResolvedField(field, false, null, UNSAFE.objectFieldOffset(field), varHandle); } - b.put(var12, var13); - return var13; - } catch (NoSuchFieldException var32) { - var14 = var14.getSuperclass(); + RESOLVED_FIELDS.put(cacheKey, resolved); + return resolved; + } catch (NoSuchFieldException notFound) { + currentClass = currentClass.getSuperclass(); } } - throw new RuntimeException("Field not found: " + var5 + "." + var1); + throw new RuntimeException("Field not found: " + owner + "." + name); } } - public static MethodSpec a_MethodSpec(Object[] var0) { - Class var1 = (Class)var0[0]; - String var3 = (String)var0[1]; - Class[] var2 = (Class[])var0[2]; - long var4 = (Long)var0[3]; - var4 = 40376972710807L ^ var4; - long var6 = var4 ^ 47334713393340L; - long var8 = var4 ^ 10958948693601L; - String var10 = var1.getName() + "#" + var3 + ":" + a(new Object[]{var2, var8}); - MethodSpec var11 = (MethodSpec)c.get(var10); - if (var11 != null) { - return var11; + public static ResolvedMethod resolveMethod(Class owner, String name, Class[] parameterTypes) { + String cacheKey = owner.getName() + "#" + name + ":" + buildParameterKey(parameterTypes); + ResolvedMethod resolved = (ResolvedMethod)RESOLVED_METHODS.get(cacheKey); + if (resolved != null) { + return resolved; } else { - for (Class var12 = var1; var12 != null; var12 = var12.getSuperclass()) { + for (Class currentClass = owner; currentClass != null; currentClass = currentClass.getSuperclass()) { try { - Method var36 = var12.getDeclaredMethod(var3, var2); - a_AccessibleObject(new Object[]{var36, var6}); - Lookup var37 = MethodHandles.privateLookupIn(var12, MethodHandles.lookup()); - MethodHandle var38 = var37.unreflect(var36); - boolean var39 = Modifier.isStatic(var36.getModifiers()); - var11 = new MethodSpec(var36, var38, var39); - c.put(var10, var11); - return var11; - } catch (IllegalAccessException | NoSuchMethodException var32) { - for (Method var16 : var12.getDeclaredMethods()) { - if (var16.getName().equals(var3) && var16.getParameterCount() == var2.length) { - boolean var17 = true; - Class[] var18 = var16.getParameterTypes(); + Method method = currentClass.getDeclaredMethod(name, parameterTypes); + forceAccessible(method); + resolved = new ResolvedMethod(method, MethodHandles.privateLookupIn(currentClass, MethodHandles.lookup()).unreflect(method), Modifier.isStatic(method.getModifiers())); + RESOLVED_METHODS.put(cacheKey, resolved); + return resolved; + } catch (IllegalAccessException | NoSuchMethodException exactLookupFailure) { + for (Method candidate : currentClass.getDeclaredMethods()) { + if (candidate.getName().equals(name) && candidate.getParameterCount() == parameterTypes.length) { + boolean compatible = true; + Class[] candidateParameterTypes = candidate.getParameterTypes(); - for (int var19 = 0; var19 < var18.length; var19++) { - if (!var18[var19].isAssignableFrom(var2[var19])) { - var17 = false; + for (int i = 0; i < candidateParameterTypes.length; i++) { + if (!candidateParameterTypes[i].isAssignableFrom(parameterTypes[i])) { + compatible = false; break; } } - if (var17) { + if (compatible) { try { - a_AccessibleObject(new Object[]{var16, var6}); - Lookup var40 = MethodHandles.privateLookupIn(var12, MethodHandles.lookup()); - MethodHandle var20 = var40.unreflect(var16); - boolean var21 = Modifier.isStatic(var16.getModifiers()); - var11 = new MethodSpec(var16, var20, var21); - c.put(var10, var11); - return var11; - } catch (Throwable var31) { + forceAccessible(candidate); + resolved = new ResolvedMethod(candidate, MethodHandles.privateLookupIn(currentClass, MethodHandles.lookup()).unreflect(candidate), Modifier.isStatic(candidate.getModifiers())); + RESOLVED_METHODS.put(cacheKey, resolved); + return resolved; + } catch (Throwable ignored) { } } } @@ -229,85 +184,61 @@ public abstract class ReflectionBase { } } - String var10002 = String.valueOf(var1); - String var22 = Arrays.toString((Object[])var2); - String var24 = var10002; - throw new RuntimeException("Method not found: " + var24 + "." + var3 + var22); + throw new RuntimeException("Method not found: " + String.valueOf(owner) + "." + name + Arrays.toString((Object[])parameterTypes)); } } - private static String a(Object[] var0) { - Class[] var1 = (Class[])var0[0]; - if (var1 != null && var1.length != 0) { - StringBuilder var4 = new StringBuilder(); + private static String buildParameterKey(Class[] types) { + if (types != null && types.length != 0) { + StringBuilder builder = new StringBuilder(); - for (Class var8 : var1) { - var4.append(var8 == null ? "null" : var8.getName()).append(','); + for (Class type : types) { + builder.append(type == null ? "null" : type.getName()).append(','); } - return var4.toString(); + return builder.toString(); } else { return "()"; } } - public static Class a_Class_(Object[] var0) throws ClassNotFoundException { - String var1 = (String)var0[0]; - long var2 = (Long)var0[2]; - var2 = 40376972710807L ^ var2; - long var5 = var2 ^ 45045835094261L; - long var7 = var2 ^ 134547145911763L; - if (var1 == null) { + public static Class parseFieldDescriptor(String descriptor, ClassLoader classLoader) throws ClassNotFoundException { + if (descriptor == null) { throw new IllegalArgumentException("Descriptor required"); } else { - int var9 = 0; + int index = 0; - int var10; - for (var10 = 0; var9 < var1.length() && var1.charAt(var9) == '['; var9++) { - var10++; + int arrayDepth; + for (arrayDepth = 0; index < descriptor.length() && descriptor.charAt(index) == '['; index++) { + arrayDepth++; } - char var11 = var1.charAt(var9); - if (var11 == 'L') { - int var17 = var1.indexOf(59, var9); - String var13 = var1.substring(var9 + 1, var17); - String var14 = var13.replace('/', '.'); - Class var15 = Class.forName(var14); - Object[] var18 = new Object[]{null, null, var7}; - var18[1] = var10; - var18[0] = var15; - return b(var18); + char typeChar = descriptor.charAt(index); + if (typeChar == 'L') { + Class elementClass = Class.forName(descriptor.substring(index + 1, descriptor.indexOf(59, index)).replace('/', '.')); + return toArrayType(elementClass, arrayDepth); } else { - Object[] var10003 = new Object[]{null, var5}; - var10003[0] = Integer.valueOf(var11); - Class var12 = c(var10003); - Object[] var10004 = new Object[]{null, null, var7}; - var10004[1] = var10; - var10004[0] = var12; - return b(var10004); + return toArrayType(primitiveForDescriptor(Integer.valueOf(typeChar)), arrayDepth); } } } - private static Class b(Object[] var0) { - Class var2 = (Class)var0[0]; - int var1 = (Integer)var0[1]; - if (var1 == 0) { - return var2; + private static Class toArrayType(Class componentType, int dimensions) { + if (dimensions == 0) { + return componentType; } else { - Class var5 = var2; + Class arrayType = componentType; - for (int var6 = 0; var6 < var1; var6++) { - var5 = Array.newInstance(var5, 0).getClass(); + for (int i = 0; i < dimensions; i++) { + arrayType = Array.newInstance(arrayType, 0).getClass(); } - return var5; + return arrayType; } } - private static Class c(Object[] var0) { - int var1 = (Integer)var0[0]; - switch (var1) { + private static Class primitiveForDescriptor(int descriptorChar) { + switch (descriptorChar) { case 66: return byte.class; case 67: @@ -331,7 +262,7 @@ public abstract class ReflectionBase { case 88: case 89: default: - throw new IllegalArgumentException("Unknown primitive descriptor: " + var1); + throw new IllegalArgumentException("Unknown primitive descriptor: " + descriptorChar); case 70: return float.class; case 73: @@ -348,104 +279,16 @@ public abstract class ReflectionBase { } static { - Unsafe var33 = null; + Unsafe unsafeInstance = null; try { - Field var34 = Unsafe.class.getDeclaredField("theUnsafe"); - var34.setAccessible(true); - var33 = (Unsafe)var34.get(null); - } catch (Throwable var35) { - var35.printStackTrace(System.err); + Field theUnsafeField = Unsafe.class.getDeclaredField("theUnsafe"); + theUnsafeField.setAccessible(true); + unsafeInstance = (Unsafe)theUnsafeField.get(null); + } catch (Throwable error) { + error.printStackTrace(System.err); } - a = var33; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Object[] b() { - return new Object[0]; - } - - private static Object[] a(Object var0, Object var1, Object var2) { - return new Object[]{var0, var1, var2}; - } - - private static Object[] a(Object var0, Object var1) { - return new Object[]{var0, var1}; - } - - private static Object[] a(Object var0) { - return new Object[]{var0}; - } - - private static Throwable a(Throwable var0) { - return var0; + UNSAFE = unsafeInstance; } } diff --git a/src/main/java/dev/zprestige/prestige/reflect/ResolvedField.java b/src/main/java/dev/zprestige/prestige/reflect/ResolvedField.java new file mode 100644 index 0000000..366f078 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/reflect/ResolvedField.java @@ -0,0 +1,20 @@ +package dev.zprestige.prestige.reflect; + +import java.lang.invoke.VarHandle; +import java.lang.reflect.Field; + +public class ResolvedField { + public final Field field; + public final boolean isStatic; + public final Object staticBase; + public final long offset; + public final VarHandle varHandle; + + public ResolvedField(Field reflectField, boolean staticField, Object base, long fieldOffset, VarHandle handle) { + this.field = reflectField; + this.isStatic = staticField; + this.staticBase = base; + this.offset = fieldOffset; + this.varHandle = handle; + } +} diff --git a/src/main/java/dev/zprestige/prestige/reflect/ResolvedMethod.java b/src/main/java/dev/zprestige/prestige/reflect/ResolvedMethod.java new file mode 100644 index 0000000..62ceaff --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/reflect/ResolvedMethod.java @@ -0,0 +1,16 @@ +package dev.zprestige.prestige.reflect; + +import java.lang.invoke.MethodHandle; +import java.lang.reflect.Method; + +public class ResolvedMethod { + public final Method method; + public final MethodHandle handle; + public final boolean isStatic; + + public ResolvedMethod(Method reflectMethod, MethodHandle methodHandle, boolean staticMethod) { + this.method = reflectMethod; + this.handle = methodHandle; + this.isStatic = staticMethod; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/ApplyCallbackState.java b/src/main/java/dev/zprestige/prestige/render/ApplyCallbackState.java new file mode 100644 index 0000000..84e955f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/ApplyCallbackState.java @@ -0,0 +1,16 @@ +package dev.zprestige.prestige.render; + +import java.util.function.Consumer; + +public class ApplyCallbackState implements RenderStateElement { + public final Consumer callback; + + public ApplyCallbackState(Consumer onApply) { + this.callback = onApply; + } + + @Override + public void apply(GlRenderPass pass) { + this.callback.accept(pass); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/AuraOutlineShader.java b/src/main/java/dev/zprestige/prestige/render/AuraOutlineShader.java index ff98d38..12fc1e3 100644 --- a/src/main/java/dev/zprestige/prestige/render/AuraOutlineShader.java +++ b/src/main/java/dev/zprestige/prestige/render/AuraOutlineShader.java @@ -1,183 +1,83 @@ package dev.zprestige.prestige.render; -import dev.zprestige.prestige.data.IntData; -import dev.zprestige.prestige.event.Event; +import dev.zprestige.prestige.data.ProgramUniforms; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Consumer; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL13; import org.lwjgl.opengl.GL30; public class AuraOutlineShader extends PostShader { - private final Color a; - private final int b; - private final float c; - private final float f; - private final float i; - private final float k; - private final float l; + private final Color color; + private final int quality; + private final float radius; + private final float fill; + private final float lineWidth; + private final float haloOpacity; + private final float coreBoost; - public AuraOutlineShader(long var1) { - super("shaders/post.vert", "shaders/aura_outline.frag", (106311853542035L)); - var1 = 0L; - var1 = 132259407883928L ^ var1; - long var3 = var1 ^ 27464759927819L; - this.a = Color.WHITE; - this.b = 5; - this.c = 15.0F; - this.f = 0.0F; - this.i = 2.0F; - this.k = 0.7F; - this.l = 0.8F; + public AuraOutlineShader() { + super("shaders/post.vert", "shaders/aura_outline.frag"); + this.color = Color.WHITE; + this.quality = 5; + this.radius = 15.0F; + this.fill = 0.0F; + this.lineWidth = 2.0F; + this.haloOpacity = 0.7F; + this.coreBoost = 0.8F; } @Override - public TextRenderer b(Object[] var1) { - RenderHelper8 var5 = (RenderHelper8)var1[0]; - int var2 = (Integer)var1[1]; - long var3 = (Long)var1[2]; - long var6 = var3 ^ 122531800221372L; - return var5.a( - new Object[]{ - this.j + public MappedMeshBuilder getPipelineBuffer(BufferSource buffers, int textureId) { + return buffers.getBuffer( + (DrawPipeline)(this.pipelineCache .computeIfAbsent( - var2, - lpL128_0 -> { - VertexFormat var10002 = VertexAttribute.c; - Uniform[] var10005 = new Uniform[]{ - Uniform.a_IntSupplierData(new Object[]{this.g.a}), Uniform.a_ShaderData(new Object[]{RenderHelper22.b}), null, null, null, null + textureId, + cacheKey -> { + VertexLayout format = VertexLayouts.POSITION_COLOR_UV; + RenderStateElement[] states = new RenderStateElement[]{ + RenderStateElement.target(this.maskFramebuffer.glId), RenderStateElement.shader(CoreShaders.POS_COLOR_TEX), null, null, null, null }; - Object[] var10012 = new Object[]{null, null, true}; - var10012[1] = false; - var10012[0] = 2884; - var10005[2] = Uniform.b_IntBoolData2(var10012); - Object[] var10011 = new Object[]{null, true}; - var10011[0] = true; - var10005[3] = Uniform.a_BoolData2(var10011); - var10011 = new Object[]{null, 515}; - var10011[0] = 519; - var10005[4] = Uniform.a_IntData2(var10011); - var10005[5] = Uniform.a_Uniform(new Object[]{(Consumer)lpL129_0 -> { + states[2] = RenderStateElement.capability(2884, false, true); + states[3] = RenderStateElement.blend(true, true); + states[4] = RenderStateElement.depthFunc(519, 515); + states[5] = RenderStateElement.onApply((Consumer)pass -> { GL13.glActiveTexture(33984); - GL11.glBindTexture(3553, var2); - }}); - return new DrawMode(var10002, 4, true, var10005, 138006566364233L); + GL11.glBindTexture(3553, textureId); + }); + return new DrawPipeline(format, 4, true, states); } - ), - var6 - } + )) ); } @Override - public void c(Object[] var1) { - IntData var2 = (IntData)var1[0]; - var2.a("color", this.a.getRed() / 255.0F, this.a.getGreen() / 255.0F, this.a.getBlue() / 255.0F, this.a.getAlpha() / 255.0F) - .a("quality", 5) - .a("radius", 15.0F) - .a("fill", 0.0F) - .a("lineWidth", 2.0F) - .a("haloOpacity", 0.7F) - .a("coreBoost", 0.8F); + public void setDefaultUniforms(ProgramUniforms uniforms) { + uniforms.setVec4("color", this.color.getRed() / 255.0F, this.color.getGreen() / 255.0F, this.color.getBlue() / 255.0F, this.color.getAlpha() / 255.0F) + .setInt("quality", 5) + .setFloat("radius", 15.0F) + .setFloat("fill", 0.0F) + .setFloat("lineWidth", 2.0F) + .setFloat("haloOpacity", 0.7F) + .setFloat("coreBoost", 0.8F); } @Override - public VertexBuffer a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 98867838856239L; - return new VertexBuffer().b(new Object[]{this.a_Shader(new Object[0]), (Consumer)lpL127_0 -> { + public FullscreenPassChain createCompositePasses() { + return new FullscreenPassChain().addDynamicPass(this.getShader(), (Consumer)pass -> { GL13.glActiveTexture(33984); - Event.b(); - GL11.glBindTexture(3553, this.h.a); - if ((RenderUtil.a_long__(new Object[0]) & 1L) == 0L) { + GL11.glBindTexture(3553, this.maskTexture.glId); + if ((RenderCore.getFrameCount() & 1L) == 0L) { GL30.glGenerateMipmap(3553); } GL11.glTexParameteri(3553, 10241, 9985); - this.e(new Object[]{30083616553634L}); - IntData.a(this.a_Shader(new Object[0]).a(new Object[0])).a("oneTexel", this.d > 0 ? 1.0F / this.d : 0.0F, this.e > 0 ? 1.0F / this.e : 0.0F); - }, (java.util.function.IntSupplier)RenderUtil::a, var4}); + this.applyUniforms(); + ProgramUniforms.of(this.getShader().getProgramId()).setVec2("oneTexel", this.maskWidth > 0 ? 1.0F / this.maskWidth : 0.0F, this.maskHeight > 0 ? 1.0F / this.maskHeight : 0.0F); + }, (java.util.function.IntSupplier)RenderCore::getMainFramebufferId); } static { - Shader var10000 = RenderHelper22.b; - Object[] var10005 = new Object[]{null, null, 0L}; - var10005[1] = 0; - var10005[0] = "texSampler"; - var10000.a_void_____________________________(var10005); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static MatchException b(MatchException var0) { - return var0; + CoreShaders.POS_COLOR_TEX.setUniformInt("texSampler", 0); } } diff --git a/src/main/java/dev/zprestige/prestige/render/AutoTotemHelper.java b/src/main/java/dev/zprestige/prestige/render/AutoTotemHelper.java deleted file mode 100644 index ce7c342..0000000 --- a/src/main/java/dev/zprestige/prestige/render/AutoTotemHelper.java +++ /dev/null @@ -1,11 +0,0 @@ -package dev.zprestige.prestige.render; - -public final class AutoTotemHelper { - public long a; - public float b; - - public AutoTotemHelper(long var1, float var3) { - this.a = var1; - this.b = var3; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/AxisSwitchMap.java b/src/main/java/dev/zprestige/prestige/render/AxisSwitchMap.java new file mode 100644 index 0000000..93f0128 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/AxisSwitchMap.java @@ -0,0 +1,20 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.type.GuideAxis; + +// $VF: synthetic class +public class AxisSwitchMap { + public static final int[] SWITCH_MAP = new int[GuideAxis.values().length]; + + static { + try { + SWITCH_MAP[GuideAxis.X.ordinal()] = 1; + } catch (NoSuchFieldError missingX) { + } + + try { + SWITCH_MAP[GuideAxis.Y.ordinal()] = 2; + } catch (NoSuchFieldError missingY) { + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/BlurredRoundedRectShader.java b/src/main/java/dev/zprestige/prestige/render/BlurredRoundedRectShader.java new file mode 100644 index 0000000..14ef4c0 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/BlurredRoundedRectShader.java @@ -0,0 +1,93 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.math.RenderCacheUtil; +import dev.zprestige.prestige.type.GlPrimitive; +import dev.zprestige.prestige.world.MeshBuilder; +import java.util.Map; +import java.util.function.Consumer; +import org.joml.Matrix4f; +import org.joml.Vector4f; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL13; +import org.lwjgl.opengl.GL20; + +public class BlurredRoundedRectShader extends ShaderBase { + private static final BlurredRoundedRectShader INSTANCE = new BlurredRoundedRectShader(); + private static final Map BLURS; + private static final Map DRAW_MODES_BY_BLUR; + private final int roundnessUniform; + private final int invBlurTexSizeUniform; + + private BlurredRoundedRectShader() { + super("shaders/rounded_texture.vert", "shaders/rounded_texture_blurred.frag"); + this.roundnessUniform = this.getShader().getUniformLocation("roundness"); + this.invBlurTexSizeUniform = this.getShader().getUniformLocation("invBlurTexSize"); + this.getShader().setUniformInt("texSampler", 0); + } + + public static void drawBlurredRectCorners(BufferSource buffers, CameraMatrices context, Matrix4f matrix, float x, float y, float width, float height, int blurRadius, Vector4f radii) { + GaussianBlur blur = (GaussianBlur)BLURS.computeIfAbsent(blurRadius, radiusKey -> new GaussianBlur(blurRadius, blurRadius * 2)); + INSTANCE.queueBlurredRect(buffers, context, matrix, blur, x, y, width, height, radii); + } + + public static void drawBlurredRect(BufferSource buffers, CameraMatrices context, Matrix4f matrix, float x, float y, float width, float height, int blurRadius, float cornerRadius) { + GaussianBlur blur = (GaussianBlur)BLURS.computeIfAbsent(blurRadius, radiusKey -> new GaussianBlur(blurRadius, blurRadius * 2)); + INSTANCE.queueBlurredRect(buffers, context, matrix, blur, x, y, width, height, new Vector4f(cornerRadius)); + } + + private void queueBlurredRect(BufferSource unusedBuffers, CameraMatrices unusedContext, Matrix4f matrix, GaussianBlur blur, float x, float y, float width, float height, Vector4f radii) { + DrawPipeline drawMode = this.getDrawMode(blur, radii); + ShapeRenderer.getDrawQueue() + .enqueue( + new CallbackDrawCommand( + drawMode, + (depth, builder) -> { + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape().putTransformedVertex(matrix, x, y + height, ((java.lang.Float)depth)) + .putFloats(new float[]{0.0F, 0.0F}) + .putFloats(new float[]{width, height}).putTransformedVertex(matrix, x + width, y + height, ((java.lang.Float)depth)) + .putFloats(new float[]{width, 0.0F}) + .putFloats(new float[]{width, height}).putTransformedVertex(matrix, x + width, y, ((java.lang.Float)depth)) + .putFloats(new float[]{width, height}) + .putFloats(new float[]{width, height}).putTransformedVertex(matrix, x, y, ((java.lang.Float)depth)) + .putFloats(new float[]{0.0F, height}) + .putFloats(new float[]{width, height}) + .generateIndices(GlPrimitive.QUADS) + .resetBaseVertex(); + } + ) + ); + } + + private DrawPipeline getDrawMode(GaussianBlur blur, Vector4f radii) { + Vector4f roundedRadii = RenderCacheUtil.quantizeVector(radii); + Map modesByRadii = (Map)DRAW_MODES_BY_BLUR.computeIfAbsent(blur, blurKey -> { + return RenderCacheUtil.newLruCache(128); + }); + DrawPipeline drawMode = (DrawPipeline)modesByRadii.get(roundedRadii); + if (drawMode == null) { + VertexLayout format = VertexLayouts.POSITION_UV_SIZE; + RenderStateElement[] states = new RenderStateElement[]{RenderStateElement.onConfigure((Consumer)passBuilder -> { + blur.blurIfNeeded(RenderCore.getFrameCount()); + }), RenderStateElement.MAIN_TARGET, RenderStateElement.shader(this.getShader()), null, null, null, null}; + states[3] = RenderStateElement.capability(2884, true); + states[4] = RenderStateElement.blend(true, true); + states[5] = RenderStateElement.depthFunc(515, 515); + states[6] = RenderStateElement.onApply((Consumer)pass -> { + GL13.glActiveTexture(33984); + GL11.glBindTexture(3553, blur.outputTexture.glId); + GL20.glUniform2f(this.invBlurTexSizeUniform, 1.0F / blur.getWidth(), 1.0F / blur.getHeight()); + GL20.glUniform4f(this.roundnessUniform, roundedRadii.x, roundedRadii.y, roundedRadii.z, roundedRadii.w); + }); + drawMode = new DrawPipeline(format, 4, false, states); + modesByRadii.put(roundedRadii, drawMode); + } + + return drawMode; + } + + static { + BLURS = RenderCacheUtil.newLruCache(4); + DRAW_MODES_BY_BLUR = RenderCacheUtil.newLruCache(4); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/BoundMethod.java b/src/main/java/dev/zprestige/prestige/render/BoundMethod.java new file mode 100644 index 0000000..0949f26 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/BoundMethod.java @@ -0,0 +1,21 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.reflect.MethodAccessor; + +public class BoundMethod { + private final Object target; + public final MethodAccessor accessor; + + public BoundMethod(MethodAccessor methodAccessor, Object instance) { + this.accessor = methodAccessor; + this.target = instance; + } + + public Object invoke(Object[] args) { + try { + return this.accessor.call(this.target, args); + } catch (Throwable error) { + throw new RuntimeException(error); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/BufferBuilder.java b/src/main/java/dev/zprestige/prestige/render/BufferBuilder.java deleted file mode 100644 index 765c04f..0000000 --- a/src/main/java/dev/zprestige/prestige/render/BufferBuilder.java +++ /dev/null @@ -1,1506 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.util.ArrayList; -import java.util.Vector; - -public class BufferBuilder implements VertexSink { - private long a; - private int[] b; - private VertexSink c; - private long d; - private long[] j; - private static long[] k = new long[64]; - public static int[] e; - private static ArrayList f; - private static Vector m; - private static int i; - private static Object o; - private static int h = 52; - private static int l = 128; - private static int n = 17; - - public static Object g() { - return o; - } - - public static VertexSink a(long var0, long var2, Object var4) { - RenderHelper33.a(var0 > 0L); - VertexSink var5 = d(var0); - VertexSink var6 = d(var2); - VertexSink var7 = RenderHelper33.a(var5, var6); - if (var4 != null) { - m.add(var4); - } - - return var7; - } - - public static VertexSink c(long var0) { - int var2 = (int)a(var0, h, 63, e, k); - if (var2 < i) { - return (VertexSink)f.get(var2); - } else { - if (f.size() % l == 0) { - e = (int[])e.clone(); - } - - BufferBuilder var3 = new BufferBuilder(var0); - f.add(var3); - return var3; - } - } - - private static VertexSink d(long var0) { - return new BufferBuilder(var0); - } - - public static void a(RenderHelper33 var0) { - i = f.size(); - c(); - var0.d(); - } - - public static void b(RenderHelper33 var0) { - c(); - int[] var10000 = e = new int[64]; - var10000[0] = -42; - var10000[1] = -29; - var10000[2] = -9; - var10000[3] = -29; - var10000[4] = -20; - var10000[5] = -12; - var10000[6] = -40; - var10000[7] = -21; - var10000[8] = -43; - var10000[9] = -38; - var10000[10] = -33; - var10000[11] = 9; - var10000[12] = -41; - var10000[13] = -47; - var10000[14] = -15; - var10000[15] = -5; - var10000[16] = -42; - var10000[17] = 12; - var10000[18] = -38; - var10000[19] = -18; - var10000[20] = 5; - var10000[21] = -40; - var10000[22] = -33; - var10000[23] = -4; - var10000[24] = 20; - var10000[25] = -23; - var10000[26] = -9; - var10000[27] = 4; - var10000[28] = 21; - var10000[29] = 15; - var10000[30] = 29; - var10000[31] = -31; - var10000[32] = 29; - var10000[33] = -17; - var10000[34] = -15; - var10000[35] = 9; - var10000[36] = -5; - var10000[37] = 18; - var10000[38] = -25; - var10000[39] = -20; - var10000[40] = -5; - var10000[41] = 5; - var10000[42] = 42; - var10000[43] = 33; - var10000[44] = -13; - var10000[45] = 5; - var10000[46] = 40; - var10000[47] = 38; - var10000[48] = 23; - var10000[49] = 15; - var10000[50] = 17; - var10000[51] = 43; - var10000[52] = -2; - var10000[53] = 41; - var10000[54] = 2; - var10000[55] = 33; - var10000[56] = 38; - var10000[57] = 13; - var10000[58] = 42; - var10000[59] = 20; - var10000[60] = 47; - var10000[61] = 40; - var10000[62] = 31; - var10000[63] = 25; - var0.c(); - } - - private BufferBuilder(long var1) { - this.a = var1; - this.b = e; - this.j = k; - } - - @Override - public long a(long var1) { - long var3 = this.a(8, 55); - long var5 = this.a ^ var1 ^ this.d; - this.a = var5; - return var3; - } - - @Override - public void b(long var1) { - this.d = var1; - } - - @Override - public void a(VertexSink var1) { - if (this != var1) { - if (this.c == null) { - this.c = var1; - } else { - this.c.a(var1); - } - } - } - - @Override - public int hashCode() { - return (int)this.a(8); - } - - @Override - public boolean equals(Object var1) { - if (this == var1) { - return true; - } else { - return var1 instanceof BufferBuilder ? this.a(56) == ((BufferBuilder)var1).a(56) : false; - } - } - - @Override - public boolean b(VertexSink var1) { - if (this == var1) { - return true; - } else { - return var1 instanceof BufferBuilder ? this.a(56, 63) - ((BufferBuilder)var1).a(56, 63) <= 0L : true; - } - } - - @Override - public int[] b() { - return this.b; - } - - private long a(int var1) { - return this.a(0, var1 - 1); - } - - private long a(int var1, int var2) { - return a(this.a, var1, var2, this.b, this.j); - } - - private static long a(long var0, int var2, int var3, int[] var4, long[] var5) { - long var6 = 0L; - int var8 = var4.length; - - for (int var9 = 0; var9 < var8; var9++) { - long var10 = var0 & k[var9]; - long var12 = (long)var4[var9]; - if (var10 != 0L) { - if (var12 > 0) { - var10 >>>= var12; - } else if (var12 < 0) { - var10 <<= ~var12 + 1; - } - - var6 |= var10; - } - } - - long var13 = var6; - int var11 = 63 - var3; - if (var11 > 0) { - var13 = var6 << var11; - } - - long var14 = (long)(var2 + 64 - 1 - var3); - if (var14 > 0) { - var13 >>>= var14; - } - - return var13; - } - - private static void c() { - a(0, f.size() - 1, f, new ArrayList(f), 0); - } - - private static void a(int var0, int var1, ArrayList var2, ArrayList var3, int var4) { - if (var0 < var1) { - int var5 = var0 + (var1 - var0) / 2; - if (++var4 < n) { - a(var0, var5, var2, var3, var4); - a(var5 + 1, var1, var2, var3, var4); - } - - a(var0, var5, var1, var2, var3); - } - } - - private static void a(int var0, int var1, int var2, ArrayList var3, ArrayList var4) { - int var5 = var0; - int var6 = var1 + 1; - - for (int var7 = var0; var7 <= var2; var7++) { - var4.set(var7, var3.get(var7)); - } - - while (var5 <= var1 && var6 <= var2) { - VertexSink var8; - if (((VertexSink)var4.get(var5)).b((VertexSink)var4.get(var6))) { - var8 = (VertexSink)var4.get(var5++); - } else { - var8 = (VertexSink)var4.get(var6++); - } - - var3.set(var0, var8); - var0++; - } - - while (var5 <= var1) { - var3.set(var0, var4.get(var5)); - var0++; - var5++; - } - } - - static { - long var0 = 1L; - - for (int var2 = 0; var2 < 64; var2++) { - k[var2] = var0; - var0 <<= 1; - } - - o = new Object(); - m = new Vector(); - f = new ArrayList(); - a0(); - i = f.size(); - c(); - } - - private static void a0() { - e = new int[]{ - -33, - -55, - -25, - -8, - -43, - -25, - -1, - 1, - -1, - 1, - -24, - 8, - -34, - -36, - -21, - -1, - 1, - -36, - -18, - -33, - -35, - -22, - -38, - -25, - -30, - -38, - -6, - 25, - -13, - -32, - 25, - -28, - 6, - 33, - 24, - 21, - 18, - -3, - -24, - -6, - 3, - 13, - -8, - 22, - -13, - 6, - 34, - 43, - 25, - 36, - 8, - -7, - 33, - 36, - 30, - 35, - 55, - 13, - 7, - 28, - 38, - 32, - 24, - 38 - }; - f.add(new BufferBuilder(-7649176990319478997L)); - f.add(new BufferBuilder(6021278898969724677L)); - f.add(new BufferBuilder(7115027366131081075L)); - f.add(new BufferBuilder(-7651428517436295381L)); - f.add(new BufferBuilder(6062377975152644802L)); - f.add(new BufferBuilder(2243170933948983133L)); - f.add(new BufferBuilder(-4094356763992397963L)); - f.add(new BufferBuilder(-1107148554846165954L)); - f.add(new BufferBuilder(-1286430344283762525L)); - f.add(new BufferBuilder(-1831038926418664309L)); - f.add(new BufferBuilder(-6354719162614405529L)); - f.add(new BufferBuilder(-8506449974601101173L)); - f.add(new BufferBuilder(8633968285251542579L)); - f.add(new BufferBuilder(-6249007606196702135L)); - f.add(new BufferBuilder(-7188844375264876873L)); - f.add(new BufferBuilder(-4345092557189540506L)); - f.add(new BufferBuilder(-2632335675495490175L)); - f.add(new BufferBuilder(-1243545347136972287L)); - f.add(new BufferBuilder(-3523611573846561655L)); - f.add(new BufferBuilder(6935692940177033288L)); - f.add(new BufferBuilder(-4858100291223264181L)); - f.add(new BufferBuilder(-2450504512435145929L)); - f.add(new BufferBuilder(713245897628964038L)); - f.add(new BufferBuilder(-470162520600120837L)); - f.add(new BufferBuilder(-7261871967915938009L)); - f.add(new BufferBuilder(9112052544143724587L)); - f.add(new BufferBuilder(-741517486873938593L)); - f.add(new BufferBuilder(8274905796648157430L)); - f.add(new BufferBuilder(8182818563061477568L)); - f.add(new BufferBuilder(683098719807329197L)); - f.add(new BufferBuilder(-1931611121395223946L)); - f.add(new BufferBuilder(-2936086504366924589L)); - f.add(new BufferBuilder(8508012099847734425L)); - f.add(new BufferBuilder(-3051339683445750871L)); - f.add(new BufferBuilder(7823862609310475825L)); - f.add(new BufferBuilder(-630333041359874273L)); - f.add(new BufferBuilder(-4294871533233534140L)); - f.add(new BufferBuilder(1665642233147838456L)); - f.add(new BufferBuilder(-914499574569628890L)); - f.add(new BufferBuilder(-8587818986200196448L)); - f.add(new BufferBuilder(802182560945210048L)); - f.add(new BufferBuilder(8117652667534771398L)); - f.add(new BufferBuilder(5102926607849366974L)); - f.add(new BufferBuilder(-4642530281704379163L)); - f.add(new BufferBuilder(-2314903740319445028L)); - f.add(new BufferBuilder(-8196762515845565991L)); - f.add(new BufferBuilder(488425702816181875L)); - f.add(new BufferBuilder(-7744709769461338676L)); - f.add(new BufferBuilder(-1384914714294381625L)); - f.add(new BufferBuilder(6376193074664079881L)); - f.add(new BufferBuilder(7655649855320857536L)); - f.add(new BufferBuilder(-6040061248367809216L)); - f.add(new BufferBuilder(-8070919431904585849L)); - f.add(new BufferBuilder(-4917252096074680760L)); - f.add(new BufferBuilder(-3778892574057899659L)); - f.add(new BufferBuilder(3156297505560575669L)); - f.add(new BufferBuilder(-481657315393033657L)); - f.add(new BufferBuilder(-5834579944880358322L)); - f.add(new BufferBuilder(-6733363871950849573L)); - f.add(new BufferBuilder(1900324777150013938L)); - f.add(new BufferBuilder(-98767447440803693L)); - f.add(new BufferBuilder(4984646333241370078L)); - f.add(new BufferBuilder(1386049793193599528L)); - f.add(new BufferBuilder(6546454295836122586L)); - e = (int[])e.clone(); - f.add(new BufferBuilder(598505703703054076L)); - f.add(new BufferBuilder(-6788878158731728931L)); - f.add(new BufferBuilder(-7615399728562849056L)); - f.add(new BufferBuilder(5412278113605174787L)); - f.add(new BufferBuilder(3876012969123456412L)); - f.add(new BufferBuilder(2556530039102354286L)); - f.add(new BufferBuilder(7114219646074815386L)); - f.add(new BufferBuilder(1319545010852995849L)); - f.add(new BufferBuilder(-3181654918938933361L)); - f.add(new BufferBuilder(-8040568353090958328L)); - f.add(new BufferBuilder(436836193471832771L)); - f.add(new BufferBuilder(1801225361431303141L)); - f.add(new BufferBuilder(-8527082700926010378L)); - f.add(new BufferBuilder(7105411707124131576L)); - f.add(new BufferBuilder(-2401476458321484200L)); - f.add(new BufferBuilder(4698931183202614429L)); - f.add(new BufferBuilder(939920379903731653L)); - f.add(new BufferBuilder(2850135864196478584L)); - f.add(new BufferBuilder(7950866530573663355L)); - f.add(new BufferBuilder(1624806897574438667L)); - f.add(new BufferBuilder(2984381551225378849L)); - f.add(new BufferBuilder(-6525414702637831360L)); - f.add(new BufferBuilder(7856637914043130739L)); - f.add(new BufferBuilder(-71219325941204838L)); - f.add(new BufferBuilder(-3423773354536227450L)); - f.add(new BufferBuilder(4038897098582724368L)); - f.add(new BufferBuilder(-5481139332747355726L)); - f.add(new BufferBuilder(-7268684146465480007L)); - f.add(new BufferBuilder(-424467516851135237L)); - f.add(new BufferBuilder(-6163682273045483688L)); - f.add(new BufferBuilder(-829591249395319264L)); - f.add(new BufferBuilder(-6552711216695385862L)); - f.add(new BufferBuilder(-4010836276203184759L)); - f.add(new BufferBuilder(1912939921244024221L)); - f.add(new BufferBuilder(1464061502064492756L)); - f.add(new BufferBuilder(7211103416390488433L)); - f.add(new BufferBuilder(-6812485095391364001L)); - f.add(new BufferBuilder(7516102967173829627L)); - f.add(new BufferBuilder(2253214245848895883L)); - f.add(new BufferBuilder(3501659090213013028L)); - f.add(new BufferBuilder(-4955735216145303780L)); - f.add(new BufferBuilder(4668281060420621632L)); - f.add(new BufferBuilder(4559816488748107966L)); - f.add(new BufferBuilder(-583459211740016166L)); - f.add(new BufferBuilder(-5601445603293499194L)); - f.add(new BufferBuilder(6728168624509042648L)); - f.add(new BufferBuilder(-2200880934729577809L)); - f.add(new BufferBuilder(314220719538636150L)); - f.add(new BufferBuilder(7585486904458493985L)); - f.add(new BufferBuilder(7160671427046692518L)); - f.add(new BufferBuilder(-2548128555449861275L)); - f.add(new BufferBuilder(9169620906008940582L)); - f.add(new BufferBuilder(2220623140383037870L)); - f.add(new BufferBuilder(-8255853930542279380L)); - f.add(new BufferBuilder(-9133093825005027372L)); - f.add(new BufferBuilder(-2619394491688261731L)); - f.add(new BufferBuilder(-5731627583554575565L)); - f.add(new BufferBuilder(-3104788460067762055L)); - f.add(new BufferBuilder(-8631057032720844289L)); - f.add(new BufferBuilder(-3385516179611325473L)); - f.add(new BufferBuilder(480030360162921353L)); - f.add(new BufferBuilder(6039286667926823083L)); - f.add(new BufferBuilder(8084756544564434374L)); - f.add(new BufferBuilder(7840685803402984610L)); - f.add(new BufferBuilder(6652567368545854410L)); - f.add(new BufferBuilder(3761748448922613992L)); - f.add(new BufferBuilder(-2875716036569566065L)); - f.add(new BufferBuilder(7514968061014522184L)); - f.add(new BufferBuilder(8046063563255234393L)); - f.add(new BufferBuilder(-7138091896967431311L)); - f.add(new BufferBuilder(7013345211789515738L)); - f.add(new BufferBuilder(-3419900200944686621L)); - f.add(new BufferBuilder(-1790361784662263329L)); - f.add(new BufferBuilder(-7520036821077760811L)); - f.add(new BufferBuilder(4571498940008874769L)); - f.add(new BufferBuilder(-6301920718176892225L)); - f.add(new BufferBuilder(6847852723986915512L)); - f.add(new BufferBuilder(-8871120406912112542L)); - f.add(new BufferBuilder(8704261413817878067L)); - f.add(new BufferBuilder(-3003163276626445084L)); - f.add(new BufferBuilder(-5001333279867624603L)); - f.add(new BufferBuilder(-1804155245918331457L)); - f.add(new BufferBuilder(7998271564227728631L)); - f.add(new BufferBuilder(2965203111727702834L)); - f.add(new BufferBuilder(-1429584554936332603L)); - f.add(new BufferBuilder(9120542136657028315L)); - f.add(new BufferBuilder(7314805189062818572L)); - f.add(new BufferBuilder(565362480503707533L)); - f.add(new BufferBuilder(2637788516199297132L)); - f.add(new BufferBuilder(3795287927194643303L)); - f.add(new BufferBuilder(-5081752671471368731L)); - f.add(new BufferBuilder(2100195983037871765L)); - f.add(new BufferBuilder(8914697494315747397L)); - f.add(new BufferBuilder(-8645312619684117312L)); - f.add(new BufferBuilder(-6921559395901636935L)); - f.add(new BufferBuilder(-7858487034989571839L)); - f.add(new BufferBuilder(-3473413541210276334L)); - f.add(new BufferBuilder(-8620318942608024785L)); - f.add(new BufferBuilder(-3009680880449566834L)); - f.add(new BufferBuilder(4827410162002474661L)); - f.add(new BufferBuilder(-6648596759026214636L)); - f.add(new BufferBuilder(2447686181178206431L)); - f.add(new BufferBuilder(3307052928172701441L)); - f.add(new BufferBuilder(-8449655312355517012L)); - f.add(new BufferBuilder(517118881723393964L)); - f.add(new BufferBuilder(1410799239327452363L)); - f.add(new BufferBuilder(-4919438492050825310L)); - f.add(new BufferBuilder(3840204540650184027L)); - f.add(new BufferBuilder(7209964992474337491L)); - f.add(new BufferBuilder(1036349358075585583L)); - f.add(new BufferBuilder(6790989864654878992L)); - f.add(new BufferBuilder(7013345212322192346L)); - f.add(new BufferBuilder(3895912108304790012L)); - f.add(new BufferBuilder(-4029791209564322295L)); - f.add(new BufferBuilder(5933335750904547587L)); - f.add(new BufferBuilder(-3123819758615211174L)); - f.add(new BufferBuilder(-349522063931870891L)); - f.add(new BufferBuilder(2478831087730658872L)); - f.add(new BufferBuilder(753531996277914732L)); - f.add(new BufferBuilder(5906584303072952396L)); - f.add(new BufferBuilder(4450735810476265692L)); - f.add(new BufferBuilder(3521849621924305754L)); - f.add(new BufferBuilder(-3345912550615431478L)); - f.add(new BufferBuilder(-5696675560956383113L)); - f.add(new BufferBuilder(-5803350423011154371L)); - f.add(new BufferBuilder(-1391315349120264828L)); - f.add(new BufferBuilder(6060990998616473848L)); - f.add(new BufferBuilder(-4608273948488772909L)); - f.add(new BufferBuilder(-7536452400372430142L)); - f.add(new BufferBuilder(-6613449593881108506L)); - f.add(new BufferBuilder(293304533072705787L)); - f.add(new BufferBuilder(2573834056112886171L)); - f.add(new BufferBuilder(-7490694996649590109L)); - f.add(new BufferBuilder(-7329261363439713554L)); - f.add(new BufferBuilder(107078086729902191L)); - f.add(new BufferBuilder(2335789328028052309L)); - f.add(new BufferBuilder(-282894071089477983L)); - f.add(new BufferBuilder(-7727019617399716639L)); - f.add(new BufferBuilder(-2099843059773517341L)); - f.add(new BufferBuilder(-7484670715823761952L)); - f.add(new BufferBuilder(362424616834316660L)); - f.add(new BufferBuilder(4559276986041958463L)); - f.add(new BufferBuilder(-3492797716540693541L)); - f.add(new BufferBuilder(3735841482398294446L)); - f.add(new BufferBuilder(2546247923713449332L)); - f.add(new BufferBuilder(7508822172419760337L)); - e = (int[])e.clone(); - f.add(new BufferBuilder(-4507573312931593981L)); - f.add(new BufferBuilder(4969688108754446360L)); - f.add(new BufferBuilder(-7327447264897149503L)); - f.add(new BufferBuilder(-8096040726734255061L)); - f.add(new BufferBuilder(3192865056809656223L)); - f.add(new BufferBuilder(724386031136409549L)); - f.add(new BufferBuilder(-4328348439121582172L)); - f.add(new BufferBuilder(4044404171858881298L)); - f.add(new BufferBuilder(-4562651201026727673L)); - f.add(new BufferBuilder(-412568846541351614L)); - f.add(new BufferBuilder(-8884997054237220797L)); - f.add(new BufferBuilder(-5290813164180535145L)); - f.add(new BufferBuilder(969152962983353066L)); - f.add(new BufferBuilder(-1479276402428381667L)); - f.add(new BufferBuilder(3095460421324039010L)); - f.add(new BufferBuilder(-1741233852586857765L)); - f.add(new BufferBuilder(-6449438365641848396L)); - f.add(new BufferBuilder(-6911484174626547151L)); - f.add(new BufferBuilder(-7538052100831702449L)); - f.add(new BufferBuilder(-3736586654999969262L)); - f.add(new BufferBuilder(-228127507834083523L)); - f.add(new BufferBuilder(2964522404659409421L)); - f.add(new BufferBuilder(-5401466814156212649L)); - f.add(new BufferBuilder(4531987010705171481L)); - f.add(new BufferBuilder(-8681760582742267861L)); - f.add(new BufferBuilder(-550212750669905301L)); - f.add(new BufferBuilder(8485470948937086188L)); - f.add(new BufferBuilder(392497127337159576L)); - f.add(new BufferBuilder(1220601375613365252L)); - f.add(new BufferBuilder(6813717532953358307L)); - f.add(new BufferBuilder(5904279722566813125L)); - f.add(new BufferBuilder(-3251071057764477494L)); - f.add(new BufferBuilder(6764064667525819760L)); - f.add(new BufferBuilder(-6550736302283523773L)); - f.add(new BufferBuilder(1418700438429957847L)); - f.add(new BufferBuilder(-1963393459583863107L)); - f.add(new BufferBuilder(-3819149580893653667L)); - f.add(new BufferBuilder(-566714325194679909L)); - f.add(new BufferBuilder(7163264590829405160L)); - f.add(new BufferBuilder(7189741961086549003L)); - f.add(new BufferBuilder(-726759380906604024L)); - f.add(new BufferBuilder(8651176871732178519L)); - f.add(new BufferBuilder(5591912164137918826L)); - f.add(new BufferBuilder(8962426294288102163L)); - f.add(new BufferBuilder(533259435991812287L)); - f.add(new BufferBuilder(-4889101532730600864L)); - f.add(new BufferBuilder(4654419175048418499L)); - f.add(new BufferBuilder(-7754839692875981863L)); - f.add(new BufferBuilder(-6490793937330822568L)); - f.add(new BufferBuilder(1779556679324156225L)); - f.add(new BufferBuilder(-886376610571498787L)); - f.add(new BufferBuilder(-239099577974482963L)); - f.add(new BufferBuilder(-2189039278564277722L)); - f.add(new BufferBuilder(2682756190070748239L)); - f.add(new BufferBuilder(-7528036009271097703L)); - f.add(new BufferBuilder(-2844856053560503144L)); - f.add(new BufferBuilder(4164976268298949625L)); - f.add(new BufferBuilder(4224194717724061635L)); - f.add(new BufferBuilder(-8903858860338734213L)); - f.add(new BufferBuilder(-9182452504025957095L)); - f.add(new BufferBuilder(5722204980547692226L)); - f.add(new BufferBuilder(-8415979233145353894L)); - f.add(new BufferBuilder(5632274728948935092L)); - f.add(new BufferBuilder(1701073020487537599L)); - f.add(new BufferBuilder(-3446584507993455726L)); - f.add(new BufferBuilder(-8759840797971617519L)); - f.add(new BufferBuilder(6274238678108271039L)); - f.add(new BufferBuilder(3019857854548910541L)); - f.add(new BufferBuilder(-2579755742048294136L)); - f.add(new BufferBuilder(6178400002013856079L)); - f.add(new BufferBuilder(8136924942375159791L)); - f.add(new BufferBuilder(7908235846183619198L)); - f.add(new BufferBuilder(-1421870622184207720L)); - f.add(new BufferBuilder(1129436866060775448L)); - f.add(new BufferBuilder(-7174273600719475041L)); - f.add(new BufferBuilder(6365430048010859300L)); - f.add(new BufferBuilder(4335967243742614086L)); - f.add(new BufferBuilder(7178116539055578143L)); - f.add(new BufferBuilder(-3876667482938256636L)); - f.add(new BufferBuilder(1762237054424866060L)); - f.add(new BufferBuilder(5168951482988790105L)); - f.add(new BufferBuilder(3534917506846842045L)); - f.add(new BufferBuilder(-5210238126239421448L)); - f.add(new BufferBuilder(-376715362765793929L)); - f.add(new BufferBuilder(-8205928572130504419L)); - f.add(new BufferBuilder(-1701579417749604138L)); - f.add(new BufferBuilder(-490584826277096727L)); - f.add(new BufferBuilder(-5483618421257560661L)); - f.add(new BufferBuilder(-155714947325897395L)); - f.add(new BufferBuilder(447825010347655123L)); - f.add(new BufferBuilder(7785860798578226872L)); - f.add(new BufferBuilder(-6858601882960796241L)); - f.add(new BufferBuilder(-8434789379110081313L)); - f.add(new BufferBuilder(3250345891831838315L)); - f.add(new BufferBuilder(-2243473517525509944L)); - f.add(new BufferBuilder(238483228380432187L)); - f.add(new BufferBuilder(7598384277512142590L)); - f.add(new BufferBuilder(7972894426536829483L)); - f.add(new BufferBuilder(-8577407054518260091L)); - f.add(new BufferBuilder(-8509938871972282608L)); - f.add(new BufferBuilder(8208526115894662137L)); - f.add(new BufferBuilder(-9080651589604252519L)); - f.add(new BufferBuilder(5762029147522677143L)); - f.add(new BufferBuilder(-7206761513318781507L)); - f.add(new BufferBuilder(149021489830997631L)); - f.add(new BufferBuilder(4221060753902180172L)); - f.add(new BufferBuilder(346917538632320944L)); - f.add(new BufferBuilder(2900533090829468808L)); - f.add(new BufferBuilder(1351562871504462918L)); - f.add(new BufferBuilder(3003253653435103343L)); - f.add(new BufferBuilder(-2802318660257690500L)); - f.add(new BufferBuilder(-8140978134261112558L)); - f.add(new BufferBuilder(-9000428116156804155L)); - f.add(new BufferBuilder(-7766926974756299131L)); - f.add(new BufferBuilder(-3666394438566047388L)); - f.add(new BufferBuilder(-1925754878210956931L)); - f.add(new BufferBuilder(-4731318957191578091L)); - f.add(new BufferBuilder(-5640193736764572020L)); - f.add(new BufferBuilder(5012151065066929557L)); - f.add(new BufferBuilder(-6772790365730791238L)); - f.add(new BufferBuilder(-1877919425177077902L)); - f.add(new BufferBuilder(6838707680855638647L)); - f.add(new BufferBuilder(3707218867313986359L)); - f.add(new BufferBuilder(5334697164688405229L)); - f.add(new BufferBuilder(2209768819642973280L)); - f.add(new BufferBuilder(1747691013822565278L)); - f.add(new BufferBuilder(3707218867276237623L)); - f.add(new BufferBuilder(14853951359637924L)); - f.add(new BufferBuilder(5500920932239751725L)); - f.add(new BufferBuilder(3584996334702698606L)); - f.add(new BufferBuilder(1293401758081391198L)); - f.add(new BufferBuilder(-2618821376564613293L)); - f.add(new BufferBuilder(4946019319576176285L)); - f.add(new BufferBuilder(-2565718076225246616L)); - f.add(new BufferBuilder(-5823445943452878704L)); - f.add(new BufferBuilder(-1843343212271465827L)); - f.add(new BufferBuilder(-5571243344248681403L)); - f.add(new BufferBuilder(-3426042744963093114L)); - f.add(new BufferBuilder(-3227678706738354621L)); - f.add(new BufferBuilder(4127432454445875651L)); - f.add(new BufferBuilder(-7257574875923685255L)); - f.add(new BufferBuilder(9184072969325197538L)); - f.add(new BufferBuilder(-7487014796638551434L)); - f.add(new BufferBuilder(2852604758792850905L)); - f.add(new BufferBuilder(1628345351610981302L)); - f.add(new BufferBuilder(-7858840903612052111L)); - f.add(new BufferBuilder(3152497757318344037L)); - f.add(new BufferBuilder(5640637659136476993L)); - f.add(new BufferBuilder(8024918156175388807L)); - f.add(new BufferBuilder(902279764272780834L)); - f.add(new BufferBuilder(4162368278033845103L)); - e = (int[])e.clone(); - f.add(new BufferBuilder(9035885924355795442L)); - f.add(new BufferBuilder(-2383892320639031841L)); - f.add(new BufferBuilder(-7968927618843480297L)); - f.add(new BufferBuilder(1819601608400353300L)); - f.add(new BufferBuilder(7109669670800431397L)); - f.add(new BufferBuilder(5475312939540424170L)); - f.add(new BufferBuilder(-4977187420753839346L)); - f.add(new BufferBuilder(-807121908856456310L)); - f.add(new BufferBuilder(1100529213284449858L)); - f.add(new BufferBuilder(8619457328723057101L)); - f.add(new BufferBuilder(854120386567158670L)); - f.add(new BufferBuilder(8802137452414066739L)); - f.add(new BufferBuilder(-5481366347102839383L)); - f.add(new BufferBuilder(7847371306412183404L)); - f.add(new BufferBuilder(741913688461880527L)); - f.add(new BufferBuilder(-7757153689159361350L)); - f.add(new BufferBuilder(-6892605942376367479L)); - f.add(new BufferBuilder(7995361466660913872L)); - f.add(new BufferBuilder(6649665343611064195L)); - f.add(new BufferBuilder(-7876275862232681429L)); - f.add(new BufferBuilder(-2561124447871992606L)); - f.add(new BufferBuilder(5986368074398878947L)); - f.add(new BufferBuilder(8846186829863880020L)); - f.add(new BufferBuilder(7669519456527987048L)); - f.add(new BufferBuilder(-5798699426951820081L)); - f.add(new BufferBuilder(-547765375561617929L)); - f.add(new BufferBuilder(-3734352445229039086L)); - f.add(new BufferBuilder(4148504748129536577L)); - f.add(new BufferBuilder(-4953796719980899236L)); - f.add(new BufferBuilder(-7034128960803392775L)); - f.add(new BufferBuilder(1863630688749393656L)); - f.add(new BufferBuilder(-7784651855807078391L)); - f.add(new BufferBuilder(-7485561786949184877L)); - f.add(new BufferBuilder(7912092214529251083L)); - f.add(new BufferBuilder(-9175052361318473424L)); - f.add(new BufferBuilder(5033335044920531374L)); - f.add(new BufferBuilder(145428828407112855L)); - f.add(new BufferBuilder(706459091942160412L)); - f.add(new BufferBuilder(6101851233520824852L)); - f.add(new BufferBuilder(7818286517929283394L)); - f.add(new BufferBuilder(-2031543907312097190L)); - f.add(new BufferBuilder(-8519949837384812223L)); - f.add(new BufferBuilder(-6741447927674274290L)); - f.add(new BufferBuilder(-1008823245031301532L)); - f.add(new BufferBuilder(147964057019424140L)); - f.add(new BufferBuilder(-6662652089804892848L)); - f.add(new BufferBuilder(7885223008856918985L)); - f.add(new BufferBuilder(-7694260132411185701L)); - f.add(new BufferBuilder(-1829830024333489653L)); - f.add(new BufferBuilder(6802132255692503247L)); - f.add(new BufferBuilder(-6403308769558910047L)); - f.add(new BufferBuilder(-8228962538177585033L)); - f.add(new BufferBuilder(8275181439206457694L)); - f.add(new BufferBuilder(4974389503511956982L)); - f.add(new BufferBuilder(9166104389268944944L)); - f.add(new BufferBuilder(-8230377356994822848L)); - f.add(new BufferBuilder(544128274098877330L)); - f.add(new BufferBuilder(4925135953141930003L)); - f.add(new BufferBuilder(-1132776994769930150L)); - f.add(new BufferBuilder(3560607613155094804L)); - f.add(new BufferBuilder(6259024284252470999L)); - f.add(new BufferBuilder(2310030550478356473L)); - f.add(new BufferBuilder(5769554425761096831L)); - f.add(new BufferBuilder(3840182987297821556L)); - f.add(new BufferBuilder(6052274730067885821L)); - f.add(new BufferBuilder(4360619511364215196L)); - f.add(new BufferBuilder(552732582140815384L)); - f.add(new BufferBuilder(7469209389182829210L)); - f.add(new BufferBuilder(3223174063826680129L)); - f.add(new BufferBuilder(-9058735539716290016L)); - f.add(new BufferBuilder(4432820030474291616L)); - f.add(new BufferBuilder(5295910778554173854L)); - f.add(new BufferBuilder(-2029076850390525924L)); - f.add(new BufferBuilder(-1614626581330337385L)); - f.add(new BufferBuilder(8396678466604906004L)); - f.add(new BufferBuilder(510785927279739985L)); - f.add(new BufferBuilder(1824007638767086727L)); - f.add(new BufferBuilder(1612105165281563045L)); - f.add(new BufferBuilder(7490253072091146579L)); - f.add(new BufferBuilder(-3963602946598801208L)); - f.add(new BufferBuilder(-3236490049851622210L)); - f.add(new BufferBuilder(-3457667714076108306L)); - f.add(new BufferBuilder(7154472939818439907L)); - f.add(new BufferBuilder(-3285046754612840325L)); - f.add(new BufferBuilder(-1958129843801226489L)); - f.add(new BufferBuilder(-2440894942280872083L)); - f.add(new BufferBuilder(6717516198193632873L)); - f.add(new BufferBuilder(-3671788272970387124L)); - f.add(new BufferBuilder(-4724946842410074629L)); - f.add(new BufferBuilder(-8126390047296113604L)); - f.add(new BufferBuilder(-8642214516611679845L)); - f.add(new BufferBuilder(-687342861358744318L)); - f.add(new BufferBuilder(2112303941230088962L)); - f.add(new BufferBuilder(-3955396209230230514L)); - f.add(new BufferBuilder(51672895699272424L)); - f.add(new BufferBuilder(8198065535924326222L)); - f.add(new BufferBuilder(2268214940211254591L)); - f.add(new BufferBuilder(-3302476877391067853L)); - f.add(new BufferBuilder(-390890878898933521L)); - f.add(new BufferBuilder(-5823247906111658340L)); - f.add(new BufferBuilder(7677069175059439791L)); - f.add(new BufferBuilder(-743379054980606337L)); - f.add(new BufferBuilder(2714782591602420950L)); - f.add(new BufferBuilder(3162505932962500600L)); - f.add(new BufferBuilder(67020481479601040L)); - f.add(new BufferBuilder(1508705572514919840L)); - f.add(new BufferBuilder(6809845283582499616L)); - f.add(new BufferBuilder(-4673100068722590363L)); - f.add(new BufferBuilder(-4845198820828080079L)); - f.add(new BufferBuilder(6698231729282425649L)); - f.add(new BufferBuilder(2416159116879224374L)); - f.add(new BufferBuilder(1197337001695656654L)); - f.add(new BufferBuilder(-6311080791365363670L)); - f.add(new BufferBuilder(-400144637383126864L)); - f.add(new BufferBuilder(-9210186395272016963L)); - f.add(new BufferBuilder(8344751206387992903L)); - f.add(new BufferBuilder(3902936370882686556L)); - f.add(new BufferBuilder(5382945887048254474L)); - f.add(new BufferBuilder(4999909663385772064L)); - f.add(new BufferBuilder(-511057243617691169L)); - f.add(new BufferBuilder(2749242909607077890L)); - f.add(new BufferBuilder(-1415087044807206189L)); - f.add(new BufferBuilder(2135504652165291765L)); - f.add(new BufferBuilder(697363811122641924L)); - f.add(new BufferBuilder(2257982372647910656L)); - f.add(new BufferBuilder(-3709075209219025935L)); - f.add(new BufferBuilder(5322646016101479201L)); - f.add(new BufferBuilder(274127640865488684L)); - f.add(new BufferBuilder(-4077796808440698927L)); - f.add(new BufferBuilder(-5081946843548307785L)); - f.add(new BufferBuilder(-4325439648359611519L)); - f.add(new BufferBuilder(-4526624045412905775L)); - f.add(new BufferBuilder(5578796072761222230L)); - f.add(new BufferBuilder(-2051157482484143167L)); - f.add(new BufferBuilder(-2609734439402827141L)); - f.add(new BufferBuilder(2837216223228577452L)); - f.add(new BufferBuilder(5180226259353583937L)); - f.add(new BufferBuilder(-8992894653239729604L)); - f.add(new BufferBuilder(-1455606636788764008L)); - f.add(new BufferBuilder(-1284143922600941688L)); - f.add(new BufferBuilder(868978258659498271L)); - f.add(new BufferBuilder(-6215175181676027251L)); - f.add(new BufferBuilder(-2509648422241305684L)); - f.add(new BufferBuilder(-1821244077372800426L)); - f.add(new BufferBuilder(3718575180984075362L)); - f.add(new BufferBuilder(6845583331949437112L)); - f.add(new BufferBuilder(-5042750171742278578L)); - f.add(new BufferBuilder(-8585425014297291472L)); - f.add(new BufferBuilder(-8655874187941514161L)); - f.add(new BufferBuilder(6346110152718083926L)); - f.add(new BufferBuilder(5153715718038374590L)); - f.add(new BufferBuilder(4774123094208051593L)); - f.add(new BufferBuilder(2834541042014381412L)); - f.add(new BufferBuilder(-3582181015230097655L)); - f.add(new BufferBuilder(-1019396610755716008L)); - f.add(new BufferBuilder(-5846814379084437544L)); - f.add(new BufferBuilder(-1010277375771873799L)); - f.add(new BufferBuilder(2269795881230703218L)); - f.add(new BufferBuilder(-7062056896997212705L)); - f.add(new BufferBuilder(-1679697373161939447L)); - f.add(new BufferBuilder(-2245725042427733816L)); - f.add(new BufferBuilder(-5796899720068075298L)); - f.add(new BufferBuilder(-760475274441803744L)); - f.add(new BufferBuilder(1009521602034960175L)); - f.add(new BufferBuilder(-6919916631721824128L)); - f.add(new BufferBuilder(8714001708050828496L)); - f.add(new BufferBuilder(-6234963159224780552L)); - f.add(new BufferBuilder(-8708291627771801059L)); - f.add(new BufferBuilder(-2387869161932670525L)); - f.add(new BufferBuilder(-6649885403994102489L)); - f.add(new BufferBuilder(-6003267671257199589L)); - e = (int[])e.clone(); - f.add(new BufferBuilder(-7440526568183905889L)); - f.add(new BufferBuilder(6156758668110287452L)); - f.add(new BufferBuilder(-2180869133918455012L)); - f.add(new BufferBuilder(-4897876226090702751L)); - f.add(new BufferBuilder(-6203943409593918500L)); - f.add(new BufferBuilder(-7956029911936723963L)); - f.add(new BufferBuilder(-4894248378385632503L)); - f.add(new BufferBuilder(-5035664644857577919L)); - f.add(new BufferBuilder(-316275458786100225L)); - f.add(new BufferBuilder(7247428582350608130L)); - f.add(new BufferBuilder(-6876090141930314800L)); - f.add(new BufferBuilder(1382098645648098426L)); - f.add(new BufferBuilder(-5517584460492084528L)); - f.add(new BufferBuilder(4209862795273782085L)); - f.add(new BufferBuilder(1148486162738993508L)); - f.add(new BufferBuilder(2537911749232126327L)); - f.add(new BufferBuilder(679489308090067613L)); - f.add(new BufferBuilder(5447176630578314611L)); - f.add(new BufferBuilder(3181049237446743148L)); - f.add(new BufferBuilder(-8688476427300017079L)); - f.add(new BufferBuilder(-5298271687525067686L)); - f.add(new BufferBuilder(4270056678766172429L)); - f.add(new BufferBuilder(2945008548930711460L)); - f.add(new BufferBuilder(7911230163538260109L)); - f.add(new BufferBuilder(-2599258955774664346L)); - f.add(new BufferBuilder(-5394707107938652861L)); - f.add(new BufferBuilder(-2428099541409323017L)); - f.add(new BufferBuilder(-6720260663785708036L)); - f.add(new BufferBuilder(6937663518819585567L)); - f.add(new BufferBuilder(3898066813745748459L)); - f.add(new BufferBuilder(-3837544784039908015L)); - f.add(new BufferBuilder(7831599176526910745L)); - f.add(new BufferBuilder(5897909866754633760L)); - f.add(new BufferBuilder(2812739633753263226L)); - f.add(new BufferBuilder(-4259278317348770596L)); - f.add(new BufferBuilder(4316306091048109095L)); - f.add(new BufferBuilder(-6542169212731619922L)); - f.add(new BufferBuilder(3870792203987504056L)); - f.add(new BufferBuilder(-5644960290693587352L)); - f.add(new BufferBuilder(1495819553149533510L)); - f.add(new BufferBuilder(-1676049854900666518L)); - f.add(new BufferBuilder(5026770972139786519L)); - f.add(new BufferBuilder(-4432860700731047657L)); - f.add(new BufferBuilder(-404452542131410348L)); - f.add(new BufferBuilder(6167850145663711516L)); - f.add(new BufferBuilder(-7161259033177445761L)); - f.add(new BufferBuilder(-7935331784882986385L)); - f.add(new BufferBuilder(6650308208397998438L)); - f.add(new BufferBuilder(-3880908349645617801L)); - f.add(new BufferBuilder(-8050948936463234364L)); - f.add(new BufferBuilder(576550016234137024L)); - f.add(new BufferBuilder(-2142488216229812598L)); - f.add(new BufferBuilder(8803635047380366296L)); - f.add(new BufferBuilder(-7442963949812401493L)); - f.add(new BufferBuilder(-6221256135674372324L)); - f.add(new BufferBuilder(1987074826707156729L)); - f.add(new BufferBuilder(1262692516382253483L)); - f.add(new BufferBuilder(1256630894800980638L)); - f.add(new BufferBuilder(-5244262098849063481L)); - f.add(new BufferBuilder(1889117797242472467L)); - f.add(new BufferBuilder(3828015087508153307L)); - f.add(new BufferBuilder(7567945637854714064L)); - f.add(new BufferBuilder(-3233151798691820529L)); - f.add(new BufferBuilder(3596735949522644038L)); - f.add(new BufferBuilder(-1966143512881344948L)); - f.add(new BufferBuilder(5072240701308363185L)); - f.add(new BufferBuilder(1011453269306704631L)); - f.add(new BufferBuilder(-9106465775666771632L)); - f.add(new BufferBuilder(3777172214928757932L)); - f.add(new BufferBuilder(2975749223989780795L)); - f.add(new BufferBuilder(3865455161114591693L)); - f.add(new BufferBuilder(-2476618753328617637L)); - f.add(new BufferBuilder(-5506836053213281519L)); - f.add(new BufferBuilder(4957881590102746311L)); - f.add(new BufferBuilder(-5387352714388643840L)); - f.add(new BufferBuilder(-4880542776371311388L)); - f.add(new BufferBuilder(3556698929397729278L)); - f.add(new BufferBuilder(1379588467864332037L)); - f.add(new BufferBuilder(-8286519606776733339L)); - f.add(new BufferBuilder(-7597059744730779482L)); - f.add(new BufferBuilder(-4171703978307540362L)); - f.add(new BufferBuilder(-8503296912472232814L)); - f.add(new BufferBuilder(-1836000162419816933L)); - f.add(new BufferBuilder(-8459800239775838177L)); - f.add(new BufferBuilder(68237791024391869L)); - f.add(new BufferBuilder(-1594673341560067631L)); - f.add(new BufferBuilder(-1586157104595294501L)); - f.add(new BufferBuilder(996447186451924476L)); - f.add(new BufferBuilder(-4044667892809757484L)); - e = (int[])e.clone(); - f.add(new BufferBuilder(7194611807492143477L)); - f.add(new BufferBuilder(-4352393048069519588L)); - f.add(new BufferBuilder(3906805856339614210L)); - f.add(new BufferBuilder(5042661540534080612L)); - f.add(new BufferBuilder(260368455315165630L)); - f.add(new BufferBuilder(7400637213508074159L)); - f.add(new BufferBuilder(8281333240160128986L)); - f.add(new BufferBuilder(2480365330496235741L)); - f.add(new BufferBuilder(-511056966059623971L)); - f.add(new BufferBuilder(-4313960534301964935L)); - f.add(new BufferBuilder(5918507970513861399L)); - f.add(new BufferBuilder(-7700478525502827930L)); - f.add(new BufferBuilder(-4905263155643456743L)); - f.add(new BufferBuilder(-4634131963090861169L)); - f.add(new BufferBuilder(7487598097565324318L)); - f.add(new BufferBuilder(-160771419540465096L)); - f.add(new BufferBuilder(-2588026457577557069L)); - f.add(new BufferBuilder(5152696234099833531L)); - f.add(new BufferBuilder(-3215688213030996125L)); - f.add(new BufferBuilder(7833138498952916627L)); - f.add(new BufferBuilder(-7211227333287858577L)); - f.add(new BufferBuilder(-8437616579748087040L)); - f.add(new BufferBuilder(-6366014460863168035L)); - f.add(new BufferBuilder(-7414008550681395440L)); - f.add(new BufferBuilder(-3105147124278922083L)); - f.add(new BufferBuilder(-8034488008081184114L)); - f.add(new BufferBuilder(6414056424210632766L)); - f.add(new BufferBuilder(236241547618744006L)); - f.add(new BufferBuilder(-6324463900945014517L)); - f.add(new BufferBuilder(7393944907926405664L)); - f.add(new BufferBuilder(1096199277483231935L)); - f.add(new BufferBuilder(-5250178245348591369L)); - f.add(new BufferBuilder(-6032329200928558043L)); - f.add(new BufferBuilder(3798297198429766254L)); - f.add(new BufferBuilder(2939788152909114367L)); - f.add(new BufferBuilder(3335773287657439048L)); - f.add(new BufferBuilder(-7268416394473303142L)); - f.add(new BufferBuilder(7396375367881182017L)); - f.add(new BufferBuilder(-6650287388764453287L)); - f.add(new BufferBuilder(-698928160411988668L)); - f.add(new BufferBuilder(-2580182530330002117L)); - f.add(new BufferBuilder(2574829008595077523L)); - f.add(new BufferBuilder(2277037531626032968L)); - f.add(new BufferBuilder(97174581517551533L)); - f.add(new BufferBuilder(-522268387495371998L)); - f.add(new BufferBuilder(8132937484404317113L)); - f.add(new BufferBuilder(-2432486304166371790L)); - f.add(new BufferBuilder(4077027749470964641L)); - f.add(new BufferBuilder(-8546536924051911923L)); - f.add(new BufferBuilder(3548708528391679548L)); - f.add(new BufferBuilder(8199031872002032713L)); - f.add(new BufferBuilder(-9035984241698882776L)); - f.add(new BufferBuilder(8008878767808386559L)); - f.add(new BufferBuilder(2133604434935026528L)); - f.add(new BufferBuilder(6020794306108167782L)); - f.add(new BufferBuilder(-1369418506439763782L)); - f.add(new BufferBuilder(-3795071103210604255L)); - f.add(new BufferBuilder(-7489123775042719052L)); - f.add(new BufferBuilder(-2913421222176884288L)); - f.add(new BufferBuilder(1186517764039389177L)); - f.add(new BufferBuilder(-5143342074004177217L)); - f.add(new BufferBuilder(-665959220152718065L)); - f.add(new BufferBuilder(6533592956801420154L)); - f.add(new BufferBuilder(1671200554272959843L)); - f.add(new BufferBuilder(-8632649837157512931L)); - f.add(new BufferBuilder(-7721067306330703562L)); - f.add(new BufferBuilder(-4444849123756221879L)); - f.add(new BufferBuilder(-5482134716169106735L)); - f.add(new BufferBuilder(-4941681585582219511L)); - f.add(new BufferBuilder(-3121554493212692642L)); - f.add(new BufferBuilder(-7633694913667279977L)); - f.add(new BufferBuilder(2978566078011787624L)); - f.add(new BufferBuilder(-4156110841717767763L)); - f.add(new BufferBuilder(-4986900496118599635L)); - f.add(new BufferBuilder(2333555117716056917L)); - f.add(new BufferBuilder(-8198501786811748618L)); - f.add(new BufferBuilder(-7517525642441491462L)); - f.add(new BufferBuilder(-7408585420761217213L)); - f.add(new BufferBuilder(-6665066358654180103L)); - f.add(new BufferBuilder(6330722968131740176L)); - f.add(new BufferBuilder(-1059806530309099883L)); - f.add(new BufferBuilder(-3750474676767440882L)); - f.add(new BufferBuilder(3365372585042491392L)); - f.add(new BufferBuilder(-5660756737929676716L)); - f.add(new BufferBuilder(-8549262200946064635L)); - f.add(new BufferBuilder(-7269661545783398932L)); - f.add(new BufferBuilder(-733020014666880481L)); - f.add(new BufferBuilder(491166540543540322L)); - f.add(new BufferBuilder(-7979609498273952106L)); - f.add(new BufferBuilder(-4058214869452769295L)); - f.add(new BufferBuilder(6041096742414723469L)); - f.add(new BufferBuilder(8885428953281285970L)); - f.add(new BufferBuilder(-8330022530239753654L)); - f.add(new BufferBuilder(1158348072175901835L)); - f.add(new BufferBuilder(8908141079845941244L)); - f.add(new BufferBuilder(3376831176586142397L)); - f.add(new BufferBuilder(5810831267685733851L)); - f.add(new BufferBuilder(-6838693081607167987L)); - f.add(new BufferBuilder(-9016515759500685353L)); - f.add(new BufferBuilder(-6414939439895580597L)); - e = (int[])e.clone(); - f.add(new BufferBuilder(7712788214418993318L)); - f.add(new BufferBuilder(7695466496764279985L)); - f.add(new BufferBuilder(-7714353975616493005L)); - f.add(new BufferBuilder(-4489093845492857878L)); - f.add(new BufferBuilder(7371936273344859364L)); - f.add(new BufferBuilder(-1275720082921138482L)); - f.add(new BufferBuilder(7205850615503784474L)); - f.add(new BufferBuilder(-8695489996825025194L)); - f.add(new BufferBuilder(-2699136083910985977L)); - f.add(new BufferBuilder(7517470908442235209L)); - f.add(new BufferBuilder(528299576118159307L)); - f.add(new BufferBuilder(3904920259224149390L)); - f.add(new BufferBuilder(1596277818611700562L)); - f.add(new BufferBuilder(993337473434171345L)); - f.add(new BufferBuilder(-347822687323467049L)); - f.add(new BufferBuilder(8495130231125778379L)); - f.add(new BufferBuilder(-1624794849513101516L)); - f.add(new BufferBuilder(-1406911749201454344L)); - f.add(new BufferBuilder(6369741211469356398L)); - f.add(new BufferBuilder(8797472250477284093L)); - f.add(new BufferBuilder(-3946286476244711619L)); - f.add(new BufferBuilder(2296979928492808976L)); - f.add(new BufferBuilder(-1882153090704318253L)); - f.add(new BufferBuilder(4581136110266874596L)); - f.add(new BufferBuilder(8964330307289485741L)); - f.add(new BufferBuilder(-3013368468762667339L)); - f.add(new BufferBuilder(7917634157973433430L)); - f.add(new BufferBuilder(-339396814779504544L)); - f.add(new BufferBuilder(-6289771260813322396L)); - f.add(new BufferBuilder(5140750397409107881L)); - f.add(new BufferBuilder(-3569350557602230405L)); - f.add(new BufferBuilder(3589057271848037803L)); - f.add(new BufferBuilder(2480195133585928898L)); - f.add(new BufferBuilder(-8563404018675753072L)); - f.add(new BufferBuilder(1501621240813736459L)); - f.add(new BufferBuilder(8322358959384581471L)); - f.add(new BufferBuilder(-653027339065365112L)); - f.add(new BufferBuilder(-203049341709825718L)); - f.add(new BufferBuilder(1640587613390039050L)); - f.add(new BufferBuilder(-4530501174930534868L)); - f.add(new BufferBuilder(3186914366195451143L)); - f.add(new BufferBuilder(-495667689800903707L)); - f.add(new BufferBuilder(-3412607594115736718L)); - f.add(new BufferBuilder(3941910061354199523L)); - f.add(new BufferBuilder(7266353397777843178L)); - f.add(new BufferBuilder(5299115493849569322L)); - f.add(new BufferBuilder(-5284298558306306876L)); - f.add(new BufferBuilder(-3659932271796936772L)); - f.add(new BufferBuilder(6363527853669208252L)); - f.add(new BufferBuilder(6223300590167008608L)); - f.add(new BufferBuilder(-1864308400053814804L)); - f.add(new BufferBuilder(5020203188742886829L)); - f.add(new BufferBuilder(-7656958068870220240L)); - f.add(new BufferBuilder(-6158169085610555379L)); - f.add(new BufferBuilder(3692083573231337056L)); - f.add(new BufferBuilder(-3393312413326356140L)); - f.add(new BufferBuilder(-3278959195806944513L)); - f.add(new BufferBuilder(-6741460312569373039L)); - f.add(new BufferBuilder(347202854676663823L)); - f.add(new BufferBuilder(9147550993149053471L)); - f.add(new BufferBuilder(-2956119407498607380L)); - f.add(new BufferBuilder(820711975769859052L)); - f.add(new BufferBuilder(-4169280023403398061L)); - f.add(new BufferBuilder(-1664372214857417168L)); - f.add(new BufferBuilder(-590704556100656662L)); - f.add(new BufferBuilder(-4986950013872162698L)); - f.add(new BufferBuilder(2789778908193713454L)); - f.add(new BufferBuilder(6793043414595196157L)); - f.add(new BufferBuilder(-1037076853726009203L)); - f.add(new BufferBuilder(5852035236592156208L)); - f.add(new BufferBuilder(-6200970324026265889L)); - f.add(new BufferBuilder(9207262951156712642L)); - f.add(new BufferBuilder(-4632257845710430727L)); - f.add(new BufferBuilder(-1949141042671654070L)); - f.add(new BufferBuilder(1712458643542428529L)); - f.add(new BufferBuilder(-469217054423708197L)); - f.add(new BufferBuilder(-8339253408185516058L)); - f.add(new BufferBuilder(-9097062387585685666L)); - f.add(new BufferBuilder(-5898815773687287774L)); - f.add(new BufferBuilder(3018262258718932077L)); - f.add(new BufferBuilder(-3266638052767450498L)); - f.add(new BufferBuilder(9197071657903865415L)); - f.add(new BufferBuilder(-8626593925640026839L)); - f.add(new BufferBuilder(3636384374962437865L)); - f.add(new BufferBuilder(3598533075560352841L)); - f.add(new BufferBuilder(598464885550297277L)); - f.add(new BufferBuilder(-9021356661347896217L)); - f.add(new BufferBuilder(2696907247995016989L)); - f.add(new BufferBuilder(-6682714967232296324L)); - f.add(new BufferBuilder(9096347890628772427L)); - f.add(new BufferBuilder(-1090276406924284300L)); - f.add(new BufferBuilder(2738830194971780341L)); - f.add(new BufferBuilder(9173474092542983781L)); - f.add(new BufferBuilder(3980057531705299575L)); - f.add(new BufferBuilder(9076395743205490895L)); - f.add(new BufferBuilder(6665385205431997546L)); - f.add(new BufferBuilder(5978409233283138729L)); - f.add(new BufferBuilder(-6572364943168987259L)); - f.add(new BufferBuilder(-2700636807329387364L)); - f.add(new BufferBuilder(314376251440174350L)); - f.add(new BufferBuilder(2178485714412297087L)); - f.add(new BufferBuilder(-4678629540761556242L)); - f.add(new BufferBuilder(2813768477697956669L)); - f.add(new BufferBuilder(6473100734578730815L)); - f.add(new BufferBuilder(5132789364398787043L)); - f.add(new BufferBuilder(7568509416046274923L)); - f.add(new BufferBuilder(2987557685089745228L)); - f.add(new BufferBuilder(-7898730875441670778L)); - f.add(new BufferBuilder(-6327015860235129863L)); - f.add(new BufferBuilder(-3061600056543297309L)); - f.add(new BufferBuilder(-7885594535860153749L)); - f.add(new BufferBuilder(-5088726872925575201L)); - f.add(new BufferBuilder(-279557395697052887L)); - f.add(new BufferBuilder(-5059569935258661798L)); - f.add(new BufferBuilder(5144175481554119360L)); - f.add(new BufferBuilder(5145137001628849827L)); - f.add(new BufferBuilder(4459048807940030528L)); - f.add(new BufferBuilder(5572761078225506389L)); - f.add(new BufferBuilder(6946343296763491301L)); - f.add(new BufferBuilder(-8247950924415051668L)); - f.add(new BufferBuilder(-6892178977169308984L)); - f.add(new BufferBuilder(2860908877147668580L)); - f.add(new BufferBuilder(8389875924984551131L)); - f.add(new BufferBuilder(-7837477156994051789L)); - f.add(new BufferBuilder(5979250714775373091L)); - f.add(new BufferBuilder(-8575118083221853905L)); - f.add(new BufferBuilder(5065170967328814853L)); - f.add(new BufferBuilder(6034304712688596381L)); - f.add(new BufferBuilder(-8262456589652832291L)); - f.add(new BufferBuilder(4057760127383493089L)); - f.add(new BufferBuilder(-6536483149914686195L)); - f.add(new BufferBuilder(-7057226478305285580L)); - f.add(new BufferBuilder(-2276648798847236774L)); - f.add(new BufferBuilder(-7088309748852975981L)); - f.add(new BufferBuilder(6764246248527996567L)); - f.add(new BufferBuilder(-4767895482633794629L)); - f.add(new BufferBuilder(7639477256377047313L)); - f.add(new BufferBuilder(3254641459175126542L)); - f.add(new BufferBuilder(-5892809626544927852L)); - f.add(new BufferBuilder(-8451974756748527164L)); - f.add(new BufferBuilder(-7207548773927264842L)); - f.add(new BufferBuilder(6251354815369572362L)); - f.add(new BufferBuilder(-1741097637663778349L)); - f.add(new BufferBuilder(-1455699196600976679L)); - f.add(new BufferBuilder(3962492123447708411L)); - f.add(new BufferBuilder(-8343235660590081785L)); - f.add(new BufferBuilder(4854501433774555060L)); - f.add(new BufferBuilder(-1006775160805184546L)); - f.add(new BufferBuilder(8768356302166058583L)); - f.add(new BufferBuilder(-5670894312275186800L)); - f.add(new BufferBuilder(-957387463701784230L)); - f.add(new BufferBuilder(6795793872424428392L)); - f.add(new BufferBuilder(6680277039348179569L)); - f.add(new BufferBuilder(-3405180155750486128L)); - f.add(new BufferBuilder(3057723924304428272L)); - f.add(new BufferBuilder(8083942167017750512L)); - f.add(new BufferBuilder(-2737940618383116000L)); - f.add(new BufferBuilder(7045502413935400764L)); - f.add(new BufferBuilder(-6434528628234510374L)); - f.add(new BufferBuilder(-862295425977616044L)); - f.add(new BufferBuilder(1395771803559074046L)); - f.add(new BufferBuilder(-2730866161202372565L)); - f.add(new BufferBuilder(-7722642209356324973L)); - f.add(new BufferBuilder(2332215265890837285L)); - f.add(new BufferBuilder(-4253656950882455563L)); - f.add(new BufferBuilder(-7728192884731362617L)); - f.add(new BufferBuilder(3093059450706615432L)); - f.add(new BufferBuilder(-5735993243944070834L)); - f.add(new BufferBuilder(-6266069353599292116L)); - f.add(new BufferBuilder(-673340647682499633L)); - f.add(new BufferBuilder(7872798747974524270L)); - f.add(new BufferBuilder(8493520739996341774L)); - f.add(new BufferBuilder(5857253770843153373L)); - f.add(new BufferBuilder(-4765643959845499973L)); - f.add(new BufferBuilder(-6232708946981591178L)); - f.add(new BufferBuilder(3065826825390304272L)); - f.add(new BufferBuilder(1441037477329781369L)); - f.add(new BufferBuilder(4152762753096482725L)); - f.add(new BufferBuilder(-3897932891261772417L)); - f.add(new BufferBuilder(4939836025532366917L)); - f.add(new BufferBuilder(-8564937325964315121L)); - f.add(new BufferBuilder(189426204863350150L)); - f.add(new BufferBuilder(-2397670309091051061L)); - f.add(new BufferBuilder(3740872170489287438L)); - f.add(new BufferBuilder(3174528580908881835L)); - f.add(new BufferBuilder(-8472966096842777521L)); - f.add(new BufferBuilder(522332441238110122L)); - f.add(new BufferBuilder(-3570260265733238616L)); - f.add(new BufferBuilder(4343834606291111473L)); - f.add(new BufferBuilder(-6301920720324375875L)); - f.add(new BufferBuilder(-2002697860815070621L)); - f.add(new BufferBuilder(4039098239795458170L)); - f.add(new BufferBuilder(9088215209415693907L)); - f.add(new BufferBuilder(5383599228868490261L)); - f.add(new BufferBuilder(-4543056355689603646L)); - f.add(new BufferBuilder(803650443156070349L)); - f.add(new BufferBuilder(7933809019983005343L)); - f.add(new BufferBuilder(-3185550684862070952L)); - f.add(new BufferBuilder(8184939181750474030L)); - f.add(new BufferBuilder(-4229285685234962125L)); - f.add(new BufferBuilder(6925288150231779723L)); - f.add(new BufferBuilder(-594259770676744733L)); - f.add(new BufferBuilder(4805933878746116602L)); - f.add(new BufferBuilder(-1990415304951264198L)); - f.add(new BufferBuilder(-1300573969819467403L)); - f.add(new BufferBuilder(-5656272849585499630L)); - f.add(new BufferBuilder(2788663697590890289L)); - f.add(new BufferBuilder(872124729684145294L)); - f.add(new BufferBuilder(2782830030895018713L)); - f.add(new BufferBuilder(-5444779487771833916L)); - f.add(new BufferBuilder(-2292928071932837069L)); - f.add(new BufferBuilder(1690547361515928732L)); - e = (int[])e.clone(); - f.add(new BufferBuilder(4719169037526681117L)); - f.add(new BufferBuilder(-3256019495843030798L)); - f.add(new BufferBuilder(8370848702113378162L)); - f.add(new BufferBuilder(-3182816304933364074L)); - f.add(new BufferBuilder(-5536066397984171097L)); - f.add(new BufferBuilder(-4606541427073572774L)); - f.add(new BufferBuilder(-8531820942907454968L)); - f.add(new BufferBuilder(-2842302799697713057L)); - f.add(new BufferBuilder(5398531189571838586L)); - f.add(new BufferBuilder(-3360471561423308034L)); - f.add(new BufferBuilder(-1211326480497262408L)); - f.add(new BufferBuilder(-9177304161132158670L)); - f.add(new BufferBuilder(8536165228647253209L)); - f.add(new BufferBuilder(301667013962286619L)); - f.add(new BufferBuilder(3918335916533838169L)); - f.add(new BufferBuilder(-7264640875275267614L)); - f.add(new BufferBuilder(5326659848824823264L)); - f.add(new BufferBuilder(6272455313033724816L)); - f.add(new BufferBuilder(-2007142943078168786L)); - f.add(new BufferBuilder(-1762342400393967688L)); - f.add(new BufferBuilder(8204882385165282039L)); - f.add(new BufferBuilder(-3970639071513930466L)); - f.add(new BufferBuilder(-5909824587242363575L)); - f.add(new BufferBuilder(-7301531263734886490L)); - f.add(new BufferBuilder(2774258194185512091L)); - f.add(new BufferBuilder(-2316092914535840579L)); - f.add(new BufferBuilder(-8062975401052903667L)); - f.add(new BufferBuilder(1513688553973688576L)); - f.add(new BufferBuilder(-8048619942367478027L)); - f.add(new BufferBuilder(-8700452580139984744L)); - f.add(new BufferBuilder(4541323920961645235L)); - f.add(new BufferBuilder(5622477093704612171L)); - f.add(new BufferBuilder(-7529354852373567802L)); - f.add(new BufferBuilder(8692938983714204675L)); - f.add(new BufferBuilder(4320334541173692160L)); - f.add(new BufferBuilder(2165381819523911310L)); - f.add(new BufferBuilder(-5401466539777427883L)); - f.add(new BufferBuilder(-1457066280182390271L)); - f.add(new BufferBuilder(-6593225478385424258L)); - f.add(new BufferBuilder(3887757676308222485L)); - f.add(new BufferBuilder(4390247573865702185L)); - f.add(new BufferBuilder(-975531344639310538L)); - f.add(new BufferBuilder(-5322463644179199402L)); - f.add(new BufferBuilder(3304713002920425823L)); - f.add(new BufferBuilder(-5003170204534129545L)); - f.add(new BufferBuilder(-4737265935219864611L)); - f.add(new BufferBuilder(8167176918928909958L)); - f.add(new BufferBuilder(2091366035898471110L)); - f.add(new BufferBuilder(6028870184522288756L)); - f.add(new BufferBuilder(-8390803182440983692L)); - f.add(new BufferBuilder(-2194049687281186033L)); - f.add(new BufferBuilder(3764295413774586699L)); - f.add(new BufferBuilder(5090602499112393082L)); - f.add(new BufferBuilder(6204958381496205473L)); - f.add(new BufferBuilder(-483999320727586844L)); - f.add(new BufferBuilder(-4737901003089343178L)); - f.add(new BufferBuilder(-3819216775427432528L)); - f.add(new BufferBuilder(2603914573530791753L)); - f.add(new BufferBuilder(-4080449522620730798L)); - f.add(new BufferBuilder(7187986564409110307L)); - f.add(new BufferBuilder(1248207096013739096L)); - f.add(new BufferBuilder(1482935395900690164L)); - f.add(new BufferBuilder(-732250285299444104L)); - f.add(new BufferBuilder(-2777808176305580448L)); - f.add(new BufferBuilder(5685134678571647473L)); - f.add(new BufferBuilder(-4803955333969873251L)); - f.add(new BufferBuilder(-7218702004224467918L)); - f.add(new BufferBuilder(-408781639139341256L)); - f.add(new BufferBuilder(7423838660430720611L)); - f.add(new BufferBuilder(3186265442379620626L)); - f.add(new BufferBuilder(880982727147841540L)); - f.add(new BufferBuilder(-6652910649204114037L)); - f.add(new BufferBuilder(6421594837778346626L)); - f.add(new BufferBuilder(8734627079830095654L)); - f.add(new BufferBuilder(3401042475438664071L)); - f.add(new BufferBuilder(8686164524294400372L)); - f.add(new BufferBuilder(-7994008184575590198L)); - f.add(new BufferBuilder(1003726280887846557L)); - f.add(new BufferBuilder(-6633172495155185735L)); - f.add(new BufferBuilder(-4903634081229890392L)); - e = (int[])e.clone(); - f.add(new BufferBuilder(3810666062847284202L)); - f.add(new BufferBuilder(8193238053266081953L)); - f.add(new BufferBuilder(-910473303158080063L)); - f.add(new BufferBuilder(1510710320105582464L)); - f.add(new BufferBuilder(6119547849153084244L)); - f.add(new BufferBuilder(-9097080254616082596L)); - f.add(new BufferBuilder(2453309364982278915L)); - f.add(new BufferBuilder(1428864716851425489L)); - f.add(new BufferBuilder(834886697050471438L)); - f.add(new BufferBuilder(5628184341340421779L)); - f.add(new BufferBuilder(-225450230864496206L)); - f.add(new BufferBuilder(-5092323542095960086L)); - f.add(new BufferBuilder(-7258634621414054121L)); - f.add(new BufferBuilder(138488544827293748L)); - f.add(new BufferBuilder(7787387533426278490L)); - f.add(new BufferBuilder(2362544755208080360L)); - f.add(new BufferBuilder(-7651428790166718677L)); - f.add(new BufferBuilder(4706401009199834738L)); - f.add(new BufferBuilder(-8159027205701861011L)); - f.add(new BufferBuilder(4187024226679156932L)); - f.add(new BufferBuilder(-2251397477680174408L)); - f.add(new BufferBuilder(-1875109863369901574L)); - f.add(new BufferBuilder(3742504564061056353L)); - f.add(new BufferBuilder(5207670545388548668L)); - f.add(new BufferBuilder(-3543142568600086601L)); - f.add(new BufferBuilder(-5319778845379539590L)); - f.add(new BufferBuilder(-4327583043142017551L)); - f.add(new BufferBuilder(-6269875470200604504L)); - f.add(new BufferBuilder(2132491892759151713L)); - f.add(new BufferBuilder(-2190017132284774107L)); - f.add(new BufferBuilder(-2153235570788781483L)); - f.add(new BufferBuilder(1110451489463170035L)); - f.add(new BufferBuilder(-4863505189110815173L)); - f.add(new BufferBuilder(-4871499107408356459L)); - f.add(new BufferBuilder(-6751554858271831534L)); - f.add(new BufferBuilder(-8484665350853740103L)); - f.add(new BufferBuilder(1213466536913401524L)); - f.add(new BufferBuilder(9164678511328683350L)); - f.add(new BufferBuilder(-2294658575955335643L)); - f.add(new BufferBuilder(2983413820997007181L)); - f.add(new BufferBuilder(516269715986144493L)); - f.add(new BufferBuilder(1002902454721271606L)); - f.add(new BufferBuilder(-4756108639326659202L)); - f.add(new BufferBuilder(-1457344272118854601L)); - f.add(new BufferBuilder(-5855041488619967095L)); - f.add(new BufferBuilder(3788774842963954925L)); - f.add(new BufferBuilder(-4584006087905589620L)); - f.add(new BufferBuilder(8895608808092109166L)); - f.add(new BufferBuilder(-4520331482439903158L)); - f.add(new BufferBuilder(2915055581362826283L)); - f.add(new BufferBuilder(6124617638305744335L)); - f.add(new BufferBuilder(-5866354177327619872L)); - f.add(new BufferBuilder(-7119209777805569301L)); - f.add(new BufferBuilder(5524368387715549261L)); - f.add(new BufferBuilder(-3414880855938529228L)); - f.add(new BufferBuilder(-667829738203557157L)); - f.add(new BufferBuilder(8975470373520983923L)); - f.add(new BufferBuilder(-5294499619751781768L)); - f.add(new BufferBuilder(-4748445344093794681L)); - f.add(new BufferBuilder(3599351568937820734L)); - f.add(new BufferBuilder(4396325482560539220L)); - e = new int[]{ - -6, - -60, - -31, - -21, - -14, - -36, - 6, - -13, - -47, - -3, - -17, - -45, - 3, - -4, - -15, - -4, - -7, - 4, - 14, - 4, - 13, - -24, - -30, - 7, - 21, - -29, - -14, - 17, - -16, - 15, - -12, - -1, - 1, - 31, - -14, - -2, - -10, - 2, - -9, - -21, - 14, - 36, - 12, - -16, - 16, - 24, - 10, - 9, - 14, - -4, - -12, - -12, - 30, - 4, - 29, - 47, - 45, - -1, - 1, - 16, - 21, - 60, - 12, - 12 - }; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/BufferSource.java b/src/main/java/dev/zprestige/prestige/render/BufferSource.java new file mode 100644 index 0000000..050abf8 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/BufferSource.java @@ -0,0 +1,80 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.DrawModeBuffers; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.data.MeshInfo; +import it.unimi.dsi.fastutil.Pair; +import java.util.LinkedHashSet; +import java.util.Set; +import java.util.WeakHashMap; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Stream; +import org.lwjgl.opengl.ARBVertexArrayObject; + +public class BufferSource { + private final WeakHashMap buffersByMode = new WeakHashMap(); + private final Set pendingModes = new LinkedHashSet(); + public static final boolean ASSERTIONS_DISABLED = !BufferSource.class.desiredAssertionStatus(); + private static final String MISSING_BUILDER_MESSAGE = "empty buffer but we have a record of it being requested. huh?"; + private static final long INDEX_SIZE_BYTES = 4L; + + public MappedMeshBuilder getBuffer(DrawPipeline drawMode) { + return this.getBuffer(drawMode, 128, 128); + } + + public MappedMeshBuilder getBuffer(DrawPipeline drawMode, int vertexCapacity, int indexCapacity) { + this.pendingModes.add(drawMode); + DrawModeBuffers bufferData = (DrawModeBuffers)this.buffersByMode.get(drawMode); + if (bufferData != null) { + if (bufferData.activeBuilder().get() != null) { + return (MappedMeshBuilder)bufferData.activeBuilder().get(); + } else { + MappedMeshBuilder builder = new MappedMeshBuilder(drawMode.vertexFormat, bufferData.vertexBuffer(), bufferData.indexBuffer()); + bufferData.activeBuilder().set(builder); + return builder; + } + } else { + GlBuffer vertexBuffer = (GlBuffer)RenderCore.callOnRenderThread((java.util.function.Supplier)GlBuffer::create); + GlBuffer indexBuffer = (GlBuffer)RenderCore.callOnRenderThread((java.util.function.Supplier)GlBuffer::create); + vertexBuffer.allocate(35048, (long)vertexCapacity * drawMode.vertexFormat.stride); + indexBuffer.allocate(35048, indexCapacity * INDEX_SIZE_BYTES); + MappedMeshBuilder newBuilder = new MappedMeshBuilder(drawMode.vertexFormat, vertexBuffer, indexBuffer); + VertexArray vertexArray = VertexArray.forBuffer(vertexBuffer, drawMode.vertexFormat); + this.buffersByMode.put(drawMode, new DrawModeBuffers(vertexBuffer, indexBuffer, vertexArray, new AtomicReference<>(newBuilder))); + return newBuilder; + } + } + + private void draw(CameraMatrices context, DrawPipeline drawMode) { + DrawModeBuffers bufferData = (DrawModeBuffers)this.buffersByMode.get(drawMode); + if (!ASSERTIONS_DISABLED && bufferData == null) { + throw new AssertionError(); + } else { + MappedMeshBuilder builder = (MappedMeshBuilder)bufferData.activeBuilder().get(); + if (!ASSERTIONS_DISABLED && builder == null) { + throw new AssertionError(MISSING_BUILDER_MESSAGE); + } else { + int indexCount = builder.getIndexCount(); + int vertexCount = builder.getVertexCount(); + builder.close(); + bufferData.activeBuilder().set(null); + ARBVertexArrayObject.glBindVertexArray(bufferData.vertexArray().getGlId()); + drawMode.draw(context, bufferData.vertexArray(), bufferData.indexBuffer(), new MeshInfo(drawMode.vertexFormat, vertexCount, indexCount)); + ARBVertexArrayObject.glBindVertexArray(0); + } + } + } + + public void flush(CameraMatrices context) { + for (DrawPipeline drawMode : (Iterable)(this.pendingModes)) { + this.draw(context, drawMode); + } + + this.pendingModes.clear(); + this.buffersByMode.size(); + } + + public Stream streamActiveBuffers() { + return this.pendingModes.stream().map(drawMode -> Pair.of(((dev.zprestige.prestige.render.DrawPipeline)drawMode), (MappedMeshBuilder)((DrawModeBuffers)this.buffersByMode.get(((dev.zprestige.prestige.render.DrawPipeline)drawMode))).activeBuilder().get())); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/CallbackDrawCommand.java b/src/main/java/dev/zprestige/prestige/render/CallbackDrawCommand.java new file mode 100644 index 0000000..d24cf27 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/CallbackDrawCommand.java @@ -0,0 +1,30 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.DrawBatchKey; +import dev.zprestige.prestige.world.MeshBuilder; +import java.util.function.BiConsumer; +import org.joml.Vector4f; + +public final class CallbackDrawCommand implements DrawCommand { + private final BiConsumer vertexEmitter; + private final DrawBatchKey batchKey; + + public CallbackDrawCommand(DrawPipeline pipeline, Vector4f scissor, BiConsumer emitter) { + this.vertexEmitter = emitter; + this.batchKey = new DrawBatchKey(scissor, pipeline); + } + + public CallbackDrawCommand(DrawPipeline pipeline, BiConsumer emitter) { + this(pipeline, null, emitter); + } + + @Override + public void emitVertices(MeshBuilder builder, float depth) { + this.vertexEmitter.accept(depth, builder); + } + + @Override + public DrawBatchKey getBatchKey() { + return this.batchKey; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/ChamsOutlineShader.java b/src/main/java/dev/zprestige/prestige/render/ChamsOutlineShader.java index ebcd416..c3f4593 100644 --- a/src/main/java/dev/zprestige/prestige/render/ChamsOutlineShader.java +++ b/src/main/java/dev/zprestige/prestige/render/ChamsOutlineShader.java @@ -1,155 +1,61 @@ package dev.zprestige.prestige.render; -import dev.zprestige.prestige.data.IntData; +import dev.zprestige.prestige.data.ProgramUniforms; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Consumer; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL13; public class ChamsOutlineShader extends PostShader { - private final Color a; + private final Color color; - public ChamsOutlineShader(long var1) { - super("shaders/post.vert", "shaders/chams_outline.frag", (14248148781822L)); - var1 = 0L; - var1 = 57478881253633L ^ var1; - long var3 = var1 ^ 62344664470527L; - this.a = Color.WHITE; + public ChamsOutlineShader() { + super("shaders/post.vert", "shaders/chams_outline.frag"); + this.color = Color.WHITE; } @Override - public TextRenderer b(Object[] var1) { - RenderHelper8 var2 = (RenderHelper8)var1[0]; - int var3 = (Integer)var1[1]; - long var4 = (Long)var1[2]; - long var6 = var4 ^ 122531800221372L; - return var2.a( - new Object[]{ - this.j + public MappedMeshBuilder getPipelineBuffer(BufferSource buffers, int textureId) { + return buffers.getBuffer( + (DrawPipeline)(this.pipelineCache .computeIfAbsent( - var3, - lpL131_0 -> { - VertexFormat var10002 = VertexAttribute.c; - Uniform[] var10005 = new Uniform[]{ - Uniform.a_IntSupplierData(new Object[]{this.g.a}), Uniform.a_ShaderData(new Object[]{RenderHelper22.b}), null, null, null, null + textureId, + cacheKey -> { + VertexLayout format = VertexLayouts.POSITION_COLOR_UV; + RenderStateElement[] states = new RenderStateElement[]{ + RenderStateElement.target(this.maskFramebuffer.glId), RenderStateElement.shader(CoreShaders.POS_COLOR_TEX), null, null, null, null }; - Object[] var10012 = new Object[]{null, null, true}; - var10012[1] = false; - var10012[0] = 2884; - var10005[2] = Uniform.b_IntBoolData2(var10012); - Object[] var10011 = new Object[]{null, true}; - var10011[0] = true; - var10005[3] = Uniform.a_BoolData2(var10011); - var10011 = new Object[]{null, 515}; - var10011[0] = 519; - var10005[4] = Uniform.a_IntData2(var10011); - var10005[5] = Uniform.a_Uniform(new Object[]{(Consumer)lpL132_0 -> { + states[2] = RenderStateElement.capability(2884, false, true); + states[3] = RenderStateElement.blend(true, true); + states[4] = RenderStateElement.depthFunc(519, 515); + states[5] = RenderStateElement.onApply((Consumer)pass -> { GL13.glActiveTexture(33984); - GL11.glBindTexture(3553, var3); - }}); - return new DrawMode(var10002, 4, true, var10005, 138006566364233L); + GL11.glBindTexture(3553, textureId); + }); + return new DrawPipeline(format, 4, true, states); } - ), - var6 - } + )) ); } @Override - public void c(Object[] var1) { - IntData var2 = (IntData)var1[0]; - var2.a("color", this.a.getRed() / 255.0F, this.a.getGreen() / 255.0F, this.a.getBlue() / 255.0F, this.a.getAlpha() / 255.0F) - .a("opacity", 0.5F) - .a("rimWidth", 2.0F); + public void setDefaultUniforms(ProgramUniforms uniforms) { + uniforms.setVec4("color", this.color.getRed() / 255.0F, this.color.getGreen() / 255.0F, this.color.getBlue() / 255.0F, this.color.getAlpha() / 255.0F) + .setFloat("opacity", 0.5F) + .setFloat("rimWidth", 2.0F); } @Override - public VertexBuffer a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 98867838856239L; - return new VertexBuffer().b(new Object[]{this.a_Shader(new Object[0]), (Consumer)lpL130_0 -> { + public FullscreenPassChain createCompositePasses() { + return new FullscreenPassChain().addDynamicPass(this.getShader(), (Consumer)pass -> { GL13.glActiveTexture(33984); - GL11.glBindTexture(3553, this.h.a); - this.e(new Object[]{30083616553634L}); - IntData.a(this.a_Shader(new Object[0]).a(new Object[0])).a("oneTexel", 1.0F / this.d, 1.0F / this.e); - }, (java.util.function.IntSupplier)RenderUtil::a, var4}); + GL11.glBindTexture(3553, this.maskTexture.glId); + this.applyUniforms(); + ProgramUniforms.of(this.getShader().getProgramId()).setVec2("oneTexel", 1.0F / this.maskWidth, 1.0F / this.maskHeight); + }, (java.util.function.IntSupplier)RenderCore::getMainFramebufferId); } static { - Shader var10000 = RenderHelper22.b; - Object[] var10005 = new Object[]{null, null, 0L}; - var10005[1] = 0; - var10005[0] = "texSampler"; - var10000.a_void_____________________________(var10005); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + CoreShaders.POS_COLOR_TEX.setUniformInt("texSampler", 0); } } diff --git a/src/main/java/dev/zprestige/prestige/render/ColorUniform.java b/src/main/java/dev/zprestige/prestige/render/ColorUniform.java deleted file mode 100644 index a732fd2..0000000 --- a/src/main/java/dev/zprestige/prestige/render/ColorUniform.java +++ /dev/null @@ -1,85 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class ColorUniform implements Uniform { - public final ColorValue a; - - public ColorUniform(ColorValue var1) { - this.a = var1; - } - - @Override - public void a(RenderPass var1) { - org.lwjgl.opengl.GL20.glUniform4f(UniformCache.g, this.a.a, this.a.b, this.a.c, this.a.d); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/ColorValue.java b/src/main/java/dev/zprestige/prestige/render/ColorValue.java deleted file mode 100644 index dc5ae59..0000000 --- a/src/main/java/dev/zprestige/prestige/render/ColorValue.java +++ /dev/null @@ -1,126 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.math.MathUtil4; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.joml.Vector4f; - -public class ColorValue { - public final float a; - public final float b; - public final float c; - public final float d; - - public ColorValue(Vector4f var1, long var2) { - super(); - var2 = 0L; - var2 = 98963274059567L ^ var2; - long var4 = var2 ^ 12796092348509L; - float var10001 = var1.x; - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - this.a = MathUtil4.a_float____________(var10004); - var10001 = var1.y; - var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - this.b = MathUtil4.a_float____________(var10004); - var10001 = var1.z; - var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - this.c = MathUtil4.a_float____________(var10004); - var10001 = var1.w; - var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - this.d = MathUtil4.a_float____________(var10004); - } - - @Override - public boolean equals(Object var1) { - if (this == var1) { - return true; - } else { - return !(var1 instanceof ColorValue var5) - ? false - : Float.compare(var5.a, this.a) == 0 - && Float.compare(var5.b, this.b) == 0 - && Float.compare(var5.c, this.c) == 0 - && Float.compare(var5.d, this.d) == 0; - } - } - - @Override - public int hashCode() { - int var3 = Float.floatToIntBits(this.a); - var3 = 31 * var3 + Float.floatToIntBits(this.b); - var3 = 31 * var3 + Float.floatToIntBits(this.c); - return 31 * var3 + Float.floatToIntBits(this.d); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/ConfigReport.java b/src/main/java/dev/zprestige/prestige/render/ConfigReport.java new file mode 100644 index 0000000..056617c --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/ConfigReport.java @@ -0,0 +1,33 @@ +package dev.zprestige.prestige.render; + +public final class ConfigReport { + public final String operation; + public int valueCount; + public int sectionCount; + public int errorCount; + public int warningCount; + + public ConfigReport(String operationName) { + this.operation = operationName; + } + + public void warn(String path, String message, Object cause) { + this.warningCount++; + } + + public void error(String path, String message, Object cause) { + this.errorCount++; + } + + public void addValues(int count) { + this.valueCount += count; + } + + public boolean hasErrors() { + return this.errorCount > 0; + } + + public String getSummary() { + return this.valueCount + "|" + this.warningCount + "|" + this.errorCount; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/ConfigureCallbackState.java b/src/main/java/dev/zprestige/prestige/render/ConfigureCallbackState.java new file mode 100644 index 0000000..93d949a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/ConfigureCallbackState.java @@ -0,0 +1,16 @@ +package dev.zprestige.prestige.render; + +import java.util.function.Consumer; + +public class ConfigureCallbackState implements RenderStateElement { + public final Consumer callback; + + public ConfigureCallbackState(Consumer onConfigure) { + this.callback = onConfigure; + } + + @Override + public void configure(GlRenderPassBuilder builder) { + this.callback.accept(builder); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/CooldownProgress.java b/src/main/java/dev/zprestige/prestige/render/CooldownProgress.java new file mode 100644 index 0000000..b41ef85 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/CooldownProgress.java @@ -0,0 +1,5 @@ +package dev.zprestige.prestige.render; + +public class CooldownProgress { + public float progress; +} diff --git a/src/main/java/dev/zprestige/prestige/render/CoreShaders.java b/src/main/java/dev/zprestige/prestige/render/CoreShaders.java new file mode 100644 index 0000000..80a562e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/CoreShaders.java @@ -0,0 +1,17 @@ +package dev.zprestige.prestige.render; + +public class CoreShaders { + public static final Shader POS_COLOR; + public static final Shader POS_COLOR_TEX; + public static final Shader ROUNDED_RECT; + public static final Shader GAUSSIAN_BLUR; + public static final Shader MSDF_TEXT; + + static { + POS_COLOR = ShaderCompiler.loadProgram("shaders/pos_col.vert", "shaders/pos_col.frag", false); + POS_COLOR_TEX = ShaderCompiler.loadProgram("shaders/pos_col_uv.vert", "shaders/pos_col_uv.frag", false); + ROUNDED_RECT = ShaderCompiler.loadProgram("shaders/rounded_pos_color.vert", "shaders/rounded_pos_color.frag", false); + GAUSSIAN_BLUR = ShaderCompiler.loadProgram("shaders/post.vert", "shaders/gaussian.frag", false); + MSDF_TEXT = ShaderCompiler.loadProgram("shaders/pos_col_uv.vert", "shaders/msdf_text.frag", false); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/CornerRadii.java b/src/main/java/dev/zprestige/prestige/render/CornerRadii.java new file mode 100644 index 0000000..6ff4061 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/CornerRadii.java @@ -0,0 +1,38 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.math.RenderCacheUtil; +import org.joml.Vector4f; + +public class CornerRadii { + public final float topRight; + public final float bottomRight; + public final float topLeft; + public final float bottomLeft; + + public CornerRadii(Vector4f radii) { + super(); + this.topRight = RenderCacheUtil.quantize(radii.x); + this.bottomRight = RenderCacheUtil.quantize(radii.y); + this.topLeft = RenderCacheUtil.quantize(radii.z); + this.bottomLeft = RenderCacheUtil.quantize(radii.w); + } + + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } else { + return !(other instanceof CornerRadii that) + ? false + : Float.compare(that.topRight, this.topRight) == 0 + && Float.compare(that.bottomRight, this.bottomRight) == 0 + && Float.compare(that.topLeft, this.topLeft) == 0 + && Float.compare(that.bottomLeft, this.bottomLeft) == 0; + } + } + + @Override + public int hashCode() { + return 31 * (31 * (31 * Float.floatToIntBits(this.topRight) + Float.floatToIntBits(this.bottomRight)) + Float.floatToIntBits(this.topLeft)) + Float.floatToIntBits(this.bottomLeft); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/CornerRadiiUniform.java b/src/main/java/dev/zprestige/prestige/render/CornerRadiiUniform.java new file mode 100644 index 0000000..a2a595f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/CornerRadiiUniform.java @@ -0,0 +1,14 @@ +package dev.zprestige.prestige.render; + +public class CornerRadiiUniform implements RenderStateElement { + public final CornerRadii radii; + + public CornerRadiiUniform(CornerRadii cornerRadii) { + this.radii = cornerRadii; + } + + @Override + public void apply(GlRenderPass pass) { + org.lwjgl.opengl.GL20.glUniform4f(DrawPipelines.ROUNDNESS_LOCATION, this.radii.topRight, this.radii.bottomRight, this.radii.topLeft, this.radii.bottomLeft); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/DamageSample.java b/src/main/java/dev/zprestige/prestige/render/DamageSample.java new file mode 100644 index 0000000..e8b067e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/DamageSample.java @@ -0,0 +1,11 @@ +package dev.zprestige.prestige.render; + +public final class DamageSample { + public long timestamp; + public float damage; + + public DamageSample(long time, float amount) { + this.timestamp = time; + this.damage = amount; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/DelayTimer.java b/src/main/java/dev/zprestige/prestige/render/DelayTimer.java new file mode 100644 index 0000000..eb17a0d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/DelayTimer.java @@ -0,0 +1,14 @@ +package dev.zprestige.prestige.render; + +public final class DelayTimer { + private long startTime = System.currentTimeMillis(); + private float delayMs; + + public DelayTimer(float delay) { + this.delayMs = delay; + } + + public boolean hasElapsed() { + return (float)(System.currentTimeMillis() - this.startTime) >= this.delayMs; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/DrawCommand.java b/src/main/java/dev/zprestige/prestige/render/DrawCommand.java new file mode 100644 index 0000000..7d275f2 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/DrawCommand.java @@ -0,0 +1,9 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.DrawBatchKey; + +public interface DrawCommand { + void emitVertices(dev.zprestige.prestige.world.MeshBuilder builder, float depth); + + DrawBatchKey getBatchKey(); +} diff --git a/src/main/java/dev/zprestige/prestige/render/DrawCommandQueue.java b/src/main/java/dev/zprestige/prestige/render/DrawCommandQueue.java new file mode 100644 index 0000000..5f6d707 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/DrawCommandQueue.java @@ -0,0 +1,101 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.QueuedDraw; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.data.DrawBatchKey; +import dev.zprestige.prestige.data.MeshInfo; +import java.util.ArrayList; +import java.util.List; +import org.joml.Vector4f; +import org.lwjgl.opengl.GL11; + +public class DrawCommandQueue { + public GlBuffer vertexBuffer; + public GlBuffer indexBuffer; + public VertexArray vertexArray; + private boolean initialized = false; + private final List commands = new ArrayList(); + public float nextDepth = 0.0F; + + private void ensureInitialized() { + if (!this.initialized) { + this.vertexBuffer = (GlBuffer)RenderCore.callOnRenderThread((java.util.function.Supplier)GlBuffer::create); + this.indexBuffer = (GlBuffer)RenderCore.callOnRenderThread((java.util.function.Supplier)GlBuffer::create); + this.vertexArray = VertexArray.create(null); + this.vertexBuffer.allocate(35048, 65536L); + this.indexBuffer.allocate(35048, 16384L); + this.initialized = true; + } + } + + public void enqueue(DrawCommand command) { + this.commands.add(new QueuedDraw(command, this.nextDepth)); + this.nextDepth = Math.nextUp(this.nextDepth); + } + + public void flush(CameraMatrices context) { + if (this.commands.isEmpty()) { + this.nextDepth = 0.0F; + } else { + this.ensureInitialized(); + int batchStart = 0; + + while (batchStart < this.commands.size()) { + DrawBatchKey key = ((QueuedDraw)this.commands.get(batchStart)).drawable().getBatchKey(); + int batchEnd = batchStart + 1; + + while (batchEnd < this.commands.size() && ((QueuedDraw)this.commands.get(batchEnd)).drawable().getBatchKey().equals(key)) { + batchEnd++; + } + + List batch = this.commands.subList(batchStart, batchEnd); + Vector4f scissor = key.scissorRect(); + if (scissor != null) { + GL11.glEnable(3089); + int framebufferHeight = RenderCore.getFramebufferHeight(); + float scale = RenderCore.getScaleFactor(); + GL11.glScissor((int)(scissor.x * scale), (int)(framebufferHeight - scissor.y * scale - scissor.w * scale), (int)(scissor.z * scale), (int)(scissor.w * scale)); + } + + DrawPipeline pipeline = key.drawMode(); + this.vertexArray + .setBindings(VertexArray.createBindings(this.vertexBuffer, pipeline.getVertexFormat())); + MappedMeshBuilder builder = new MappedMeshBuilder(pipeline.getVertexFormat(), this.vertexBuffer, this.indexBuffer); + + int indexCount; + int vertexCount; + try { + for (QueuedDraw entry : (Iterable)(batch)) { + entry.drawable().emitVertices(builder, entry.depth()); + } + + vertexCount = builder.getVertexCount(); + indexCount = builder.getIndexCount(); + } catch (Throwable failure) { + try { + builder.close(); + } catch (Throwable closeFailure) { + failure.addSuppressed(closeFailure); + } + + throw failure; + } + + builder.close(); + pipeline.draw(context, this.vertexArray, this.indexBuffer, new MeshInfo(pipeline.getVertexFormat(), vertexCount, indexCount)); + if (scissor != null) { + GL11.glDisable(3089); + } + + batchStart = batchEnd; + } + + this.clear(); + } + } + + public void clear() { + this.nextDepth = 0.0F; + this.commands.clear(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/DrawContext.java b/src/main/java/dev/zprestige/prestige/render/DrawContext.java deleted file mode 100644 index 9683af4..0000000 --- a/src/main/java/dev/zprestige/prestige/render/DrawContext.java +++ /dev/null @@ -1,122 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.OptionalDouble; -import java.util.OptionalInt; -import java.util.function.IntSupplier; - -public class DrawContext { - public IntSupplier a = () -> 0; - public OptionalInt b = OptionalInt.empty(); - public OptionalDouble c = OptionalDouble.empty(); - public Shader d; - - public DrawContext(long var1) { - } - - public DrawContext a(Object[] var1) { - int var2 = (Integer)var1[0]; - this.a = () -> var2; - return this; - } - - public DrawContext b(Object[] var1) { - IntSupplier var2 = (IntSupplier)var1[0]; - this.a = var2; - return this; - } - - public DrawContext c(Object[] var1) { - OptionalInt var2 = (OptionalInt)var1[0]; - this.b = var2; - return this; - } - - public DrawContext d(Object[] var1) { - OptionalDouble var2 = (OptionalDouble)var1[0]; - this.c = var2; - return this; - } - - public DrawContext e(Object[] var1) { - Shader var2 = (Shader)var1[0]; - this.d = var2; - return this; - } - - public RenderPass a_RenderPass(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 12708709774606L ^ var2; - long var4 = var2 ^ 123057129550079L; - return new RenderPass(this, var4); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/DrawMode.java b/src/main/java/dev/zprestige/prestige/render/DrawMode.java deleted file mode 100644 index 1507a5b..0000000 --- a/src/main/java/dev/zprestige/prestige/render/DrawMode.java +++ /dev/null @@ -1,166 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.data.VertexIntData; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashSet; - -public class DrawMode { - public VertexFormat a; - public int b; - public boolean c; - public Uniform[] d; - public static final boolean e = !DrawMode.class.desiredAssertionStatus(); - - public DrawMode(VertexFormat var1, int var2, boolean var3, Uniform[] var4, long var5) { - super(); - var5 = 0L; - var5 = 99824927598897L ^ var5; - long var7 = var5 ^ 106708735179943L; - this.a = var1; - this.b = var2; - this.c = var3; - this.d = var4; - if (!e && !a_boolean_____________________________________(new Object[]{var4, var7})) { - throw new AssertionError("duplicate states that shouldnt be duplicated!"); - } - } - - public int a(Object[] var1) { - return this.b; - } - - private static boolean a_boolean_____________________________________(Object[] var0) { - Uniform[] var1 = (Uniform[])var0[0]; - HashSet var4 = new HashSet(var1.length); - - for (Uniform var8 : var1) { - if (!var8.a_boolean() && !var4.add(var8.getClass())) { - return false; - } - } - - return true; - } - - public void a_void________________(Object[] var1) { - MatrixCameraData var6 = (MatrixCameraData)var1[0]; - RenderHelper31 var3 = (RenderHelper31)var1[1]; - GpuBuffer var7 = (GpuBuffer)var1[2]; - VertexIntData var2 = (VertexIntData)var1[3]; - long var4 = (Long)var1[4]; - var4 = 99824927598897L ^ var4; - long var8 = var4 ^ 92214760685375L; - long var10 = var4 ^ 28523593297410L; - long var12 = var4 ^ 25551188328945L; - long var14 = var4 ^ 64111063703542L; - long var16 = var4 ^ 102301186008704L; - if (!e && !var2.bf().equals(this.a)) { - throw new AssertionError("format mismatch!"); - } else { - DrawContext var19 = RenderPass.a(new Object[]{var8}); - - for (Uniform var23 : this.d) { - var23.a(var19); - } - - RenderPass var26 = var19.a_RenderPass(new Object[]{var14}); - var26.a_void__________________________(new Object[]{var12}); - var26.b(new Object[]{var6, var16}); - - for (Uniform var24 : this.d) { - var24.a(var26); - } - - int var10003 = this.b; - int var10004 = var2.bh(); - Object[] var10007 = new Object[]{null, null, null, null, var10}; - var10007[3] = var10004; - var10007[2] = var10003; - var10007[1] = var7; - var10007[0] = var3; - var26.d(var10007); - - for (Uniform var33 : this.d) { - var33.a(); - } - } - } - - public boolean b(Object[] var1) { - return this.c; - } - - public VertexFormat a_VertexFormat(Object[] var1) { - return this.a; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/DrawPipeline.java b/src/main/java/dev/zprestige/prestige/render/DrawPipeline.java new file mode 100644 index 0000000..b33a5d8 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/DrawPipeline.java @@ -0,0 +1,74 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.data.MeshInfo; +import java.util.HashSet; + +public class DrawPipeline { + public VertexLayout vertexFormat; + public int primitiveMode; + public boolean entityMask; + public RenderStateElement[] states; + public static final boolean ASSERTIONS_DISABLED = !DrawPipeline.class.desiredAssertionStatus(); + + public DrawPipeline(VertexLayout format, int mode, boolean entityMaskPass, RenderStateElement[] pipelineStates) { + super(); + this.vertexFormat = format; + this.primitiveMode = mode; + this.entityMask = entityMaskPass; + this.states = pipelineStates; + if (!ASSERTIONS_DISABLED && !hasNoDuplicateStates(pipelineStates)) { + throw new AssertionError("duplicate states that shouldnt be duplicated!"); + } + } + + public int getPrimitiveMode() { + return this.primitiveMode; + } + + private static boolean hasNoDuplicateStates(RenderStateElement[] stateArray) { + HashSet seenTypes = new HashSet(stateArray.length); + + for (RenderStateElement state : stateArray) { + if (!state.allowsDuplicates() && !seenTypes.add(state.getClass())) { + return false; + } + } + + return true; + } + + public void draw(CameraMatrices context, VertexArray vertexArray, GlBuffer indexBuffer, MeshInfo drawInfo) { + if (!ASSERTIONS_DISABLED && !drawInfo.layout().equals(this.vertexFormat)) { + throw new AssertionError("format mismatch!"); + } else { + GlRenderPassBuilder passBuilder = GlRenderPass.builder(); + + for (RenderStateElement setupState : this.states) { + setupState.configure(passBuilder); + } + + GlRenderPass pass = passBuilder.build(); + pass.begin(); + pass.uploadMatrices(context); + + for (RenderStateElement applyState : this.states) { + applyState.apply(pass); + } + + pass.drawIndexed(vertexArray, indexBuffer, this.primitiveMode, drawInfo.indexCount()); + + for (RenderStateElement cleanupState : this.states) { + cleanupState.cleanup(); + } + } + } + + public boolean isEntityMask() { + return this.entityMask; + } + + public VertexLayout getVertexFormat() { + return this.vertexFormat; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/DrawPipelines.java b/src/main/java/dev/zprestige/prestige/render/DrawPipelines.java new file mode 100644 index 0000000..808da73 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/DrawPipelines.java @@ -0,0 +1,94 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.BlendToggleState; +import dev.zprestige.prestige.data.GlCapabilityState; +import dev.zprestige.prestige.data.DepthFuncState; +import dev.zprestige.prestige.data.ShaderBindState; +import dev.zprestige.prestige.math.RenderCacheUtil; +import java.util.Map; +import org.joml.Vector4f; + +public class DrawPipelines { + public static final DrawPipeline TRIANGLES = new DrawPipeline( + VertexLayouts.POSITION_COLOR, + 4, + false, + new RenderStateElement[]{RenderStateElement.MAIN_TARGET, new ShaderBindState(CoreShaders.POS_COLOR), new GlCapabilityState(2884, false), new BlendToggleState(true, true), new DepthFuncState(515, 515)} + ); + public static final DrawPipeline TRIANGLES_NO_DEPTH = new DrawPipeline( + VertexLayouts.POSITION_COLOR, + 4, + false, + new RenderStateElement[]{ + RenderStateElement.MAIN_TARGET, + new ShaderBindState(CoreShaders.POS_COLOR), + new GlCapabilityState(2884, false), + new BlendToggleState(true, true), + new DepthFuncState(515, 515), + new GlCapabilityState(2929, false) + } + ); + public static final DrawPipeline TRIANGLES_DEPTH_TESTED = new DrawPipeline( + VertexLayouts.POSITION_COLOR, + 4, + false, + new RenderStateElement[]{ + RenderStateElement.MAIN_TARGET, + new ShaderBindState(CoreShaders.POS_COLOR), + new GlCapabilityState(2884, true), + new BlendToggleState(true, true), + new DepthFuncState(515, 515), + new GlCapabilityState(2929, true) + } + ); + public static final DrawPipeline LINES = new DrawPipeline( + VertexLayouts.POSITION_COLOR, + 1, + false, + new RenderStateElement[]{RenderStateElement.MAIN_TARGET, new ShaderBindState(CoreShaders.POS_COLOR), new GlCapabilityState(2884, true), new BlendToggleState(true, true), new DepthFuncState(515, 515)} + ); + public static final DrawPipeline LINES_NO_DEPTH = new DrawPipeline( + VertexLayouts.POSITION_COLOR, + 1, + false, + new RenderStateElement[]{ + RenderStateElement.MAIN_TARGET, + new ShaderBindState(CoreShaders.POS_COLOR), + new GlCapabilityState(2884, true), + new BlendToggleState(true, true), + new DepthFuncState(515, 515), + new GlCapabilityState(2929, false) + } + ); + private static final Map ROUNDED_RECT_CACHE; + static final int ROUNDNESS_LOCATION; + + public static DrawPipeline getRoundedRect(Vector4f radii) { + CornerRadii key = new CornerRadii(radii); + DrawPipeline drawMode = (DrawPipeline)ROUNDED_RECT_CACHE.get(key); + if (drawMode == null) { + drawMode = new DrawPipeline( + VertexLayouts.POSITION_UV_SIZE_COLOR, + 4, + false, + new RenderStateElement[]{ + RenderStateElement.MAIN_TARGET, + new ShaderBindState(CoreShaders.ROUNDED_RECT), + new GlCapabilityState(2884, true), + new BlendToggleState(true, true), + new DepthFuncState(515, 515), + new GlCapabilityState(2929, false), + new CornerRadiiUniform(key) + } + ); + ROUNDED_RECT_CACHE.put(key, drawMode); + } + + return drawMode; + } + + static { + ROUNDED_RECT_CACHE = RenderCacheUtil.newLruCache(128); + ROUNDNESS_LOCATION = CoreShaders.ROUNDED_RECT.getUniformLocation("roundness"); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/ESPHelper.java b/src/main/java/dev/zprestige/prestige/render/ESPHelper.java deleted file mode 100644 index 5c7db37..0000000 --- a/src/main/java/dev/zprestige/prestige/render/ESPHelper.java +++ /dev/null @@ -1,105 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Collections; -import java.util.Iterator; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import org.jetbrains.annotations.NotNull; - -public class ESPHelper implements Iterable { - private final Set a = ConcurrentHashMap.newKeySet(); - private final Set b = Collections.unmodifiableSet(this.a); - - public ESPHelper(Object[] var1, long var2) { - Collections.addAll(this.a, var1); - } - - public boolean a(Object[] var1) { - Object var2 = var1[0]; - return this.a.add(var2); - } - - public boolean f(Object[] var1) { - return this.a.isEmpty(); - } - - public Set a_Set_(Object[] var1) { - return this.b; - } - - @NotNull - @Override - public Iterator iterator() { - return this.b.iterator(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/ESPUtil.java b/src/main/java/dev/zprestige/prestige/render/ESPUtil.java deleted file mode 100644 index 6ea28be..0000000 --- a/src/main/java/dev/zprestige/prestige/render/ESPUtil.java +++ /dev/null @@ -1,278 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.type.ShaderMode; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Iterator; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import net.minecraft.client.render.entity.EntityRenderer; -import net.minecraft.client.render.entity.LivingEntityRenderer; -import net.minecraft.client.render.entity.model.EntityModel; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; - -public class ESPUtil implements RenderContract2 { - private static PostShader a = ShaderMode.NORMAL.a(new Object[0]); - public static final Map c = new ConcurrentHashMap(); - public static ESPHelper d = new ESPHelper(new EntityType[0], 0L); - public static boolean e = false; - public static boolean f = false; - private static final Map g = new ConcurrentHashMap(); - private static final Class h = Void.class; - - public static void a(Object[] var0) { - ShaderMode var1 = (ShaderMode)var0[0]; - if (var1 != null && var1 != ShaderMode.NONE && var1.a(new Object[0]) != null) { - a = var1.a(new Object[0]); - } - } - - public static PostShader a_PostShader(Object[] var0) { - return a; - } - - public static boolean a_boolean______________________________________(Object[] var0) { - EntityModel var3 = (EntityModel)var0[0]; - ESPHelper var4 = (ESPHelper)var0[1]; - long var1 = (Long)var0[2]; - var1 = 129352636611362L ^ var1; - long var5 = var1 ^ 36945991568267L; - long var7 = var1 ^ 26166079508179L; - Event.b(); - Class var10 = var3.getClass(); - Boolean var11 = (Boolean)c.get(var10); - if (var11 != null) { - return var11; - } else if (!var4.f(new Object[]{var7}) && b.world != null) { - Iterator var12 = var4.iterator(); - - while (true) { - Entity var14; - boolean var15; - while (true) { - if (!var12.hasNext()) { - c.put(var10, false); - return false; - } - - EntityType var13 = (EntityType)var12.next(); - if (var13 == EntityType.PLAYER) { - var14 = b.player; - var15 = false; - if (var14 == null) { - continue; - } - break; - } else { - var14 = var13.create(b.world, null); - if (var14 != null) { - var15 = true; - break; - } - } - } - - try { - EntityRenderer var16 = b.getEntityRenderDispatcher().getRenderer((Entity)var14); - Class var17 = a_Class__(new Object[]{var16, var5}); - if (var17 != null && var17 == var10) { - c.put(var10, true); - return true; - } - } finally { - if (var15) { - var14.discard(); - } - } - } - } else { - return false; - } - } - - private static Class a_Class__(Object[] var0) { - EntityRenderer var3 = (EntityRenderer)var0[0]; - Event.b(); - Class var5 = var3.getClass(); - Class var6 = (Class)g.get(var5); - if (var6 != null) { - return var6 == h ? null : var6; - } else { - Class var7 = null; - if (var3 instanceof LivingEntityRenderer var8) { - var7 = var8.getModel().getClass(); - } else { - for (Field var12 : var5.getDeclaredFields()) { - if (EntityModel.class.isAssignableFrom(var12.getType())) { - var12.setAccessible(true); - - try { - EntityModel var13 = (EntityModel)var12.get(var3); - if (var13 != null) { - var7 = var13.getClass(); - break; - } - } catch (IllegalAccessException var14) { - } - } - } - } - - g.put(var5, var7 == null ? h : var7); - return var7; - } - } - - public static boolean b(Object[] var0) { - EntityModel var1 = (EntityModel)var0[0]; - long var2 = (Long)var0[1]; - var2 = 129352636611362L ^ var2; - long var4 = var2 ^ 76965806763794L; - long var6 = var2 ^ 127172186057290L; - Event.b(); - Class var9 = var1.getClass(); - Boolean var10 = (Boolean)c.get(var9); - if (var10 != null) { - return var10; - } else if (!d.f(new Object[]{var6}) && b.world != null) { - Iterator var11 = d.iterator(); - - while (true) { - Entity var13; - boolean var14; - while (true) { - if (!var11.hasNext()) { - c.put(var9, false); - return false; - } - - EntityType var12 = (EntityType)var11.next(); - if (var12 == EntityType.PLAYER) { - var13 = b.player; - var14 = false; - if (var13 == null) { - continue; - } - break; - } else { - var13 = var12.create(b.world, null); - if (var13 != null) { - var14 = true; - break; - } - } - } - - try { - EntityRenderer var15 = b.getEntityRenderDispatcher().getRenderer((Entity)var13); - Class var16 = a_Class__(new Object[]{var15, var4}); - if (var16 != null && var16 == var9) { - c.put(var9, true); - return true; - } - } finally { - if (var14) { - var13.discard(); - } - } - } - } else { - return false; - } - } - - public static boolean c(Object[] var0) { - EntityModel var3 = (EntityModel)var0[0]; - long var1 = (Long)var0[1]; - var1 = 129352636611362L ^ var1; - long var4 = var1 ^ 127477464040019L; - return a_boolean______________________________________(new Object[]{var3, d, var4}); - } - - static { - RenderContract5.c.register((RenderContract6)(lpL4_0, lpL4_1) -> { - if (a != null && e) { - a.b_void______(new Object[]{((dev.zprestige.prestige.render.RenderHelper8)lpL4_0), ((dev.zprestige.prestige.data.MatrixCameraData)lpL4_1), 90284759324056L}); - } - }); - RenderContract5.b.register((RenderContract6)(lpL3_0, lpL3_1) -> { - if (a != null && e) { - a.a_void_______________(new Object[]{((dev.zprestige.prestige.render.RenderHelper8)lpL3_0), ((dev.zprestige.prestige.data.MatrixCameraData)lpL3_1), 93702078595239L}); - } - }); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Exception a(Exception var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/EntityTypeSet.java b/src/main/java/dev/zprestige/prestige/render/EntityTypeSet.java new file mode 100644 index 0000000..3b3f523 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/EntityTypeSet.java @@ -0,0 +1,34 @@ +package dev.zprestige.prestige.render; + +import java.util.Collections; +import java.util.Iterator; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import org.jetbrains.annotations.NotNull; + +public class EntityTypeSet implements Iterable { + private final Set elements = ConcurrentHashMap.newKeySet(); + private final Set readOnlyView = Collections.unmodifiableSet(this.elements); + + public EntityTypeSet(Object[] initialElements) { + Collections.addAll(this.elements, initialElements); + } + + public boolean add(Object element) { + return this.elements.add(element); + } + + public boolean isEmpty() { + return this.elements.isEmpty(); + } + + public Set asSet() { + return this.readOnlyView; + } + + @NotNull + @Override + public Iterator iterator() { + return this.readOnlyView.iterator(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/EspShaderManager.java b/src/main/java/dev/zprestige/prestige/render/EspShaderManager.java new file mode 100644 index 0000000..cf7f31a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/EspShaderManager.java @@ -0,0 +1,184 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.type.ShaderMode; +import java.lang.reflect.Field; +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.render.entity.EntityRenderer; +import net.minecraft.client.render.entity.LivingEntityRenderer; +import net.minecraft.client.render.entity.model.EntityModel; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; + +public class EspShaderManager implements MinecraftAccess { + private static PostShader activeShader = ShaderMode.NORMAL.getShader(); + public static final Map modelMatchCache = new ConcurrentHashMap(); + public static EntityTypeSet targetTypes = new EntityTypeSet(new EntityType[0]); + public static boolean enabled = false; + public static boolean renderInvisible = false; + private static final Map rendererModelCache = new ConcurrentHashMap(); + private static final Class MISSING_MODEL = Void.class; + + public static void setShaderMode(ShaderMode mode) { + if (mode != null && mode != ShaderMode.NONE && mode.getShader() != null) { + activeShader = mode.getShader(); + } + } + + public static PostShader getActiveShader() { + return activeShader; + } + + public static boolean isModelOfTypes(EntityModel model, EntityTypeSet types) { + Class modelClass = model.getClass(); + Boolean cached = (Boolean)modelMatchCache.get(modelClass); + if (cached != null) { + return cached; + } else if (!types.isEmpty() && mc.world != null) { + Iterator typeIterator = types.iterator(); + + while (true) { + Entity entity; + boolean discardAfter; + while (true) { + if (!typeIterator.hasNext()) { + modelMatchCache.put(modelClass, false); + return false; + } + + EntityType type = (EntityType)typeIterator.next(); + if (type == EntityType.PLAYER) { + entity = mc.player; + discardAfter = false; + if (entity == null) { + continue; + } + break; + } else { + entity = type.create(mc.world, null); + if (entity != null) { + discardAfter = true; + break; + } + } + } + + try { + EntityRenderer renderer = mc.getEntityRenderDispatcher().getRenderer(entity); + Class rendererModelClass = getRendererModelClass(renderer); + if (rendererModelClass != null && rendererModelClass == modelClass) { + modelMatchCache.put(modelClass, true); + return true; + } + } finally { + if (discardAfter) { + entity.discard(); + } + } + } + } else { + return false; + } + } + + private static Class getRendererModelClass(EntityRenderer renderer) { + Class rendererClass = renderer.getClass(); + Class cached = (Class)rendererModelCache.get(rendererClass); + if (cached != null) { + return cached == MISSING_MODEL ? null : cached; + } else { + Class modelClass = null; + if (renderer instanceof LivingEntityRenderer livingRenderer) { + modelClass = livingRenderer.getModel().getClass(); + } else { + for (Field field : rendererClass.getDeclaredFields()) { + if (EntityModel.class.isAssignableFrom(field.getType())) { + field.setAccessible(true); + + try { + EntityModel model = (EntityModel)field.get(renderer); + if (model != null) { + modelClass = model.getClass(); + break; + } + } catch (IllegalAccessException ignored) { + } + } + } + } + + rendererModelCache.put(rendererClass, modelClass == null ? MISSING_MODEL : modelClass); + return modelClass; + } + } + + public static boolean isTargetModel(EntityModel model) { + Class modelClass = model.getClass(); + Boolean cached = (Boolean)modelMatchCache.get(modelClass); + if (cached != null) { + return cached; + } else if (!targetTypes.isEmpty() && mc.world != null) { + Iterator typeIterator = targetTypes.iterator(); + + while (true) { + Entity entity; + boolean discardAfter; + while (true) { + if (!typeIterator.hasNext()) { + modelMatchCache.put(modelClass, false); + return false; + } + + EntityType type = (EntityType)typeIterator.next(); + if (type == EntityType.PLAYER) { + entity = mc.player; + discardAfter = false; + if (entity == null) { + continue; + } + break; + } else { + entity = type.create(mc.world, null); + if (entity != null) { + discardAfter = true; + break; + } + } + } + + try { + EntityRenderer renderer = mc.getEntityRenderDispatcher().getRenderer(entity); + Class rendererModelClass = getRendererModelClass(renderer); + if (rendererModelClass != null && rendererModelClass == modelClass) { + modelMatchCache.put(modelClass, true); + return true; + } + } finally { + if (discardAfter) { + entity.discard(); + } + } + } + } else { + return false; + } + } + + public static boolean matchesTargetTypes(EntityModel model) { + return isModelOfTypes(model, targetTypes); + } + + static { + RenderEvents.AFTER_HUD_RENDER.register((RenderCallback)(buffers, context) -> { + if (activeShader != null && enabled) { + activeShader.renderComposite(buffers, context); + } + }); + RenderEvents.WORLD_RENDER.register((RenderCallback)(worldBuffers, worldContext) -> { + if (activeShader != null && enabled) { + activeShader.prepareMask(worldBuffers, worldContext); + } + }); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/Font.java b/src/main/java/dev/zprestige/prestige/render/Font.java deleted file mode 100644 index 2a39e6d..0000000 --- a/src/main/java/dev/zprestige/prestige/render/Font.java +++ /dev/null @@ -1,565 +0,0 @@ -package dev.zprestige.prestige.render; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import dev.zprestige.prestige.config.ConfigHelper; -import dev.zprestige.prestige.config.ConfigHelper2; -import dev.zprestige.prestige.config.ConfigHelper3; -import dev.zprestige.prestige.data.FontFloatData; -import dev.zprestige.prestige.data.IntBoolData2; -import dev.zprestige.prestige.data.VectorData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.math.MathUtil4; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import java.awt.Color; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Function; -import net.minecraft.client.texture.NativeImage; -import org.joml.Matrix4f; -import org.lwjgl.BufferUtils; -import org.lwjgl.opengl.GL11; - -public class Font { - private static final int[][] a = new int[32][3]; - private float b; - private int c; - private int d; - private float e; - private float f; - private float g; - private final Int2ObjectOpenHashMap h; - private final Map i; - private ConfigHelper j; - private FontRenderer k; - private BiConsumer l; - private Function m; - private DrawMode n; - private VectorData o; - - public Font(String var1, long var2) throws IOException { - super(); - var2 = 0L; - var2 = 71232715412199L ^ var2; - long var4 = var2 ^ 35896062585652L; - long var6 = var2 ^ 527467001456L; - long var8 = var2 ^ 50316809022329L; - long var10 = var2 ^ 101922796707186L; - this.e = 8.0F; - Event.b(); - this.h = new Int2ObjectOpenHashMap(); - Object[] var10005 = new Object[]{null, var4}; - var10005[0] = 256; - this.i = MathUtil4.a(var10005); - this.m = lpL39_0 -> { - RenderState.a(new Object[]{35451451245727L}); - return (RenderHelper30)RenderState.a.get(); - }; - ConfigHelper3 var13 = ConfigHelper3.a(new Object[]{"assets/prestige/font/" + var1 + ".json", var6}); - ConfigHelper3 var14 = ConfigHelper3.a(new Object[]{"assets/prestige/font/" + var1 + ".png", var6}); - - try ( - InputStream var15 = var13.a_InputStream(new Object[]{var10}); - InputStream var16 = var14.a_InputStream(new Object[]{var10}); - ) { - this.a(new Object[]{new InputStreamReader(var15), var16, var8}); - } - } - - private void a(Object[] var1) throws IOException { - Reader var5 = (Reader)var1[0]; - InputStream var4 = (InputStream)var1[1]; - long var2 = (Long)var1[2]; - var2 = 71232715412199L ^ var2; - long var6 = var2 ^ 20704828053529L; - long var8 = var2 ^ 69804292923111L; - long var10 = var2 ^ 69040519261744L; - long var12 = var2 ^ 138976230971845L; - long var14 = var2 ^ 128913441663709L; - long var16 = var2 ^ 67621779615786L; - long var18 = var2 ^ 29961217953277L; - Event.b(); - JsonObject var21 = JsonParser.parseReader(var5).getAsJsonObject(); - - { - label49: { - { - if ("msdf".equals(var21.getAsJsonObject("atlas").get("type").getAsString())) { - break label49; - } - } - - throw new RuntimeException("not msdf atlas"); - } - } - - this.c = var21.getAsJsonObject("atlas").get("width").getAsInt(); - this.d = var21.getAsJsonObject("atlas").get("height").getAsInt(); - this.b = var21.getAsJsonObject("atlas").get("distanceRange").getAsFloat(); - this.j = ConfigHelper.a(new Object[]{var21.getAsJsonObject("metrics"), var8}); - this.f = 1.0F / this.c; - this.g = 1.0F / this.d; - NativeImage var22 = NativeImage.read(var4); - Object[] var10004 = new Object[]{null, var14}; - var10004[0] = 3553; - this.k = FontRenderer.a(var10004); - FontRenderer var10000 = this.k; - int var10002 = var22.getWidth(); - int var10003 = var22.getHeight(); - Object[] var10006 = new Object[]{null, null, null, var6}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = 32856; - var10000.c(var10006); - int var23 = var22.getWidth(); - int var24 = var22.getHeight(); - ByteBuffer var25 = BufferUtils.createByteBuffer(var23 * var24 * 4); - var25.order(ByteOrder.LITTLE_ENDIAN); - - for (int var26 = 0; var26 < var24; var26++) { - int var27 = 0; - - while (var27 < var23) { - int var28 = var22.getColorArgb(var27, var26); - - { - var25.putInt(var28); - var27++; - } - } - } - - var25.flip(); - GL11.glPixelStorei(3317, 1); - GL11.glPixelStorei(3314, 0); - GL11.glPixelStorei(3316, 0); - GL11.glPixelStorei(3315, 0); - var10000 = this.k; - Object[] var10010 = new Object[]{null, null, null, null, null, null, var25, var10}; - var10010[5] = 5121; - var10010[4] = 6408; - var10010[3] = var24; - var10010[2] = var23; - var10010[1] = 0; - var10010[0] = 0; - var10000.d(var10010); - GL11.glPixelStorei(3317, 4); - var10000 = this.k; - var10004 = new Object[]{null, var12}; - var10004[0] = 9729; - var10000.b_void_______(var10004); - var10000 = this.k; - var10004 = new Object[]{null, var18}; - var10004[0] = 33071; - var10000.e(var10004); - var22.close(); - - for (JsonElement var35 : var21.getAsJsonArray("glyphs")) { - JsonObject var36 = var35.getAsJsonObject(); - ConfigHelper2 var29 = ConfigHelper2.a(new Object[]{var36, var16}); - this.h.put(var29.a_int__(new Object[0]), var29); - } - } - - public void b(Object[] var1) { - BiConsumer var2 = (BiConsumer)var1[0]; - this.l = var2; - } - - public void c(Object[] var1) { - Function var2 = (Function)var1[0]; - this.m = var2; - } - - public void h(Object[] var1) { - Matrix4f var2 = (Matrix4f)var1[0]; - String var6 = (String)var1[1]; - float var9 = (Float)var1[2]; - float var7 = (Float)var1[3]; - float var8 = (Float)var1[4]; - int var5 = (Integer)var1[5]; - long var3 = (Long)var1[6]; - var3 = 71232715412199L ^ var3; - long var10 = var3 ^ 71795448265388L; - long var12 = var3 ^ 53398400318661L; - RenderHelper30 var14 = (RenderHelper30)this.m.apply(this); - VectorData var15 = this.a_VectorData(new Object[]{var10}); - Matrix4f var16 = new Matrix4f(var2); - float var17 = this.j.b(new Object[0]) * var8; - float[] var18 = new float[]{var9}; - this.x(new Object[]{var6, (RenderContract)(lpL38_0, lpL38_1) -> { - float var10002 = var18[0]; - float var10008 = var18[0]; - Object[] var10015 = new Object[]{null, null, null, null, null, null, null, null, null, 53616589733604L}; - var10015[8] = var5; - var10015[7] = var17; - var10015[6] = var8; - var10015[5] = var7; - var10015[4] = var10008; - var10015[3] = ((dev.zprestige.prestige.config.ConfigHelper2)lpL38_1); - var10015[2] = var16; - var10015[1] = var15; - var10015[0] = var14; - var18[0] = var10002 + this.g(var10015); - return true; - }, var12}); - } - - public void n(Object[] var1) { - Matrix4f var9 = (Matrix4f)var1[0]; - String var6 = (String)var1[1]; - float var3 = (Float)var1[2]; - float var8 = (Float)var1[3]; - float var7 = (Float)var1[4]; - Color var2 = (Color)var1[5]; - long var4 = (Long)var1[6]; - var4 = 71232715412199L ^ var4; - long var10 = var4 ^ 12858160589271L; - int var12 = var2.getRGB(); - int var13 = (var12 >>> 24 & 0xFF) * 140 >> 8; - int var14 = var13 << 24; - float var10003 = var3 + 0.5F; - float var10004 = var8 + 0.5F; - Object[] var10009 = new Object[]{null, null, null, null, null, null, var10}; - var10009[5] = var14; - var10009[4] = var7; - var10009[3] = var10004; - var10009[2] = var10003; - var10009[1] = var6; - var10009[0] = var9; - this.h(var10009); - var10009 = new Object[]{null, null, null, null, null, null, var10}; - var10009[5] = var12; - var10009[4] = var7; - var10009[3] = var8; - var10009[2] = var3; - var10009[1] = var6; - var10009[0] = var9; - this.h(var10009); - } - - public void v(Object[] var1) { - Matrix4f var2 = (Matrix4f)var1[0]; - String var7 = (String)var1[1]; - float var4 = (Float)var1[2]; - float var8 = (Float)var1[3]; - Color var3 = (Color)var1[4]; - long var5 = (Long)var1[5]; - var5 = 71232715412199L ^ var5; - long var9 = var5 ^ 133517182186723L; - float var10005 = this.e; - Object[] var10009 = new Object[]{null, null, null, null, null, var3, var9}; - var10009[4] = var10005; - var10009[3] = var8; - var10009[2] = var4; - var10009[1] = var7; - var10009[0] = var2; - this.n(var10009); - } - - public void w(Object[] var1) { - Matrix4f var3 = (Matrix4f)var1[0]; - String var4 = (String)var1[1]; - float var6 = (Float)var1[2]; - float var7 = (Float)var1[3]; - float var5 = (Float)var1[4]; - Color var2 = (Color)var1[5]; - long var8 = (Long)var1[6]; - var8 = 71232715412199L ^ var8; - long var10 = var8 ^ 129037059992631L; - float var10005 = this.e * var5; - Object[] var10009 = new Object[]{null, null, null, null, null, var2, var10}; - var10009[4] = var10005; - var10009[3] = var7; - var10009[2] = var6; - var10009[1] = var4; - var10009[0] = var3; - this.n(var10009); - } - - public float a_float______________(Object[] var1) { - String var4 = (String)var1[0]; - long var2 = (Long)var1[1]; - var2 = 71232715412199L ^ var2; - long var5 = var2 ^ 10224987624918L; - float var10002 = this.e; - Object[] var10005 = new Object[]{null, null, var5}; - var10005[1] = var10002; - var10005[0] = var4; - return this.b_float____________________(var10005); - } - - public float b_float____________________(Object[] var1) { - String var3 = (String)var1[0]; - float var2 = (Float)var1[1]; - long var4 = (Long)var1[2]; - var4 = 71232715412199L ^ var4; - long var6 = var4 ^ 1639154567475L; - if (var3.isEmpty()) { - return 0.0F; - } else { - Float var9 = (Float)this.i.get(var3); - float var10; - if (var9 != null) { - var10 = var9; - } else { - float[] var11 = new float[]{0.0F}; - this.x(new Object[]{var3, (RenderContract)(lpL37_0, lpL37_1) -> { - var11[0] += ((dev.zprestige.prestige.config.ConfigHelper2)lpL37_1).a_float__(new Object[0]); - return true; - }, var6}); - var10 = var11[0]; - this.i.put(var3, var10); - } - - return var2 * var10; - } - } - - public float c_float___(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 71232715412199L ^ var2; - long var4 = var2 ^ 30350796624859L; - float var10001 = this.e; - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - return this.d(var10004); - } - - public float d(Object[] var1) { - float var4 = (Float)var1[0]; - return this.j.a_float_(new Object[0]) * var4; - } - - private void x(Object[] var1) { - String var2 = (String)var1[0]; - RenderContract var5 = (RenderContract)var1[1]; - Event.b(); - int var7 = var2.length(); - int var8 = 0; - - while (var8 < var7) { - int var9 = var2.codePointAt(var8); - if (var9 == 167 && var8 + 1 < var7) { - var8 += 2; - } else { - var8 += Character.charCount(var9); - ConfigHelper2 var10 = (ConfigHelper2)this.h.get(var9); - if (var10 != null && !var5.a(var9, var10)) { - return; - } - } - } - } - - public float e(Object[] var1) { - return this.e; - } - - public void y(Object[] var1) { - float var2 = (Float)var1[0]; - this.e = var2; - } - - private float f(Object[] var1) { - RenderHelper30 var5 = (RenderHelper30)var1[0]; - VectorData var8 = (VectorData)var1[1]; - ConfigHelper2 var7 = (ConfigHelper2)var1[2]; - float var4 = (Float)var1[3]; - float var6 = (Float)var1[4]; - float var10 = (Float)var1[5]; - float var11 = (Float)var1[6]; - int var9 = (Integer)var1[7]; - long var2 = (Long)var1[8]; - var2 = 71232715412199L ^ var2; - long var12 = var2 ^ 78559501613008L; - long var14 = var2 ^ 23074457147922L; - if (var7.d(new Object[0]) - var7.b(new Object[0]) != 0.0F) { - float var17 = var4 + var7.b(new Object[0]) * var10; - float var18 = var4 + var7.d(new Object[0]) * var10; - float var19 = var6 + var11 - var7.e(new Object[0]) * var10; - float var20 = var6 + var11 - var7.c(new Object[0]) * var10; - float var21 = var7.f(new Object[0]) * this.f; - float var22 = var7.h(new Object[0]) * this.f; - float var23 = 1.0F - var7.i(new Object[0]) * this.g; - float var24 = 1.0F - var7.g(new Object[0]) * this.g; - var5.b(new Object[]{new RenderHelper6(var8, var17, var19, var18, var20, var9, var21, var23, var22, var24, null, var14), var12}); - } - - return var10 * var7.a_float__(new Object[0]); - } - - private float g(Object[] var1) { - RenderHelper30 var5 = (RenderHelper30)var1[0]; - VectorData var4 = (VectorData)var1[1]; - Matrix4f var12 = (Matrix4f)var1[2]; - ConfigHelper2 var7 = (ConfigHelper2)var1[3]; - float var9 = (Float)var1[4]; - float var6 = (Float)var1[5]; - float var3 = (Float)var1[6]; - float var2 = (Float)var1[7]; - int var8 = (Integer)var1[8]; - long var10 = (Long)var1[9]; - var10 = 71232715412199L ^ var10; - long var13 = var10 ^ 115326712177119L; - long var15 = var10 ^ 65338939788317L; - if (var7.d(new Object[0]) - var7.b(new Object[0]) != 0.0F) { - float var18 = var9 + var7.b(new Object[0]) * var3; - float var19 = var9 + var7.d(new Object[0]) * var3; - float var20 = var6 + var2 - var7.e(new Object[0]) * var3; - float var21 = var6 + var2 - var7.c(new Object[0]) * var3; - float var22 = var7.f(new Object[0]) * this.f; - float var23 = var7.h(new Object[0]) * this.f; - float var24 = 1.0F - var7.i(new Object[0]) * this.g; - float var25 = 1.0F - var7.g(new Object[0]) * this.g; - var5.b(new Object[]{new RenderHelper6(var4, var18, var20, var19, var21, var8, var22, var24, var23, var25, var12, var15), var13}); - } - - return var3 * var7.a_float__(new Object[0]); - } - - public VectorData a_VectorData(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 71232715412199L ^ var2; - long var4 = var2 ^ 118999110662734L; - if (this.o == null) { - this.o = new VectorData(null, this.a_DrawMode(new Object[]{var4})); - } - - return this.o; - } - - public DrawMode a_DrawMode(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 71232715412199L ^ var2; - long var4 = var2 ^ 74579176709528L; - if (this.n == null) { - VertexFormat var10003 = VertexAttribute.c; - Uniform[] var10006 = new Uniform[]{Uniform.a, Uniform.a_ShaderData(new Object[]{RenderHelper22.e}), null, null, null, null}; - Object[] var10013 = new Object[]{null, null, true}; - var10013[1] = false; - var10013[0] = 2884; - var10006[2] = Uniform.b_IntBoolData2(var10013); - Object[] var10012 = new Object[]{null, true}; - var10012[0] = true; - var10006[3] = Uniform.a_BoolData2(var10012); - var10006[4] = new IntBoolData2(2929, false); - var10006[5] = new FontFloatData(this.k, this.b / this.c, this.b / this.d); - this.n = new DrawMode(var10003, 4, false, var10006, var4); - if (this.l != null) { - this.l.accept(this, this.n); - } - } - - return this.n; - } - - public void a() { - if (this.k != null) { - this.k.close(); - } - } - - static { - for (int var22 = 0; var22 < 32; var22++) { - int var23 = (var22 >> 3 & 1) * 85; - int var24 = (var22 >> 2 & 1) * 170 + var23; - int var25 = (var22 >> 1 & 1) * 170 + var23; - int var26 = (var22 & 1) * 170 + var23; - if (var22 == 6) { - var24 += 85; - } - - if (var22 >= 16) { - var24 /= 4; - var25 /= 4; - var26 /= 4; - } - - a[var22][0] = var24; - a[var22][1] = var25; - a[var22][2] = var26; - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/FontManager.java b/src/main/java/dev/zprestige/prestige/render/FontManager.java index c0e5daa..d0a5249 100644 --- a/src/main/java/dev/zprestige/prestige/render/FontManager.java +++ b/src/main/java/dev/zprestige/prestige/render/FontManager.java @@ -1,111 +1,30 @@ package dev.zprestige.prestige.render; -import dev.zprestige.prestige.event.Event; import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; public class FontManager { - private static volatile FontManager a; - private final Map b = new HashMap(); - private Font c; + private final Map fonts = new HashMap(); + private MsdfFont defaultFont; - public Font a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 3528379088226L ^ var2; - long var4 = var2 ^ 6915856496627L; - Event.b(); - Font var7 = this.c; - if (var7 == null) { - var7 = this.b(new Object[]{"inter", var4}); - this.c = var7; + public MsdfFont getDefaultFont() { + MsdfFont font = this.defaultFont; + if (font == null) { + font = this.getFont("inter"); + this.defaultFont = font; } - return var7; + return font; } - public Font b(Object[] var1) { - String var4 = (String)var1[0]; - return (Font)this.b.computeIfAbsent(var4, lpL40_0 -> { + public MsdfFont getFont(String name) { + return (MsdfFont)this.fonts.computeIfAbsent(name, key -> { try { - return new Font(var4, 97080015228313L); - } catch (IOException var7) { - throw new RuntimeException("Failed to load MSDF font: " + var4, var7); + return new MsdfFont(name); + } catch (IOException exception) { + throw new RuntimeException("Failed to load MSDF font: " + name, exception); } }); } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static RuntimeException a(RuntimeException var0) { - return var0; - } } diff --git a/src/main/java/dev/zprestige/prestige/render/FontRenderer.java b/src/main/java/dev/zprestige/prestige/render/FontRenderer.java deleted file mode 100644 index 65512dc..0000000 --- a/src/main/java/dev/zprestige/prestige/render/FontRenderer.java +++ /dev/null @@ -1,269 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.ref.Cleaner.Cleanable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.nio.ByteBuffer; -import net.minecraft.client.texture.GlTexture; -import net.minecraft.util.Identifier; -import org.lwjgl.opengl.GL11; - -public class FontRenderer implements AutoCloseable { - public final int a; - private final Cleanable b; - private final int c; - private volatile boolean d = false; - private int e; - - public FontRenderer(int var1, int var2, long var3) { - this(var1, var2, true, (74681995002117L)); - var3 = 0L; - var3 = 21455033727438L ^ var3; - long var5 = var3 ^ 88438248405195L; - } - - private FontRenderer(int var1, int var2, boolean var3, long var4) { - this.c = var1; - this.a = var2; - this.b = var3 ? RenderUtil.a.register(this, () -> RenderUtil.f(new Object[]{(Runnable)() -> GL11.glDeleteTextures(var2), 31795785076293L})) : null; - } - - public static FontRenderer a(Object[] var0) { - int var1 = (Integer)var0[0]; - long var2 = (Long)var0[1]; - var2 = 21455033727438L ^ var2; - long var4 = var2 ^ 5035895914153L; - return new FontRenderer(var1, GL11.glGenTextures(), var4); - } - - public static FontRenderer b(Object[] var0) { - int var1 = (Integer)var0[0]; - int var2 = (Integer)var0[1]; - long var3 = (Long)var0[2]; - var3 = 21455033727438L ^ var3; - long var5 = var3 ^ 47619771965430L; - return new FontRenderer(var1, var2, false, var5); - } - - private int a_int____________________(Object[] var1) { - int var4 = (Integer)var1[0]; - switch (var4) { - case 3553: - return 32873; - case 32879: - return 32874; - default: - return 32873; - } - } - - private int b_int(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 21455033727438L ^ var2; - long var4 = var2 ^ 119734031557110L; - int var10001 = this.c; - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - int var6 = GL11.glGetInteger(this.a_int____________________(var10004)); - GL11.glBindTexture(this.c, this.a); - return var6; - } - - private void a_void_________________(Object[] var1) { - int var4 = (Integer)var1[0]; - GL11.glBindTexture(this.c, var4); - } - - public void b_void_______(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - var2 = 21455033727438L ^ var2; - long var5 = var2 ^ 89322139281255L; - long var7 = var2 ^ 104455106328518L; - int var9 = this.b_int(new Object[]{var7}); - GL11.glTexParameteri(this.c, 10241, var4); - GL11.glTexParameteri(this.c, 10240, var4); - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var9; - this.a_void_________________(var10004); - } - - public void c(Object[] var1) { - int var5 = (Integer)var1[0]; - int var4 = (Integer)var1[1]; - int var6 = (Integer)var1[2]; - long var2 = (Long)var1[3]; - var2 = 21455033727438L ^ var2; - long var7 = var2 ^ 67678843381435L; - long var9 = var2 ^ 56835344905754L; - if (this.d) { - throw new IllegalStateException("already inited - this is an immutable texture!"); - } else { - this.d = true; - this.e = var5; - - char var12 = switch (var5) { - case 32849 -> 'ᤇ'; - default -> 'ᤈ'; - case 33321 -> 'ᤃ'; - case 33323 -> '舧'; - }; - int var13 = this.b_int(new Object[]{var9}); - GL11.glTexImage2D(this.c, 0, var5, var4, var6, 0, var12, 5121, (ByteBuffer)null); - GL11.glTexParameteri(this.c, 33084, 0); - GL11.glTexParameteri(this.c, 33085, 0); - Object[] var10004 = new Object[]{null, var7}; - var10004[0] = var13; - this.a_void_________________(var10004); - } - } - - public void d(Object[] var1) { - int var9 = (Integer)var1[0]; - int var2 = (Integer)var1[1]; - int var10 = (Integer)var1[2]; - int var6 = (Integer)var1[3]; - int var5 = (Integer)var1[4]; - int var3 = (Integer)var1[5]; - ByteBuffer var4 = (ByteBuffer)var1[6]; - long var7 = (Long)var1[7]; - var7 = 21455033727438L ^ var7; - long var11 = var7 ^ 19326230909074L; - long var13 = var7 ^ 34836660142131L; - int var15 = this.b_int(new Object[]{var13}); - GL11.glTexSubImage2D(this.c, 0, var9, var2, var10, var6, var5, var3, var4); - Object[] var10004 = new Object[]{null, var11}; - var10004[0] = var15; - this.a_void_________________(var10004); - } - - public void e(Object[] var1) { - int var2 = (Integer)var1[0]; - long var3 = (Long)var1[1]; - var3 = 21455033727438L ^ var3; - long var5 = var3 ^ 57616470389599L; - long var7 = var3 ^ 64159674803198L; - int var9 = this.b_int(new Object[]{var7}); - GL11.glTexParameteri(this.c, 10242, var2); - GL11.glTexParameteri(this.c, 10243, var2); - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var9; - this.a_void_________________(var10004); - } - - public FontRenderer c_FontRenderer(Object[] var1) { - int var2 = (Integer)var1[0]; - int var5 = (Integer)var1[1]; - long var3 = (Long)var1[2]; - var3 = 21455033727438L ^ var3; - long var6 = var3 ^ 90286006020271L; - long var8 = var3 ^ 59335264655979L; - if (!this.d) { - throw new IllegalStateException("not inited"); - } else { - this.close(); - int var10000 = this.c; - Object[] var10003 = new Object[]{null, var8}; - var10003[0] = var10000; - FontRenderer var11 = a(var10003); - int var10001 = this.e; - Object[] var10006 = new Object[]{null, null, null, var6}; - var10006[2] = var5; - var10006[1] = var2; - var10006[0] = var10001; - var11.c(var10006); - return var11; - } - } - - @Override - public void close() { - if (this.b != null) { - this.b.clean(); - } - } - - public static FontRenderer d_FontRenderer(Object[] var0) { - Identifier var3 = (Identifier)var0[0]; - long var1 = (Long)var0[1]; - var1 = 21455033727438L ^ var1; - long var4 = var1 ^ 124713232668769L; - int var6 = ((GlTexture)RenderContract2.b.getTextureManager().getTexture(var3).getGlTexture()).getGlId(); - Object[] var10004 = new Object[]{null, null, var4}; - var10004[1] = var6; - var10004[0] = 3553; - return b(var10004); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static IllegalStateException a(IllegalStateException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/Framebuffer.java b/src/main/java/dev/zprestige/prestige/render/Framebuffer.java deleted file mode 100644 index b78111d..0000000 --- a/src/main/java/dev/zprestige/prestige/render/Framebuffer.java +++ /dev/null @@ -1,135 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.ref.Cleaner.Cleanable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL30; - -public class Framebuffer implements AutoCloseable { - public final int a; - private final Cleanable b; - private static final String d = "Framebuffer isn't complete, is: "; - - public Framebuffer(int var1, long var2) { - this.a = var1; - this.b = RenderUtil.a.register(this, () -> RenderUtil.f(new Object[]{(Runnable)() -> GL30.glDeleteFramebuffers(var1), 31795785076293L})); - } - - public static Framebuffer a(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 87225610055498L ^ var1; - long var3 = var1 ^ 82851842664766L; - return new Framebuffer(GL30.glGenFramebuffers(), var3); - } - - public void a_void__________________(Object[] var1) { - int var3 = (Integer)var1[0]; - int var2 = (Integer)var1[1]; - int var6 = GL11.glGetInteger(36006); - GL30.glBindFramebuffer(36160, this.a); - GL30.glFramebufferTexture2D(36160, var3, 3553, var2, 0); - GL30.glBindFramebuffer(36160, var6); - } - - public void b(Object[] var1) { - int var3 = (Integer)var1[0]; - FontRenderer var2 = (FontRenderer)var1[1]; - long var4 = (Long)var1[2]; - var4 = 87225610055498L ^ var4; - long var6 = var4 ^ 137836224116081L; - int var10002 = var2.a; - Object[] var10005 = new Object[]{null, null, var6}; - var10005[1] = var10002; - var10005[0] = var3; - this.a_void__________________(var10005); - } - - public void e(Object[] var1) { - float var3 = (Float)var1[0]; - float var7 = (Float)var1[1]; - float var4 = (Float)var1[2]; - float var2 = (Float)var1[3]; - int var8 = GL11.glGetInteger(36006); - GL30.glBindFramebuffer(36009, this.a); - GL30.glClearBufferfv(6144, 0, new float[]{var3, var7, var4, var2}); - GL30.glBindFramebuffer(36009, var8); - } - - @Override - public void close() throws Exception { - this.b.clean(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static IllegalStateException a(IllegalStateException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/FullscreenPassChain.java b/src/main/java/dev/zprestige/prestige/render/FullscreenPassChain.java new file mode 100644 index 0000000..e4819df --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/FullscreenPassChain.java @@ -0,0 +1,44 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.QueuedRenderPass; +import dev.zprestige.prestige.type.GlPrimitive; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; +import java.util.function.IntSupplier; + +public class FullscreenPassChain { + private static final GlBuffer QUAD_VERTICES = (GlBuffer)RenderCore.callOnRenderThread((java.util.function.Supplier)GlBuffer::create); + private static final GlBuffer QUAD_INDICES = (GlBuffer)RenderCore.callOnRenderThread((java.util.function.Supplier)GlBuffer::create); + private static final VertexArray QUAD_VAO = VertexArray.forBuffer(QUAD_VERTICES, VertexLayouts.POSITION_UV); + private final List passes = new ArrayList(); + + public FullscreenPassChain addPass(Shader shader, Consumer setup, int targetFramebuffer) { + return this.addDynamicPass(shader, setup, (IntSupplier)() -> targetFramebuffer); + } + + public FullscreenPassChain addDynamicPass(Shader shader, Consumer setup, IntSupplier targetSupplier) { + this.passes.add(new QueuedRenderPass(GlRenderPass.builder().setFramebufferSupplier(targetSupplier).setShader(shader).build(), setup)); + return this; + } + + public void render() { + for (QueuedRenderPass entry : (Iterable)(this.passes)) { + GlRenderPass pass = entry.renderPass(); + pass.begin(); + entry.drawCallback().accept(pass); + pass.drawIndexed(QUAD_VAO, QUAD_INDICES, 4, 6); + } + } + + static { + long[] bufferSizes = new long[]{4L, 24L}; + QUAD_VERTICES.allocate(35044, bufferSizes[0] * VertexLayouts.POSITION_UV.stride); + QUAD_INDICES.allocate(35044, bufferSizes[1]); + + try (MappedMeshBuilder builder = new MappedMeshBuilder(VertexLayouts.POSITION_UV, QUAD_VERTICES, QUAD_INDICES)) { + builder.appendPosition(-1.0F, 1.0F, 1.0F).appendFloats(new float[]{0.0F, 1.0F}).appendPosition(-1.0F, -1.0F, 1.0F).appendFloats(new float[]{0.0F, 0.0F}).appendPosition(1.0F, -1.0F, 1.0F).appendFloats(new float[]{1.0F, 0.0F}).appendPosition(1.0F, 1.0F, 1.0F).appendFloats(new float[]{1.0F, 1.0F}); + builder.generateIndices(GlPrimitive.QUADS); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GameRendererAccessor.java b/src/main/java/dev/zprestige/prestige/render/GameRendererAccessor.java new file mode 100644 index 0000000..7fa37c4 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GameRendererAccessor.java @@ -0,0 +1,17 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.client.gui.hud.InGameOverlayRenderer; +import net.minecraft.client.render.GameRenderer; + +public class GameRendererAccessor { + private final GameRenderer gameRenderer; + + public GameRendererAccessor(GameRenderer renderer) { + this.gameRenderer = renderer; + } + + public InGameOverlayRenderer getOverlayRenderer() { + return (InGameOverlayRenderer)FieldAccessor.bindMapped(this.gameRenderer, "overlayRenderer", GameRenderer.class, InGameOverlayRenderer.class).get(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GaussianBlur.java b/src/main/java/dev/zprestige/prestige/render/GaussianBlur.java new file mode 100644 index 0000000..bfeb026 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GaussianBlur.java @@ -0,0 +1,120 @@ +package dev.zprestige.prestige.render; + +import net.minecraft.client.MinecraftClient; +import org.lwjgl.opengl.GL13; +import org.lwjgl.opengl.GL20; +import org.lwjgl.opengl.GL30; + +public class GaussianBlur { + public GlFramebuffer outputFramebuffer; + public GlFramebuffer horizontalFramebuffer; + public GlTextureHandle outputTexture; + public GlTextureHandle horizontalTexture; + private int width; + private int height; + private static final MinecraftClient mc = MinecraftClient.getInstance(); + private static final int DIRECTION_LOCATION; + private static final int KERNEL_WIDTH_LOCATION; + private static final int SIGMA_LOCATION; + private final float kernelWidth; + private final float kernelSigma; + private boolean texturesCreated; + private final FullscreenPassChain passes; + private long lastBlurFrame; + private static final long NO_FRAME = Long.MIN_VALUE; + + public int getWidth() { + return this.width; + } + + public int getHeight() { + return this.height; + } + + public GaussianBlur(float radius, float sigma) { + super(); + this.outputFramebuffer = GlFramebuffer.create(); + this.horizontalFramebuffer = GlFramebuffer.create(); + this.outputTexture = GlTextureHandle.create(3553); + this.horizontalTexture = GlTextureHandle.create(3553); + this.texturesCreated = false; + this.lastBlurFrame = NO_FRAME; + this.width = mc.getWindow().getFramebufferWidth(); + this.height = mc.getWindow().getFramebufferHeight(); + this.kernelWidth = radius; + this.kernelSigma = sigma; + this.createTargets(); + this.passes = new FullscreenPassChain().addPass(CoreShaders.GAUSSIAN_BLUR, horizontalPass -> { + GL13.glActiveTexture(33984); + GL30.glBindTexture(3553, RenderCore.getMainColorTextureId()); + GL20.glUniform2f(DIRECTION_LOCATION, 1.0F, 0.0F); + GL20.glUniform1f(KERNEL_WIDTH_LOCATION, this.kernelWidth); + GL20.glUniform1f(SIGMA_LOCATION, this.kernelSigma); + }, this.horizontalFramebuffer.glId).addPass(CoreShaders.GAUSSIAN_BLUR, verticalPass -> { + GL13.glActiveTexture(33984); + GL30.glBindTexture(3553, this.horizontalTexture.glId); + GL20.glUniform2f(DIRECTION_LOCATION, 0.0F, 1.0F); + GL20.glUniform1f(KERNEL_WIDTH_LOCATION, this.kernelWidth); + GL20.glUniform1f(SIGMA_LOCATION, this.kernelSigma); + }, this.outputFramebuffer.glId); + } + + private void createTargets() { + if (this.texturesCreated) { + this.outputTexture.close(); + this.horizontalTexture.close(); + } + + this.outputTexture = GlTextureHandle.create(3553); + this.outputTexture.allocate(32849, this.width, this.height); + this.outputTexture.setFilter(9729); + this.outputTexture.setWrapMode(33071); + this.horizontalTexture = GlTextureHandle.create(3553); + this.horizontalTexture.allocate(32849, this.width, this.height); + this.horizontalTexture.setFilter(9729); + this.horizontalTexture.setWrapMode(33071); + GL30.glBindFramebuffer(36160, this.outputFramebuffer.glId); + GL30.glFramebufferTexture2D(36160, 36064, 3553, this.outputTexture.glId, 0); + GL30.glBindFramebuffer(36160, this.horizontalFramebuffer.glId); + GL30.glFramebufferTexture2D(36160, 36064, 3553, this.horizontalTexture.glId, 0); + GL30.glBindFramebuffer(36160, 0); + this.texturesCreated = true; + } + + private boolean updateSize() { + if (mc.getWindow() == null) { + return false; + } else { + int newWidth = mc.getWindow().getFramebufferWidth(); + int newHeight = mc.getWindow().getFramebufferHeight(); + if (newWidth <= 0 || newHeight <= 0) { + return false; + } else if (this.width == newWidth && this.height == newHeight) { + return false; + } else { + this.width = newWidth; + this.height = newHeight; + this.createTargets(); + return true; + } + } + } + + public void blurIfNeeded(long frame) { + if (this.updateSize() || this.lastBlurFrame != frame) { + this.blur(frame); + } + } + + private void blur(long frame) { + this.lastBlurFrame = frame; + this.passes.render(); + } + + static { + DIRECTION_LOCATION = CoreShaders.GAUSSIAN_BLUR.getUniformLocation("direction"); + KERNEL_WIDTH_LOCATION = CoreShaders.GAUSSIAN_BLUR.getUniformLocation("width"); + SIGMA_LOCATION = CoreShaders.GAUSSIAN_BLUR.getUniformLocation("sigma"); + CoreShaders.GAUSSIAN_BLUR.setUniformInt("texSampler", 0); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GlBuffer.java b/src/main/java/dev/zprestige/prestige/render/GlBuffer.java new file mode 100644 index 0000000..8caae1a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GlBuffer.java @@ -0,0 +1,69 @@ +package dev.zprestige.prestige.render; + +import java.lang.ref.Cleaner.Cleanable; +import java.nio.ByteBuffer; +import java.util.concurrent.atomic.AtomicLong; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL15; +import org.lwjgl.opengl.GL30; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class GlBuffer implements AutoCloseable { + private static final Logger LOGGER = LoggerFactory.getLogger(GlBuffer.class); + private final int glId; + private final AtomicLong size; + private final Cleanable cleanable; + private int usage = 35044; + + public GlBuffer(int bufferId, AtomicLong sizeRef) { + this.glId = bufferId; + this.size = sizeRef; + this.cleanable = RenderCore.CLEANER.register(this, () -> RenderCore.runOnRenderThread((Runnable)() -> GL15.glDeleteBuffers(bufferId))); + } + + public static GlBuffer create() { + return new GlBuffer(GL15.glGenBuffers(), new AtomicLong(0L)); + } + + public void allocate(int bufferUsage, long byteSize) { + int previous = GL11.glGetInteger(34964); + GL15.glBindBuffer(34962, this.glId); + GL15.glBufferData(34962, byteSize, bufferUsage); + GL15.glBindBuffer(34962, previous); + this.usage = bufferUsage; + this.size.set(byteSize); + } + + public ByteBuffer mapRange(long offset, long length, int access) { + int previous = GL11.glGetInteger(34964); + GL15.glBindBuffer(34962, this.glId); + ByteBuffer mapped = GL30.glMapBufferRange(34962, offset, length, access); + GL15.glBindBuffer(34962, previous); + return mapped; + } + + public void unmap() { + int previous = GL11.glGetInteger(34964); + GL15.glBindBuffer(34962, this.glId); + GL15.glUnmapBuffer(34962); + GL15.glBindBuffer(34962, previous); + } + + @Override + public void close() { + this.cleanable.clean(); + } + + public int getGlId() { + return this.glId; + } + + public int getUsage() { + return this.usage; + } + + public AtomicLong getSize() { + return this.size; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GlFramebuffer.java b/src/main/java/dev/zprestige/prestige/render/GlFramebuffer.java new file mode 100644 index 0000000..b779e21 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GlFramebuffer.java @@ -0,0 +1,42 @@ +package dev.zprestige.prestige.render; + +import java.lang.ref.Cleaner.Cleanable; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL30; + +public class GlFramebuffer implements AutoCloseable { + public final int glId; + private final Cleanable cleanable; + + public GlFramebuffer(int framebufferId) { + this.glId = framebufferId; + this.cleanable = RenderCore.CLEANER.register(this, () -> RenderCore.runOnRenderThread((Runnable)() -> GL30.glDeleteFramebuffers(framebufferId))); + } + + public static GlFramebuffer create() { + return new GlFramebuffer(GL30.glGenFramebuffers()); + } + + public void attachTextureId(int attachment, int textureId) { + int previous = GL11.glGetInteger(36006); + GL30.glBindFramebuffer(36160, this.glId); + GL30.glFramebufferTexture2D(36160, attachment, 3553, textureId, 0); + GL30.glBindFramebuffer(36160, previous); + } + + public void attachTexture(int attachment, GlTextureHandle texture) { + this.attachTextureId(attachment, texture.glId); + } + + public void clearColor(float red, float green, float blue, float alpha) { + int previous = GL11.glGetInteger(36006); + GL30.glBindFramebuffer(36009, this.glId); + GL30.glClearBufferfv(6144, 0, new float[]{red, green, blue, alpha}); + GL30.glBindFramebuffer(36009, previous); + } + + @Override + public void close() throws Exception { + this.cleanable.clean(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GlPrimitiveSwitchMap.java b/src/main/java/dev/zprestige/prestige/render/GlPrimitiveSwitchMap.java new file mode 100644 index 0000000..024d2a7 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GlPrimitiveSwitchMap.java @@ -0,0 +1,44 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.type.GlPrimitive; +import dev.zprestige.prestige.world.MeshBuilder; + +// $VF: synthetic class +public class GlPrimitiveSwitchMap { + public static final boolean ASSERTIONS_DISABLED; + public static final int[] SWITCH_MAP = new int[GlPrimitive.values().length]; + + static { + try { + SWITCH_MAP[GlPrimitive.TRIANGLES.ordinal()] = 1; + } catch (NoSuchFieldError missingTriangles) { + } + + try { + SWITCH_MAP[GlPrimitive.QUADS.ordinal()] = 2; + } catch (NoSuchFieldError missingQuads) { + } + + try { + SWITCH_MAP[GlPrimitive.TRIANGLES_FAN.ordinal()] = 3; + } catch (NoSuchFieldError missingTriangleFan) { + } + + try { + SWITCH_MAP[GlPrimitive.DEBUG_LINE_STRIP.ordinal()] = 4; + } catch (NoSuchFieldError missingLineStrip) { + } + + try { + SWITCH_MAP[GlPrimitive.QUAD_STRIP.ordinal()] = 5; + } catch (NoSuchFieldError missingQuadStrip) { + } + + try { + SWITCH_MAP[GlPrimitive.LINES.ordinal()] = 0; + } catch (NoSuchFieldError missingLines) { + } + + ASSERTIONS_DISABLED = !MeshBuilder.class.desiredAssertionStatus(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GlPrimitiveTable.java b/src/main/java/dev/zprestige/prestige/render/GlPrimitiveTable.java deleted file mode 100644 index 1c67fd4..0000000 --- a/src/main/java/dev/zprestige/prestige/render/GlPrimitiveTable.java +++ /dev/null @@ -1,118 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.type.GlPrimitive; -import dev.zprestige.prestige.world.WorldContract; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -// $VF: synthetic class -public class GlPrimitiveTable { - public static final boolean a; - public static final int[] b = new int[GlPrimitive.values().length]; - - static { - try { - b[GlPrimitive.TRIANGLES.ordinal()] = 1; - } catch (NoSuchFieldError var5) { - } - - try { - b[GlPrimitive.QUADS.ordinal()] = 2; - } catch (NoSuchFieldError var4) { - } - - try { - b[GlPrimitive.TRIANGLES_FAN.ordinal()] = 3; - } catch (NoSuchFieldError var3) { - } - - try { - b[GlPrimitive.DEBUG_LINE_STRIP.ordinal()] = 4; - } catch (NoSuchFieldError var2) { - } - - try { - b[GlPrimitive.QUAD_STRIP.ordinal()] = 5; - } catch (NoSuchFieldError var1) { - } - - try { - b[GlPrimitive.LINES.ordinal()] = 0; - } catch (NoSuchFieldError var0) { - } - - a = !WorldContract.class.desiredAssertionStatus(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static NoSuchFieldError a(NoSuchFieldError var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/GlRenderPass.java b/src/main/java/dev/zprestige/prestige/render/GlRenderPass.java new file mode 100644 index 0000000..cad27f0 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GlRenderPass.java @@ -0,0 +1,88 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.math.RenderCacheUtil; +import java.nio.FloatBuffer; +import java.util.Objects; +import java.util.OptionalDouble; +import java.util.OptionalInt; +import java.util.function.IntSupplier; +import org.lwjgl.opengl.GL30; +import org.lwjgl.system.MemoryStack; + +public class GlRenderPass { + private final IntSupplier targetFramebuffer; + private final OptionalInt clearColor; + private final OptionalDouble clearDepth; + public final Shader shader; + private final int projMatLocation; + private final int viewMatLocation; + + public GlRenderPass(GlRenderPassBuilder passBuilder) { + this.targetFramebuffer = Objects.requireNonNull(passBuilder.framebuffer, "targetFramebuffer cannot be null"); + this.clearColor = Objects.requireNonNull(passBuilder.clearColor, "clearColor cannot be null"); + this.clearDepth = Objects.requireNonNull(passBuilder.clearDepth, "clearDepth cannot be null"); + this.shader = Objects.requireNonNull(passBuilder.shader, "shaderProgram cannot be null"); + this.projMatLocation = passBuilder.shader.getProjMatLocation(); + this.viewMatLocation = passBuilder.shader.getViewMatLocation(); + } + + public static GlRenderPassBuilder builder() { + return new GlRenderPassBuilder(); + } + + public void begin() { + GL30.glBindFramebuffer(36160, this.targetFramebuffer.getAsInt()); + this.clearTarget(); + GL30.glUseProgram(this.shader.getProgramId()); + } + + public void uploadMatrices(CameraMatrices context) { + this.shader.getProgramId(); + + try (MemoryStack stack = MemoryStack.stackPush()) { + FloatBuffer projBuffer = stack.mallocFloat(16); + FloatBuffer viewBuffer = stack.mallocFloat(16); + if (this.projMatLocation >= 0) { + context.projection().get(projBuffer); + projBuffer.rewind(); + GL30.glUniformMatrix4fv(this.projMatLocation, false, projBuffer); + } + + if (this.viewMatLocation >= 0) { + context.modelView().get(viewBuffer); + viewBuffer.rewind(); + GL30.glUniformMatrix4fv(this.viewMatLocation, false, viewBuffer); + } + } + } + + public void drawIndexed(VertexArray vertexArray, GlBuffer indexBuffer, int primitiveMode, int indexCount) { + GL30.glBindVertexArray(vertexArray.getGlId()); + GL30.glBindBuffer(34963, indexBuffer.getGlId()); + GL30.glDrawElements(primitiveMode, indexCount, 5125, 0L); + GL30.glBindVertexArray(0); + GL30.glBindBuffer(34963, 0); + } + + private void clearTarget() { + short clearMask = 0; + if (this.clearColor.isPresent()) { + int argb = this.clearColor.getAsInt(); + GL30.glClearColor(RenderCacheUtil.getRedFloat(argb), RenderCacheUtil.getGreenFloat(argb), RenderCacheUtil.getBlueFloat(argb), RenderCacheUtil.getAlphaFloat(argb)); + clearMask = 16384; + } + + if (this.clearDepth.isPresent()) { + GL30.glClearDepth(this.clearDepth.getAsDouble()); + clearMask |= 256; + } + + if (clearMask != 0) { + GL30.glDisable(3089); + GL30.glDepthMask(true); + GL30.glColorMask(true, true, true, true); + GL30.glClear(clearMask); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GlRenderPassBuilder.java b/src/main/java/dev/zprestige/prestige/render/GlRenderPassBuilder.java new file mode 100644 index 0000000..c9c679a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GlRenderPassBuilder.java @@ -0,0 +1,44 @@ +package dev.zprestige.prestige.render; + +import java.util.OptionalDouble; +import java.util.OptionalInt; +import java.util.function.IntSupplier; + +public class GlRenderPassBuilder { + public IntSupplier framebuffer = () -> 0; + public OptionalInt clearColor = OptionalInt.empty(); + public OptionalDouble clearDepth = OptionalDouble.empty(); + public Shader shader; + + public GlRenderPassBuilder() { + } + + public GlRenderPassBuilder setFramebuffer(int framebufferId) { + this.framebuffer = () -> framebufferId; + return this; + } + + public GlRenderPassBuilder setFramebufferSupplier(IntSupplier supplier) { + this.framebuffer = supplier; + return this; + } + + public GlRenderPassBuilder setClearColor(OptionalInt color) { + this.clearColor = color; + return this; + } + + public GlRenderPassBuilder setClearDepth(OptionalDouble depth) { + this.clearDepth = depth; + return this; + } + + public GlRenderPassBuilder setShader(Shader program) { + this.shader = program; + return this; + } + + public GlRenderPass build() { + return new GlRenderPass(this); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GlState.java b/src/main/java/dev/zprestige/prestige/render/GlState.java deleted file mode 100644 index 3c6b0c3..0000000 --- a/src/main/java/dev/zprestige/prestige/render/GlState.java +++ /dev/null @@ -1,176 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.lwjgl.opengl.GL30C; - -public record GlState( - boolean aR, - boolean aS, - boolean aT, - boolean aU, - int aV, - int aW, - int aX, - int aY, - int aZ, - int[] a0, - int a1, - int a2, - int a3, - int a4, - int a5, - int a6, - int[] a7, - int a8, - int a9 -) { - private static final int a = 8; - - public static GlState a() { - boolean var3 = GL30C.glIsEnabled(2929); - boolean var4 = GL30C.glIsEnabled(2884); - Event.b(); - boolean var5 = GL30C.glIsEnabled(3042); - boolean var6 = GL30C.glIsEnabled(3089); - int var7 = GL30C.glGetInteger(35725); - int var8 = GL30C.glGetInteger(34229); - int var9 = GL30C.glGetInteger(34964); - int var10 = GL30C.glGetInteger(34965); - int var11 = GL30C.glGetInteger(34016); - int[] var12 = new int[8]; - - for (int var13 = 0; var13 < 8; var13++) { - GL30C.glActiveTexture(33984 + var13); - var12[var13] = GL30C.glGetInteger(32873); - } - - GL30C.glActiveTexture(var11); - int var22 = GL30C.glGetInteger(32777); - int var14 = GL30C.glGetInteger(34877); - int var15 = GL30C.glGetInteger(32969); - int var16 = GL30C.glGetInteger(32968); - int var17 = GL30C.glGetInteger(32971); - int var18 = GL30C.glGetInteger(32970); - short var10000 = 8712; - int[] var19 = new int[4]; - GL30C.glGetIntegerv(3088, var19); - int var20 = GL30C.glGetInteger(36006); - int var21 = GL30C.glGetInteger(36010); - return new GlState(var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var22, var14, var15, var16, var17, var18, var19, var21, var20); - } - - public void a_void() { - if (this.aR) { - GL30C.glEnable(2929); - } else { - GL30C.glDisable(2929); - } - - if (this.aS) { - GL30C.glEnable(2884); - } else { - GL30C.glDisable(2884); - } - - if (this.aT) { - GL30C.glEnable(3042); - } else { - GL30C.glDisable(3042); - } - - if (this.aU) { - GL30C.glEnable(3089); - } else { - GL30C.glDisable(3089); - } - - GL30C.glUseProgram(this.aV); - GL30C.glBindBuffer(34962, this.aX); - GL30C.glBindBuffer(34963, this.aY); - GL30C.glBindVertexArray(this.aW); - - for (int var4 = 0; var4 < this.a0.length; var4++) { - GL30C.glActiveTexture(33984 + var4); - GL30C.glBindTexture(3553, this.a0[var4]); - } - - GL30C.glActiveTexture(this.aZ); - short var10000 = 23794; - GL30C.glBlendEquationSeparate(this.a1, this.a2); - long var10001 = 3102456192241388704L; - GL30C.glBlendFuncSeparate(this.a3, this.a4, this.a5, this.a6); - GL30C.glScissor(this.a7[0], this.a7[1], this.a7[2], this.a7[3]); - GL30C.glBindFramebuffer(36008, this.a8); - GL30C.glBindFramebuffer(36009, this.a9); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/GlStateSnapshot.java b/src/main/java/dev/zprestige/prestige/render/GlStateSnapshot.java new file mode 100644 index 0000000..93cff19 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GlStateSnapshot.java @@ -0,0 +1,100 @@ +package dev.zprestige.prestige.render; + +import org.lwjgl.opengl.GL30C; + +public record GlStateSnapshot( + boolean depthTest, + boolean cullFace, + boolean blend, + boolean scissorTest, + int program, + int vertexArray, + int arrayBuffer, + int elementArrayBuffer, + int activeTexture, + int[] boundTextures, + int blendEquationRgb, + int blendEquationAlpha, + int blendSrcRgb, + int blendDstRgb, + int blendSrcAlpha, + int blendDstAlpha, + int[] scissorBox, + int readFramebuffer, + int drawFramebuffer +) { + private static final int TEXTURE_UNITS = 8; + + public static GlStateSnapshot capture() { + boolean depthEnabled = GL30C.glIsEnabled(2929); + boolean cullEnabled = GL30C.glIsEnabled(2884); + boolean blendEnabled = GL30C.glIsEnabled(3042); + boolean scissorEnabled = GL30C.glIsEnabled(3089); + int currentProgram = GL30C.glGetInteger(35725); + int boundVertexArray = GL30C.glGetInteger(34229); + int boundArrayBuffer = GL30C.glGetInteger(34964); + int boundElementBuffer = GL30C.glGetInteger(34965); + int activeUnit = GL30C.glGetInteger(34016); + int[] boundTextures = new int[8]; + + for (int unit = 0; unit < 8; unit++) { + GL30C.glActiveTexture(33984 + unit); + boundTextures[unit] = GL30C.glGetInteger(32873); + } + + GL30C.glActiveTexture(activeUnit); + int blendEquationRgb = GL30C.glGetInteger(32777); + int blendEquationAlpha = GL30C.glGetInteger(34877); + int blendSrcRgb = GL30C.glGetInteger(32969); + int blendDstRgb = GL30C.glGetInteger(32968); + int blendSrcAlpha = GL30C.glGetInteger(32971); + int blendDstAlpha = GL30C.glGetInteger(32970); + int[] scissorBox = new int[4]; + GL30C.glGetIntegerv(3088, scissorBox); + int drawFramebuffer = GL30C.glGetInteger(36006); + return new GlStateSnapshot(depthEnabled, cullEnabled, blendEnabled, scissorEnabled, currentProgram, boundVertexArray, boundArrayBuffer, boundElementBuffer, activeUnit, boundTextures, blendEquationRgb, blendEquationAlpha, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha, scissorBox, GL30C.glGetInteger(36010), drawFramebuffer); + } + + public void restore() { + if (this.depthTest) { + GL30C.glEnable(2929); + } else { + GL30C.glDisable(2929); + } + + if (this.cullFace) { + GL30C.glEnable(2884); + } else { + GL30C.glDisable(2884); + } + + if (this.blend) { + GL30C.glEnable(3042); + } else { + GL30C.glDisable(3042); + } + + if (this.scissorTest) { + GL30C.glEnable(3089); + } else { + GL30C.glDisable(3089); + } + + GL30C.glUseProgram(this.program); + GL30C.glBindBuffer(34962, this.arrayBuffer); + GL30C.glBindBuffer(34963, this.elementArrayBuffer); + GL30C.glBindVertexArray(this.vertexArray); + + for (int unit = 0; unit < this.boundTextures.length; unit++) { + GL30C.glActiveTexture(33984 + unit); + GL30C.glBindTexture(3553, this.boundTextures[unit]); + } + + GL30C.glActiveTexture(this.activeTexture); + GL30C.glBlendEquationSeparate(this.blendEquationRgb, this.blendEquationAlpha); + GL30C.glBlendFuncSeparate(this.blendSrcRgb, this.blendDstRgb, this.blendSrcAlpha, this.blendDstAlpha); + GL30C.glScissor(this.scissorBox[0], this.scissorBox[1], this.scissorBox[2], this.scissorBox[3]); + GL30C.glBindFramebuffer(36008, this.readFramebuffer); + GL30C.glBindFramebuffer(36009, this.drawFramebuffer); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GlTextureHandle.java b/src/main/java/dev/zprestige/prestige/render/GlTextureHandle.java new file mode 100644 index 0000000..13dccfd --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GlTextureHandle.java @@ -0,0 +1,117 @@ +package dev.zprestige.prestige.render; + +import java.lang.ref.Cleaner.Cleanable; +import java.nio.ByteBuffer; +import net.minecraft.client.texture.GlTexture; +import net.minecraft.util.Identifier; +import org.lwjgl.opengl.GL11; + +public class GlTextureHandle implements AutoCloseable { + public final int glId; + private final Cleanable cleanable; + private final int target; + private volatile boolean allocated = false; + private int internalFormat; + + public GlTextureHandle(int textureTarget, int textureId) { + this(textureTarget, textureId, true, (74681995002117L)); + } + + private GlTextureHandle(int textureTarget, int textureId, boolean owned, long unusedKey) { + this.target = textureTarget; + this.glId = textureId; + this.cleanable = owned ? RenderCore.CLEANER.register(this, () -> RenderCore.runOnRenderThread((Runnable)() -> GL11.glDeleteTextures(textureId))) : null; + } + + public static GlTextureHandle create(int textureTarget) { + return new GlTextureHandle(textureTarget, GL11.glGenTextures()); + } + + public static GlTextureHandle wrap(int textureTarget, int textureId) { + return new GlTextureHandle(textureTarget, textureId, false, 0L); + } + + private int getBindingQuery(int textureTarget) { + switch (textureTarget) { + case 3553: + return 32873; + case 32879: + return 32874; + default: + return 32873; + } + } + + private int bindTemporarily() { + int previous = GL11.glGetInteger(this.getBindingQuery(this.target)); + GL11.glBindTexture(this.target, this.glId); + return previous; + } + + private void restoreBinding(int previousId) { + GL11.glBindTexture(this.target, previousId); + } + + public void setFilter(int filter) { + int previous = this.bindTemporarily(); + GL11.glTexParameteri(this.target, 10241, filter); + GL11.glTexParameteri(this.target, 10240, filter); + this.restoreBinding(previous); + } + + public void allocate(int format, int width, int height) { + if (this.allocated) { + throw new IllegalStateException("already inited - this is an immutable texture!"); + } else { + this.allocated = true; + this.internalFormat = format; + + char pixelFormat = switch (format) { + case 32849 -> 'ᤇ'; + default -> 'ᤈ'; + case 33321 -> 'ᤃ'; + case 33323 -> '舧'; + }; + int previous = this.bindTemporarily(); + GL11.glTexImage2D(this.target, 0, format, width, height, 0, pixelFormat, 5121, (ByteBuffer)null); + GL11.glTexParameteri(this.target, 33084, 0); + GL11.glTexParameteri(this.target, 33085, 0); + this.restoreBinding(previous); + } + } + + public void uploadRegion(int offsetX, int offsetY, int width, int height, int format, int type, ByteBuffer pixels) { + int previous = this.bindTemporarily(); + GL11.glTexSubImage2D(this.target, 0, offsetX, offsetY, width, height, format, type, pixels); + this.restoreBinding(previous); + } + + public void setWrapMode(int wrapMode) { + int previous = this.bindTemporarily(); + GL11.glTexParameteri(this.target, 10242, wrapMode); + GL11.glTexParameteri(this.target, 10243, wrapMode); + this.restoreBinding(previous); + } + + public GlTextureHandle resize(int width, int height) { + if (!this.allocated) { + throw new IllegalStateException("not inited"); + } else { + this.close(); + GlTextureHandle resized = create(this.target); + resized.allocate(this.internalFormat, width, height); + return resized; + } + } + + @Override + public void close() { + if (this.cleanable != null) { + this.cleanable.clean(); + } + } + + public static GlTextureHandle wrapMinecraftTexture(Identifier textureIdentifier) { + return wrap(3553, ((GlTexture)MinecraftAccess.mc.getTextureManager().getTexture(textureIdentifier).getGlTexture()).getGlId()); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GlyphQuadCommand.java b/src/main/java/dev/zprestige/prestige/render/GlyphQuadCommand.java new file mode 100644 index 0000000..754e192 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GlyphQuadCommand.java @@ -0,0 +1,52 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.DrawBatchKey; +import dev.zprestige.prestige.world.MeshBuilder; +import org.joml.Matrix4f; + +public final class GlyphQuadCommand implements DrawCommand { + private final DrawBatchKey batchKey; + private final float left; + private final float top; + private final float right; + private final float bottom; + private final float minU; + private final float minV; + private final float maxU; + private final float maxV; + private final int abgrColor; + private final Matrix4f transform; + + public GlyphQuadCommand( + DrawBatchKey key, float x0, float y0, float x1, float y1, int argb, float u0, float v0, float u1, float v1, Matrix4f matrix + ) { + this.batchKey = key; + this.left = x0; + this.top = y0; + this.right = x1; + this.bottom = y1; + this.minU = u0; + this.minV = v0; + this.maxU = u1; + this.maxV = v1; + this.transform = matrix; + this.abgrColor = (argb >>> 24 & 0xFF) << 24 | (argb & 0xFF) << 16 | (argb >>> 8 & 0xFF) << 8 | (argb >>> 16 & 0xFF); + } + + @Override + public void emitVertices(MeshBuilder builder, float depth) { + builder.beginShape(); + if (this.transform == null) { + builder.putVertex(this.left, this.bottom, depth).putColor(this.abgrColor).putFloats(new float[]{this.minU, this.maxV}).putVertex(this.left, this.top, depth).putColor(this.abgrColor).putFloats(new float[]{this.minU, this.minV}).putVertex(this.right, this.top, depth).putColor(this.abgrColor).putFloats(new float[]{this.maxU, this.minV}).putVertex(this.right, this.bottom, depth).putColor(this.abgrColor).putFloats(new float[]{this.maxU, this.maxV}); + } else { + builder.putTransformedVertex(this.transform, this.left, this.bottom, depth).putColor(this.abgrColor).putFloats(new float[]{this.minU, this.maxV}).putTransformedVertex(this.transform, this.left, this.top, depth).putColor(this.abgrColor).putFloats(new float[]{this.minU, this.minV}).putTransformedVertex(this.transform, this.right, this.top, depth).putColor(this.abgrColor).putFloats(new float[]{this.maxU, this.minV}).putTransformedVertex(this.transform, this.right, this.bottom, depth).putColor(this.abgrColor).putFloats(new float[]{this.maxU, this.maxV}); + } + + builder.putIndices(new int[]{0, 1, 2, 2, 3, 0}).resetBaseVertex(); + } + + @Override + public DrawBatchKey getBatchKey() { + return this.batchKey; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/GlyphVisitor.java b/src/main/java/dev/zprestige/prestige/render/GlyphVisitor.java new file mode 100644 index 0000000..02c57f8 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GlyphVisitor.java @@ -0,0 +1,8 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.config.MsdfGlyph; + +@FunctionalInterface +public interface GlyphVisitor { + boolean visit(int codePoint, MsdfGlyph glyph); +} diff --git a/src/main/java/dev/zprestige/prestige/render/GpuBuffer.java b/src/main/java/dev/zprestige/prestige/render/GpuBuffer.java deleted file mode 100644 index cab629b..0000000 --- a/src/main/java/dev/zprestige/prestige/render/GpuBuffer.java +++ /dev/null @@ -1,144 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.ref.Cleaner.Cleanable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.nio.ByteBuffer; -import java.util.concurrent.atomic.AtomicLong; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL15; -import org.lwjgl.opengl.GL30; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public final class GpuBuffer implements AutoCloseable { - private static final Logger a = LoggerFactory.getLogger(GpuBuffer.class); - private final int b; - private final AtomicLong c; - private final Cleanable d; - private int e = 35044; - - public GpuBuffer(int var1, AtomicLong var2, long var3) { - this.b = var1; - this.c = var2; - this.d = RenderUtil.a.register(this, () -> RenderUtil.f(new Object[]{(Runnable)() -> GL15.glDeleteBuffers(var1), 31795785076293L})); - } - - public static GpuBuffer a() { - return new GpuBuffer(GL15.glGenBuffers(), new AtomicLong(0L), 126766348694803L); - } - - public void a(Object[] var1) { - int var2 = (Integer)var1[0]; - long var3 = (Long)var1[1]; - int var7 = GL11.glGetInteger(34964); - GL15.glBindBuffer(34962, this.b); - GL15.glBufferData(34962, var3, var2); - GL15.glBindBuffer(34962, var7); - this.e = var2; - this.c.set(var3); - } - - public ByteBuffer a_ByteBuffer(Object[] var1) { - long var3 = (Long)var1[0]; - long var5 = (Long)var1[1]; - int var2 = (Integer)var1[2]; - int var9 = GL11.glGetInteger(34964); - GL15.glBindBuffer(34962, this.b); - ByteBuffer var10 = GL30.glMapBufferRange(34962, var3, var5, var2); - GL15.glBindBuffer(34962, var9); - return var10; - } - - public void d(Object[] var1) { - int var4 = GL11.glGetInteger(34964); - GL15.glBindBuffer(34962, this.b); - GL15.glUnmapBuffer(34962); - GL15.glBindBuffer(34962, var4); - } - - @Override - public void close() { - this.d.clean(); - } - - public int a_int_____________________(Object[] var1) { - return this.b; - } - - public int b(Object[] var1) { - return this.e; - } - - public AtomicLong a_AtomicLong(Object[] var1) { - return this.c; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/GuiRendererAccessor.java b/src/main/java/dev/zprestige/prestige/render/GuiRendererAccessor.java new file mode 100644 index 0000000..2c74960 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/GuiRendererAccessor.java @@ -0,0 +1,23 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import dev.zprestige.prestige.reflect.MappedField; +import net.minecraft.client.gui.render.GuiRenderer; +import net.minecraft.client.render.ProjectionMatrix2; + +public class GuiRendererAccessor { + private static final MappedField PROJECTION_MATRIX_FIELD; + private final GuiRenderer guiRenderer; + + public GuiRendererAccessor(GuiRenderer renderer) { + this.guiRenderer = renderer; + } + + public ProjectionMatrix2 getProjectionMatrix() { + return (ProjectionMatrix2)PROJECTION_MATRIX_FIELD.get(this.guiRenderer); + } + + static { + PROJECTION_MATRIX_FIELD = FieldAccessor.mappedField(GuiRenderer.class, "guiProjectionMatrix", ProjectionMatrix2.class); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/JumpKeyPresser.java b/src/main/java/dev/zprestige/prestige/render/JumpKeyPresser.java new file mode 100644 index 0000000..1d44202 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/JumpKeyPresser.java @@ -0,0 +1,35 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.client.Prestige; +import net.minecraft.client.util.InputUtil; + +public final class JumpKeyPresser implements MinecraftAccess { + public static int ticksRemaining = 0; + private static boolean listenerRegistered = false; + + private JumpKeyPresser() { + } + + public static void pressJump() { + if (!listenerRegistered) { + listenerRegistered = true; + Prestige.eventBus.register(new JumpKeyReleaser()); + } + + mc.options.jumpKey.setPressed(true); + ticksRemaining = 2; + } + + public static void cancelPress() { + if (ticksRemaining > 0) { + ticksRemaining = 0; + releaseJumpKey(); + } + } + + public static void releaseJumpKey() { + if (!InputUtil.isKeyPressed(mc.getWindow(), mc.options.jumpKey.getDefaultKey().getCode())) { + mc.options.jumpKey.setPressed(false); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/JumpKeyReleaser.java b/src/main/java/dev/zprestige/prestige/render/JumpKeyReleaser.java new file mode 100644 index 0000000..37213d2 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/JumpKeyReleaser.java @@ -0,0 +1,13 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.event.ClientTickEvent; + +public final class JumpKeyReleaser { + @Subscribe + public void onClientTick(ClientTickEvent event) { + if (JumpKeyPresser.ticksRemaining > 0 && --JumpKeyPresser.ticksRemaining == 0) { + JumpKeyPresser.releaseJumpKey(); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/KeyBindingAccessor.java b/src/main/java/dev/zprestige/prestige/render/KeyBindingAccessor.java new file mode 100644 index 0000000..c775676 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/KeyBindingAccessor.java @@ -0,0 +1,18 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil.Key; + +public class KeyBindingAccessor { + private final KeyBinding keyBinding; + private static final String BOUND_KEY_FIELD = "boundKey"; + + public KeyBindingAccessor(KeyBinding binding) { + this.keyBinding = binding; + } + + public Key getBoundKey() { + return (Key)FieldAccessor.bindMapped(this.keyBinding, BOUND_KEY_FIELD, KeyBinding.class, Key.class).get(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/MappedMeshBuilder.java b/src/main/java/dev/zprestige/prestige/render/MappedMeshBuilder.java new file mode 100644 index 0000000..b44dead --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/MappedMeshBuilder.java @@ -0,0 +1,202 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.world.MeshBuilder; +import java.lang.ref.Cleaner.Cleanable; +import java.nio.ByteBuffer; +import org.joml.Matrix4f; +import org.joml.Vector4f; +import org.lwjgl.system.MemoryUtil; + +public class MappedMeshBuilder implements MeshBuilder, AutoCloseable { + public VertexLayout format; + private final GlBuffer vertexBuffer; + private final GlBuffer indexBuffer; + private final Cleanable cleanable; + private ByteBuffer vertexData; + private ByteBuffer indexData; + private final Vector4f transformScratch; + private int baseVertex; + + public MappedMeshBuilder(VertexLayout initialFormat, GlBuffer vbo, GlBuffer ibo) { + super(); + this.transformScratch = new Vector4f(); + this.baseVertex = 0; + this.format = initialFormat; + this.vertexBuffer = vbo; + this.indexBuffer = ibo; + this.vertexData = vbo.mapRange(0L, vbo.getSize().get(), 10); + this.indexData = ibo.mapRange(0L, ibo.getSize().get(), 10); + this.cleanable = RenderCore.CLEANER.register(this, () -> RenderCore.runOnRenderThread((Runnable)() -> { + vbo.unmap(); + ibo.unmap(); + })); + } + + @Override + public int getBaseVertex() { + return this.baseVertex; + } + + @Override + public void ensureVertexCapacity(int bytesNeeded) { + if (this.vertexData.remaining() < bytesNeeded) { + int oldCapacity = this.vertexData.limit(); + int newCapacity = Math.max(oldCapacity << 1, oldCapacity + (bytesNeeded - this.vertexData.remaining())); + int position = this.vertexData.position(); + ByteBuffer backup = MemoryUtil.memAlloc(position); + this.vertexData.flip(); + MemoryUtil.memCopy(this.vertexData, backup); + this.vertexBuffer.unmap(); + GlBuffer gpuBuffer = this.vertexBuffer; + int usage = this.vertexBuffer.getUsage(); + long newSize = newCapacity; + gpuBuffer.allocate(usage, newSize); + GlBuffer remapTarget = this.vertexBuffer; + long mapLength = newCapacity; + this.vertexData = remapTarget.mapRange(0L, mapLength, 10); + MemoryUtil.memCopy(backup, this.vertexData); + this.vertexData.position(position); + MemoryUtil.memFree(backup); + } + } + + @Override + public void ensureIndexCapacity(int bytesNeeded) { + if (this.indexData.remaining() < bytesNeeded) { + int oldCapacity = this.indexData.limit(); + int newCapacity = Math.max(oldCapacity << 1, oldCapacity + (bytesNeeded - this.indexData.remaining())); + int position = this.indexData.position(); + ByteBuffer backup = MemoryUtil.memAlloc(position); + this.indexData.flip(); + MemoryUtil.memCopy(this.indexData, backup); + this.indexBuffer.unmap(); + GlBuffer gpuBuffer = this.indexBuffer; + int usage = this.indexBuffer.getUsage(); + long newSize = newCapacity; + gpuBuffer.allocate(usage, newSize); + GlBuffer remapTarget = this.indexBuffer; + long mapLength = newCapacity; + this.indexData = remapTarget.mapRange(0L, mapLength, 10); + MemoryUtil.memCopy(backup, this.indexData); + this.indexData.position(position); + MemoryUtil.memFree(backup); + } + } + + public MappedMeshBuilder appendFloats(float[] values) { + this.ensureVertexCapacity(4 * values.length); + + for (float value : values) { + this.vertexData.putFloat(value); + } + + return this; + } + + public MappedMeshBuilder appendPosition(float x, float y, float z) { + this.ensureVertexCapacity(12); + this.vertexData.putFloat(x); + this.vertexData.putFloat(y); + this.vertexData.putFloat(z); + return this; + } + + public MappedMeshBuilder appendTransformedPosition(Matrix4f matrix, float x, float y, float z) { + matrix.transform(x, y, z, 1.0F, this.transformScratch); + this.ensureVertexCapacity(12); + this.vertexData.putFloat(this.transformScratch.x); + this.vertexData.putFloat(this.transformScratch.y); + this.vertexData.putFloat(this.transformScratch.z); + return this; + } + + public MappedMeshBuilder appendInt(int value) { + this.ensureVertexCapacity(4); + this.vertexData.putInt(value); + return this; + } + + public MappedMeshBuilder appendIndices(int[] indices) { + this.ensureIndexCapacity(4 * indices.length); + + for (int index : indices) { + this.indexData.putInt(this.baseVertex + index); + } + + return this; + } + + @Override + public int getVertexCount() { + return this.vertexData.position() / this.format.stride; + } + + @Override + public int getIndexCount() { + return this.indexData.position() / 4; + } + + public MappedMeshBuilder clearBaseVertex() { + this.baseVertex = 0; + return this; + } + + public MappedMeshBuilder withBaseVertex(int newBaseVertex) { + this.baseVertex = newBaseVertex; + return this; + } + + @Override + public void close() { + this.cleanable.clean(); + } + + public void setFormat(VertexLayout newFormat) { + this.format = newFormat; + } + + @Override + public MeshBuilder begin() { + throw new UnsupportedOperationException("removed by Strip (unresolved ZKM reference)"); + } + + @Override + public MeshBuilder end() { + throw new UnsupportedOperationException("removed by Strip (unresolved ZKM reference)"); + } + + @Override + public MeshBuilder setBaseVertex(int newBaseVertex) { + return this.withBaseVertex(newBaseVertex); + } + + @Override + public MeshBuilder resetBaseVertex() { + return this.clearBaseVertex(); + } + + @Override + public MeshBuilder putIndices(int[] indices) { + return this.appendIndices(indices); + } + + @Override + public MeshBuilder putColor(int value) { + return this.appendInt(value); + } + + @Override + public MeshBuilder putTransformedVertex(Matrix4f matrix, float x, float y, float z) { + return this.appendTransformedPosition(matrix, x, y, z); + } + + @Override + public MeshBuilder putVertex(float x, float y, float z) { + return this.appendPosition(x, y, z); + } + + @Override + public MeshBuilder putFloats(float[] values) { + return this.appendFloats(values); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/MatrixStack.java b/src/main/java/dev/zprestige/prestige/render/MatrixStack.java deleted file mode 100644 index 12c8ae6..0000000 --- a/src/main/java/dev/zprestige/prestige/render/MatrixStack.java +++ /dev/null @@ -1,531 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.world.PositionUtil; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.Camera; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.texture.SpriteAtlasTexture; -import net.minecraft.client.util.SpriteIdentifier; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.Vec3d; -import org.joml.Matrix4f; -import org.joml.Vector3f; -import org.joml.Vector4f; -import org.lwjgl.opengl.GL11; - -public class MatrixStack implements RenderContract2 { - private static final MinecraftClient b = MinecraftClient.getInstance(); - public static net.minecraft.client.gui.DrawContext a; - public static net.minecraft.client.util.math.MatrixStack c; - public static Matrix4f d = new Matrix4f(); - public static Matrix4f e = new Matrix4f(); - public static Matrix4f f = new Matrix4f(); - public static RenderHelper8 g; - public static MatrixCameraData h; - private static final int[] i = new int[4]; - private static boolean j = false; - private static final Matrix4f k = new Matrix4f(); - private static final Matrix4f l = new Matrix4f(); - private static final Vector3f m = new Vector3f(); - private static final Vector4f n = new Vector4f(); - private static long o = Long.MIN_VALUE; - private static long p = 0L; - private static final Matrix4f q = new Matrix4f(); - private static final float[] r = new float[3]; - private static int s = 1; - private static final Vector4f t = new Vector4f(); - private static final Color u = new Color(0, 0, 0, 0); - private static final Color v = new Color(0, 0, 0, 200); - private static float w = Float.NaN; - private static Color x = u; - private static final Identifier y = SpriteAtlasTexture.ITEMS_ATLAS_TEXTURE; - - public static void a(Object[] var0) { - GL11.glGetIntegerv(2978, i); - j = true; - } - - private static int[] a_intArr(Object[] var0) { - if (!j) { - GL11.glGetIntegerv(2978, i); - j = true; - } - - return i; - } - - private static long a_long(Object[] var0) { - Event.b(); - long var4 = RenderUtil.a_long__(new Object[0]); - if (var4 != o) { - o = var4; - p = System.currentTimeMillis(); - } - - return p; - } - - public static Vec3d a_class_243_______________(Object[] var0) { - Vec3d var1 = (Vec3d)var0[0]; - long var2 = (Long)var0[1]; - var2 = 21468203664412L ^ var2; - long var4 = var2 ^ 14330539846531L; - Camera var6 = b.getEntityRenderDispatcher().camera; - int var7 = b.getWindow().getHeight(); - int[] var8 = a_intArr(new Object[]{var4}); - Vector3f var9 = m; - Vec3d var10 = var6.getCameraPos(); - double var11 = var1.x - var10.x; - double var13 = var1.y - var10.y; - double var15 = var1.z - var10.z; - Vector4f var17 = n.set((float)var11, (float)var13, (float)var15, 1.0F).mul(f); - Matrix4f var18 = k.set(d); - Matrix4f var19 = l.set(e); - var18.mul(var19).project(var17.x(), var17.y(), var17.z(), var8, var9); - return new Vec3d(var9.x / b.getWindow().getScaleFactor(), (var7 - var9.y) / b.getWindow().getScaleFactor(), var9.z); - } - - private static double a_double_________(Object[] var0) { - double var1 = (Double)var0[0]; - double var3 = (Double)var0[1]; - long var5 = (Long)var0[2]; - var5 = 21468203664412L ^ var5; - long var7 = var5 ^ 31231179932360L; - return var3 + (var1 - var3) * a_float_______________(new Object[]{var7}); - } - - public static Vec3d b(Object[] var0) { - Entity var3 = (Entity)var0[0]; - long var1 = (Long)var0[1]; - var1 = 21468203664412L ^ var1; - long var4 = var1 ^ 8285271159347L; - long var6 = var1 ^ 100890573525522L; - Vec3d var8 = PositionUtil.c(new Object[]{var3, var4}); - double var10000 = var3.getX(); - double var10001 = var8.x; - Object[] var10004 = new Object[]{null, null, var6}; - var10004[1] = var10001; - var10004[0] = var10000; - double var9 = a_double_________(var10004); - var10000 = var3.getY(); - var10001 = var8.y; - var10004 = new Object[]{null, null, var6}; - var10004[1] = var10001; - var10004[0] = var10000; - double var11 = a_double_________(var10004); - var10000 = var3.getZ(); - var10001 = var8.z; - var10004 = new Object[]{null, null, var6}; - var10004[1] = var10001; - var10004[0] = var10000; - double var13 = a_double_________(var10004); - return new Vec3d(var9, var11, var13); - } - - public static Color b_Color_____(Object[] var0) { - Color var2 = (Color)var0[0]; - int var1 = (Integer)var0[1]; - int var3 = (Integer)var0[2]; - long var4 = (Long)var0[3]; - var4 = 21468203664412L ^ var4; - long var6 = var4 ^ 26718476449320L; - Event.b(); - int var9 = var2.getRGB(); - if (var9 != s) { - Color.RGBtoHSB(var2.getRed(), var2.getGreen(), var2.getBlue(), r); - s = var9; - } - - float var10 = 0.5F + 0.5F * Math.abs(((float)(a_long(new Object[]{var6}) % 2000L) / 1000.0F + (float)var1 / var3 * 2.0F) % 2.0F - 1.0F); - return new Color(Color.HSBtoRGB(r[0], r[1], Math.min(var10, 1.0F))); - } - - public static Vec3d c(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 21468203664412L ^ var1; - long var3 = var1 ^ 124429728496769L; - return PositionUtil.a(new Object[]{b.getCameraEntity(), var3}); - } - - public static void c_void_(Object[] var0) { - Matrix4f var4 = (Matrix4f)var0[0]; - float var3 = (Float)var0[1]; - float var2 = (Float)var0[2]; - float var7 = (Float)var0[3]; - Color var1 = (Color)var0[4]; - long var5 = (Long)var0[5]; - var5 = 21468203664412L ^ var5; - long var8 = var5 ^ 87713662938147L; - int var10004 = var1.getRGB(); - Object[] var10007 = new Object[]{null, null, null, null, null, var8}; - var10007[4] = var10004; - var10007[3] = var7; - var10007[2] = var2; - var10007[1] = var3; - var10007[0] = var4; - RenderState.y(var10007); - } - - public static void e(Object[] var0) { - Matrix4f var2 = (Matrix4f)var0[0]; - float var3 = (Float)var0[1]; - float var7 = (Float)var0[2]; - float var1 = (Float)var0[3]; - Color var6 = (Color)var0[4]; - long var4 = (Long)var0[5]; - var4 = 21468203664412L ^ var4; - long var8 = var4 ^ 74669382892554L; - int var10005 = var6.getRGB(); - Object[] var10008 = new Object[]{null, null, null, null, null, null, var8}; - var10008[5] = var10005; - var10008[4] = 1.0F; - var10008[3] = var1; - var10008[2] = var7; - var10008[1] = var3; - var10008[0] = var2; - RenderState.A(var10008); - } - - public static void l(Object[] var0) { - Matrix4f var2 = (Matrix4f)var0[0]; - float var9 = (Float)var0[1]; - float var3 = (Float)var0[2]; - float var1 = (Float)var0[3]; - float var8 = (Float)var0[4]; - Color var7 = (Color)var0[5]; - float var6 = (Float)var0[6]; - long var4 = (Long)var0[7]; - var4 = 21468203664412L ^ var4; - long var10 = var4 ^ 14944260780811L; - RenderHelper8 var10000 = g; - MatrixCameraData var10001 = h; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, null, null, var10}; - var10012[9] = 0.25F; - var10012[8] = var6; - var10012[7] = var7; - var10012[6] = var8; - var10012[5] = var1; - var10012[4] = var3; - var10012[3] = var9; - var10012[2] = var2; - var10012[1] = var10001; - var10012[0] = var10000; - RenderState.C(var10012); - } - - public static void n(Object[] var0) { - Matrix4f var2 = (Matrix4f)var0[0]; - float var7 = (Float)var0[1]; - float var6 = (Float)var0[2]; - float var1 = (Float)var0[3]; - float var9 = (Float)var0[4]; - Color var5 = (Color)var0[5]; - float var8 = (Float)var0[6]; - long var3 = (Long)var0[7]; - var3 = 21468203664412L ^ var3; - long var10 = var3 ^ 76903503166082L; - Object[] var10009 = new Object[]{null, null, null, null, null, var5, t.set(var8), var10}; - var10009[4] = var9; - var10009[3] = var1; - var10009[2] = var6; - var10009[1] = var7; - var10009[0] = var2; - RenderState.u(var10009); - } - - public static void p(Object[] var0) { - Matrix4f var4 = (Matrix4f)var0[0]; - float var3 = (Float)var0[1]; - float var5 = (Float)var0[2]; - float var8 = (Float)var0[3]; - float var9 = (Float)var0[4]; - float var11 = (Float)var0[5]; - Color var7 = (Color)var0[6]; - Color var12 = (Color)var0[7]; - Color var6 = (Color)var0[8]; - Color var10 = (Color)var0[9]; - long var1 = (Long)var0[10]; - var1 = 21468203664412L ^ var1; - long var13 = var1 ^ 80001115006813L; - Object[] var10012 = new Object[]{null, null, null, null, null, var7, var12, var6, var10, t.set(var11), var13}; - var10012[4] = var9; - var10012[3] = var8; - var10012[2] = var5; - var10012[1] = var3; - var10012[0] = var4; - RenderState.w(var10012); - } - - public static void r(Object[] var0) { - Matrix4f var3 = (Matrix4f)var0[0]; - float var6 = (Float)var0[1]; - float var4 = (Float)var0[2]; - float var5 = (Float)var0[3]; - float var2 = (Float)var0[4]; - Color var1 = (Color)var0[5]; - long var7 = (Long)var0[6]; - var7 = 21468203664412L ^ var7; - long var9 = var7 ^ 114805589393942L; - Object[] var10008 = new Object[]{null, null, null, null, null, var1, var9}; - var10008[4] = var2; - var10008[3] = var5; - var10008[2] = var4; - var10008[1] = var6; - var10008[0] = var3; - RenderState.l(var10008); - } - - public static void v(Object[] var0) { - float var7 = (Float)var0[0]; - float var4 = (Float)var0[1]; - float var6 = (Float)var0[2]; - float var9 = (Float)var0[3]; - Matrix4f var5 = (Matrix4f)var0[4]; - FontRenderer var8 = (FontRenderer)var0[5]; - Color var1 = (Color)var0[6]; - long var2 = (Long)var0[7]; - var2 = 21468203664412L ^ var2; - long var10 = var2 ^ 30766224687645L; - RenderHelper8 var10000 = g; - MatrixCameraData var10001 = h; - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, var5, var1, var10}; - var10011[6] = var9; - var10011[5] = var6; - var10011[4] = var4; - var10011[3] = var7; - var10011[2] = var8; - var10011[1] = var10001; - var10011[0] = var10000; - RoundedTextureShader.d(var10011); - } - - public static void x(Object[] var0) { - float var3 = (Float)var0[0]; - float var14 = (Float)var0[1]; - float var4 = (Float)var0[2]; - float var12 = (Float)var0[3]; - float var5 = (Float)var0[4]; - float var6 = (Float)var0[5]; - float var2 = (Float)var0[6]; - float var8 = (Float)var0[7]; - float var13 = (Float)var0[8]; - Matrix4f var9 = (Matrix4f)var0[9]; - FontRenderer var7 = (FontRenderer)var0[10]; - Color var1 = (Color)var0[11]; - long var10 = (Long)var0[12]; - var10 = 21468203664412L ^ var10; - long var15 = var10 ^ 56482848374767L; - RenderHelper8 var10000 = g; - MatrixCameraData var10001 = h; - Object[] var10016 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, new Vector4f(var13), var1, var15}; - var10016[11] = var8; - var10016[10] = var2; - var10016[9] = var6; - var10016[8] = var5; - var10016[7] = var12; - var10016[6] = var4; - var10016[5] = var14; - var10016[4] = var3; - var10016[3] = var7; - var10016[2] = var9; - var10016[1] = var10001; - var10016[0] = var10000; - RoundedTextureShader.E(var10016); - } - - public static boolean a_boolean_______________________________________(Object[] var0) { - ItemStack var4 = (ItemStack)var0[0]; - float var3 = (Float)var0[1]; - float var5 = (Float)var0[2]; - float var6 = (Float)var0[3]; - Matrix4f var7 = (Matrix4f)var0[4]; - long var1 = (Long)var0[5]; - var1 = 21468203664412L ^ var1; - long var8 = var1 ^ 9522236869216L; - long var10 = var1 ^ 128083499229170L; - long var12 = var1 ^ 104337839420320L; - long var14 = var1 ^ 26661011895063L; - long var16 = var1 ^ 126440491870421L; - long var18 = var1 ^ 89702905285417L; - long var20 = var1 ^ 22379330228830L; - long var22 = var1 ^ 53180422251226L; - Event.b(); - Identifier var25 = var4.get(DataComponentTypes.ITEM_MODEL); - if (var25 == null) { - var25 = Registries.ITEM.getId(var4.getItem()); - } - - SpriteIdentifier var26 = new SpriteIdentifier(y, Identifier.of(var25.getNamespace(), "item/" + var25.getPath())); - Sprite var27 = b.getAtlasManager().getSprite(var26); - if (var27.getContents().getId().getPath().equals("missingno")) { - return false; - } else { - Identifier var28 = var27.getAtlasId(); - float var29 = var27.getMinU(); - float var30 = var27.getMaxU(); - float var31 = var27.getMinV(); - float var32 = var27.getMaxV(); - float var33 = 16.0F * var6; - float var10004 = var29 * var33; - float var10005 = var33 - var32 * var33; - float var10006 = (var30 - var29) * var33; - float var10007 = (var32 - var31) * var33; - Object[] var10014 = new Object[]{ - null, null, null, null, null, null, null, null, null, var7, FontRenderer.d_FontRenderer(new Object[]{var28, var18}), Color.WHITE, var22 - }; - var10014[8] = 0.0F; - var10014[7] = var10007; - var10014[6] = var10006; - var10014[5] = var10005; - var10014[4] = var10004; - var10014[3] = var33; - var10014[2] = var33; - var10014[1] = var5; - var10014[0] = var3; - x(var10014); - if (var4.getCount() > 1) { - String var34 = String.valueOf(var4.getCount()); - Font var10000 = Prestige.c.a(new Object[]{var12}); - float var10003 = var3 + var33 - Prestige.c.a(new Object[]{var12}).a_float______________(new Object[]{var34, var10}) * var6; - var10004 = var5 + var33 - Prestige.c.a(new Object[]{var12}).c_float___(new Object[]{var14}) * var6; - Object[] var10009 = new Object[]{null, null, null, null, null, Color.WHITE, var16}; - var10009[4] = var6; - var10009[3] = var10004; - var10009[2] = var10003; - var10009[1] = var34; - var10009[0] = var7; - var10000.w(var10009); - } - - if (var4.isItemBarVisible()) { - int var37 = (int)(var3 + 2.0F * var6); - int var35 = (int)(var5 + 16.0F * var6); - float var10001 = var37; - float var10002 = var35; - float var40 = var37 + 13.0F * var6; - var10004 = var35 + var6; - Color var45 = v; - Object[] var48 = new Object[]{null, null, null, null, null, null, null, var20}; - var48[6] = 2.0F; - var48[5] = var45; - var48[4] = var10004; - var48[3] = var40; - var48[2] = var10002; - var48[1] = var10001; - var48[0] = var7; - n(var48); - var10001 = var37; - var10002 = var35; - var40 = var37 + var4.getItemBarStep() * var6; - var10004 = var35 + var6; - int var47 = var4.getItemBarColor(); - Object[] var10010 = new Object[]{null, var8}; - var10010[0] = var47; - Color var46 = new Color(a_int______________________(var10010)); - var48 = new Object[]{null, null, null, null, null, null, null, var20}; - var48[6] = 2.0F; - var48[5] = var46; - var48[4] = var10004; - var48[3] = var40; - var48[2] = var10002; - var48[1] = var10001; - var48[0] = var7; - n(var48); - } - - return true; - } - } - - public static int a_int______________________(Object[] var0) { - int var3 = (Integer)var0[0]; - return var3 | 0xFF000000; - } - - public static float a_float_______________(Object[] var0) { - return b.getRenderTickCounter().getTickProgress(false); - } - - static { - short var10000 = 9696; - long var10001 = 3676374455798618111L; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/MinecraftAccess.java b/src/main/java/dev/zprestige/prestige/render/MinecraftAccess.java new file mode 100644 index 0000000..f195c89 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/MinecraftAccess.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.render; + +import net.minecraft.client.MinecraftClient; + +public interface MinecraftAccess { + MinecraftClient mc = MinecraftClient.getInstance(); +} diff --git a/src/main/java/dev/zprestige/prestige/render/ModuleToast.java b/src/main/java/dev/zprestige/prestige/render/ModuleToast.java new file mode 100644 index 0000000..9885d63 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/ModuleToast.java @@ -0,0 +1,19 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.type.NotificationType; + +public final class ModuleToast { + public final String title; + public final String message; + public final NotificationType type; + public final long createdAt; + public float animation; + public boolean dismissed; + + public ModuleToast(String moduleName, String text, NotificationType notificationType) { + this.title = moduleName; + this.message = text; + this.type = notificationType; + this.createdAt = System.currentTimeMillis(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/MouseAccessor.java b/src/main/java/dev/zprestige/prestige/render/MouseAccessor.java new file mode 100644 index 0000000..9b71a06 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/MouseAccessor.java @@ -0,0 +1,20 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.reflect.MethodAccessor; +import net.minecraft.client.Mouse; +import net.minecraft.client.input.MouseInput; + +public class MouseAccessor { + private final Mouse mouse; + private static final String MOUSE_BUTTON_METHOD = "onMouseButton"; + + public MouseAccessor(Mouse mouseHandler) { + this.mouse = mouseHandler; + } + + public void invokeMouseButton(long windowHandle, int button, int action, int modifiers) { + MethodAccessor.bindMapped( + this.mouse, MOUSE_BUTTON_METHOD, Mouse.class, void.class, new Class[]{long.class, MouseInput.class, int.class} + ).invoke(new Object[]{windowHandle, new MouseInput(button, modifiers), action}); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/MsdfFont.java b/src/main/java/dev/zprestige/prestige/render/MsdfFont.java new file mode 100644 index 0000000..12a6a56 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/MsdfFont.java @@ -0,0 +1,285 @@ +package dev.zprestige.prestige.render; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import dev.zprestige.prestige.config.MsdfFontMetrics; +import dev.zprestige.prestige.config.MsdfGlyph; +import dev.zprestige.prestige.config.ClasspathResource; +import dev.zprestige.prestige.data.MsdfFontState; +import dev.zprestige.prestige.data.GlCapabilityState; +import dev.zprestige.prestige.data.DrawBatchKey; +import dev.zprestige.prestige.math.RenderCacheUtil; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import java.awt.Color; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.Map; +import java.util.function.BiConsumer; +import java.util.function.Function; +import net.minecraft.client.texture.NativeImage; +import org.joml.Matrix4f; +import org.lwjgl.BufferUtils; +import org.lwjgl.opengl.GL11; + +public class MsdfFont { + private static final int[][] FORMATTING_COLORS = new int[32][3]; + private float distanceRange; + private int atlasWidth; + private int atlasHeight; + private float fontSize; + private float texelWidth; + private float texelHeight; + private final Int2ObjectOpenHashMap glyphs; + private final Map widthCache; + private MsdfFontMetrics metrics; + private GlTextureHandle atlasTexture; + private BiConsumer pipelineCustomizer; + private Function drawQueueProvider; + private DrawPipeline pipeline; + private DrawBatchKey batchKey; + + public MsdfFont(String name) throws IOException { + super(); + this.fontSize = 8.0F; + this.glyphs = new Int2ObjectOpenHashMap(); + this.widthCache = RenderCacheUtil.newLruCache(256); + this.drawQueueProvider = font -> { + ShapeRenderer.initDrawQueue(); + return (DrawCommandQueue)ShapeRenderer.drawQueue.get(); + }; + ClasspathResource jsonResource = ClasspathResource.of("assets/prestige/font/" + name + ".json"); + ClasspathResource pngResource = ClasspathResource.of("assets/prestige/font/" + name + ".png"); + + try ( + InputStream jsonStream = jsonResource.openStream(); + InputStream pngStream = pngResource.openStream(); + ) { + this.loadAtlas(new InputStreamReader(jsonStream), pngStream); + } + } + + private void loadAtlas(Reader reader, InputStream imageStream) throws IOException { + JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); + + { + label49: { + { + if ("msdf".equals(json.getAsJsonObject("atlas").get("type").getAsString())) { + break label49; + } + } + + throw new RuntimeException("not msdf atlas"); + } + } + + this.atlasWidth = json.getAsJsonObject("atlas").get("width").getAsInt(); + this.atlasHeight = json.getAsJsonObject("atlas").get("height").getAsInt(); + this.distanceRange = json.getAsJsonObject("atlas").get("distanceRange").getAsFloat(); + this.metrics = MsdfFontMetrics.fromJson(json.getAsJsonObject("metrics")); + this.texelWidth = 1.0F / this.atlasWidth; + this.texelHeight = 1.0F / this.atlasHeight; + NativeImage image = NativeImage.read(imageStream); + this.atlasTexture = GlTextureHandle.create(3553); + this.atlasTexture.allocate(32856, image.getWidth(), image.getHeight()); + int width = image.getWidth(); + int height = image.getHeight(); + ByteBuffer pixels = BufferUtils.createByteBuffer(width * height * 4); + pixels.order(ByteOrder.LITTLE_ENDIAN); + + for (int row = 0; row < height; row++) { + int column = 0; + + while (column < width) { + int argb = image.getColorArgb(column, row); + + { + pixels.putInt(argb); + column++; + } + } + } + + pixels.flip(); + GL11.glPixelStorei(3317, 1); + GL11.glPixelStorei(3314, 0); + GL11.glPixelStorei(3316, 0); + GL11.glPixelStorei(3315, 0); + this.atlasTexture.uploadRegion(0, 0, width, height, 6408, 5121, pixels); + GL11.glPixelStorei(3317, 4); + this.atlasTexture.setFilter(9729); + this.atlasTexture.setWrapMode(33071); + image.close(); + + for (JsonElement glyphElement : json.getAsJsonArray("glyphs")) { + MsdfGlyph glyph = MsdfGlyph.fromJson(glyphElement.getAsJsonObject()); + this.glyphs.put(glyph.getCodePoint(), glyph); + } + } + + public void setPipelineCustomizer(BiConsumer customizer) { + this.pipelineCustomizer = customizer; + } + + public void setDrawQueueProvider(Function provider) { + this.drawQueueProvider = provider; + } + + public void drawString(Matrix4f matrix, String text, float textX, float textY, float size, int color) { + DrawCommandQueue queue = (DrawCommandQueue)this.drawQueueProvider.apply(this); + DrawBatchKey key = this.getBatchKey(); + Matrix4f transform = new Matrix4f(matrix); + float baseline = this.metrics.getAscender() * size; + float[] cursorX = new float[]{textX}; + this.forEachGlyph(text, (GlyphVisitor)(codePoint, glyph) -> { + cursorX[0] = cursorX[0] + this.drawGlyph(queue, key, transform, glyph, cursorX[0], textY, size, baseline, color); + return true; + }); + } + + public void drawShadowedString(Matrix4f matrix, String text, float textX, float textY, float size, Color color) { + int argb = color.getRGB(); + this.drawString(matrix, text, textX + 0.5F, textY + 0.5F, size, ((argb >>> 24 & 0xFF) * 140 >> 8) << 24); + this.drawString(matrix, text, textX, textY, size, argb); + } + + public void drawText(Matrix4f matrix, String text, float textX, float textY, Color color) { + this.drawShadowedString(matrix, text, textX, textY, this.fontSize, color); + } + + public void drawTextScaled(Matrix4f matrix, String text, float textX, float textY, float scale, Color color) { + this.drawShadowedString(matrix, text, textX, textY, this.fontSize * scale, color); + } + + public float getTextWidth(String text) { + return this.getTextWidth(text, this.fontSize); + } + + public float getTextWidth(String text, float size) { + if (text.isEmpty()) { + return 0.0F; + } else { + Float cached = (Float)this.widthCache.get(text); + float unitWidth; + if (cached != null) { + unitWidth = cached; + } else { + float[] total = new float[]{0.0F}; + this.forEachGlyph(text, (GlyphVisitor)(codePoint, glyph) -> { + total[0] += glyph.getAdvance(); + return true; + }); + unitWidth = total[0]; + this.widthCache.put(text, unitWidth); + } + + return size * unitWidth; + } + } + + public float getLineHeight() { + return this.getLineHeight(this.fontSize); + } + + public float getLineHeight(float size) { + return this.metrics.getLineHeight() * size; + } + + private void forEachGlyph(String text, GlyphVisitor visitor) { + int length = text.length(); + int index = 0; + + while (index < length) { + int codePoint = text.codePointAt(index); + if (codePoint == 167 && index + 1 < length) { + index += 2; + } else { + index += Character.charCount(codePoint); + MsdfGlyph glyph = (MsdfGlyph)this.glyphs.get(codePoint); + if (glyph != null && !visitor.visit(codePoint, glyph)) { + return; + } + } + } + } + + public float getFontSize() { + return this.fontSize; + } + + public void setFontSize(float size) { + this.fontSize = size; + } + + private float drawGlyph(DrawCommandQueue queue, DrawBatchKey key, Matrix4f matrix, MsdfGlyph glyph, float cursorX, float textY, float size, float baseline, int color) { + if (glyph.getPlaneRight() - glyph.getPlaneLeft() != 0.0F) { + float left = cursorX + glyph.getPlaneLeft() * size; + float right = cursorX + glyph.getPlaneRight() * size; + float top = textY + baseline - glyph.getPlaneTop() * size; + float bottom = textY + baseline - glyph.getPlaneBottom() * size; + float minU = glyph.getAtlasLeft() * this.texelWidth; + float maxU = glyph.getAtlasRight() * this.texelWidth; + queue.enqueue(new GlyphQuadCommand(key, left, top, right, bottom, color, minU, 1.0F - glyph.getAtlasTop() * this.texelHeight, maxU, 1.0F - glyph.getAtlasBottom() * this.texelHeight, matrix)); + } + + return size * glyph.getAdvance(); + } + + public DrawBatchKey getBatchKey() { + if (this.batchKey == null) { + this.batchKey = new DrawBatchKey(null, this.getPipeline()); + } + + return this.batchKey; + } + + public DrawPipeline getPipeline() { + if (this.pipeline == null) { + VertexLayout format = VertexLayouts.POSITION_COLOR_UV; + RenderStateElement[] states = new RenderStateElement[]{RenderStateElement.MAIN_TARGET, RenderStateElement.shader(CoreShaders.MSDF_TEXT), null, null, null, null}; + states[2] = RenderStateElement.capability(2884, false, true); + states[3] = RenderStateElement.blend(true, true); + states[4] = new GlCapabilityState(2929, false); + states[5] = new MsdfFontState(this.atlasTexture, this.distanceRange / this.atlasWidth, this.distanceRange / this.atlasHeight); + this.pipeline = new DrawPipeline(format, 4, false, states); + if (this.pipelineCustomizer != null) { + this.pipelineCustomizer.accept(this, this.pipeline); + } + } + + return this.pipeline; + } + + public void close() { + if (this.atlasTexture != null) { + this.atlasTexture.close(); + } + } + + static { + for (int index = 0; index < 32; index++) { + int base = (index >> 3 & 1) * 85; + int red = (index >> 2 & 1) * 170 + base; + int green = (index >> 1 & 1) * 170 + base; + int blue = (index & 1) * 170 + base; + if (index == 6) { + red += 85; + } + + if (index >= 16) { + red /= 4; + green /= 4; + blue /= 4; + } + + FORMATTING_COLORS[index][0] = red; + FORMATTING_COLORS[index][1] = green; + FORMATTING_COLORS[index][2] = blue; + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/Notification.java b/src/main/java/dev/zprestige/prestige/render/Notification.java new file mode 100644 index 0000000..d813396 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/Notification.java @@ -0,0 +1,80 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.math.UiMath; +import dev.zprestige.prestige.type.NotificationType; +import dev.zprestige.prestige.util.NotificationManager; +import java.awt.Color; +import org.joml.Matrix4f; + +public class Notification { + public final String title; + public final String message; + private final long durationMs; + public final long createdAt; + public float animation; + public boolean appearing; + public boolean dismissing; + public boolean finished; + private GlTextureHandle iconTexture; + private final String iconPath; + private final Color accentColor; + + public Notification(String heading, String body, long duration, NotificationType type) { + this.title = heading; + this.message = body; + this.durationMs = duration; + this.createdAt = System.currentTimeMillis(); + this.animation = 0.0F; + this.appearing = true; + this.dismissing = false; + this.finished = false; + this.iconPath = "assets/prestige/icons/notifications/" + type.name().toLowerCase() + ".png"; + this.accentColor = type.color; + } + + public float render(Matrix4f matrix, BufferSource buffers, CameraMatrices context, float posX, float posY, float width, float height, boolean visible) { + if (this.iconTexture == null) { + this.iconTexture = TextureLoader.loadTexture(this.iconPath); + } + + posX += (width + 30.0F) * (1.0F - this.animation); + if (this.appearing) { + this.animation = UiMath.approach(this.animation, 1.0F, NotificationManager.animationDelta); + if (this.animation >= 0.99F) { + this.animation = 1.0F; + this.appearing = false; + } + } + + if (this.dismissing) { + this.animation = UiMath.approach(this.animation, 0.0F, NotificationManager.animationDelta * 2.0F); + if (this.animation <= 0.01F) { + this.animation = 0.0F; + this.finished = true; + return this.animation * (height + 10.0F); + } + } + + if (System.currentTimeMillis() - this.createdAt >= this.durationMs && !this.dismissing) { + this.dismissing = true; + } + + if (!visible) { + return this.animation * (height + 10.0F); + } else { + BlurredRoundedRectShader.drawBlurredRect(buffers, context, matrix, posX, posY, width, height, 5, 5.0F); + RoundedRectShader.drawRoundedRect(buffers, context, matrix, posX, posY, width, height, new Color(0.05490196F, 0.05490196F, 0.05490196F, 150.0F * this.animation / 255.0F), 5.0F); + Render2D.drawTexture(posX + 5.0F, posY + 6.0F, 16.0F, 16.0F, matrix, this.iconTexture, UiMath.withAlpha(this.accentColor, this.animation)); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, this.title, posX + 30.0F, posY + 2.0F, 0.9F, UiMath.withAlpha(Color.WHITE, this.animation)); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, this.message, posX + 30.0F, posY + 12.0F, 0.8F, UiMath.withAlpha(new Color(150, 150, 150), this.animation)); + float timeProgress = 1.0F - Math.max(0.0F, (float)(this.durationMs - (System.currentTimeMillis() - this.createdAt))) / (float)this.durationMs; + if (timeProgress < 1.0F) { + Render2D.drawRoundedRect(matrix, posX + 2.0F, posY + height - 6.0F, posX + 8.0F + (width - 4.0F - (width - 4.0F) * timeProgress - 4.0F), posY + height - 1.0F, this.accentColor, 3.0F); + } + + return this.animation * (height + 10.0F); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/NotificationTypeSwitchMap.java b/src/main/java/dev/zprestige/prestige/render/NotificationTypeSwitchMap.java new file mode 100644 index 0000000..df37698 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/NotificationTypeSwitchMap.java @@ -0,0 +1,30 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.type.NotificationType; + +// $VF: synthetic class +public class NotificationTypeSwitchMap { + public static final int[] SWITCH_MAP = new int[NotificationType.values().length]; + + static { + try { + SWITCH_MAP[NotificationType.SUCCESS.ordinal()] = 1; + } catch (NoSuchFieldError missingSuccess) { + } + + try { + SWITCH_MAP[NotificationType.ERROR.ordinal()] = 2; + } catch (NoSuchFieldError missingError) { + } + + try { + SWITCH_MAP[NotificationType.WARNING.ordinal()] = 3; + } catch (NoSuchFieldError missingWarning) { + } + + try { + SWITCH_MAP[NotificationType.INFO.ordinal()] = 4; + } catch (NoSuchFieldError missingInfo) { + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/OutlineShader.java b/src/main/java/dev/zprestige/prestige/render/OutlineShader.java index eb9c64f..c29d618 100644 --- a/src/main/java/dev/zprestige/prestige/render/OutlineShader.java +++ b/src/main/java/dev/zprestige/prestige/render/OutlineShader.java @@ -1,157 +1,59 @@ package dev.zprestige.prestige.render; -import dev.zprestige.prestige.data.IntData; +import dev.zprestige.prestige.data.ProgramUniforms; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.Consumer; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL13; public class OutlineShader extends PostShader { - private final Color a; + private final Color color; - public OutlineShader(long var1) { - super("shaders/post.vert", "shaders/outline.frag", (37492497025550L)); - var1 = 0L; - var1 = 110933183383022L ^ var1; - long var3 = var1 ^ 78055696158688L; - this.a = Color.WHITE; + public OutlineShader() { + super("shaders/post.vert", "shaders/outline.frag"); + this.color = Color.WHITE; } @Override - public TextRenderer b(Object[] var1) { - RenderHelper8 var5 = (RenderHelper8)var1[0]; - int var2 = (Integer)var1[1]; - long var3 = (Long)var1[2]; - long var6 = var3 ^ 122531800221372L; - return var5.a( - new Object[]{ - this.j + public MappedMeshBuilder getPipelineBuffer(BufferSource buffers, int textureId) { + return buffers.getBuffer( + (DrawPipeline)(this.pipelineCache .computeIfAbsent( - var2, - lpL134_0 -> { - VertexFormat var10002 = VertexAttribute.c; - Uniform[] var10005 = new Uniform[]{ - Uniform.a_IntSupplierData(new Object[]{this.g.a}), Uniform.a_ShaderData(new Object[]{RenderHelper22.b}), null, null, null, null + textureId, + cacheKey -> { + VertexLayout format = VertexLayouts.POSITION_COLOR_UV; + RenderStateElement[] states = new RenderStateElement[]{ + RenderStateElement.target(this.maskFramebuffer.glId), RenderStateElement.shader(CoreShaders.POS_COLOR_TEX), null, null, null, null }; - Object[] var10012 = new Object[]{null, null, true}; - var10012[1] = false; - var10012[0] = 2884; - var10005[2] = Uniform.b_IntBoolData2(var10012); - Object[] var10011 = new Object[]{null, true}; - var10011[0] = true; - var10005[3] = Uniform.a_BoolData2(var10011); - var10011 = new Object[]{null, 515}; - var10011[0] = 519; - var10005[4] = Uniform.a_IntData2(var10011); - var10005[5] = Uniform.a_Uniform(new Object[]{(Consumer)lpL135_0 -> { + states[2] = RenderStateElement.capability(2884, false, true); + states[3] = RenderStateElement.blend(true, true); + states[4] = RenderStateElement.depthFunc(519, 515); + states[5] = RenderStateElement.onApply((Consumer)pass -> { GL13.glActiveTexture(33984); - GL11.glBindTexture(3553, var2); - }}); - return new DrawMode(var10002, 4, true, var10005, 138006566364233L); + GL11.glBindTexture(3553, textureId); + }); + return new DrawPipeline(format, 4, true, states); } - ), - var6 - } + )) ); } @Override - public void c(Object[] var1) { - IntData var2 = (IntData)var1[0]; - var2.a("color", this.a.getRed() / 255.0F, this.a.getGreen() / 255.0F, this.a.getBlue() / 255.0F, this.a.getAlpha() / 255.0F); + public void setDefaultUniforms(ProgramUniforms uniforms) { + uniforms.setVec4("color", this.color.getRed() / 255.0F, this.color.getGreen() / 255.0F, this.color.getBlue() / 255.0F, this.color.getAlpha() / 255.0F); } @Override - public VertexBuffer a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 98867838856239L; - return new VertexBuffer().b(new Object[]{this.a_Shader(new Object[0]), (Consumer)lpL133_0 -> { + public FullscreenPassChain createCompositePasses() { + return new FullscreenPassChain().addDynamicPass(this.getShader(), (Consumer)pass -> { GL13.glActiveTexture(33984); - GL11.glBindTexture(3553, this.h.a); - this.e(new Object[]{30083616553634L}); - IntData.a(this.a_Shader(new Object[0]).a(new Object[0])).a("oneTexel", this.d > 0 ? 1.0F / this.d : 0.0F, this.e > 0 ? 1.0F / this.e : 0.0F); - }, (java.util.function.IntSupplier)RenderUtil::a, var4}); + GL11.glBindTexture(3553, this.maskTexture.glId); + this.applyUniforms(); + ProgramUniforms.of(this.getShader().getProgramId()).setVec2("oneTexel", this.maskWidth > 0 ? 1.0F / this.maskWidth : 0.0F, this.maskHeight > 0 ? 1.0F / this.maskHeight : 0.0F); + }, (java.util.function.IntSupplier)RenderCore::getMainFramebufferId); } static { - Shader var10000 = RenderHelper22.b; - Object[] var10005 = new Object[]{null, null, 0L}; - var10005[1] = 0; - var10005[0] = "texSampler"; - var10000.a_void_____________________________(var10005); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static MatchException b(MatchException var0) { - return var0; + CoreShaders.POS_COLOR_TEX.setUniformInt("texSampler", 0); } } diff --git a/src/main/java/dev/zprestige/prestige/render/PearlThrowSolution.java b/src/main/java/dev/zprestige/prestige/render/PearlThrowSolution.java new file mode 100644 index 0000000..651aaee --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/PearlThrowSolution.java @@ -0,0 +1,17 @@ +package dev.zprestige.prestige.render; + +public final class PearlThrowSolution { + public int throwTick; + public float yaw; + public float pitch; + public double missDistance; + public int interceptTick; + + public PearlThrowSolution(int startTick, float throwYaw, float throwPitch, double distance, int closestTick) { + this.throwTick = startTick; + this.yaw = throwYaw; + this.pitch = throwPitch; + this.missDistance = distance; + this.interceptTick = closestTick; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/PostShader.java b/src/main/java/dev/zprestige/prestige/render/PostShader.java index 1b0a6b9..d723854 100644 --- a/src/main/java/dev/zprestige/prestige/render/PostShader.java +++ b/src/main/java/dev/zprestige/prestige/render/PostShader.java @@ -1,286 +1,123 @@ package dev.zprestige.prestige.render; import it.unimi.dsi.fastutil.Pair; -import dev.zprestige.prestige.data.IntData; -import dev.zprestige.prestige.event.Event; +import dev.zprestige.prestige.data.ProgramUniforms; import dev.zprestige.prestige.type.GlPrimitive; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.Map; import java.util.function.Consumer; import org.lwjgl.opengl.GL11; public abstract class PostShader extends ShaderBase { - public VertexBuffer c; - public int d; - public int e; - public boolean f; - public Framebuffer g; - public FontRenderer h; - private static final int i = 128; - public final Map j; - private Consumer k; - private boolean l; + public FullscreenPassChain compositePasses; + public int maskWidth; + public int maskHeight; + public boolean initialized; + public GlFramebuffer maskFramebuffer; + public GlTextureHandle maskTexture; + public final Map pipelineCache; + private Consumer uniformOverride; + private boolean maskDrawn; - public PostShader(String var1, String var2, long var3) { - super(var1, var2, false, (115399614053456L)); - var3 = 0L; - var3 = 131965980497184L ^ var3; - long var5 = var3 ^ 37624295549282L; - long var7 = var3 ^ 18627950766448L; - this.d = -1; - this.e = -1; - this.f = false; - this.g = Framebuffer.a(new Object[]{var5}); - this.j = new java.util.HashMap(); // reconstructed: the ZKM ref was lost - this.h = FontRenderer.a(new Object[]{3553, 0L}); // reconstructed: colour attachment texture (GL_TEXTURE_2D), sized on first use in g() + public PostShader(String vertexPath, String fragmentPath) { + super(vertexPath, fragmentPath, false, (115399614053456L)); + this.maskWidth = -1; + this.maskHeight = -1; + this.initialized = false; + this.maskFramebuffer = GlFramebuffer.create(); + this.pipelineCache = new java.util.HashMap(); // reconstructed: the ZKM ref was lost + this.maskTexture = GlTextureHandle.create(3553); // reconstructed: colour attachment texture (GL_TEXTURE_2D), sized on first use in g() } - public void a_void_______________(Object[] var1) { - RenderHelper8 var3 = (RenderHelper8)var1[0]; - long var4 = (Long)var1[2]; - var4 = 131965980497184L ^ var4; - long var6 = var4 ^ 98043818924559L; - long var8 = var4 ^ 130329971676169L; - long var10 = var4 ^ 10211965472900L; - this.g(new Object[]{var8}); - this.f(new Object[]{var10}); - var3.a_Stream(new Object[]{var6}) - .filter(lpL126_0 -> ((DrawMode)((Pair)lpL126_0).key()).b(new Object[0])) - .forEach(lpL125_0 -> ((TextRenderer)((it.unimi.dsi.fastutil.Pair)lpL125_0).value()).i_WorldContract(new Object[]{GlPrimitive.QUADS, 3098493320255L})); + public void prepareMask(BufferSource buffers, dev.zprestige.prestige.data.CameraMatrices context) { + this.ensureInitialized(); + this.resizeIfNeeded(); + buffers.streamActiveBuffers() + .filter(candidate -> ((DrawPipeline)((Pair)candidate).key()).isEntityMask()) + .forEach(entry -> ((MappedMeshBuilder)((it.unimi.dsi.fastutil.Pair)entry).value()).generateIndices(GlPrimitive.QUADS)); } - public void b_void______(Object[] var1) { - long var4 = (Long)var1[2]; - var4 = 131965980497184L ^ var4; - long var6 = var4 ^ 124987963754920L; - long var8 = var4 ^ 83279209821324L; - if (this.f && this.c != null) { - if (this.l) { - this.l = false; - boolean var11 = GL11.glGetBoolean(2884); - boolean var12 = GL11.glGetBoolean(3042); - boolean var13 = GL11.glGetBoolean(2929); + public void renderComposite(BufferSource buffers, dev.zprestige.prestige.data.CameraMatrices context) { + if (this.initialized && this.compositePasses != null) { + if (this.maskDrawn) { + this.maskDrawn = false; + boolean cullWasEnabled = GL11.glGetBoolean(2884); + boolean blendWasEnabled = GL11.glGetBoolean(3042); + boolean depthWasEnabled = GL11.glGetBoolean(2929); GL11.glDisable(2884); GL11.glEnable(3042); GL11.glBlendFunc(770, 771); GL11.glDisable(2929); - this.c.a_void______________________________(new Object[]{var6}); - if (var13) { + this.compositePasses.render(); + if (depthWasEnabled) { GL11.glEnable(2929); } - if (var11) { + if (cullWasEnabled) { GL11.glEnable(2884); } - if (!var12) { + if (!blendWasEnabled) { GL11.glDisable(3042); } - Framebuffer var10000 = this.g; - Object[] var10007 = new Object[]{null, null, null, null, var8}; - var10007[3] = 0.0F; - var10007[2] = 0.0F; - var10007[1] = 0.0F; - var10007[0] = 0.0F; - var10000.e(var10007); + this.maskFramebuffer.clearColor(0.0F, 0.0F, 0.0F, 0.0F); } } } - public final TextRenderer a_TextRenderer(Object[] var1) { - RenderHelper8 var5 = (RenderHelper8)var1[0]; - int var2 = (Integer)var1[1]; - long var3 = (Long)var1[2]; - var3 = 131965980497184L ^ var3; - long var6 = var3 ^ 118756937571420L; - this.l = true; - Object[] var10005 = new Object[]{null, null, var6}; - var10005[1] = var2; - var10005[0] = var5; - return this.b(var10005); + public final MappedMeshBuilder getMaskBuffer(BufferSource buffers, int textureId) { + this.maskDrawn = true; + return this.getPipelineBuffer(buffers, textureId); } - public abstract TextRenderer b(Object[] var1); + public abstract MappedMeshBuilder getPipelineBuffer(BufferSource buffers, int textureId); - public abstract VertexBuffer a(Object[] var1); + public abstract FullscreenPassChain createCompositePasses(); - public abstract void c(Object[] var1); + public abstract void setDefaultUniforms(ProgramUniforms uniforms); - public final void d(Object[] var1) { - Consumer var2 = (Consumer)var1[0]; - this.k = var2; + public final void setUniformOverride(Consumer override) { + this.uniformOverride = override; } - public final void e(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 131965980497184L ^ var2; - long var4 = var2 ^ 48655475447922L; - Event.b(); - IntData var7 = IntData.a(this.a_Shader(new Object[0]).a(new Object[0])); - if (this.k != null) { - this.k.accept(var7); + public final void applyUniforms() { + ProgramUniforms uniforms = ProgramUniforms.of(this.getShader().getProgramId()); + if (this.uniformOverride != null) { + this.uniformOverride.accept(uniforms); } else { - this.c(new Object[]{var7, var4}); + this.setDefaultUniforms(uniforms); } } - public void f(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 131965980497184L ^ var2; - long var4 = var2 ^ 13766546752517L; - long var6 = var2 ^ 96329862459142L; - long var8 = var2 ^ 134913156825019L; - long var10 = var2 ^ 67982258152471L; - long var12 = var2 ^ 55828201241406L; - if (a.getWindow() != null) { - int var15 = a.getWindow().getFramebufferWidth(); - int var16 = a.getWindow().getFramebufferHeight(); - if (var15 > 0 && var16 > 0) { - if (this.d != var15 || this.e != var16) { - this.d = var15; - this.e = var16; - FontRenderer var10001 = this.h; - int var10002 = this.d; - int var10003 = this.e; - Object[] var10006 = new Object[]{null, null, var8}; - var10006[1] = var10003; - var10006[0] = var10002; - this.h = var10001.c_FontRenderer(var10006); - FontRenderer var10000 = this.h; - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = 9729; - var10000.b_void_______(var10004); - var10000 = this.h; - var10004 = new Object[]{null, var12}; - var10004[0] = 33071; - var10000.e(var10004); - Framebuffer var19 = this.g; - Object[] var10005 = new Object[]{null, this.h, var4}; - var10005[0] = 36064; - var19.b(var10005); - Framebuffer var20 = this.g; - Object[] var10007 = new Object[]{null, null, null, null, var10}; - var10007[3] = 0.0F; - var10007[2] = 0.0F; - var10007[1] = 0.0F; - var10007[0] = 0.0F; - var20.e(var10007); + public void resizeIfNeeded() { + if (mc.getWindow() != null) { + int fbWidth = mc.getWindow().getFramebufferWidth(); + int fbHeight = mc.getWindow().getFramebufferHeight(); + if (fbWidth > 0 && fbHeight > 0) { + if (this.maskWidth != fbWidth || this.maskHeight != fbHeight) { + this.maskWidth = fbWidth; + this.maskHeight = fbHeight; + this.maskTexture = this.maskTexture.resize(this.maskWidth, this.maskHeight); + this.maskTexture.setFilter(9729); + this.maskTexture.setWrapMode(33071); + this.maskFramebuffer.attachTexture(36064, this.maskTexture); + this.maskFramebuffer.clearColor(0.0F, 0.0F, 0.0F, 0.0F); } } } } - public void g(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 131965980497184L ^ var2; - long var4 = var2 ^ 126736450207880L; - long var6 = var2 ^ 75783473736279L; - long var8 = var2 ^ 44383856683915L; - long var10 = var2 ^ 86612443836555L; - long var12 = var2 ^ 72658991472794L; - long var14 = var2 ^ 84696270847923L; - if (!this.f) { - this.d = a.getWindow().getFramebufferWidth(); - this.e = a.getWindow().getFramebufferHeight(); - FontRenderer var10000 = this.h; - int var10002 = this.d; - int var10003 = this.e; - Object[] var10006 = new Object[]{null, null, null, var6}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = 33323; - var10000.c(var10006); - var10000 = this.h; - Object[] var10004 = new Object[]{null, var8}; - var10004[0] = 9729; - var10000.b_void_______(var10004); - var10000 = this.h; - var10004 = new Object[]{null, var14}; - var10004[0] = 33071; - var10000.e(var10004); - Framebuffer var19 = this.g; - Object[] var10005 = new Object[]{null, this.h, var4}; - var10005[0] = 36064; - var19.b(var10005); - Framebuffer var20 = this.g; - Object[] var10007 = new Object[]{null, null, null, null, var12}; - var10007[3] = 0.0F; - var10007[2] = 0.0F; - var10007[1] = 0.0F; - var10007[0] = 0.0F; - var20.e(var10007); - this.c = this.a(new Object[]{var10}); - this.f = true; - } - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + public void ensureInitialized() { + if (!this.initialized) { + this.maskWidth = mc.getWindow().getFramebufferWidth(); + this.maskHeight = mc.getWindow().getFramebufferHeight(); + this.maskTexture.allocate(33323, this.maskWidth, this.maskHeight); + this.maskTexture.setFilter(9729); + this.maskTexture.setWrapMode(33071); + this.maskFramebuffer.attachTexture(36064, this.maskTexture); + this.maskFramebuffer.clearColor(0.0F, 0.0F, 0.0F, 0.0F); + this.compositePasses = this.createCompositePasses(); + this.initialized = true; } } } diff --git a/src/main/java/dev/zprestige/prestige/render/ProjectionMatrixAccessor.java b/src/main/java/dev/zprestige/prestige/render/ProjectionMatrixAccessor.java new file mode 100644 index 0000000..965708c --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/ProjectionMatrixAccessor.java @@ -0,0 +1,26 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.reflect.MethodAccessor; +import net.minecraft.client.render.ProjectionMatrix2; +import org.joml.Matrix4f; + +public class ProjectionMatrixAccessor { + private static final MethodAccessor GET_MATRIX_METHOD; + private final ProjectionMatrix2 projectionMatrix; + + public ProjectionMatrixAccessor(ProjectionMatrix2 projection) { + this.projectionMatrix = projection; + } + + public Matrix4f getMatrix(float width, float height) { + try { + return (Matrix4f)GET_MATRIX_METHOD.invoke(this.projectionMatrix, new Object[]{width, height}); + } catch (Throwable error) { + throw new RuntimeException(error); + } + } + + static { + GET_MATRIX_METHOD = MethodAccessor.ofMapped(ProjectionMatrix2.class, "getMatrix", Matrix4f.class, new Class[]{float.class, float.class}); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/QueuedSlotSelect.java b/src/main/java/dev/zprestige/prestige/render/QueuedSlotSelect.java new file mode 100644 index 0000000..755de2a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/QueuedSlotSelect.java @@ -0,0 +1,28 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.inventory.InventoryUtil; + +public class QueuedSlotSelect implements Runnable { + public final int slot; + public final SilentRotationManager rotationManager; + + public QueuedSlotSelect(SilentRotationManager owner, int hotbarSlot) { + this.slot = hotbarSlot; + this.rotationManager = owner; + } + + @Override + public void run() { + if (MinecraftAccess.mc.player == null) { + return; + } + + if (this.rotationManager.actedThisTick) { + this.rotationManager.scheduledTasks.add(this); + return; + } + + InventoryUtil.selectSlot(this.slot); + this.rotationManager.actedThisTick = true; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/QueuedSwapClick.java b/src/main/java/dev/zprestige/prestige/render/QueuedSwapClick.java new file mode 100644 index 0000000..357687c --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/QueuedSwapClick.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.render; + +public final class QueuedSwapClick { + public final Object owner; + public final int slotId; + public final int hotbarSlot; + public final Runnable callback; + + public QueuedSwapClick(Object requester, int slot, int button, Runnable onComplete) { + this.owner = requester; + this.slotId = slot; + this.hotbarSlot = button; + this.callback = onComplete; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/RainbowOutlineShader.java b/src/main/java/dev/zprestige/prestige/render/RainbowOutlineShader.java index 79f11b5..08773ce 100644 --- a/src/main/java/dev/zprestige/prestige/render/RainbowOutlineShader.java +++ b/src/main/java/dev/zprestige/prestige/render/RainbowOutlineShader.java @@ -1,162 +1,64 @@ package dev.zprestige.prestige.render; -import dev.zprestige.prestige.data.IntData; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.data.ProgramUniforms; import java.util.function.Consumer; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL13; public class RainbowOutlineShader extends PostShader { - private final float a; - private final float c; - private final float f; - private final float i; + private final float rainbowSpeed; + private final float saturation; + private final float brightness; + private final float glowSize; - public RainbowOutlineShader(long var1) { - super("shaders/post.vert", "shaders/rainbow_outline.frag", (62761229710868L)); - var1 = 0L; - var1 = 134503208840128L ^ var1; - long var3 = var1 ^ 73945566322132L; - this.a = 0.5F; - this.c = 0.2F; - this.f = 1.0F; - this.i = 1.0F; + public RainbowOutlineShader() { + super("shaders/post.vert", "shaders/rainbow_outline.frag"); + this.rainbowSpeed = 0.5F; + this.saturation = 0.2F; + this.brightness = 1.0F; + this.glowSize = 1.0F; } @Override - public TextRenderer b(Object[] var1) { - RenderHelper8 var2 = (RenderHelper8)var1[0]; - int var3 = (Integer)var1[1]; - long var4 = (Long)var1[2]; - long var6 = var4 ^ 122531800221372L; - return var2.a( - new Object[]{ - this.j + public MappedMeshBuilder getPipelineBuffer(BufferSource buffers, int textureId) { + return buffers.getBuffer( + (DrawPipeline)(this.pipelineCache .computeIfAbsent( - var3, - lpL137_0 -> { - VertexFormat var10002 = VertexAttribute.c; - Uniform[] var10005 = new Uniform[]{ - Uniform.a_IntSupplierData(new Object[]{this.g.a}), Uniform.a_ShaderData(new Object[]{RenderHelper22.b}), null, null, null, null + textureId, + cacheKey -> { + VertexLayout format = VertexLayouts.POSITION_COLOR_UV; + RenderStateElement[] states = new RenderStateElement[]{ + RenderStateElement.target(this.maskFramebuffer.glId), RenderStateElement.shader(CoreShaders.POS_COLOR_TEX), null, null, null, null }; - Object[] var10012 = new Object[]{null, null, true}; - var10012[1] = false; - var10012[0] = 2884; - var10005[2] = Uniform.b_IntBoolData2(var10012); - Object[] var10011 = new Object[]{null, true}; - var10011[0] = true; - var10005[3] = Uniform.a_BoolData2(var10011); - var10011 = new Object[]{null, 515}; - var10011[0] = 519; - var10005[4] = Uniform.a_IntData2(var10011); - var10005[5] = Uniform.a_Uniform(new Object[]{(Consumer)lpL138_0 -> { + states[2] = RenderStateElement.capability(2884, false, true); + states[3] = RenderStateElement.blend(true, true); + states[4] = RenderStateElement.depthFunc(519, 515); + states[5] = RenderStateElement.onApply((Consumer)pass -> { GL13.glActiveTexture(33984); - GL11.glBindTexture(3553, var3); - }}); - return new DrawMode(var10002, 4, true, var10005, 138006566364233L); + GL11.glBindTexture(3553, textureId); + }); + return new DrawPipeline(format, 4, true, states); } - ), - var6 - } + )) ); } @Override - public void c(Object[] var1) { - IntData var4 = (IntData)var1[0]; - var4.a("time", (float)(System.currentTimeMillis() - b) / 1000.0F).a("rainbowSpeed", 0.5F).a("saturation", 0.2F).a("brightness", 1.0F).a("size", 1.0F); + public void setDefaultUniforms(ProgramUniforms uniforms) { + uniforms.setFloat("time", (float)(System.currentTimeMillis() - START_TIME_MS) / 1000.0F).setFloat("rainbowSpeed", 0.5F).setFloat("saturation", 0.2F).setFloat("brightness", 1.0F).setFloat("size", 1.0F); } @Override - public VertexBuffer a(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = var2 ^ 98867838856239L; - return new VertexBuffer().b(new Object[]{this.a_Shader(new Object[0]), (Consumer)lpL136_0 -> { + public FullscreenPassChain createCompositePasses() { + return new FullscreenPassChain().addDynamicPass(this.getShader(), (Consumer)pass -> { GL13.glActiveTexture(33984); - GL11.glBindTexture(3553, this.h.a); - this.e(new Object[]{30083616553634L}); - IntData.a(this.a_Shader(new Object[0]).a(new Object[0])).a("oneTexel", this.d > 0 ? 1.0F / this.d : 0.0F, this.e > 0 ? 1.0F / this.e : 0.0F); - }, (java.util.function.IntSupplier)RenderUtil::a, var4}); + GL11.glBindTexture(3553, this.maskTexture.glId); + this.applyUniforms(); + ProgramUniforms.of(this.getShader().getProgramId()).setVec2("oneTexel", this.maskWidth > 0 ? 1.0F / this.maskWidth : 0.0F, this.maskHeight > 0 ? 1.0F / this.maskHeight : 0.0F); + }, (java.util.function.IntSupplier)RenderCore::getMainFramebufferId); } static { - Shader var10000 = RenderHelper22.b; - Object[] var10005 = new Object[]{null, null, 0L}; - var10005[1] = 0; - var10005[0] = "texSampler"; - var10000.a_void_____________________________(var10005); - } - - private static Field e(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field f(Class var0, String var1, Class var2) { - Field var3 = e(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = f(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method e(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method f(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = e(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = f(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static MatchException b(MatchException var0) { - return var0; + CoreShaders.POS_COLOR_TEX.setUniformInt("texSampler", 0); } } diff --git a/src/main/java/dev/zprestige/prestige/render/RandomUtil.java b/src/main/java/dev/zprestige/prestige/render/RandomUtil.java new file mode 100644 index 0000000..efe6bdf --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/RandomUtil.java @@ -0,0 +1,19 @@ +package dev.zprestige.prestige.render; + +import java.util.Random; + +public class RandomUtil { + public static final Random RANDOM = new Random(); + + public static float randomFloat(float min, float max) { + return clamp(min + RANDOM.nextFloat() * (max - min), min, max); + } + + public static int randomInt(int min, int max) { + return min + RANDOM.nextInt(max - min + 1); + } + + private static float clamp(float value, float min, float max) { + return Math.max(min, Math.min(max, value)); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/Render2D.java b/src/main/java/dev/zprestige/prestige/render/Render2D.java new file mode 100644 index 0000000..a03959d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/Render2D.java @@ -0,0 +1,184 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.world.PositionUtil; +import java.awt.Color; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.Camera; +import net.minecraft.client.texture.Sprite; +import net.minecraft.client.texture.SpriteAtlasTexture; +import net.minecraft.client.util.SpriteIdentifier; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.Registries; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.Vec3d; +import org.joml.Matrix4f; +import org.joml.Vector3f; +import org.joml.Vector4f; +import org.lwjgl.opengl.GL11; + +public class Render2D implements MinecraftAccess { + private static final MinecraftClient client = MinecraftClient.getInstance(); + public static net.minecraft.client.gui.DrawContext drawContext; + public static net.minecraft.client.util.math.MatrixStack matrices; + public static Matrix4f projectionMatrix = new Matrix4f(); + public static Matrix4f modelViewMatrix = new Matrix4f(); + public static Matrix4f cameraRotationMatrix = new Matrix4f(); + public static BufferSource currentBuffers; + public static CameraMatrices currentContext; + private static final int[] viewport = new int[4]; + private static boolean viewportCaptured = false; + private static final Matrix4f projectionViewScratch = new Matrix4f(); + private static final Matrix4f modelViewScratch = new Matrix4f(); + private static final Vector3f screenPosScratch = new Vector3f(); + private static final Vector4f viewPosScratch = new Vector4f(); + private static long lastFrameIndex = Long.MIN_VALUE; + private static long frameTimeMillis = 0L; + private static final Matrix4f matrixScratch = new Matrix4f(); + private static final float[] hsbScratch = new float[3]; + private static int cachedHsbRgb = 1; + private static final Vector4f radiiScratch = new Vector4f(); + private static final Color TRANSPARENT = new Color(0, 0, 0, 0); + private static final Color ITEM_BAR_BACKGROUND = new Color(0, 0, 0, 200); + private static final Identifier ITEMS_ATLAS = SpriteAtlasTexture.ITEMS_ATLAS_TEXTURE; + + public static void captureViewport() { + GL11.glGetIntegerv(2978, viewport); + viewportCaptured = true; + } + + private static int[] getViewport() { + if (!viewportCaptured) { + GL11.glGetIntegerv(2978, viewport); + viewportCaptured = true; + } + + return viewport; + } + + private static long getFrameTimeMillis() { + long frameIndex = RenderCore.getFrameCount(); + if (frameIndex != lastFrameIndex) { + lastFrameIndex = frameIndex; + frameTimeMillis = System.currentTimeMillis(); + } + + return frameTimeMillis; + } + + public static Vec3d worldToScreen(Vec3d worldPos) { + Camera camera = client.getEntityRenderDispatcher().camera; + int windowHeight = client.getWindow().getHeight(); + int[] viewportRect = getViewport(); + Vector3f screenPos = screenPosScratch; + Vec3d cameraPos = camera.getCameraPos(); + Vector4f viewPos = viewPosScratch.set((float)(worldPos.x - cameraPos.x), (float)(worldPos.y - cameraPos.y), (float)(worldPos.z - cameraPos.z), 1.0F).mul(cameraRotationMatrix); + projectionViewScratch.set(projectionMatrix).mul(modelViewScratch.set(modelViewMatrix)).project(viewPos.x(), viewPos.y(), viewPos.z(), viewportRect, screenPos); + return new Vec3d(screenPos.x / client.getWindow().getScaleFactor(), (windowHeight - screenPos.y) / client.getWindow().getScaleFactor(), screenPos.z); + } + + private static double interpolate(double current, double previous) { + return previous + (current - previous) * getTickDelta(); + } + + public static Vec3d getInterpolatedPos(Entity entity) { + Vec3d lastPos = PositionUtil.getLastPos(entity); + return new Vec3d(interpolate(entity.getX(), lastPos.x), interpolate(entity.getY(), lastPos.y), interpolate(entity.getZ(), lastPos.z)); + } + + public static Color getWaveColor(Color baseColor, int index, int count) { + int rgb = baseColor.getRGB(); + if (rgb != cachedHsbRgb) { + Color.RGBtoHSB(baseColor.getRed(), baseColor.getGreen(), baseColor.getBlue(), hsbScratch); + cachedHsbRgb = rgb; + } + + float brightness = 0.5F + 0.5F * Math.abs(((float)(getFrameTimeMillis() % 2000L) / 1000.0F + (float)index / count * 2.0F) % 2.0F - 1.0F); + return new Color(Color.HSBtoRGB(hsbScratch[0], hsbScratch[1], Math.min(brightness, 1.0F))); + } + + public static Vec3d getCameraEntityPos() { + return PositionUtil.getEntityPos(client.getCameraEntity()); + } + + public static void drawCircle(Matrix4f matrix, float centerX, float centerY, float radius, Color color) { + ShapeRenderer.drawCircle(matrix, centerX, centerY, radius, color.getRGB()); + } + + public static void drawCircleOutline(Matrix4f matrix, float centerX, float centerY, float radius, Color color) { + ShapeRenderer.drawRing(matrix, centerX, centerY, radius, 1.0F, color.getRGB()); + } + + public static void drawRoundedRectOutline(Matrix4f matrix, float x1, float y1, float x2, float y2, Color color, float radius) { + ShapeRenderer.drawRoundedRectOutline(currentBuffers, currentContext, matrix, x1, y1, x2, y2, color, radius, 0.25F); + } + + public static void drawRoundedRect(Matrix4f matrix, float x1, float y1, float x2, float y2, Color color, float radius) { + ShapeRenderer.drawRoundedRect(matrix, x1, y1, x2, y2, color, radiiScratch.set(radius)); + } + + public static void drawRoundedGradientRect(Matrix4f matrix, float x1, float y1, float x2, float y2, float radius, Color bottomLeftColor, Color bottomRightColor, Color topRightColor, Color topLeftColor) { + ShapeRenderer.drawGradientRoundedRect(matrix, x1, y1, x2, y2, bottomLeftColor, bottomRightColor, topRightColor, topLeftColor, radiiScratch.set(radius)); + } + + public static void drawRect(Matrix4f matrix, float x1, float y1, float x2, float y2, Color color) { + ShapeRenderer.drawRect(matrix, x1, y1, x2, y2, color); + } + + public static void drawTexture(float drawX, float drawY, float width, float height, Matrix4f matrix, GlTextureHandle texture, Color color) { + RoundedTextureShader.drawTextureQuad(currentBuffers, currentContext, texture, drawX, drawY, width, height, matrix, color); + } + + public static void drawTextureRegion(float drawX, float drawY, float width, float height, float regionU, float regionV, float regionWidth, float regionHeight, float radius, Matrix4f matrix, GlTextureHandle texture, Color color) { + RoundedTextureShader.drawTextureRegion(currentBuffers, currentContext, matrix, texture, drawX, drawY, width, height, regionU, regionV, regionWidth, regionHeight, new Vector4f(radius), color); + } + + public static boolean drawItem(ItemStack stack, float itemX, float itemY, float scale, Matrix4f matrix) { + Identifier modelId = stack.get(DataComponentTypes.ITEM_MODEL); + if (modelId == null) { + modelId = Registries.ITEM.getId(stack.getItem()); + } + + SpriteIdentifier spriteId = new SpriteIdentifier(ITEMS_ATLAS, Identifier.of(modelId.getNamespace(), "item/" + modelId.getPath())); + Sprite sprite = client.getAtlasManager().getSprite(spriteId); + if (sprite.getContents().getId().getPath().equals("missingno")) { + return false; + } else { + Identifier atlasId = sprite.getAtlasId(); + float minU = sprite.getMinU(); + float maxU = sprite.getMaxU(); + float minV = sprite.getMinV(); + float maxV = sprite.getMaxV(); + float size = 16.0F * scale; + drawTextureRegion(itemX, itemY, size, size, minU * size, size - maxV * size, (maxU - minU) * size, (maxV - minV) * size, 0.0F, matrix, GlTextureHandle.wrapMinecraftTexture(atlasId), Color.WHITE); + if (stack.getCount() > 1) { + String countText = String.valueOf(stack.getCount()); + Prestige.fontManager.getDefaultFont().drawTextScaled(matrix, countText, itemX + size - Prestige.fontManager.getDefaultFont().getTextWidth(countText) * scale, itemY + size - Prestige.fontManager.getDefaultFont().getLineHeight() * scale, scale, Color.WHITE); + } + + if (stack.isItemBarVisible()) { + int barX = (int)(itemX + 2.0F * scale); + int barY = (int)(itemY + 16.0F * scale); + float barLeft = barX; + float barTop = barY; + drawRoundedRect(matrix, barLeft, barTop, barX + 13.0F * scale, barY + scale, ITEM_BAR_BACKGROUND, 2.0F); + barLeft = barX; + barTop = barY; + drawRoundedRect(matrix, barLeft, barTop, barX + stack.getItemBarStep() * scale, barY + scale, new Color(withFullAlpha(stack.getItemBarColor())), 2.0F); + } + + return true; + } + } + + public static int withFullAlpha(int rgb) { + return rgb | 0xFF000000; + } + + public static float getTickDelta() { + return client.getRenderTickCounter().getTickProgress(false); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderBatch.java b/src/main/java/dev/zprestige/prestige/render/RenderBatch.java deleted file mode 100644 index e8dda8e..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderBatch.java +++ /dev/null @@ -1,39 +0,0 @@ -package dev.zprestige.prestige.render; - -public class RenderBatch { - private float a; - private float b; - private boolean c; - - public RenderBatch(float var1, float var2) { - this.a = var1; - this.b = var2; - } - - public float a(Object[] var1) { - return this.a; - } - - public void a_void___________________(Object[] var1) { - float var2 = (Float)var1[0]; - this.a = var2; - } - - public float b(Object[] var1) { - return this.b; - } - - public void b_void________(Object[] var1) { - float var2 = (Float)var1[0]; - this.b = var2; - } - - public boolean a_boolean________________________________________(Object[] var1) { - return this.c; - } - - public void c(Object[] var1) { - boolean var2 = (Boolean)var1[0]; - this.c = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderCache.java b/src/main/java/dev/zprestige/prestige/render/RenderCache.java deleted file mode 100644 index b328c33..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderCache.java +++ /dev/null @@ -1,89 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.LinkedHashMap; -import java.util.Map.Entry; - -public class RenderCache extends LinkedHashMap { - public final PostShader a; - private static final long c = 165027950775763072L; - - public RenderCache(PostShader var1, int var2, float var3, boolean var4) { - super(var2, var3, var4); - this.a = var1; - } - - @Override - public boolean removeEldestEntry(Entry var1) { - return this.size() > (int)c; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderCallback.java b/src/main/java/dev/zprestige/prestige/render/RenderCallback.java new file mode 100644 index 0000000..5b33f15 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/RenderCallback.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.CameraMatrices; + +public interface RenderCallback { + void onRender(BufferSource buffers, CameraMatrices context); +} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderContract.java b/src/main/java/dev/zprestige/prestige/render/RenderContract.java deleted file mode 100644 index e7d8ce3..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderContract.java +++ /dev/null @@ -1,8 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.config.ConfigHelper2; - -@FunctionalInterface -public interface RenderContract { - boolean a(int var1, ConfigHelper2 var2); -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderContract2.java b/src/main/java/dev/zprestige/prestige/render/RenderContract2.java deleted file mode 100644 index 2081bf3..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderContract2.java +++ /dev/null @@ -1,77 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.MinecraftClient; - -public interface RenderContract2 { - MinecraftClient b = MinecraftClient.getInstance(); - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderContract3.java b/src/main/java/dev/zprestige/prestige/render/RenderContract3.java deleted file mode 100644 index 8c5a358..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderContract3.java +++ /dev/null @@ -1,9 +0,0 @@ -package dev.zprestige.prestige.render; - -public interface RenderContract3 { - RenderBatch a(Object[] var1); - - default int a() { - return 0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderContract4.java b/src/main/java/dev/zprestige/prestige/render/RenderContract4.java deleted file mode 100644 index c7a098a..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderContract4.java +++ /dev/null @@ -1,9 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.VectorData; - -public interface RenderContract4 { - void a(Object[] var1); - - VectorData a_VectorData_(Object[] var1); -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderContract5.java b/src/main/java/dev/zprestige/prestige/render/RenderContract5.java deleted file mode 100644 index 77f00cc..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderContract5.java +++ /dev/null @@ -1,92 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.fabricmc.fabric.api.event.Event; -import net.fabricmc.fabric.api.event.EventFactory; -import org.jetbrains.annotations.NotNull; - -public interface RenderContract5 { - Event a = a(new Object[]{0L}); - Event b = a(new Object[]{0L}); - Event c = a(new Object[]{0L}); - - @NotNull - private static Event a(Object[] var0) { - return EventFactory.createArrayBacked(RenderContract6.class, lpL150_0 -> (lpL151_0, lpL151_1) -> { - dev.zprestige.prestige.event.Event.b(); - - for (RenderContract6 var9 : ((dev.zprestige.prestige.render.RenderContract6[])lpL150_0)) { - var9.a(((dev.zprestige.prestige.render.RenderHelper8)lpL151_0), ((dev.zprestige.prestige.data.MatrixCameraData)lpL151_1)); - } - }); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderContract6.java b/src/main/java/dev/zprestige/prestige/render/RenderContract6.java deleted file mode 100644 index 25d9e00..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderContract6.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.MatrixCameraData; - -public interface RenderContract6 { - void a(RenderHelper8 var1, MatrixCameraData var2); -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderCore.java b/src/main/java/dev/zprestige/prestige/render/RenderCore.java new file mode 100644 index 0000000..f7f304a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/RenderCore.java @@ -0,0 +1,163 @@ +package dev.zprestige.prestige.render; + +import com.mojang.blaze3d.systems.RenderSystem; +import dev.zprestige.prestige.data.CameraMatrices; +import java.lang.ref.Cleaner; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.function.Supplier; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gl.GlBackend; +import net.minecraft.client.texture.GlTexture; +import net.minecraft.util.math.Vec3d; +import org.joml.Vector3d; + +public class RenderCore { + public static final Cleaner CLEANER = Cleaner.create(); + public static final BufferSource BUFFER_SOURCE = new BufferSource(); + private static final List TASK_QUEUE = new ArrayList(); + public static CameraMatrices worldContext = null; + private static Thread renderThread; + private static long frameCount = -9223372036854775807L; + + public static int getMainFramebufferId() { + return ((GlTexture)Objects.requireNonNull(MinecraftClient.getInstance().getFramebuffer().getColorAttachment())) + .getOrCreateFramebuffer( + ((GlBackend)RenderSystem.getDevice()).getBufferManager(), MinecraftClient.getInstance().getFramebuffer().getDepthAttachment() + ); + } + + public static int getMainColorTextureId() { + return ((GlTexture)Objects.requireNonNull(MinecraftClient.getInstance().getFramebuffer().getColorAttachment())).getGlId(); + } + + public static float getScaleFactor() { + return MinecraftClient.getInstance().getWindow().getScaleFactor(); + } + + public static int getFramebufferHeight() { + return MinecraftClient.getInstance().getWindow().getFramebufferHeight(); + } + + public static Vector3d toCameraRelative(CameraMatrices context, double x, double y, double z) { + return toCameraRelative(context, x, y, z, new Vector3d()); + } + + public static Vector3d toCameraRelative(CameraMatrices context, double x, double y, double z, Vector3d dest) { + Vec3d cameraPos = context.camera().getCameraPos(); + return dest.set(x - cameraPos.x, y - cameraPos.y, z - cameraPos.z); + } + + public static void queueTask(Runnable task) { + synchronized (TASK_QUEUE) { + TASK_QUEUE.add(task); + } + } + + // $VF: Could not create synchronized statement, marking monitor enters and exits + // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) + public static List drainTasks() { + synchronized (TASK_QUEUE){} // $VF: monitorenter + + try { + if (TASK_QUEUE.isEmpty()) { + List empty = List.of(); + // $VF: monitorexit + return empty; + } else { + ArrayList drained = new ArrayList(TASK_QUEUE); + TASK_QUEUE.clear(); + // $VF: monitorexit + return drained; + } + } finally { + // $VF: monitorexit + } + } + + public static void runTasks(List tasks) { + for (Runnable task : (Iterable)(tasks)) { + task.run(); + } + } + + public static void renderWorld(CameraMatrices context) { + Render2D.currentContext = context; + Render2D.currentBuffers = BUFFER_SOURCE; + worldContext = context; + ((RenderCallback)RenderEvents.WORLD_RENDER.invoker()).onRender(BUFFER_SOURCE, context); + BUFFER_SOURCE.flush(context); + } + + public static void renderHud(CameraMatrices context) { + nextFrame(); + if (MinecraftAccess.mc.world != null && MinecraftAccess.mc.player != null) { + Render2D.currentContext = context; + Render2D.currentBuffers = BUFFER_SOURCE; + ((RenderCallback)RenderEvents.HUD_RENDER.invoker()).onRender(BUFFER_SOURCE, context); + BUFFER_SOURCE.flush(context); + ((RenderCallback)RenderEvents.AFTER_HUD_RENDER.invoker()).onRender(BUFFER_SOURCE, context); + BUFFER_SOURCE.flush(context); + } + } + + public static void runOnRenderThread(Runnable task) { + if (Thread.currentThread() == renderThread) { + task.run(); + } else { + queueTask(task); + } + } + + public static Object callOnRenderThread(Supplier supplier) { + if (renderThread != null && Thread.currentThread() != renderThread) { + CompletableFuture future = new CompletableFuture(); + queueTask((Runnable)() -> { + try { + future.complete(supplier.get()); + } catch (Throwable throwable) { + future.completeExceptionally(throwable); + } + }); + + try { + return future.get(30L, TimeUnit.SECONDS); + } catch (InterruptedException interrupted) { + Thread.currentThread().interrupt(); + throw new RuntimeException("interrupted waiting on render thread", interrupted); + } catch (TimeoutException timeout) { + throw new RuntimeException("timed out waiting for render thread to execute supplier", timeout); + } catch (ExecutionException executionException) { + Object cause = executionException.getCause() == null ? executionException : executionException.getCause(); + if (cause instanceof RuntimeException) { + throw (RuntimeException)cause; + } else { + throw new RuntimeException((Throwable)cause); + } + } + } else { + return supplier.get(); + } + } + + public static void setRenderThread(Thread thread) { + renderThread = thread; + } + + public static Thread getRenderThread() { + return renderThread; + } + + public static long getFrameCount() { + return frameCount; + } + + public static void nextFrame() { + frameCount++; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderEvents.java b/src/main/java/dev/zprestige/prestige/render/RenderEvents.java new file mode 100644 index 0000000..0ffe2bb --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/RenderEvents.java @@ -0,0 +1,20 @@ +package dev.zprestige.prestige.render; + +import net.fabricmc.fabric.api.event.Event; +import net.fabricmc.fabric.api.event.EventFactory; +import org.jetbrains.annotations.NotNull; + +public interface RenderEvents { + Event HUD_RENDER = createEvent(); + Event WORLD_RENDER = createEvent(); + Event AFTER_HUD_RENDER = createEvent(); + + @NotNull + private static Event createEvent() { + return EventFactory.createArrayBacked(RenderCallback.class, listeners -> (buffers, context) -> { + for (RenderCallback listener : (listeners)) { + listener.onRender(buffers, context); + } + }); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper.java deleted file mode 100644 index 253c788..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper.java +++ /dev/null @@ -1,81 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class RenderHelper { - private final net.minecraft.client.gl.ShaderProgram a; - private static final String c = "uniformsByName"; - - public RenderHelper(net.minecraft.client.gl.ShaderProgram var1) { - this.a = var1; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper10.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper10.java deleted file mode 100644 index 89592ff..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper10.java +++ /dev/null @@ -1,42 +0,0 @@ -package dev.zprestige.prestige.render; - -public class RenderHelper10 { - private final int a; - private final long b; - private final float c; - private final float d; - private boolean e; - - public RenderHelper10(int var1, long var2, float var4, float var5, boolean var6) { - this.a = var1; - this.b = var2; - this.c = var4; - this.d = var5; - this.e = var6; - } - - public int a(Object[] var1) { - return this.a; - } - - public long a_long_(Object[] var1) { - return this.b; - } - - public float a_float________________(Object[] var1) { - return this.c; - } - - public float b(Object[] var1) { - return this.d; - } - - public boolean a_boolean_________________________________________(Object[] var1) { - return this.e; - } - - public void a_void____________________(Object[] var1) { - boolean var2 = (Boolean)var1[0]; - this.e = var2; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper11.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper11.java deleted file mode 100644 index 3f6aea7..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper11.java +++ /dev/null @@ -1,105 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class RenderHelper11 { - public final String a; - public int b; - public int c; - public int d; - public int e; - - public RenderHelper11(String var1) { - this.a = var1; - } - - public void a(Object[] var1) { - this.e++; - } - - public void b(Object[] var1) { - this.d++; - } - - public void c(Object[] var1) { - int var2 = (Integer)var1[0]; - this.b += var2; - } - - public boolean a_boolean__________________________________________(Object[] var1) { - return this.d > 0; - } - - public String a_String_______(Object[] var1) { - return this.b + "|" + this.e + "|" + this.d; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper12.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper12.java deleted file mode 100644 index a925ce6..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper12.java +++ /dev/null @@ -1,5 +0,0 @@ -package dev.zprestige.prestige.render; - -public class RenderHelper12 { - public float a; -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper13.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper13.java deleted file mode 100644 index 5a0404b..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper13.java +++ /dev/null @@ -1,102 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.VectorData; -import dev.zprestige.prestige.world.WorldContract; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.function.BiConsumer; -import org.joml.Vector4f; - -public final class RenderHelper13 implements RenderContract4 { - private final BiConsumer a; - private final VectorData b; - - public RenderHelper13(DrawMode var1, Vector4f var2, BiConsumer var3) { - this.a = var3; - this.b = new VectorData(var2, var1); - } - - public RenderHelper13(DrawMode var1, BiConsumer var2) { - this(var1, null, var2); - } - - @Override - public void a(Object[] var1) { - WorldContract var2 = (WorldContract)var1[0]; - float var3 = (Float)var1[1]; - this.a.accept(var3, var2); - } - - @Override - public VectorData a_VectorData_(Object[] var1) { - return this.b; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper14.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper14.java deleted file mode 100644 index 7a8d41a..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper14.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.render; - -public class RenderHelper14 { -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper15.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper15.java deleted file mode 100644 index 720ee9b..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper15.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.zprestige.prestige.render; - -public final class RenderHelper15 { - public final Object a; - public final int b; - public final int c; - public final Runnable d; - - public RenderHelper15(Object var1, int var2, int var3, Runnable var4) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = var4; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper16.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper16.java deleted file mode 100644 index 6e0fe9f..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper16.java +++ /dev/null @@ -1,96 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.reflect.MethodAccessor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class RenderHelper16 { - private final Object a; - public final MethodAccessor b; - - public RenderHelper16(MethodAccessor var1, Object var2) { - this.b = var1; - this.a = var2; - } - - public Object a(Object[] var1) { - Object[] var4 = (Object[])var1[0]; - long var2 = (Long)var1[1]; - var2 = 70299918715449L ^ var2; - long var5 = var2 ^ 112899123089683L; - - try { - return this.b.a_Object__(new Object[]{this.a, var4, var5}); - } catch (Throwable var9) { - throw new RuntimeException(var9); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper17.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper17.java deleted file mode 100644 index dc4f33f..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper17.java +++ /dev/null @@ -1,83 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class RenderHelper17 { - private static final String a = "dev/zprestige/prestige/api/newmixins"; - - private RenderHelper17() { - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper18.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper18.java deleted file mode 100644 index cc97fb3..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper18.java +++ /dev/null @@ -1,100 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.type.NotificationType; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -// $VF: synthetic class -public class RenderHelper18 { - public static final int[] a = new int[NotificationType.values().length]; - - static { - try { - a[NotificationType.SUCCESS.ordinal()] = 1; - } catch (NoSuchFieldError var3) { - } - - try { - a[NotificationType.ERROR.ordinal()] = 2; - } catch (NoSuchFieldError var2) { - } - - try { - a[NotificationType.WARNING.ordinal()] = 3; - } catch (NoSuchFieldError var1) { - } - - try { - a[NotificationType.INFO.ordinal()] = 4; - } catch (NoSuchFieldError var0) { - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper19.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper19.java deleted file mode 100644 index db89186..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper19.java +++ /dev/null @@ -1,90 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.type.Axis; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -// $VF: synthetic class -public class RenderHelper19 { - public static final int[] a = new int[Axis.values().length]; - - static { - try { - a[Axis.X.ordinal()] = 1; - } catch (NoSuchFieldError var1) { - } - - try { - a[Axis.Y.ordinal()] = 2; - } catch (NoSuchFieldError var0) { - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper2.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper2.java deleted file mode 100644 index b646e50..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper2.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.render; - -public class RenderHelper2 { -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper20.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper20.java deleted file mode 100644 index 48ca27e..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper20.java +++ /dev/null @@ -1,89 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.type.NotificationType; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class RenderHelper20 { - public final String a; - public final String b; - public final NotificationType c; - public final long d; - public float e; - public boolean f; - - public RenderHelper20(String var1, String var2, NotificationType var3, long var4) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = System.currentTimeMillis(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper21.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper21.java deleted file mode 100644 index 5745bc8..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper21.java +++ /dev/null @@ -1,21 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.type.Axis; - -public class RenderHelper21 { - private final Axis a; - private final int b; - - public RenderHelper21(Axis var1, int var2) { - this.a = var1; - this.b = var2; - } - - public Axis a(Object[] var1) { - return this.a; - } - - public int a_int_______________________(Object[] var1) { - return this.b; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper22.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper22.java deleted file mode 100644 index b2c8741..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper22.java +++ /dev/null @@ -1,119 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class RenderHelper22 { - public static final Shader a; - public static final Shader b; - public static final Shader c; - public static final Shader d; - public static final Shader e; - - static { - Object var0 = new String[]{"shaders/post.vert", "shaders/pos_col.frag", "shaders/rounded_pos_color.vert", "shaders/pos_col_uv.vert", - "shaders/pos_col_uv.vert", "shaders/pos_col.vert", "shaders/rounded_pos_color.frag", "shaders/msdf_text.frag", - "shaders/pos_col_uv.frag", "shaders/gaussian.frag"}; - Object[] var10005 = new Object[]{null, null, null, 0L}; - var10005[2] = false; - var10005[1] = "shaders/pos_col.frag"; - var10005[0] = "shaders/pos_col.vert"; - a = ShaderProgram.a(var10005); - Object var10000 = ((Object[])var0)[4]; - Object var10001 = ((Object[])var0)[8]; - var10005 = new Object[]{null, null, null, 0L}; - var10005[2] = false; - var10005[1] = var10001; - var10005[0] = var10000; - b = ShaderProgram.a(var10005); - var10000 = ((Object[])var0)[2]; - var10001 = ((Object[])var0)[6]; - var10005 = new Object[]{null, null, null, 0L}; - var10005[2] = false; - var10005[1] = var10001; - var10005[0] = var10000; - c = ShaderProgram.a(var10005); - var10000 = ((Object[])var0)[0]; - var10001 = ((Object[])var0)[9]; - var10005 = new Object[]{null, null, null, 0L}; - var10005[2] = false; - var10005[1] = var10001; - var10005[0] = var10000; - d = ShaderProgram.a(var10005); - var10000 = ((Object[])var0)[3]; - var10001 = ((Object[])var0)[7]; - var10005 = new Object[]{null, null, null, 0L}; - var10005[2] = false; - var10005[1] = var10001; - var10005[0] = var10000; - e = ShaderProgram.a(var10005); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper23.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper23.java deleted file mode 100644 index b5a11d8..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper23.java +++ /dev/null @@ -1,258 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.math.MathHelper4; -import dev.zprestige.prestige.type.NotificationType; -import dev.zprestige.prestige.util.TpsTimer; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.joml.Matrix4f; - -public class RenderHelper23 { - public final String a; - public final String b; - private final long c; - public final long d; - public float e; - public boolean f; - public boolean g; - public boolean h; - private FontRenderer i; - private final String j; - private final Color k; - - public RenderHelper23(String var1, String var2, long var3, NotificationType var5, long var6) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = System.currentTimeMillis(); - this.e = 0.0F; - this.f = true; - this.g = false; - this.h = false; - this.j = "assets/prestige/icons/notifications/" + var5.name().toLowerCase() + ".png"; - this.k = var5.a; - } - - public float a(Object[] var1) { - Matrix4f var5 = (Matrix4f)var1[0]; - RenderHelper8 var3 = (RenderHelper8)var1[1]; - MatrixCameraData var11 = (MatrixCameraData)var1[2]; - float var4 = (Float)var1[3]; - float var10 = (Float)var1[4]; - float var2 = (Float)var1[5]; - float var6 = (Float)var1[6]; - boolean var9 = (Boolean)var1[7]; - long var7 = (Long)var1[8]; - var7 = 93607983474883L ^ var7; - long var12 = var7 ^ 97502157298237L; - long var14 = var7 ^ 21091601579219L; - long var16 = var7 ^ 68084546728296L; - long var18 = var7 ^ 121087447224295L; - long var20 = var7 ^ 31499599369547L; - long var22 = var7 ^ 17429216574513L; - long var24 = var7 ^ 53584568700478L; - long var26 = var7 ^ 104902861318772L; - long var28 = var7 ^ 94667550225589L; - if (this.i == null) { - this.i = TextureUtil.a(new Object[]{this.j, var12}); - } - - var4 += (var2 + 30.0F) * (1.0F - this.e); - if (this.f) { - float var10001 = this.e; - float var10003 = TpsTimer.d; - Object[] var10006 = new Object[]{null, null, null, var18}; - var10006[2] = var10003; - var10006[1] = 1.0F; - var10006[0] = var10001; - this.e = MathHelper4.b_float______(var10006); - if (this.e >= 0.99F) { - this.e = 1.0F; - this.f = false; - } - } - - if (this.g) { - float var36 = this.e; - float var41 = TpsTimer.d * 2.0F; - Object[] var48 = new Object[]{null, null, null, var18}; - var48[2] = var41; - var48[1] = 0.0F; - var48[0] = var36; - this.e = MathHelper4.b_float______(var48); - if (this.e <= 0.01F) { - this.e = 0.0F; - this.h = true; - return this.e * (var6 + 10.0F); - } - } - - if (System.currentTimeMillis() - this.d >= this.c && !this.g) { - this.g = true; - } - - if (!var9) { - return this.e * (var6 + 10.0F); - } else { - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var16}; - var10011[8] = 5.0F; - var10011[7] = 5; - var10011[6] = var6; - var10011[5] = var2; - var10011[4] = var10; - var10011[3] = var4; - var10011[2] = var5; - var10011[1] = var11; - var10011[0] = var3; - RenderTarget.e(var10011); - Color var10007 = new Color(0.05490196F, 0.05490196F, 0.05490196F, 150.0F * this.e / 255.0F); - var10011 = new Object[]{null, null, null, null, null, null, null, null, null, var14}; - var10011[8] = 5.0F; - var10011[7] = var10007; - var10011[6] = var6; - var10011[5] = var2; - var10011[4] = var10; - var10011[3] = var4; - var10011[2] = var5; - var10011[1] = var11; - var10011[0] = var3; - RoundedPosColorShader.c(var10011); - float var10000 = var4 + 5.0F; - float var37 = var10 + 6.0F; - FontRenderer var10005 = this.i; - Color var49 = this.k; - float var52 = this.e; - Object[] var10010 = new Object[]{null, null, var22}; - var10010[1] = var52; - var10010[0] = var49; - Object[] var10009 = new Object[]{null, null, null, null, var5, var10005, MathHelper4.b(var10010), var26}; - var10009[3] = 16.0F; - var10009[2] = 16.0F; - var10009[1] = var37; - var10009[0] = var10000; - MatrixStack.v(var10009); - Font var34 = Prestige.c.a(new Object[]{var20}); - String var10002 = this.a; - float var42 = var4 + 30.0F; - float var10004 = var10 + 2.0F; - var49 = Color.WHITE; - float var53 = this.e; - var10010 = new Object[]{null, null, var22}; - var10010[1] = var53; - var10010[0] = var49; - var10009 = new Object[]{null, null, null, null, null, MathHelper4.b(var10010), var24}; - var10009[4] = 0.9F; - var10009[3] = var10004; - var10009[2] = var42; - var10009[1] = var10002; - var10009[0] = var5; - var34.w(var10009); - Font var35 = Prestige.c.a(new Object[]{var20}); - var10002 = this.b; - var42 = var4 + 30.0F; - var10004 = var10 + 12.0F; - var49 = new Color(150, 150, 150); - float var54 = this.e; - var10010 = new Object[]{null, null, var22}; - var10010[1] = var54; - var10010[0] = var49; - var10009 = new Object[]{null, null, null, null, null, MathHelper4.b(var10010), var24}; - var10009[4] = 0.8F; - var10009[3] = var10004; - var10009[2] = var42; - var10009[1] = var10002; - var10009[0] = var5; - var35.w(var10009); - float var31 = 1.0F - Math.max(0.0F, (float)(this.c - (System.currentTimeMillis() - this.d))) / (float)this.c; - if (var31 < 1.0F) { - var37 = var4 + 2.0F; - float var40 = var10 + var6 - 6.0F; - var42 = var4 + 8.0F + (var2 - 4.0F - (var2 - 4.0F) * var31 - 4.0F); - var10004 = var10 + var6 - 1.0F; - Color var47 = this.k; - var10009 = new Object[]{null, null, null, null, null, null, null, var28}; - var10009[6] = 3.0F; - var10009[5] = var47; - var10009[4] = var10004; - var10009[3] = var42; - var10009[2] = var40; - var10009[1] = var37; - var10009[0] = var5; - MatrixStack.n(var10009); - } - - return this.e * (var6 + 10.0F); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper24.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper24.java deleted file mode 100644 index 94941ce..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper24.java +++ /dev/null @@ -1,98 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.inventory.InventoryUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class RenderHelper24 implements Runnable { - public final int a; - public final Renderer2D b; - - public RenderHelper24(Renderer2D var1, int var2) { - this.a = var2; - this.b = var1; - } - - @Override - public void run() { - if (RenderContract2.b.player == null) { - return; - } - - if (this.b.i) { - this.b.m.add(this); - return; - } - - InventoryUtil.a_void________(new Object[]{this.a, 120302897786805L ^ 87308200850882L}); - this.b.i = true; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper25.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper25.java deleted file mode 100644 index c0c9838..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper25.java +++ /dev/null @@ -1,74 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class RenderHelper25 { - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper26.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper26.java deleted file mode 100644 index 56a9fe0..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper26.java +++ /dev/null @@ -1,99 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.type.BlockBreakType; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class RenderHelper26 { - public final BlockBreakType a; - public final float b; - public final float c; - - public RenderHelper26(BlockBreakType var1, float var2, float var3) { - this.a = var1; - this.b = var2; - this.c = var3; - } - - public boolean a(Object[] var1) { - return this.a != null; - } - - public boolean b(Object[] var1) { - float var2 = (Float)var1[0]; - return var2 - this.c <= 0.0F; - } - - public float a_float_________________(Object[] var1) { - float var2 = (Float)var1[0]; - return Math.max(0.0F, var2 - this.c); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper27.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper27.java deleted file mode 100644 index cad675f..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper27.java +++ /dev/null @@ -1,104 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.RangeSetting; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class RenderHelper27 { - private long a = System.currentTimeMillis(); - - public RenderHelper27(long var1) { - } - - public boolean a(Object[] var1) { - float var4 = (Float)var1[0]; - return (float)(System.currentTimeMillis() - this.a) > var4; - } - - public float a_float__________________(Object[] var1) { - return (float)(System.currentTimeMillis() - this.a); - } - - public boolean b(Object[] var1) { - RangeSetting var2 = (RangeSetting)var1[0]; - long var3 = (Long)var1[1]; - var3 = 72608926783452L ^ var3; - long var5 = var3 ^ 19613694202557L; - float var10001 = var2.getRolled(new Object[0]); - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var10001; - return this.a(var10004); - } - - public void a_void_____________________(Object[] var1) { - this.a = System.currentTimeMillis(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper28.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper28.java deleted file mode 100644 index aea2cf4..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper28.java +++ /dev/null @@ -1,86 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.function.Consumer; - -public class RenderHelper28 implements Uniform { - public final Consumer a; - - public RenderHelper28(Consumer var1) { - this.a = var1; - } - - @Override - public void a(RenderPass var1) { - this.a.accept(var1); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper29.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper29.java deleted file mode 100644 index a96e792..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper29.java +++ /dev/null @@ -1,86 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.function.Consumer; - -public class RenderHelper29 implements Uniform { - public final Consumer a; - - public RenderHelper29(Consumer var1) { - this.a = var1; - } - - @Override - public void a(DrawContext var1) { - this.a.accept(var1); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper3.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper3.java deleted file mode 100644 index f0db980..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper3.java +++ /dev/null @@ -1,17 +0,0 @@ -package dev.zprestige.prestige.render; - -public final class RenderHelper3 { - public int a; - public float b; - public float c; - public double d; - public int e; - - public RenderHelper3(int var1, float var2, float var3, double var4, int var6) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = var4; - this.e = var6; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper30.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper30.java deleted file mode 100644 index f087bb8..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper30.java +++ /dev/null @@ -1,208 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.DrawFloatData; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.data.VectorData; -import dev.zprestige.prestige.data.VertexIntData; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import org.joml.Vector4f; -import org.lwjgl.opengl.GL11; - -public class RenderHelper30 { - public GpuBuffer a; - public GpuBuffer b; - public RenderHelper31 c; - private boolean d = false; - private final List e = new ArrayList(); - public float f = 0.0F; - - private void a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 72893699494923L ^ var2; - long var4 = var2 ^ 65446728695281L; - long var6 = var2 ^ 6077124533425L; - long var8 = var2 ^ 105324996582245L; - if (!this.d) { - this.a = (GpuBuffer)RenderUtil.a_Object___(new Object[]{(java.util.function.Supplier)GpuBuffer::a, var4}); - this.b = (GpuBuffer)RenderUtil.a_Object___(new Object[]{(java.util.function.Supplier)GpuBuffer::a, var4}); - this.c = RenderHelper31.b(new Object[]{null, var6}); - GpuBuffer var10000 = this.a; - Object[] var10005 = new Object[]{null, null, var8}; - var10005[1] = 65536L; - var10005[0] = 35048; - var10000.a(var10005); - var10000 = this.b; - var10005 = new Object[]{null, null, var8}; - var10005[1] = 16384L; - var10005[0] = 35048; - var10000.a(var10005); - this.d = true; - } - } - - public void b(Object[] var1) { - RenderContract4 var2 = (RenderContract4)var1[0]; - this.e.add(new DrawFloatData(var2, this.f)); - this.f = Math.nextUp(this.f); - } - - public void c(Object[] var1) { - MatrixCameraData var2 = (MatrixCameraData)var1[0]; - long var3 = (Long)var1[1]; - var3 = 72893699494923L ^ var3; - long var5 = var3 ^ 86230103069194L; - long var7 = var3 ^ 109013346395613L; - long var9 = var3 ^ 79949687281912L; - long var11 = var3 ^ 122717394461073L; - long var13 = var3 ^ 32349811078470L; - long var15 = var3 ^ 109300319960897L; - long var17 = var3 ^ 20733713030849L; - long var19 = var3 ^ 59677040195411L; - long var21 = var3 ^ 6108043939455L; - long var23 = var3 ^ 12051683328807L; - long var25 = var3 ^ 45908158025975L; - if (this.e.isEmpty()) { - this.f = 0.0F; - } else { - this.a(new Object[]{var15}); - int var28 = 0; - - while (var28 < this.e.size()) { - VectorData var29 = ((DrawFloatData)this.e.get(var28)).ca().a_VectorData_(new Object[0]); - int var31 = var28 + 1; - - while (var31 < this.e.size() && ((DrawFloatData)this.e.get(var31)).ca().a_VectorData_(new Object[0]).equals(var29)) { - var31++; - } - - List var32 = this.e.subList(var28, var31); - Vector4f var33 = var29.bD(); - if (var33 != null) { - GL11.glEnable(3089); - int var34 = RenderUtil.c(new Object[]{var21}); - float var35 = RenderUtil.a(new Object[]{var23}); - GL11.glScissor((int)(var33.x * var35), (int)(var34 - var33.y * var35 - var33.w * var35), (int)(var33.z * var35), (int)(var33.w * var35)); - } - - DrawMode var43 = var29.bE(); - this.c - .a_void______________________(new Object[]{RenderHelper31.a_List_(new Object[]{this.a, var43.a_VertexFormat(new Object[0]), var5}), var25}); - TextRenderer var37 = new TextRenderer(var43.a_VertexFormat(new Object[0]), this.a, this.b, var11); - - int var36; - int var44; - try { - for (DrawFloatData var39 : (Iterable)(var32)) { - RenderContract4 var10000 = var39.ca(); - float var10002 = var39.cb(); - Object[] var10005 = new Object[]{null, null, var19}; - var10005[1] = var10002; - var10005[0] = var37; - var10000.a(var10005); - } - - var44 = var37.a_int_____________________________(new Object[]{var13}); - var36 = var37.b_int__(new Object[]{var17}); - } catch (Throwable var41) { - try { - var37.close(); - } catch (Throwable var40) { - var41.addSuppressed(var40); - } - - throw var41; - } - - var37.close(); - var43.a_void________________(new Object[]{var2, this.c, this.b, new VertexIntData(var43.a_VertexFormat(new Object[0]), var44, var36), var7}); - if (var33 != null) { - GL11.glDisable(3089); - } - - var28 = var31; - } - - this.d(new Object[]{var9}); - } - } - - public void d(Object[] var1) { - this.f = 0.0F; - this.e.clear(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper31.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper31.java deleted file mode 100644 index 2684eda..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper31.java +++ /dev/null @@ -1,188 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.BufferQuadIntData; -import dev.zprestige.prestige.data.IntBoolData; -import java.lang.ref.Cleaner.Cleanable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import org.jetbrains.annotations.NotNull; -import org.lwjgl.opengl.GL30; - -public final class RenderHelper31 implements AutoCloseable { - private final int a; - private final BufferQuadIntData[] b; - private final Cleanable c; - private int d; - public static final boolean e = !RenderHelper31.class.desiredAssertionStatus(); - private static final String g = "too many bindings ("; - - private RenderHelper31(int var1, BufferQuadIntData[] var2, long var3) { - this.a = var1; - this.b = new BufferQuadIntData[16]; - if (var2 != null) { - System.arraycopy(var2, 0, this.b, 0, var2.length); - } - - this.d = var2 == null ? 0 : var2.length; - this.c = RenderUtil.a.register(this, () -> RenderUtil.f(new Object[]{(Runnable)() -> GL30.glDeleteVertexArrays(var1), 31795785076293L})); - } - - public static RenderHelper31 a(Object[] var0) { - GpuBuffer var4 = (GpuBuffer)var0[0]; - VertexFormat var1 = (VertexFormat)var0[1]; - long var2 = (Long)var0[2]; - var2 = 4009735877496L ^ var2; - long var5 = var2 ^ 135213029856523L; - long var7 = var2 ^ 17806318104826L; - return b(new Object[]{a_List_(new Object[]{var4, var1, var5}), var7}); - } - - @NotNull - public static List a_List_(Object[] var0) { - GpuBuffer var4 = (GpuBuffer)var0[0]; - VertexFormat var1 = (VertexFormat)var0[1]; - long var2 = (Long)var0[2]; - var2 = 4009735877496L ^ var2; - long var5 = var2 ^ 127089460246871L; - ArrayList var7 = new ArrayList(var1.a.length); - - for (int var8 = 0; var8 < var1.a.length; var8++) { - Object[] var10006 = new Object[]{null, null, var5}; - var10006[1] = var8; - var10006[0] = var4; - var7.add(var1.a(var10006)); - } - - return var7; - } - - public static RenderHelper31 b(Object[] var0) { - List var3 = (List)var0[0]; - long var1 = (Long)var0[1]; - var1 = 4009735877496L ^ var1; - long var4 = var1 ^ 57173462433439L; - long var6 = var1 ^ 16218348393588L; - int var8 = GL30.glGenVertexArrays(); - RenderHelper31 var9 = new RenderHelper31(var8, null, var4); - if (var3 != null) { - var9.a_void______________________(new Object[]{var3, var6}); - } - - return var9; - } - - @Override - public void close() { - this.c.clean(); - } - - public void a_void______________________(Object[] var1) { - List var4 = (List)var1[0]; - int var5 = var4.size(); - if (!e && var5 > 16) { - throw new AssertionError(g + var5 + ")"); - } else { - BufferQuadIntData[] var6 = (BufferQuadIntData[])var4.toArray(new BufferQuadIntData[0]); - if (this.d != var5 || !Arrays.equals(this.b, 0, this.d, var6, 0, var6.length)) { - int var7 = Math.max(this.d, var5); - int var8 = Math.min(this.d, var5); - GL30.glBindVertexArray(this.a); - - for (int var9 = var8; var9 < var7; var9++) { - if (var9 >= this.d) { - GL30.glEnableVertexAttribArray(var9); - } else { - GL30.glDisableVertexAttribArray(var9); - } - } - - for (int var12 = 0; var12 < var5; var12++) { - BufferQuadIntData var10 = (BufferQuadIntData)var4.get(var12); - GL30.glBindBuffer(34962, var10.cc().a_int_____________________(new Object[0])); - IntBoolData var11 = var10.cd(); - GL30.glVertexAttribPointer(var12, var11.cg(), var11.ch(), var11.cj(), var10.ce(), var10.cf()); - } - - GL30.glBindVertexArray(0); - Arrays.fill(this.b, null); - System.arraycopy(var6, 0, this.b, 0, var5); - this.d = var5; - } - } - } - - public int a_int________________________(Object[] var1) { - return this.a; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper32.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper32.java deleted file mode 100644 index 3df8c11..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper32.java +++ /dev/null @@ -1,93 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.gui.hud.InGameOverlayRenderer; -import net.minecraft.client.render.GameRenderer; - -public class RenderHelper32 { - private final GameRenderer a; - - public RenderHelper32(GameRenderer var1) { - this.a = var1; - } - - public InGameOverlayRenderer a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 110229848522314L ^ var2; - long var4 = var2 ^ 127608699040577L; - long var6 = var2 ^ 1683574152887L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, "overlayRenderer", GameRenderer.class, InGameOverlayRenderer.class, var6}); - return (InGameOverlayRenderer)var8.a(new Object[]{var4}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper33.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper33.java deleted file mode 100644 index 5982ed4..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper33.java +++ /dev/null @@ -1,6013 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.util.concurrent.ConcurrentHashMap; - -public class RenderHelper33 implements VertexSink { - private static boolean e; - private static RenderHelper33 a = new RenderHelper33(); - private ConcurrentHashMap b = new ConcurrentHashMap(); - private VertexSink c; - private int[] g; - private long f; - - public RenderHelper33() { - this.b0(); - this.g = new int[64]; - this.g[0] = -1; - this.g[1] = 1; - this.g[2] = -19; - this.g[3] = -44; - this.g[4] = -11; - this.g[5] = -22; - this.g[6] = -31; - this.g[7] = -44; - this.g[8] = -36; - this.g[9] = -37; - this.g[10] = -52; - this.g[11] = -1; - this.g[12] = 1; - this.g[13] = -23; - this.g[14] = -49; - this.g[15] = 11; - this.g[16] = -19; - this.g[17] = -15; - this.g[18] = -13; - this.g[19] = -37; - this.g[20] = -3; - this.g[21] = 19; - this.g[22] = -19; - this.g[23] = 3; - this.g[24] = -21; - this.g[25] = -30; - this.g[26] = -33; - this.g[27] = 22; - this.g[28] = -24; - this.g[29] = -21; - this.g[30] = -10; - this.g[31] = 13; - this.g[32] = 15; - this.g[33] = -6; - this.g[34] = -23; - this.g[35] = 19; - this.g[36] = 23; - this.g[37] = 31; - this.g[38] = -23; - this.g[39] = 6; - this.g[40] = 10; - this.g[41] = 19; - this.g[42] = -1; - this.g[43] = 1; - this.g[44] = 36; - this.g[45] = 21; - this.g[46] = 37; - this.g[47] = 44; - this.g[48] = -10; - this.g[49] = -5; - this.g[50] = 21; - this.g[51] = 44; - this.g[52] = 24; - this.g[53] = -7; - this.g[54] = 5; - this.g[55] = 30; - this.g[56] = 37; - this.g[57] = 23; - this.g[58] = 10; - this.g[59] = 33; - this.g[60] = 7; - this.g[61] = 23; - this.g[62] = 52; - this.g[63] = 49; - BufferBuilder.a(this); - } - - public static void a(boolean var0) { - e = var0; - } - - public static VertexSink a(VertexSink var0, VertexSink var1) { - return a.b(var0, var1); - } - - private VertexSink b(VertexSink var1, VertexSink var2) { - Object var3 = (VertexSink)this.b.get(var1); - if (var3 == null) { - var3 = this; - } - - this.b.put(var2, var1); - return (VertexSink)var3; - } - - public void d() { - this.c0(); - BufferBuilder.b(this); - } - - public void c() { - this.d0(); - } - - @Override - public void a(VertexSink var1) { - if (this != var1) { - if (this.c == null) { - this.c = var1; - } else { - this.c.a(var1); - } - } - } - - @Override - public long a(long var1) { - VertexSink var3; - long var4 = (var3 = BufferBuilder.c(var1)).a(var1); - int[] var6 = var3.b(); - System.arraycopy(this.g, 0, var6, 0, 64); - return var4; - } - - @Override - public int[] b() { - return BufferBuilder.e; - } - - @Override - public boolean b(VertexSink var1) { - if (this == var1) { - return true; - } else { - return var1 instanceof RenderHelper33 ? System.identityHashCode(this) - System.identityHashCode(var1) <= 0 : false; - } - } - - @Override - public void b(long var1) { - this.f = var1; - } - - private void b0() { - ConcurrentHashMap var10000 = this.b; - this.b.put(BufferBuilder.c(-5921877290033452520L), BufferBuilder.c(5826674044383964822L)); - var10000.put(BufferBuilder.c(1864121427147198525L), BufferBuilder.c(-4987355287577611773L)); - var10000.put(BufferBuilder.c(-6881540383679913291L), BufferBuilder.c(4311933673897934949L)); - var10000.put(BufferBuilder.c(-2896087170702595517L), BufferBuilder.c(2217295664603025413L)); - var10000.put(BufferBuilder.c(5387916966146088483L), BufferBuilder.c(4420135856724840588L)); - var10000.put(BufferBuilder.c(3624522867736511667L), BufferBuilder.c(1249898537860963578L)); - var10000.put(BufferBuilder.c(3139243060038856907L), BufferBuilder.c(8937288814502317150L)); - var10000.put(BufferBuilder.c(-9053299933334343055L), BufferBuilder.c(-5614430778341750154L)); - var10000.put(BufferBuilder.c(636336782017351286L), BufferBuilder.c(-8629658169594493787L)); - var10000.put(BufferBuilder.c(264715269984796403L), BufferBuilder.c(-2002409228508413783L)); - var10000.put(BufferBuilder.c(-7525642803403175293L), BufferBuilder.c(-4156332270255927087L)); - var10000.put(BufferBuilder.c(-2579363858163679629L), BufferBuilder.c(2550357550575930993L)); - var10000.put(BufferBuilder.c(-5557902418737911273L), BufferBuilder.c(1541080782165849326L)); - var10000.put(BufferBuilder.c(4271397295413676262L), BufferBuilder.c(6980727376925212371L)); - var10000.put(BufferBuilder.c(8931557243962029307L), BufferBuilder.c(-5544460146249867697L)); - var10000.put(BufferBuilder.c(2938337725034209002L), BufferBuilder.c(6809832837255653530L)); - var10000.put(BufferBuilder.c(-1480789418104452607L), BufferBuilder.c(-853373602339354977L)); - var10000.put(BufferBuilder.c(3228503183267773541L), BufferBuilder.c(-5563738494100559715L)); - var10000.put(BufferBuilder.c(-8902585994128801758L), BufferBuilder.c(8998899312962371787L)); - var10000.put(BufferBuilder.c(-4329440699742014899L), BufferBuilder.c(-2217760523433069501L)); - var10000.put(BufferBuilder.c(2193175131585314008L), BufferBuilder.c(5578265401514795218L)); - var10000.put(BufferBuilder.c(1277169313991388338L), BufferBuilder.c(-8062000697036753813L)); - var10000.put(BufferBuilder.c(3416425668671243912L), BufferBuilder.c(2005431260485485716L)); - var10000.put(BufferBuilder.c(2030704130154562127L), BufferBuilder.c(3022406645871687314L)); - var10000.put(BufferBuilder.c(-922776766747341176L), BufferBuilder.c(-2063258980927977737L)); - var10000.put(BufferBuilder.c(3573782762510008025L), BufferBuilder.c(3102349405871761119L)); - var10000.put(BufferBuilder.c(8937559752229155551L), BufferBuilder.c(-2593377119681015102L)); - var10000.put(BufferBuilder.c(-788078328260619774L), BufferBuilder.c(-6404136758546000336L)); - var10000.put(BufferBuilder.c(-9172447180420452255L), BufferBuilder.c(2332205411363586690L)); - var10000.put(BufferBuilder.c(-420869159990311697L), BufferBuilder.c(-3477945658307173808L)); - var10000.put(BufferBuilder.c(1609734599772214993L), BufferBuilder.c(-5362400624906496478L)); - var10000.put(BufferBuilder.c(3008345170029096542L), BufferBuilder.c(-6820644880241018661L)); - var10000.put(BufferBuilder.c(-609373983069464505L), BufferBuilder.c(-5691353346225361871L)); - var10000.put(BufferBuilder.c(9082507309484356669L), BufferBuilder.c(-3019664295802411364L)); - var10000.put(BufferBuilder.c(500438079458650648L), BufferBuilder.c(-1163441357833956145L)); - var10000.put(BufferBuilder.c(6469588750558580371L), BufferBuilder.c(1396361489641631995L)); - var10000.put(BufferBuilder.c(-1420934343374662106L), this); - var10000.put(BufferBuilder.c(-4891708664727046975L), BufferBuilder.c(-2627782562541714751L)); - var10000.put(BufferBuilder.c(4711716690928605399L), BufferBuilder.c(654525619157535987L)); - var10000.put(BufferBuilder.c(1592230728585151602L), BufferBuilder.c(1486643845121037488L)); - var10000.put(BufferBuilder.c(1064402451764007118L), BufferBuilder.c(-1104566467131537313L)); - var10000.put(BufferBuilder.c(-4889334718634483699L), BufferBuilder.c(5857215973889599628L)); - var10000.put(BufferBuilder.c(8682633602064459988L), BufferBuilder.c(-7467424630506937280L)); - var10000.put(BufferBuilder.c(-6025643072584578331L), BufferBuilder.c(736572885055523924L)); - var10000.put(BufferBuilder.c(-2062072967443034019L), BufferBuilder.c(-2680007315772695955L)); - var10000.put(BufferBuilder.c(3440528331714196141L), BufferBuilder.c(-5932705872595471193L)); - var10000.put(BufferBuilder.c(306375097118491787L), BufferBuilder.c(-6197635619442648994L)); - var10000.put(BufferBuilder.c(-6176577035354386868L), BufferBuilder.c(2767521561648140363L)); - var10000.put(BufferBuilder.c(-3722826364141697477L), BufferBuilder.c(2674387008960318506L)); - var10000.put(BufferBuilder.c(1999846757517054113L), BufferBuilder.c(1019569177096272538L)); - var10000.put(BufferBuilder.c(6818084075446681117L), BufferBuilder.c(2599193759623201387L)); - var10000.put(BufferBuilder.c(6245428014058661994L), BufferBuilder.c(4652460090304795653L)); - var10000.put(BufferBuilder.c(5708312177315193915L), BufferBuilder.c(7363466658462867549L)); - var10000.put(BufferBuilder.c(109402042079103007L), BufferBuilder.c(-4011340808278361533L)); - var10000.put(BufferBuilder.c(-4417008790444873713L), BufferBuilder.c(880200721571661985L)); - var10000.put(BufferBuilder.c(-1511508938507036427L), BufferBuilder.c(-8085981289031556949L)); - var10000.put(BufferBuilder.c(1362221841064207070L), BufferBuilder.c(1933755400982263888L)); - var10000.put(BufferBuilder.c(7459444283781983303L), BufferBuilder.c(3871015764204599839L)); - var10000.put(BufferBuilder.c(-2351278309774493622L), BufferBuilder.c(3460632226764189303L)); - var10000.put(BufferBuilder.c(-4742351503300991847L), BufferBuilder.c(377515087048694506L)); - var10000.put(BufferBuilder.c(945318472309128918L), BufferBuilder.c(-4158799742464947582L)); - var10000.put(BufferBuilder.c(-3161316890592360234L), BufferBuilder.c(-5580991089716419903L)); - var10000.put(BufferBuilder.c(4364868585973085353L), BufferBuilder.c(6650545517141550747L)); - var10000.put(BufferBuilder.c(779996305881866770L), BufferBuilder.c(7010740058378598528L)); - var10000.put(BufferBuilder.c(-6881647538048902522L), BufferBuilder.c(3424751569012650028L)); - var10000.put(BufferBuilder.c(2045719757200906433L), BufferBuilder.c(-3757552341520256830L)); - var10000.put(BufferBuilder.c(-2599749967693227803L), BufferBuilder.c(2657817677667664966L)); - var10000.put(BufferBuilder.c(-2402940438072575464L), BufferBuilder.c(-6574236591544533461L)); - var10000.put(BufferBuilder.c(5368353147062306913L), BufferBuilder.c(-2476465087813913958L)); - var10000.put(BufferBuilder.c(-4714247085249683418L), BufferBuilder.c(5341492330507692787L)); - var10000.put(BufferBuilder.c(-5706894098861638022L), BufferBuilder.c(-6584841530709036878L)); - var10000.put(BufferBuilder.c(-8892350813809459555L), BufferBuilder.c(5464039266297872639L)); - var10000.put(BufferBuilder.c(-1765509273845327841L), BufferBuilder.c(1600609068475380770L)); - var10000.put(BufferBuilder.c(-8318588191585545030L), BufferBuilder.c(-5144825274316175124L)); - var10000.put(BufferBuilder.c(-9157564566045556181L), BufferBuilder.c(2149485174617895425L)); - var10000.put(BufferBuilder.c(6048519984122270373L), BufferBuilder.c(5456198685686073440L)); - var10000.put(BufferBuilder.c(-2449830135718314862L), BufferBuilder.c(2299487451690551883L)); - var10000.put(BufferBuilder.c(-984935151493000158L), BufferBuilder.c(-4351908411642180542L)); - var10000.put(BufferBuilder.c(5327318242423069776L), BufferBuilder.c(-6995741798889909549L)); - var10000.put(BufferBuilder.c(-7136885655248782693L), BufferBuilder.c(5223268699758347846L)); - var10000.put(BufferBuilder.c(4635369685573331627L), BufferBuilder.c(-826664722982757135L)); - var10000.put(BufferBuilder.c(4315041952146024481L), BufferBuilder.c(-5286027034607665556L)); - var10000.put(BufferBuilder.c(-1662642633315901247L), BufferBuilder.c(7092630256228864542L)); - var10000.put(BufferBuilder.c(7551109291166148667L), BufferBuilder.c(-4680900415519661480L)); - var10000.put(BufferBuilder.c(3752403010870853321L), BufferBuilder.c(-8395177531798218529L)); - var10000.put(BufferBuilder.c(8913626488364870788L), BufferBuilder.c(3141125010821769964L)); - var10000.put(BufferBuilder.c(-1639008779867650828L), BufferBuilder.c(7437026118353582600L)); - var10000.put(BufferBuilder.c(-1347667506202075925L), BufferBuilder.c(-5390818550232724812L)); - var10000.put(BufferBuilder.c(7780658402941677588L), BufferBuilder.c(-4204898422464832882L)); - var10000.put(BufferBuilder.c(-1273126668450498827L), BufferBuilder.c(-7620737653329313188L)); - var10000.put(BufferBuilder.c(1262043910781636273L), BufferBuilder.c(-1096407819815916463L)); - var10000.put(BufferBuilder.c(998096556942657242L), BufferBuilder.c(1342455356127248522L)); - var10000.put(BufferBuilder.c(8296365627814735391L), BufferBuilder.c(7936039167786016496L)); - var10000.put(BufferBuilder.c(263784906993250488L), BufferBuilder.c(-7049832766137313271L)); - var10000.put(BufferBuilder.c(-8193459887694170046L), BufferBuilder.c(6526198125505930768L)); - var10000.put(BufferBuilder.c(-2059465649463145860L), BufferBuilder.c(-2546859057665798522L)); - var10000.put(BufferBuilder.c(-1414540782257351145L), BufferBuilder.c(-8451985941627398920L)); - var10000.put(BufferBuilder.c(1583588095114565665L), BufferBuilder.c(-2705955920843159897L)); - var10000.put(BufferBuilder.c(-678407304979138335L), BufferBuilder.c(796099731257241131L)); - var10000.put(BufferBuilder.c(-301596798654841151L), BufferBuilder.c(-1457334292653351249L)); - var10000.put(BufferBuilder.c(-8237728632331192287L), BufferBuilder.c(-8305274307261732106L)); - var10000.put(BufferBuilder.c(-2146079669464020266L), BufferBuilder.c(1755182408795042949L)); - var10000.put(BufferBuilder.c(-2755696113631722465L), BufferBuilder.c(382872481902939726L)); - var10000.put(BufferBuilder.c(-7389261074103634721L), BufferBuilder.c(3158290791573095165L)); - var10000.put(BufferBuilder.c(782111309642930845L), BufferBuilder.c(8706459398401636904L)); - var10000.put(BufferBuilder.c(1385015275259780218L), BufferBuilder.c(-1539067456372030745L)); - var10000.put(BufferBuilder.c(8909348361116891219L), BufferBuilder.c(-1416017357337282458L)); - var10000.put(BufferBuilder.c(-4108220236520026972L), BufferBuilder.c(-4869907216846259978L)); - var10000.put(BufferBuilder.c(5463128361167014071L), BufferBuilder.c(-7602921169730906069L)); - var10000.put(BufferBuilder.c(4751889255962920046L), BufferBuilder.c(-4964836645605835138L)); - var10000.put(BufferBuilder.c(-6709553632008017163L), BufferBuilder.c(7205430581576115329L)); - var10000.put(BufferBuilder.c(345830715842902539L), BufferBuilder.c(1478597793441818636L)); - var10000.put(BufferBuilder.c(-6112523617785007917L), BufferBuilder.c(-4488297619169191685L)); - var10000.put(BufferBuilder.c(-5223940735376489792L), BufferBuilder.c(1408628586956603617L)); - var10000.put(BufferBuilder.c(-1579318700400169950L), BufferBuilder.c(-8796704062206205929L)); - var10000.put(BufferBuilder.c(-1278767329864057197L), BufferBuilder.c(6611129069067891378L)); - var10000.put(BufferBuilder.c(-4538156733014777109L), BufferBuilder.c(-6284451081781698895L)); - var10000.put(BufferBuilder.c(8626406263910705325L), BufferBuilder.c(-9216477214291416973L)); - var10000.put(BufferBuilder.c(56624295139793440L), BufferBuilder.c(-2148485820215784874L)); - var10000.put(BufferBuilder.c(-5996744147536569219L), BufferBuilder.c(-4174401404048309610L)); - var10000.put(BufferBuilder.c(3666396582946319933L), BufferBuilder.c(-6955352690611980605L)); - var10000.put(BufferBuilder.c(2696976029264433178L), BufferBuilder.c(-6056666514386134385L)); - var10000.put(BufferBuilder.c(-3106536113097991517L), BufferBuilder.c(8128723206287501366L)); - var10000.put(BufferBuilder.c(-8315245076562290035L), BufferBuilder.c(7518077545865528948L)); - var10000.put(BufferBuilder.c(-2062751079232531314L), BufferBuilder.c(4777698205458519077L)); - var10000.put(BufferBuilder.c(-7317253354214992772L), BufferBuilder.c(-8416088848075811230L)); - var10000.put(BufferBuilder.c(1813369455732768948L), BufferBuilder.c(6635697314692766971L)); - var10000.put(BufferBuilder.c(5714783117890421396L), BufferBuilder.c(2400079707353276494L)); - var10000.put(BufferBuilder.c(136612734861174953L), BufferBuilder.c(-4302419285721648911L)); - var10000.put(BufferBuilder.c(-7045821492929402251L), BufferBuilder.c(5350433535034858632L)); - var10000.put(BufferBuilder.c(1388896271349215787L), BufferBuilder.c(7571365433115069137L)); - var10000.put(BufferBuilder.c(5110745103102488200L), BufferBuilder.c(-2774496226695138075L)); - var10000.put(BufferBuilder.c(-7086595959341051751L), BufferBuilder.c(9192181562719963151L)); - var10000.put(BufferBuilder.c(1883865453233559212L), BufferBuilder.c(1502274659012059654L)); - var10000.put(BufferBuilder.c(-2714008115024979269L), BufferBuilder.c(2623338287571777238L)); - var10000.put(BufferBuilder.c(-2765441708873337309L), BufferBuilder.c(1838668975783535837L)); - var10000.put(BufferBuilder.c(3474254334429319763L), BufferBuilder.c(-6950199702372503461L)); - var10000.put(BufferBuilder.c(-2076747709993350497L), BufferBuilder.c(898295428534241525L)); - var10000.put(BufferBuilder.c(2287222543301976200L), BufferBuilder.c(-7475285835252520836L)); - var10000.put(BufferBuilder.c(-2435397528631018282L), BufferBuilder.c(6942196838015259353L)); - var10000.put(BufferBuilder.c(440602818282397368L), BufferBuilder.c(-7193571251129687841L)); - var10000.put(BufferBuilder.c(-8373753831886894994L), BufferBuilder.c(7994310052253745720L)); - var10000.put(BufferBuilder.c(7370698526232104572L), BufferBuilder.c(4854297162596178628L)); - var10000.put(BufferBuilder.c(149550443687507151L), BufferBuilder.c(5792802763259193942L)); - var10000.put(BufferBuilder.c(-7802796278212249557L), BufferBuilder.c(-3909098168732843926L)); - var10000.put(BufferBuilder.c(-1059298002965536057L), BufferBuilder.c(-2799109783378726178L)); - var10000.put(BufferBuilder.c(3364273525243768921L), BufferBuilder.c(6116204604628474476L)); - var10000.put(BufferBuilder.c(572737319303138443L), BufferBuilder.c(7701196985107338816L)); - var10000.put(BufferBuilder.c(-8789018860793961911L), BufferBuilder.c(-9079026697045832536L)); - var10000.put(BufferBuilder.c(-8267943516814519645L), BufferBuilder.c(-1319699649017722686L)); - var10000.put(BufferBuilder.c(5036920296401085533L), BufferBuilder.c(5268012803036830938L)); - var10000.put(BufferBuilder.c(-4865840635395234063L), BufferBuilder.c(3547485378321507553L)); - var10000.put(BufferBuilder.c(2808294888845320440L), BufferBuilder.c(617116855398292546L)); - var10000.put(BufferBuilder.c(366616214432145077L), BufferBuilder.c(-2549145501905275901L)); - var10000.put(BufferBuilder.c(189563591306254490L), BufferBuilder.c(-3314551887503005691L)); - var10000.put(BufferBuilder.c(-8409941816258214152L), BufferBuilder.c(3005038441063213196L)); - var10000.put(BufferBuilder.c(-4753164961841604419L), BufferBuilder.c(1804708201036626957L)); - var10000.put(BufferBuilder.c(75467757254547461L), BufferBuilder.c(4432736146652257957L)); - var10000.put(BufferBuilder.c(6671875380018601090L), BufferBuilder.c(-2031577527232877497L)); - var10000.put(BufferBuilder.c(-6671681215785917382L), BufferBuilder.c(7677097262005722169L)); - var10000.put(BufferBuilder.c(5249390141506026742L), BufferBuilder.c(950857981396206674L)); - var10000.put(BufferBuilder.c(8367663726593230893L), BufferBuilder.c(7070406751089666244L)); - var10000.put(BufferBuilder.c(8635414216126656614L), BufferBuilder.c(9085517631821866598L)); - var10000.put(BufferBuilder.c(5749215438868117163L), BufferBuilder.c(8349147923905904829L)); - var10000.put(BufferBuilder.c(-5224861436716160903L), BufferBuilder.c(4751165976102938808L)); - var10000.put(BufferBuilder.c(-1274540215200903566L), BufferBuilder.c(2117948221487580800L)); - var10000.put(BufferBuilder.c(4005433203600156907L), BufferBuilder.c(7888118974604772378L)); - var10000.put(BufferBuilder.c(8804353782386413626L), BufferBuilder.c(-4804541527203635071L)); - var10000.put(BufferBuilder.c(-4801289860340394481L), BufferBuilder.c(8787655868777992369L)); - var10000.put(BufferBuilder.c(-5548015646551374771L), BufferBuilder.c(-376106263222546695L)); - var10000.put(BufferBuilder.c(7974152130853642456L), BufferBuilder.c(-8463805045319009261L)); - var10000.put(BufferBuilder.c(-6472265962266101692L), BufferBuilder.c(-288360301876532174L)); - var10000.put(BufferBuilder.c(-6228678149125729721L), BufferBuilder.c(-3722026624791387436L)); - var10000.put(BufferBuilder.c(-5175790483646933358L), BufferBuilder.c(-4516693958235704728L)); - var10000.put(BufferBuilder.c(-6293223306382945664L), BufferBuilder.c(-3227046936750947244L)); - var10000.put(BufferBuilder.c(7876062426935367820L), BufferBuilder.c(2709041555603721437L)); - var10000.put(BufferBuilder.c(-5097654569196299631L), BufferBuilder.c(1289528244078029964L)); - var10000.put(BufferBuilder.c(6897591902607075908L), BufferBuilder.c(-6636414245577554736L)); - var10000.put(BufferBuilder.c(-3061996212951781294L), BufferBuilder.c(209268361386968684L)); - var10000.put(BufferBuilder.c(1657602185242303197L), BufferBuilder.c(-583623736938310075L)); - var10000.put(BufferBuilder.c(-5237272830950305720L), BufferBuilder.c(6563222578440604803L)); - var10000.put(BufferBuilder.c(4793254968486482960L), BufferBuilder.c(7688725013275951868L)); - var10000.put(BufferBuilder.c(3457187947828012219L), BufferBuilder.c(-435563450463709092L)); - var10000.put(BufferBuilder.c(-5738863135691876164L), BufferBuilder.c(-4910395009969410018L)); - var10000.put(BufferBuilder.c(-4413426853654112587L), BufferBuilder.c(4919100439791748153L)); - var10000.put(BufferBuilder.c(-3782912668874416424L), BufferBuilder.c(5089358727475776724L)); - var10000.put(BufferBuilder.c(2982750080589466346L), BufferBuilder.c(3697434486712116270L)); - var10000.put(BufferBuilder.c(-6276719021163778889L), BufferBuilder.c(1945034506813866116L)); - var10000.put(BufferBuilder.c(5609091755535717554L), BufferBuilder.c(2305982260378218659L)); - var10000.put(BufferBuilder.c(-7843970498869601254L), BufferBuilder.c(3741200240863889035L)); - var10000.put(BufferBuilder.c(-8434387057867427778L), BufferBuilder.c(4191063050374644883L)); - var10000.put(BufferBuilder.c(5726651320076946595L), BufferBuilder.c(2581396741196246241L)); - var10000.put(BufferBuilder.c(-5299395167994829610L), BufferBuilder.c(4383137265649567941L)); - var10000.put(BufferBuilder.c(6916135877407402039L), BufferBuilder.c(8266456617353365008L)); - var10000.put(BufferBuilder.c(-163409884060389868L), BufferBuilder.c(-5816911895954771759L)); - var10000.put(BufferBuilder.c(-2325003497541611303L), BufferBuilder.c(-6531086060070115729L)); - var10000.put(BufferBuilder.c(6921726290566473420L), BufferBuilder.c(6358519773921409543L)); - var10000.put(BufferBuilder.c(5558462950063530172L), BufferBuilder.c(-4245467025153970989L)); - var10000.put(BufferBuilder.c(996765364501724677L), BufferBuilder.c(2191297267102759641L)); - var10000.put(BufferBuilder.c(3582286781231936094L), BufferBuilder.c(7534704385029687394L)); - var10000.put(BufferBuilder.c(-2710816423594009576L), BufferBuilder.c(-6489194418858839481L)); - var10000.put(BufferBuilder.c(556285744386438762L), BufferBuilder.c(3690852600978306291L)); - var10000.put(BufferBuilder.c(-3763221090284107233L), BufferBuilder.c(-7295337569329979280L)); - var10000.put(BufferBuilder.c(-498983715576051516L), BufferBuilder.c(597440453139793921L)); - var10000.put(BufferBuilder.c(4315550713633149058L), BufferBuilder.c(5069453731537059367L)); - var10000.put(BufferBuilder.c(8884936093780754086L), BufferBuilder.c(8140058355779039845L)); - var10000.put(BufferBuilder.c(5165828126090394819L), BufferBuilder.c(-8412782106768275952L)); - var10000.put(BufferBuilder.c(2443716298103609503L), BufferBuilder.c(5002187155075652253L)); - var10000.put(BufferBuilder.c(4058854508453191242L), BufferBuilder.c(6889333564965325014L)); - var10000.put(BufferBuilder.c(-2066042762900601716L), BufferBuilder.c(-2164408460405495270L)); - var10000.put(BufferBuilder.c(-1698424974115064316L), BufferBuilder.c(-7637859465095134693L)); - var10000.put(BufferBuilder.c(-3572987900776718730L), BufferBuilder.c(-7559356579323956076L)); - var10000.put(BufferBuilder.c(8165376377934660744L), BufferBuilder.c(3032013220767988300L)); - var10000.put(BufferBuilder.c(6345428126829704427L), BufferBuilder.c(-9100645578042869563L)); - var10000.put(BufferBuilder.c(-126273350976017702L), BufferBuilder.c(9035350878577221375L)); - var10000.put(BufferBuilder.c(-4919321554993855836L), BufferBuilder.c(4850603031702296706L)); - var10000.put(BufferBuilder.c(4789367337470485058L), BufferBuilder.c(168295518351117507L)); - var10000.put(BufferBuilder.c(3299511085985686138L), BufferBuilder.c(1745711083680071894L)); - var10000.put(BufferBuilder.c(-5059600077519373625L), BufferBuilder.c(8415175183766926948L)); - var10000.put(BufferBuilder.c(5529630739269712490L), BufferBuilder.c(-2743359246091640714L)); - var10000.put(BufferBuilder.c(7994784204389385973L), BufferBuilder.c(-1260510004517068141L)); - var10000.put(BufferBuilder.c(2272276788656331819L), BufferBuilder.c(-4172078376983261997L)); - var10000.put(BufferBuilder.c(-8663163094457188835L), BufferBuilder.c(-2456154470033557866L)); - var10000.put(BufferBuilder.c(3645222756645427408L), BufferBuilder.c(-8420503368959177023L)); - var10000.put(BufferBuilder.c(-3631905128437838723L), BufferBuilder.c(149040138946763518L)); - var10000.put(BufferBuilder.c(-8691190861883412847L), BufferBuilder.c(5877668405902997599L)); - var10000.put(BufferBuilder.c(7709236294929769049L), BufferBuilder.c(-8788072903071745896L)); - var10000.put(BufferBuilder.c(-7495452656299967808L), BufferBuilder.c(3919636450152478893L)); - var10000.put(BufferBuilder.c(-3387196223294622050L), BufferBuilder.c(-2158793518940794760L)); - var10000.put(BufferBuilder.c(6093561704715246702L), BufferBuilder.c(9175721469437318392L)); - var10000.put(BufferBuilder.c(1008552043857818144L), BufferBuilder.c(-854405886058058650L)); - var10000.put(BufferBuilder.c(8159003064803300939L), BufferBuilder.c(-5750502304311380746L)); - var10000.put(BufferBuilder.c(-6257813630263686567L), BufferBuilder.c(-6409302329594037050L)); - var10000.put(BufferBuilder.c(-8810647627902265180L), BufferBuilder.c(-1758269492620545952L)); - var10000.put(BufferBuilder.c(-5862896253129475395L), BufferBuilder.c(-3943120216264014287L)); - var10000.put(BufferBuilder.c(-1066584948590287716L), BufferBuilder.c(4088976283410912775L)); - var10000.put(BufferBuilder.c(8285869403280668341L), BufferBuilder.c(-3771867742580235180L)); - var10000.put(BufferBuilder.c(351069871430791204L), BufferBuilder.c(-5250812709465388362L)); - var10000.put(BufferBuilder.c(4561739175590407168L), BufferBuilder.c(1741528508690918980L)); - var10000.put(BufferBuilder.c(1954995920385542902L), BufferBuilder.c(3528268637043904060L)); - var10000.put(BufferBuilder.c(7163980872500751990L), BufferBuilder.c(-1973147962453673961L)); - var10000.put(BufferBuilder.c(-5938540090607021511L), BufferBuilder.c(4164195981071339674L)); - var10000.put(BufferBuilder.c(5834787159674840175L), BufferBuilder.c(-3197748910335620012L)); - var10000.put(BufferBuilder.c(8544895039565185651L), BufferBuilder.c(-2603986684252943617L)); - var10000.put(BufferBuilder.c(8026633866280433161L), BufferBuilder.c(-9099858147293014420L)); - var10000.put(BufferBuilder.c(-855989094367799153L), BufferBuilder.c(4482442969189676627L)); - var10000.put(BufferBuilder.c(682179255450860745L), BufferBuilder.c(3905909045392624656L)); - var10000.put(BufferBuilder.c(-6161100020963152354L), BufferBuilder.c(-328909028705579490L)); - var10000.put(BufferBuilder.c(-1524878372038470914L), BufferBuilder.c(-3095371515396532114L)); - var10000.put(BufferBuilder.c(8881136398432999976L), BufferBuilder.c(5384891926094148630L)); - var10000.put(BufferBuilder.c(-8135122473851372325L), BufferBuilder.c(7369219682967417972L)); - var10000.put(BufferBuilder.c(7987370730684534383L), BufferBuilder.c(-2079653746080462305L)); - var10000.put(BufferBuilder.c(4625737635321937008L), BufferBuilder.c(-2617193132128738150L)); - var10000.put(BufferBuilder.c(-5336350411061197771L), BufferBuilder.c(659354442691765955L)); - var10000.put(BufferBuilder.c(8695817457520537204L), BufferBuilder.c(-7052465232313839937L)); - var10000.put(BufferBuilder.c(4473726337739447484L), BufferBuilder.c(-635059949121023971L)); - var10000.put(BufferBuilder.c(1437157837974539865L), BufferBuilder.c(-7480877492838526393L)); - var10000.put(BufferBuilder.c(-7037575334307957592L), BufferBuilder.c(4808386019098836068L)); - var10000.put(BufferBuilder.c(5842398318739837049L), BufferBuilder.c(-4423773145105478012L)); - var10000.put(BufferBuilder.c(1580582004613436049L), BufferBuilder.c(-8110113040220021703L)); - var10000.put(BufferBuilder.c(159944869299711615L), BufferBuilder.c(1753857586992614481L)); - var10000.put(BufferBuilder.c(3059777355883339392L), BufferBuilder.c(9095346592458140315L)); - var10000.put(BufferBuilder.c(1179735077253484254L), BufferBuilder.c(5072055537585805999L)); - var10000.put(BufferBuilder.c(-3491307161670629745L), BufferBuilder.c(1398881561269141130L)); - var10000.put(BufferBuilder.c(2124391874394203783L), BufferBuilder.c(-232059961834132236L)); - var10000.put(BufferBuilder.c(4066982962379980031L), BufferBuilder.c(7440845630874272486L)); - var10000.put(BufferBuilder.c(-6514013045058872694L), BufferBuilder.c(78664643219322094L)); - var10000.put(BufferBuilder.c(6917718159881969259L), BufferBuilder.c(-8526861467252057025L)); - var10000.put(BufferBuilder.c(-3860716209000303003L), BufferBuilder.c(1720807964115402337L)); - var10000.put(BufferBuilder.c(300341633078653602L), BufferBuilder.c(-3621591546673403864L)); - var10000.put(BufferBuilder.c(541387720397381344L), BufferBuilder.c(-1797592696768585013L)); - var10000.put(BufferBuilder.c(-1449199691015800237L), BufferBuilder.c(-8574140936769500096L)); - var10000.put(BufferBuilder.c(7141374602578675434L), BufferBuilder.c(3846989463858665489L)); - var10000.put(BufferBuilder.c(2487628858954129141L), BufferBuilder.c(-8417199528462795733L)); - var10000.put(BufferBuilder.c(5504756028482910219L), BufferBuilder.c(-5354017719436591561L)); - var10000.put(BufferBuilder.c(-7842255631127300427L), BufferBuilder.c(1857938459657782890L)); - var10000.put(BufferBuilder.c(7448459861255207051L), BufferBuilder.c(6523878123287357173L)); - var10000.put(BufferBuilder.c(-8824321866250754041L), BufferBuilder.c(5838647531352565856L)); - var10000.put(BufferBuilder.c(6885979879239876641L), BufferBuilder.c(-4556564044480142673L)); - var10000.put(BufferBuilder.c(-470736009766970649L), BufferBuilder.c(-2795149202482514239L)); - var10000.put(BufferBuilder.c(3290087219247495235L), BufferBuilder.c(-2595348006463293302L)); - var10000.put(BufferBuilder.c(-2007261512227113286L), BufferBuilder.c(-731993781307199404L)); - var10000.put(BufferBuilder.c(-2706548123648921888L), BufferBuilder.c(5985686694984603681L)); - var10000.put(BufferBuilder.c(-446161149104531875L), BufferBuilder.c(-7340097959676231067L)); - var10000.put(BufferBuilder.c(-1929911233806979844L), BufferBuilder.c(-4098366798116371295L)); - var10000.put(BufferBuilder.c(2563000365164652127L), BufferBuilder.c(2458729395094514207L)); - var10000.put(BufferBuilder.c(1033276239034148963L), BufferBuilder.c(-2126986709672382782L)); - var10000.put(BufferBuilder.c(237962061775327787L), BufferBuilder.c(6414727495599579259L)); - var10000.put(BufferBuilder.c(5856140195133969922L), BufferBuilder.c(8190773164273009275L)); - var10000.put(BufferBuilder.c(6242984024424601746L), BufferBuilder.c(2851141904572892400L)); - var10000.put(BufferBuilder.c(3555559940266949752L), BufferBuilder.c(-3546957020171487722L)); - var10000.put(BufferBuilder.c(2491843622522546262L), BufferBuilder.c(5218627644608462912L)); - var10000.put(BufferBuilder.c(8247696311664980193L), BufferBuilder.c(-372772298383482277L)); - var10000.put(BufferBuilder.c(5125970524122591273L), BufferBuilder.c(7420933558177378854L)); - var10000.put(BufferBuilder.c(639548000495956613L), BufferBuilder.c(-3149281001525465454L)); - var10000.put(BufferBuilder.c(-8715386271431106933L), BufferBuilder.c(5975441360211424490L)); - var10000.put(BufferBuilder.c(4406591998473455168L), BufferBuilder.c(-8220357863968058200L)); - var10000.put(BufferBuilder.c(-9185675112848786765L), BufferBuilder.c(3069798311110410831L)); - var10000.put(BufferBuilder.c(-2882320981065864460L), BufferBuilder.c(-9002429280198754246L)); - var10000.put(BufferBuilder.c(5129364574867926180L), BufferBuilder.c(1167527482409547336L)); - var10000.put(BufferBuilder.c(1069962963746920499L), BufferBuilder.c(7711702356329777768L)); - var10000.put(BufferBuilder.c(8844124371442344528L), BufferBuilder.c(-3879552412136207662L)); - var10000.put(BufferBuilder.c(-1091062258925495568L), BufferBuilder.c(3419512391886642249L)); - var10000.put(BufferBuilder.c(-269639019613544224L), BufferBuilder.c(7647075682978540583L)); - var10000.put(BufferBuilder.c(4707891467020649012L), BufferBuilder.c(-4176722967278455671L)); - var10000.put(BufferBuilder.c(-1197428122306578352L), BufferBuilder.c(2821689888205850857L)); - var10000.put(BufferBuilder.c(-7158685286869663626L), BufferBuilder.c(5360428615277983771L)); - var10000.put(BufferBuilder.c(-6299271223544400706L), BufferBuilder.c(-2418826007318203773L)); - var10000.put(BufferBuilder.c(-8085786325663262654L), BufferBuilder.c(-8433772990605036389L)); - var10000.put(BufferBuilder.c(-1462499654744749381L), BufferBuilder.c(-158465190006498203L)); - var10000.put(BufferBuilder.c(-1640536437706040711L), BufferBuilder.c(-575948894151250265L)); - var10000.put(BufferBuilder.c(2615221471801280522L), BufferBuilder.c(-1089271766266319683L)); - var10000.put(BufferBuilder.c(9153014705019716244L), BufferBuilder.c(1022832273573535842L)); - var10000.put(BufferBuilder.c(-7651675433770626893L), BufferBuilder.c(-5406198463856258041L)); - var10000.put(BufferBuilder.c(777571165469812835L), BufferBuilder.c(4026188576754682973L)); - var10000.put(BufferBuilder.c(8176684438890511059L), BufferBuilder.c(-7073360000149453190L)); - var10000.put(BufferBuilder.c(6694262803443000997L), BufferBuilder.c(-2382956748162770184L)); - var10000.put(BufferBuilder.c(-6308500216569217456L), BufferBuilder.c(-5909960463579812766L)); - var10000.put(BufferBuilder.c(-7356341348812556746L), BufferBuilder.c(3497006173638426707L)); - var10000.put(BufferBuilder.c(4875358761661509697L), BufferBuilder.c(1874177321689793063L)); - var10000.put(BufferBuilder.c(-8525398996231277335L), BufferBuilder.c(-7194005185154955094L)); - var10000.put(BufferBuilder.c(-652100878553549694L), BufferBuilder.c(3441303858839133797L)); - var10000.put(BufferBuilder.c(4885061607663916688L), BufferBuilder.c(3947586983238192833L)); - var10000.put(BufferBuilder.c(-7435960748818406904L), BufferBuilder.c(528372549819663400L)); - var10000.put(BufferBuilder.c(1476079787737765400L), BufferBuilder.c(7619032511098811418L)); - var10000.put(BufferBuilder.c(6678353179738528917L), BufferBuilder.c(-3461502688867582246L)); - var10000.put(BufferBuilder.c(3950615657114630748L), BufferBuilder.c(-3908588650221534613L)); - var10000.put(BufferBuilder.c(-7275772312309642704L), BufferBuilder.c(-8469151119789284274L)); - var10000.put(BufferBuilder.c(-3137516779006531567L), BufferBuilder.c(-5050259395558025189L)); - var10000.put(BufferBuilder.c(3910942654990940361L), BufferBuilder.c(-5735371120755328914L)); - var10000.put(BufferBuilder.c(4929982738120422968L), BufferBuilder.c(1964145740494323296L)); - var10000.put(BufferBuilder.c(162378608733980795L), BufferBuilder.c(2791447386651353728L)); - var10000.put(BufferBuilder.c(4749719095578713120L), BufferBuilder.c(3121535084006956590L)); - var10000.put(BufferBuilder.c(3635747513208051745L), BufferBuilder.c(-849210718609057619L)); - var10000.put(BufferBuilder.c(-4566407349790964680L), BufferBuilder.c(-3491521842265943394L)); - var10000.put(BufferBuilder.c(4861210853237011562L), BufferBuilder.c(-118473505662791997L)); - var10000.put(BufferBuilder.c(-5120550521597279681L), BufferBuilder.c(7271498292455528652L)); - var10000.put(BufferBuilder.c(-5496216703468198907L), BufferBuilder.c(921383017204112436L)); - var10000.put(BufferBuilder.c(8891197436753487504L), BufferBuilder.c(-1509952916850248078L)); - var10000.put(BufferBuilder.c(8436858618886317273L), BufferBuilder.c(-4112601127974714334L)); - var10000.put(BufferBuilder.c(-8700037488892850002L), BufferBuilder.c(2209796540785885438L)); - var10000.put(BufferBuilder.c(9132776004023289037L), BufferBuilder.c(2523989256749001806L)); - var10000.put(BufferBuilder.c(-8622496952602410430L), BufferBuilder.c(-6430675544445190004L)); - var10000.put(BufferBuilder.c(6376364392622957301L), BufferBuilder.c(407527170413543517L)); - var10000.put(BufferBuilder.c(7690345849089555684L), BufferBuilder.c(-4551687042173790020L)); - var10000.put(BufferBuilder.c(-8261798487805740440L), BufferBuilder.c(-5725634434811123497L)); - var10000.put(BufferBuilder.c(8445779565531857593L), BufferBuilder.c(-505035470421100500L)); - var10000.put(BufferBuilder.c(-5624794069788265356L), BufferBuilder.c(948759985008067251L)); - var10000.put(BufferBuilder.c(7427692111933459545L), BufferBuilder.c(-401666418668000058L)); - var10000.put(BufferBuilder.c(4148760042622453857L), BufferBuilder.c(-2174510658046285266L)); - var10000.put(BufferBuilder.c(-2294978681982765845L), BufferBuilder.c(-7607201060916228911L)); - var10000.put(BufferBuilder.c(-2392659737828179800L), BufferBuilder.c(-3316542670804082995L)); - var10000.put(BufferBuilder.c(-1943834400885819768L), BufferBuilder.c(1345863818653836353L)); - var10000.put(BufferBuilder.c(-6124342743603003832L), BufferBuilder.c(-9073535438725200662L)); - var10000.put(BufferBuilder.c(9160546648051928728L), BufferBuilder.c(1719728049479812807L)); - var10000.put(BufferBuilder.c(5355268217530820244L), BufferBuilder.c(-2350416607029324559L)); - var10000.put(BufferBuilder.c(3892916907895951488L), BufferBuilder.c(8710944846423966362L)); - var10000.put(BufferBuilder.c(-235977782652395884L), BufferBuilder.c(7742465992761118463L)); - var10000.put(BufferBuilder.c(4508788509999984855L), BufferBuilder.c(-1122594443991358271L)); - var10000.put(BufferBuilder.c(-4165568288130045775L), BufferBuilder.c(-8617293000338957120L)); - var10000.put(BufferBuilder.c(643401666477176413L), BufferBuilder.c(-8965172424380730282L)); - var10000.put(BufferBuilder.c(9104848508726315081L), BufferBuilder.c(-7564007749599533050L)); - var10000.put(BufferBuilder.c(6753326662835118593L), BufferBuilder.c(-2043445893131152689L)); - var10000.put(BufferBuilder.c(-5692322704681497541L), BufferBuilder.c(1879506636533442728L)); - var10000.put(BufferBuilder.c(6025830270197320198L), BufferBuilder.c(-3690122689609740690L)); - var10000.put(BufferBuilder.c(-778310159165532130L), BufferBuilder.c(-8136411204054433581L)); - var10000.put(BufferBuilder.c(-1477532870924062119L), BufferBuilder.c(2634842124110727195L)); - var10000.put(BufferBuilder.c(4420805630683679941L), BufferBuilder.c(-5763903083545764751L)); - var10000.put(BufferBuilder.c(3147496317093201942L), BufferBuilder.c(5031865246722038516L)); - var10000.put(BufferBuilder.c(-8612226193938800490L), BufferBuilder.c(-3985211538293155734L)); - var10000.put(BufferBuilder.c(6751151333474820266L), BufferBuilder.c(4501106113402552372L)); - var10000.put(BufferBuilder.c(-7134701092611051781L), BufferBuilder.c(5327690245352419989L)); - var10000.put(BufferBuilder.c(-4094215819934723949L), BufferBuilder.c(6340755546225136841L)); - var10000.put(BufferBuilder.c(-5042435915668696019L), BufferBuilder.c(-6206938810140388179L)); - var10000.put(BufferBuilder.c(-6091924526832780612L), BufferBuilder.c(-6806578250128697191L)); - var10000.put(BufferBuilder.c(-7742518057540150243L), BufferBuilder.c(6084249488949560866L)); - var10000.put(BufferBuilder.c(6829763655027641532L), BufferBuilder.c(5670966930848376442L)); - var10000.put(BufferBuilder.c(-6841686652362927902L), BufferBuilder.c(4042859390153961094L)); - var10000.put(BufferBuilder.c(-4742623271305011995L), BufferBuilder.c(7236400631369481816L)); - var10000.put(BufferBuilder.c(-1081527413768490435L), BufferBuilder.c(3462626216943516729L)); - var10000.put(BufferBuilder.c(3886846249285104365L), BufferBuilder.c(1527659097869988523L)); - var10000.put(BufferBuilder.c(-4571011020815206747L), BufferBuilder.c(-4941254785995189041L)); - var10000.put(BufferBuilder.c(9172627595326965392L), BufferBuilder.c(3904015685938271865L)); - var10000.put(BufferBuilder.c(-8430611454010982346L), BufferBuilder.c(1007566160585954379L)); - var10000.put(BufferBuilder.c(3884674332388403443L), BufferBuilder.c(4446858451001044481L)); - var10000.put(BufferBuilder.c(-6241584755323787169L), BufferBuilder.c(7205975556652221130L)); - var10000.put(BufferBuilder.c(-3539265572167469899L), BufferBuilder.c(5280448124883153577L)); - var10000.put(BufferBuilder.c(-5694664880890195885L), BufferBuilder.c(-8109783779590638529L)); - var10000.put(BufferBuilder.c(-5256878021592238963L), BufferBuilder.c(5473716927780722691L)); - var10000.put(BufferBuilder.c(6069527402383838902L), BufferBuilder.c(8303008778740483196L)); - var10000.put(BufferBuilder.c(-3800080497302813595L), BufferBuilder.c(-8221151058660244795L)); - var10000.put(BufferBuilder.c(6914602228808452746L), BufferBuilder.c(-3149939936081783629L)); - var10000.put(BufferBuilder.c(1439822315483594319L), BufferBuilder.c(-5245515392368448859L)); - var10000.put(BufferBuilder.c(-7316148251491697565L), BufferBuilder.c(5896429086318199885L)); - var10000.put(BufferBuilder.c(5706621541534100587L), BufferBuilder.c(-6811312135199864676L)); - var10000.put(BufferBuilder.c(7411607202962281539L), BufferBuilder.c(8518707957526129684L)); - var10000.put(BufferBuilder.c(-6812616314304977392L), BufferBuilder.c(3525830896496980114L)); - var10000.put(BufferBuilder.c(2112904918794469107L), BufferBuilder.c(6870374092190024803L)); - var10000.put(BufferBuilder.c(6385306213251163153L), BufferBuilder.c(5818176239863693838L)); - var10000.put(BufferBuilder.c(-7039375208640889616L), BufferBuilder.c(7948740409282203L)); - var10000.put(BufferBuilder.c(1160077290939755180L), BufferBuilder.c(3210533343417368094L)); - var10000.put(BufferBuilder.c(-6946791675271148835L), BufferBuilder.c(2179250031706882064L)); - var10000.put(BufferBuilder.c(4514166905918301262L), BufferBuilder.c(-584170636354533820L)); - var10000.put(BufferBuilder.c(-4398734907043211585L), BufferBuilder.c(2707705216128470613L)); - var10000.put(BufferBuilder.c(987886097672357550L), BufferBuilder.c(-4817864968834883958L)); - var10000.put(BufferBuilder.c(-2064623510856529670L), BufferBuilder.c(-9051515382075283383L)); - var10000.put(BufferBuilder.c(-7247310814301638457L), BufferBuilder.c(5667493260746550943L)); - var10000.put(BufferBuilder.c(-2853293740093052806L), BufferBuilder.c(883022380553247478L)); - var10000.put(BufferBuilder.c(880618096439151311L), BufferBuilder.c(-4844295878013927864L)); - var10000.put(BufferBuilder.c(1427979566887551170L), BufferBuilder.c(-7432866851790471522L)); - var10000.put(BufferBuilder.c(1800843961449395286L), BufferBuilder.c(-221960104591025422L)); - var10000.put(BufferBuilder.c(-3884731999091271066L), BufferBuilder.c(-4803835052781351742L)); - var10000.put(BufferBuilder.c(9056309149644263120L), BufferBuilder.c(338053885598370883L)); - var10000.put(BufferBuilder.c(4208121706047122076L), BufferBuilder.c(-3116884540048794473L)); - var10000.put(BufferBuilder.c(46566786049518828L), BufferBuilder.c(3422538956064229517L)); - var10000.put(BufferBuilder.c(1961665000991627337L), BufferBuilder.c(-8657797859350735107L)); - var10000.put(BufferBuilder.c(5211804037336013408L), BufferBuilder.c(7152069841707629154L)); - var10000.put(BufferBuilder.c(-3583252502358473041L), BufferBuilder.c(-4049921770510607816L)); - var10000.put(BufferBuilder.c(5742636190550242469L), BufferBuilder.c(5444717621831761617L)); - var10000.put(BufferBuilder.c(6782430960550578324L), BufferBuilder.c(-1997008129772548540L)); - var10000.put(BufferBuilder.c(3355315667573652217L), BufferBuilder.c(-2910405074198998507L)); - var10000.put(BufferBuilder.c(1758246306199908018L), BufferBuilder.c(4859470819680292000L)); - var10000.put(BufferBuilder.c(-230220685346635567L), BufferBuilder.c(8329674517092153010L)); - var10000.put(BufferBuilder.c(7343766788928300557L), BufferBuilder.c(-5557636070600177629L)); - var10000.put(BufferBuilder.c(-8344171326410813881L), BufferBuilder.c(4696013720210249396L)); - var10000.put(BufferBuilder.c(-954078755364798861L), BufferBuilder.c(3688294573993866483L)); - var10000.put(BufferBuilder.c(-1138499386701147427L), BufferBuilder.c(-4741156951488760668L)); - var10000.put(BufferBuilder.c(-3051700853286309659L), BufferBuilder.c(-5697251628203250546L)); - var10000.put(BufferBuilder.c(-8712756849325095323L), BufferBuilder.c(-4731109597250561351L)); - var10000.put(BufferBuilder.c(8891367905002598640L), BufferBuilder.c(-3200278534379023269L)); - var10000.put(BufferBuilder.c(8554094297057473059L), BufferBuilder.c(-8918886375339154366L)); - var10000.put(BufferBuilder.c(3226899568851804296L), BufferBuilder.c(-43177438119112134L)); - var10000.put(BufferBuilder.c(-2314617262953540921L), BufferBuilder.c(3386583778420061744L)); - var10000.put(BufferBuilder.c(-1008732739688440078L), BufferBuilder.c(6624763285881495756L)); - var10000.put(BufferBuilder.c(-4185482408069290319L), BufferBuilder.c(-4479875271308088623L)); - var10000.put(BufferBuilder.c(-8490206196432977917L), BufferBuilder.c(6799593836664471292L)); - var10000.put(BufferBuilder.c(-7919182170291427603L), BufferBuilder.c(-6852577623740513751L)); - var10000.put(BufferBuilder.c(-9210692884025736702L), BufferBuilder.c(3908142276067875457L)); - var10000.put(BufferBuilder.c(1579899581564660748L), BufferBuilder.c(-8850017628731723068L)); - var10000.put(BufferBuilder.c(1038974161384914651L), BufferBuilder.c(-8230630422485219597L)); - var10000.put(BufferBuilder.c(-3505808409602220335L), BufferBuilder.c(-6825566085302439250L)); - var10000.put(BufferBuilder.c(6588273910705076350L), BufferBuilder.c(-5333296007475470206L)); - var10000.put(BufferBuilder.c(5055788835030223449L), BufferBuilder.c(408181527473079432L)); - var10000.put(BufferBuilder.c(-133549395906928069L), BufferBuilder.c(6200218441316952195L)); - var10000.put(BufferBuilder.c(-4856187243505396691L), BufferBuilder.c(-6663354817181283818L)); - var10000.put(BufferBuilder.c(-2313983986721640370L), BufferBuilder.c(782800181262266938L)); - var10000.put(BufferBuilder.c(3385636460680987261L), BufferBuilder.c(1704473555893831187L)); - var10000.put(BufferBuilder.c(8380257239870671539L), BufferBuilder.c(5255556992912939571L)); - var10000.put(BufferBuilder.c(-6249724850758959083L), BufferBuilder.c(-2289856573650298875L)); - var10000.put(BufferBuilder.c(-5700406761566071660L), BufferBuilder.c(8044915478752017993L)); - var10000.put(BufferBuilder.c(3727357393867852811L), BufferBuilder.c(-7407415223901136794L)); - var10000.put(BufferBuilder.c(-3500968644344112634L), BufferBuilder.c(-3272821690273931202L)); - var10000.put(BufferBuilder.c(4150698175218721844L), BufferBuilder.c(4395597053308858004L)); - var10000.put(BufferBuilder.c(-3757446140403702657L), BufferBuilder.c(-1845756782949033304L)); - var10000.put(BufferBuilder.c(5200679057210830451L), BufferBuilder.c(-7656541777195742643L)); - var10000.put(BufferBuilder.c(-8083285079433530634L), BufferBuilder.c(5888929025696889345L)); - var10000.put(BufferBuilder.c(-2854711176333156157L), BufferBuilder.c(6625647942523446914L)); - var10000.put(BufferBuilder.c(3097033788837945344L), BufferBuilder.c(710880893875849395L)); - var10000.put(BufferBuilder.c(-6194061755476677380L), BufferBuilder.c(-6667589283046821266L)); - var10000.put(BufferBuilder.c(-1106509034778649535L), BufferBuilder.c(-4981866973780877116L)); - var10000.put(BufferBuilder.c(-5530749455248272855L), BufferBuilder.c(5543682074902183114L)); - var10000.put(BufferBuilder.c(751208197775179514L), BufferBuilder.c(5280034607543685259L)); - var10000.put(BufferBuilder.c(-2237323156848269076L), BufferBuilder.c(-3556218706840807360L)); - var10000.put(BufferBuilder.c(8921010028392166915L), BufferBuilder.c(-6916507407179210503L)); - var10000.put(BufferBuilder.c(5419162186645378753L), BufferBuilder.c(3192897687144395953L)); - var10000.put(BufferBuilder.c(-1236393323873736538L), BufferBuilder.c(2288118446342064675L)); - var10000.put(BufferBuilder.c(7957605476804626157L), BufferBuilder.c(3181215221739958386L)); - var10000.put(BufferBuilder.c(8334767496681823445L), BufferBuilder.c(-4843795654108558091L)); - var10000.put(BufferBuilder.c(-4071437567082976015L), BufferBuilder.c(-4324902721630332290L)); - var10000.put(BufferBuilder.c(-1436949943269055310L), BufferBuilder.c(6611487171300161581L)); - var10000.put(BufferBuilder.c(-7500209996879875412L), BufferBuilder.c(-5876651995948832159L)); - var10000.put(BufferBuilder.c(-261594416393580500L), BufferBuilder.c(-8805660928008373513L)); - var10000.put(BufferBuilder.c(7741108680113041059L), BufferBuilder.c(1363281827230999149L)); - var10000.put(BufferBuilder.c(6816638415289778716L), BufferBuilder.c(-1434151723391057703L)); - var10000.put(BufferBuilder.c(-3393242342811867001L), BufferBuilder.c(-8736390857582169031L)); - var10000.put(BufferBuilder.c(-7579251160049527715L), BufferBuilder.c(-443525381885353788L)); - var10000.put(BufferBuilder.c(4088973721020057305L), BufferBuilder.c(-7870808510717010261L)); - var10000.put(BufferBuilder.c(8155808443555167800L), BufferBuilder.c(-7002222494436001671L)); - var10000.put(BufferBuilder.c(-3793710852961484043L), BufferBuilder.c(-5543153647417250296L)); - var10000.put(BufferBuilder.c(6202819251567107217L), BufferBuilder.c(6687739890414908003L)); - var10000.put(BufferBuilder.c(-5862272956665189333L), BufferBuilder.c(-375288503527436123L)); - var10000.put(BufferBuilder.c(-5524353546038226779L), BufferBuilder.c(-5696754728249724716L)); - var10000.put(BufferBuilder.c(-1088427739918666239L), BufferBuilder.c(-7807573193219245474L)); - var10000.put(BufferBuilder.c(-6735402426752584547L), BufferBuilder.c(1606756146384085645L)); - var10000.put(BufferBuilder.c(1240506910476872373L), BufferBuilder.c(-5574010219895970152L)); - var10000.put(BufferBuilder.c(-3125613186251876746L), BufferBuilder.c(8945045393965489308L)); - var10000.put(BufferBuilder.c(5247538292695345827L), BufferBuilder.c(4544010333795545249L)); - var10000.put(BufferBuilder.c(3003224990978606760L), BufferBuilder.c(3125420702784529013L)); - var10000.put(BufferBuilder.c(-4613637202291869691L), BufferBuilder.c(4497510028244895967L)); - var10000.put(BufferBuilder.c(4298496826770254407L), BufferBuilder.c(1956334106730846273L)); - var10000.put(BufferBuilder.c(-4997527941537940858L), BufferBuilder.c(2833937308151009946L)); - var10000.put(BufferBuilder.c(-462941923392085497L), BufferBuilder.c(7171014703972086859L)); - var10000.put(BufferBuilder.c(5163538977462991432L), BufferBuilder.c(8043335989027149956L)); - var10000.put(BufferBuilder.c(-1988190025576998861L), BufferBuilder.c(8260119081649737755L)); - var10000.put(BufferBuilder.c(8220732401131500107L), BufferBuilder.c(3179493139604139724L)); - var10000.put(BufferBuilder.c(-4615338367014700912L), BufferBuilder.c(6251013137227983915L)); - var10000.put(BufferBuilder.c(-1007482236767380793L), BufferBuilder.c(7324312744550917739L)); - var10000.put(BufferBuilder.c(2969442474865720478L), BufferBuilder.c(-9179445663605146605L)); - var10000.put(BufferBuilder.c(1315706124792024190L), BufferBuilder.c(-8570191101961889563L)); - var10000.put(BufferBuilder.c(-8599455053866476372L), BufferBuilder.c(4963501184008118795L)); - var10000.put(BufferBuilder.c(6532689332737968234L), BufferBuilder.c(-5789494571451353017L)); - var10000.put(BufferBuilder.c(6012172525715873994L), BufferBuilder.c(-7268487242707409292L)); - var10000.put(BufferBuilder.c(-6852018013399179653L), BufferBuilder.c(1573696237821487199L)); - var10000.put(BufferBuilder.c(4050124793609773197L), BufferBuilder.c(5553295159344487125L)); - var10000.put(BufferBuilder.c(-4375819393444027867L), BufferBuilder.c(-6377720005210641815L)); - var10000.put(BufferBuilder.c(4567141513362564639L), BufferBuilder.c(5349604139688321565L)); - var10000.put(BufferBuilder.c(982309827861852186L), BufferBuilder.c(-6898516347684443564L)); - var10000.put(BufferBuilder.c(6557803630188365389L), BufferBuilder.c(5467981009766606412L)); - var10000.put(BufferBuilder.c(-2896965986779000605L), BufferBuilder.c(4023379140452075583L)); - var10000.put(BufferBuilder.c(3361532512909788351L), BufferBuilder.c(-848629366259661793L)); - var10000.put(BufferBuilder.c(-4858459961004199933L), BufferBuilder.c(-3400030086231339923L)); - var10000.put(BufferBuilder.c(-3145472382635148580L), BufferBuilder.c(-374005640378340684L)); - var10000.put(BufferBuilder.c(164804797446039256L), BufferBuilder.c(4485018810083151995L)); - var10000.put(BufferBuilder.c(-1719735382769201046L), BufferBuilder.c(4500136763122181265L)); - var10000.put(BufferBuilder.c(1086155650602940644L), BufferBuilder.c(-2889058065132883410L)); - var10000.put(BufferBuilder.c(-4385249508492666740L), BufferBuilder.c(4103993161080574563L)); - var10000.put(BufferBuilder.c(-1245429109133874468L), BufferBuilder.c(5267806739724463702L)); - var10000.put(BufferBuilder.c(-824867981422224382L), BufferBuilder.c(6390604592949081609L)); - var10000.put(BufferBuilder.c(-774784481428612867L), BufferBuilder.c(-955018390006057940L)); - var10000.put(BufferBuilder.c(-4416690919722406178L), BufferBuilder.c(-6395161192972242728L)); - var10000.put(BufferBuilder.c(3204180601277586576L), BufferBuilder.c(2421905355610442463L)); - var10000.put(BufferBuilder.c(5079283522920992427L), BufferBuilder.c(3318524971996084864L)); - var10000.put(BufferBuilder.c(-1148206224638514608L), BufferBuilder.c(6020657794110054013L)); - var10000.put(BufferBuilder.c(1895340408316951772L), BufferBuilder.c(6537253575815323872L)); - var10000.put(BufferBuilder.c(8372888485448621578L), BufferBuilder.c(-2645372078574196069L)); - var10000.put(BufferBuilder.c(5102245230215019119L), BufferBuilder.c(-7026369634633222061L)); - var10000.put(BufferBuilder.c(-169564809506188652L), BufferBuilder.c(2570109378201087637L)); - var10000.put(BufferBuilder.c(-859650544723884014L), BufferBuilder.c(-234852938927668191L)); - var10000.put(BufferBuilder.c(-3798814307454992868L), BufferBuilder.c(-5510151875771759493L)); - var10000.put(BufferBuilder.c(4692353401430399179L), BufferBuilder.c(-6879003152139929873L)); - var10000.put(BufferBuilder.c(5280930157909762614L), BufferBuilder.c(5687016125153160228L)); - var10000.put(BufferBuilder.c(-3998987776117430145L), BufferBuilder.c(6427484055400627203L)); - var10000.put(BufferBuilder.c(-1336838378399808932L), BufferBuilder.c(-6467780991911921973L)); - var10000.put(BufferBuilder.c(7285953078280805507L), BufferBuilder.c(-1501293960148409203L)); - var10000.put(BufferBuilder.c(-5937060776039918984L), BufferBuilder.c(3853677436040058537L)); - var10000.put(BufferBuilder.c(-2028422410729092983L), BufferBuilder.c(-6319448905731037445L)); - var10000.put(BufferBuilder.c(1527114434887716568L), BufferBuilder.c(-6199001539687222685L)); - var10000.put(BufferBuilder.c(8101801869553213444L), BufferBuilder.c(2809412933206846594L)); - var10000.put(BufferBuilder.c(-3313855682175284553L), BufferBuilder.c(-6905282324244962109L)); - var10000.put(BufferBuilder.c(-7347231483754596663L), BufferBuilder.c(-3961113500081209197L)); - var10000.put(BufferBuilder.c(-1872693272918355840L), BufferBuilder.c(3830957392917505082L)); - var10000.put(BufferBuilder.c(-4978094969045159909L), BufferBuilder.c(-4936483369704568099L)); - var10000.put(BufferBuilder.c(-3939066147521318721L), BufferBuilder.c(-5924470295378134306L)); - var10000.put(BufferBuilder.c(544188882756283500L), BufferBuilder.c(4937062852278248083L)); - var10000.put(BufferBuilder.c(2555850571115108507L), BufferBuilder.c(-5012491890140890536L)); - var10000.put(BufferBuilder.c(6338841577719614581L), BufferBuilder.c(6762731062535694466L)); - var10000.put(BufferBuilder.c(3331818317897651249L), BufferBuilder.c(3351435977544942306L)); - var10000.put(BufferBuilder.c(-5491423464339281716L), BufferBuilder.c(-7161996990406740923L)); - var10000.put(BufferBuilder.c(-8305568653865558445L), BufferBuilder.c(7878799077498933762L)); - var10000.put(BufferBuilder.c(3650998248347652698L), BufferBuilder.c(6248985007335648409L)); - var10000.put(BufferBuilder.c(-2752662163426051415L), BufferBuilder.c(94699291978370741L)); - var10000.put(BufferBuilder.c(4328566096024452701L), BufferBuilder.c(722945958359818245L)); - var10000.put(BufferBuilder.c(893669526119098008L), BufferBuilder.c(-3523479556316144503L)); - var10000.put(BufferBuilder.c(6846806097182259288L), BufferBuilder.c(3383503492051979307L)); - var10000.put(BufferBuilder.c(7054442742242472140L), BufferBuilder.c(-3658446452580369839L)); - var10000.put(BufferBuilder.c(1616823329244165255L), BufferBuilder.c(-7964366788455398668L)); - var10000.put(BufferBuilder.c(526570228169064696L), BufferBuilder.c(6077385833023968479L)); - var10000.put(BufferBuilder.c(-4625713525628894607L), BufferBuilder.c(9162329268635718292L)); - var10000.put(BufferBuilder.c(8032708547016184051L), BufferBuilder.c(4357531913153040537L)); - var10000.put(BufferBuilder.c(833174040144135239L), BufferBuilder.c(-235658698751660521L)); - var10000.put(BufferBuilder.c(-9011308707425004501L), BufferBuilder.c(4326786863257045579L)); - var10000.put(BufferBuilder.c(-1945481200841949630L), BufferBuilder.c(-8729553733060508490L)); - var10000.put(BufferBuilder.c(-225605000870089113L), BufferBuilder.c(8323152575936965781L)); - var10000.put(BufferBuilder.c(-6355397712882277736L), BufferBuilder.c(-3243031506503260616L)); - var10000.put(BufferBuilder.c(-6230282209382974751L), BufferBuilder.c(8842704794073492735L)); - var10000.put(BufferBuilder.c(-8558216649965883207L), BufferBuilder.c(7284427102305964618L)); - var10000.put(BufferBuilder.c(-2403648834491916710L), BufferBuilder.c(-9209830384704278350L)); - var10000.put(BufferBuilder.c(3584607534582107857L), BufferBuilder.c(-6359316307242334177L)); - var10000.put(BufferBuilder.c(8326086344111402198L), BufferBuilder.c(-7481390404575842072L)); - var10000.put(BufferBuilder.c(-6526698823366639410L), BufferBuilder.c(6247610330781809193L)); - var10000.put(BufferBuilder.c(2826320890830133796L), BufferBuilder.c(7413589075738371593L)); - var10000.put(BufferBuilder.c(221159776196086917L), BufferBuilder.c(5399144324632286402L)); - var10000.put(BufferBuilder.c(-9177893186349615460L), BufferBuilder.c(-7754397521292299208L)); - var10000.put(BufferBuilder.c(7348707572074627101L), BufferBuilder.c(5752002688101063699L)); - var10000.put(BufferBuilder.c(1977192178244491857L), BufferBuilder.c(9013082813895409862L)); - var10000.put(BufferBuilder.c(-4053409397859905349L), BufferBuilder.c(1619250521151215184L)); - var10000.put(BufferBuilder.c(-7452852885900824387L), BufferBuilder.c(-4573051439757668670L)); - var10000.put(BufferBuilder.c(-7953461820299348353L), BufferBuilder.c(-8063768880841349378L)); - var10000.put(BufferBuilder.c(-6172607226302767448L), BufferBuilder.c(8149500941302064302L)); - var10000.put(BufferBuilder.c(-3010471672045423881L), BufferBuilder.c(-4517516808171998667L)); - var10000.put(BufferBuilder.c(-3208125388991876481L), BufferBuilder.c(1257212924153641585L)); - var10000.put(BufferBuilder.c(6869607907127974993L), BufferBuilder.c(-1718822503536152563L)); - var10000.put(BufferBuilder.c(5394866259939222611L), BufferBuilder.c(-7457088260174168001L)); - var10000.put(BufferBuilder.c(6238491384548322405L), BufferBuilder.c(-5655694361100384214L)); - var10000.put(BufferBuilder.c(-1065348058710997346L), BufferBuilder.c(-8053404902982638452L)); - var10000.put(BufferBuilder.c(4736019877597511272L), BufferBuilder.c(2052639072718689337L)); - var10000.put(BufferBuilder.c(3686287913232852105L), BufferBuilder.c(-6499956863409149371L)); - var10000.put(BufferBuilder.c(-6296635545174369235L), BufferBuilder.c(8917204986374833223L)); - var10000.put(BufferBuilder.c(-43392709101218567L), BufferBuilder.c(8211267911876869756L)); - var10000.put(BufferBuilder.c(6086748354939630188L), BufferBuilder.c(8713411522327279243L)); - var10000.put(BufferBuilder.c(5376043397992419965L), BufferBuilder.c(6867491054516268118L)); - var10000.put(BufferBuilder.c(-3156164598950677925L), BufferBuilder.c(-7439183554740809473L)); - var10000.put(BufferBuilder.c(3315707727882178164L), BufferBuilder.c(4637468978216661064L)); - var10000.put(BufferBuilder.c(2786679801013358810L), BufferBuilder.c(-3908406718314053931L)); - var10000.put(BufferBuilder.c(-2759268889089372048L), BufferBuilder.c(-4942853924712863075L)); - var10000.put(BufferBuilder.c(2085148919900731928L), BufferBuilder.c(-6010245431009032513L)); - var10000.put(BufferBuilder.c(1619220091135615132L), BufferBuilder.c(2881562791431515180L)); - var10000.put(BufferBuilder.c(5801711733422878234L), BufferBuilder.c(7474435170812405778L)); - var10000.put(BufferBuilder.c(8329183596874608266L), BufferBuilder.c(-331446166729300964L)); - var10000.put(BufferBuilder.c(-3951767478888708974L), BufferBuilder.c(1418878053223916256L)); - var10000.put(BufferBuilder.c(6945309732811964583L), BufferBuilder.c(486756432129606828L)); - var10000.put(BufferBuilder.c(6395778053317126796L), BufferBuilder.c(-1962134851773090086L)); - var10000.put(BufferBuilder.c(-429136796967109027L), BufferBuilder.c(9071915593419276360L)); - var10000.put(BufferBuilder.c(3688923779776662584L), BufferBuilder.c(-4883894441856319878L)); - var10000.put(BufferBuilder.c(1587761057015606478L), BufferBuilder.c(-614530778394747711L)); - var10000.put(BufferBuilder.c(-4095540105567683014L), BufferBuilder.c(7229781645694476875L)); - var10000.put(BufferBuilder.c(3487733028807882844L), BufferBuilder.c(8754299428670272203L)); - var10000.put(BufferBuilder.c(-6589938713363643234L), BufferBuilder.c(2891340781778308855L)); - var10000.put(BufferBuilder.c(-6722113128562329971L), BufferBuilder.c(1210511977908118155L)); - var10000.put(BufferBuilder.c(-2787521831635570124L), BufferBuilder.c(-5650259113405791185L)); - var10000.put(BufferBuilder.c(-3063372722212811179L), BufferBuilder.c(4751132003758086752L)); - var10000.put(BufferBuilder.c(-8242886705717112809L), BufferBuilder.c(8804601164923461716L)); - var10000.put(BufferBuilder.c(9032195926102487061L), BufferBuilder.c(-6062969809198531505L)); - var10000.put(BufferBuilder.c(-1337570808800371122L), BufferBuilder.c(6271994366561350270L)); - var10000.put(BufferBuilder.c(1062545539638883501L), BufferBuilder.c(732532500096362055L)); - var10000.put(BufferBuilder.c(84526576431079063L), BufferBuilder.c(-6811193032407676225L)); - var10000.put(BufferBuilder.c(2911670278869744712L), BufferBuilder.c(8669950319519651027L)); - var10000.put(BufferBuilder.c(8919192273041036329L), BufferBuilder.c(-7143550327639100833L)); - var10000.put(BufferBuilder.c(7401692042860085879L), BufferBuilder.c(6478603686148120699L)); - var10000.put(BufferBuilder.c(-3713433663187477395L), BufferBuilder.c(-3260147807304849162L)); - var10000.put(BufferBuilder.c(6358961624064996424L), BufferBuilder.c(5738520219868653679L)); - var10000.put(BufferBuilder.c(4634918334086847008L), BufferBuilder.c(1859421818846961232L)); - var10000.put(BufferBuilder.c(1658777250943376527L), BufferBuilder.c(2452680648740475549L)); - var10000.put(BufferBuilder.c(1841407550558413478L), BufferBuilder.c(-8949837133094352887L)); - var10000.put(BufferBuilder.c(-8770737008458076965L), BufferBuilder.c(2456111672770089163L)); - var10000.put(BufferBuilder.c(-714273224302897054L), BufferBuilder.c(737496475703807098L)); - var10000.put(BufferBuilder.c(950984788858122983L), BufferBuilder.c(3550036637694335633L)); - var10000.put(BufferBuilder.c(4983340228009526375L), BufferBuilder.c(-697351664384416229L)); - var10000.put(BufferBuilder.c(-4435980466734872834L), BufferBuilder.c(-6330799225326097269L)); - var10000.put(BufferBuilder.c(-8105108762429316896L), BufferBuilder.c(-1114265187704969573L)); - var10000.put(BufferBuilder.c(593195358043167327L), BufferBuilder.c(-5341601393677553553L)); - var10000.put(BufferBuilder.c(6117727251682788046L), BufferBuilder.c(-6425009479109657442L)); - var10000.put(BufferBuilder.c(6275492418253061159L), BufferBuilder.c(-6189558618822070643L)); - var10000.put(BufferBuilder.c(-3196785767050221366L), BufferBuilder.c(-6095812450180974886L)); - var10000.put(BufferBuilder.c(4245995994189083747L), BufferBuilder.c(-2422038043811076994L)); - var10000.put(BufferBuilder.c(5534007790477046321L), BufferBuilder.c(533392689330944627L)); - var10000.put(BufferBuilder.c(7107939431165654087L), BufferBuilder.c(5417487101938051078L)); - var10000.put(BufferBuilder.c(-7211233608187002207L), BufferBuilder.c(1482747432508923463L)); - var10000.put(BufferBuilder.c(8976998290431343250L), BufferBuilder.c(-6513786495183191926L)); - var10000.put(BufferBuilder.c(-6706122652826928936L), BufferBuilder.c(-5171860918397560265L)); - var10000.put(BufferBuilder.c(-4022107143694975809L), BufferBuilder.c(-929579674238332905L)); - var10000.put(BufferBuilder.c(-6140751404438042393L), BufferBuilder.c(-2929375975111646042L)); - var10000.put(BufferBuilder.c(-6161946919649507107L), BufferBuilder.c(-8397915345362657194L)); - var10000.put(BufferBuilder.c(-4309180873188271490L), BufferBuilder.c(-1498049877833391944L)); - var10000.put(BufferBuilder.c(7732142866986032278L), BufferBuilder.c(-172483964075748626L)); - var10000.put(BufferBuilder.c(7457139024076520094L), BufferBuilder.c(7374711531135944832L)); - var10000.put(BufferBuilder.c(-5707198350169809319L), BufferBuilder.c(8681537161452762241L)); - var10000.put(BufferBuilder.c(2810837979784852582L), BufferBuilder.c(-3553557855325214087L)); - var10000.put(BufferBuilder.c(3812242303530679322L), BufferBuilder.c(2406290238299642445L)); - var10000.put(BufferBuilder.c(8258688420414069452L), BufferBuilder.c(-4955593078690773361L)); - var10000.put(BufferBuilder.c(-6686255987025982347L), BufferBuilder.c(4339143283200449127L)); - var10000.put(BufferBuilder.c(-6764792847802732502L), BufferBuilder.c(-2348868649292955489L)); - var10000.put(BufferBuilder.c(916419319717427318L), BufferBuilder.c(1661886763163713708L)); - var10000.put(BufferBuilder.c(-6086710560271142815L), BufferBuilder.c(-6293185654488556920L)); - var10000.put(BufferBuilder.c(1906590622991530555L), BufferBuilder.c(3916191064958413525L)); - var10000.put(BufferBuilder.c(-497735813369106690L), BufferBuilder.c(2340049664907941108L)); - var10000.put(BufferBuilder.c(5758872754727227112L), BufferBuilder.c(-8591058850484168549L)); - var10000.put(BufferBuilder.c(7139894995261776111L), BufferBuilder.c(-4098593295433276863L)); - var10000.put(BufferBuilder.c(2091339025006341667L), BufferBuilder.c(-1424516750780396319L)); - var10000.put(BufferBuilder.c(-6988876676727741392L), BufferBuilder.c(1752679046086992463L)); - var10000.put(BufferBuilder.c(-8593282976633164223L), BufferBuilder.c(7314973577371276290L)); - var10000.put(BufferBuilder.c(-1017613304408082187L), BufferBuilder.c(-4363410048003478352L)); - var10000.put(BufferBuilder.c(-3160946624490849612L), BufferBuilder.c(60704005401466079L)); - var10000.put(BufferBuilder.c(6023557367805456458L), BufferBuilder.c(8791812758646921373L)); - var10000.put(BufferBuilder.c(3849804858258269343L), BufferBuilder.c(7925790470204554480L)); - var10000.put(BufferBuilder.c(-471311301287711645L), BufferBuilder.c(-8401989371933075428L)); - var10000.put(BufferBuilder.c(-1625370493276136302L), BufferBuilder.c(-7075119298168913399L)); - var10000.put(BufferBuilder.c(3766412842961195214L), BufferBuilder.c(6104543169740303518L)); - var10000.put(BufferBuilder.c(4428240274735563507L), BufferBuilder.c(-7212314845139302750L)); - var10000.put(BufferBuilder.c(8075459023769104000L), BufferBuilder.c(6487255909083487974L)); - var10000.put(BufferBuilder.c(-3303136758966322035L), BufferBuilder.c(1875330813317287014L)); - var10000.put(BufferBuilder.c(-5371752344312614759L), BufferBuilder.c(6781605971531313685L)); - var10000.put(BufferBuilder.c(167049238886677179L), BufferBuilder.c(-7769671467421125385L)); - var10000.put(BufferBuilder.c(7647111303863807505L), BufferBuilder.c(-4919561186032363994L)); - var10000.put(BufferBuilder.c(8264531624302521962L), BufferBuilder.c(-4372888531034072998L)); - var10000.put(BufferBuilder.c(-6086740642278926847L), BufferBuilder.c(-6828786922354790204L)); - var10000.put(BufferBuilder.c(6545466127302334005L), BufferBuilder.c(7490570114005796056L)); - var10000.put(BufferBuilder.c(5501852034878450753L), BufferBuilder.c(11753386579616376L)); - var10000.put(BufferBuilder.c(5643873503040523398L), BufferBuilder.c(-4853520442993744846L)); - var10000.put(BufferBuilder.c(6609682234128911031L), BufferBuilder.c(-3446161428156209591L)); - var10000.put(BufferBuilder.c(-4819539392019092895L), BufferBuilder.c(-6994371600384988642L)); - var10000.put(BufferBuilder.c(974188493300210369L), BufferBuilder.c(996233629601566392L)); - var10000.put(BufferBuilder.c(7149225098017361579L), BufferBuilder.c(7242811521640005250L)); - var10000.put(BufferBuilder.c(400258400275443815L), BufferBuilder.c(-38025200048660338L)); - var10000.put(BufferBuilder.c(-6644023012647543587L), BufferBuilder.c(-6403193445190323082L)); - var10000.put(BufferBuilder.c(-3737259859512131024L), BufferBuilder.c(2493193798211415731L)); - var10000.put(BufferBuilder.c(2996995789507450100L), BufferBuilder.c(-2929833917831524787L)); - var10000.put(BufferBuilder.c(-5190872162172040013L), BufferBuilder.c(4269172305534194380L)); - var10000.put(BufferBuilder.c(8271389850051715095L), BufferBuilder.c(-7473384714354594642L)); - var10000.put(BufferBuilder.c(306835788451543104L), BufferBuilder.c(6715420024540645083L)); - var10000.put(BufferBuilder.c(3567031567819904544L), BufferBuilder.c(-2643748895088708557L)); - var10000.put(BufferBuilder.c(2374843317458691142L), BufferBuilder.c(-3157370895157520194L)); - var10000.put(BufferBuilder.c(-7583194889063825782L), BufferBuilder.c(-5947208743884147458L)); - var10000.put(BufferBuilder.c(-432876157844348785L), BufferBuilder.c(4851727751658344053L)); - var10000.put(BufferBuilder.c(2984479042630581374L), BufferBuilder.c(-3096355382566450620L)); - var10000.put(BufferBuilder.c(-1493714074235441502L), BufferBuilder.c(721171099815049453L)); - var10000.put(BufferBuilder.c(-4322376455382772590L), BufferBuilder.c(4833406186636940423L)); - var10000.put(BufferBuilder.c(3387138557596227086L), BufferBuilder.c(1203233535581202990L)); - var10000.put(BufferBuilder.c(8175152426462690841L), BufferBuilder.c(-840133606900371277L)); - var10000.put(BufferBuilder.c(-2977642875229182935L), BufferBuilder.c(-4519421221595590977L)); - var10000.put(BufferBuilder.c(-1939714346848552311L), BufferBuilder.c(8779223178439740444L)); - var10000.put(BufferBuilder.c(2747011947023061050L), BufferBuilder.c(7482153364425661580L)); - var10000.put(BufferBuilder.c(-7045908465509576101L), BufferBuilder.c(-4754749755444570997L)); - var10000.put(BufferBuilder.c(4206678028545082956L), BufferBuilder.c(6222875817531733517L)); - var10000.put(BufferBuilder.c(7957233324799187461L), BufferBuilder.c(5082838887840183415L)); - var10000.put(BufferBuilder.c(-7585302037732977543L), BufferBuilder.c(-7011481435330258855L)); - var10000.put(BufferBuilder.c(8754428227724797455L), BufferBuilder.c(622142408429992981L)); - var10000.put(BufferBuilder.c(-4048265643954341728L), BufferBuilder.c(5878302504895308324L)); - var10000.put(BufferBuilder.c(-4534134834283489187L), BufferBuilder.c(2814358959038522023L)); - var10000.put(BufferBuilder.c(2340031776957405293L), BufferBuilder.c(-9114757341136248756L)); - var10000.put(BufferBuilder.c(-9013452872645356387L), BufferBuilder.c(-5395472544543445821L)); - var10000.put(BufferBuilder.c(-993008939579806636L), BufferBuilder.c(22966781691146446L)); - var10000.put(BufferBuilder.c(-115776990051377458L), BufferBuilder.c(-6750073200282765593L)); - var10000.put(BufferBuilder.c(1394361511453860403L), BufferBuilder.c(8253866178680505919L)); - var10000.put(BufferBuilder.c(3978085142985998563L), BufferBuilder.c(5216230508300619797L)); - var10000.put(BufferBuilder.c(-958366844280543740L), BufferBuilder.c(8589296880277843509L)); - var10000.put(BufferBuilder.c(249463039922260566L), BufferBuilder.c(-1593123247410518333L)); - var10000.put(BufferBuilder.c(-1568140385606215448L), BufferBuilder.c(6530876819841363022L)); - var10000.put(BufferBuilder.c(5748878362001676962L), BufferBuilder.c(-7353443320325923177L)); - var10000.put(BufferBuilder.c(6835242739370373167L), BufferBuilder.c(-3101016320075247529L)); - var10000.put(BufferBuilder.c(-6782202832982229490L), BufferBuilder.c(5678001859730954971L)); - var10000.put(BufferBuilder.c(-6510553947714084651L), BufferBuilder.c(-6357608912231520599L)); - var10000.put(BufferBuilder.c(-2718533724748660507L), BufferBuilder.c(2341464079872875090L)); - } - - private void c0() { - int[] var10000 = BufferBuilder.c(-3168744426572907501L).b(); - var10000[0] = -33; - var10000[1] = -55; - var10000[2] = -25; - var10000[3] = -8; - var10000[4] = -43; - var10000[5] = -25; - var10000[6] = -1; - var10000[7] = 1; - var10000[8] = -26; - var10000[9] = -41; - var10000[10] = -9; - var10000[11] = 8; - var10000[12] = -20; - var10000[13] = -23; - var10000[14] = -44; - var10000[15] = -8; - var10000[16] = -25; - var10000[17] = -26; - var10000[18] = -28; - var10000[19] = 9; - var10000[20] = -35; - var10000[21] = -27; - var10000[22] = -37; - var10000[23] = 8; - var10000[24] = -15; - var10000[25] = -12; - var10000[26] = -23; - var10000[27] = 25; - var10000[28] = -29; - var10000[29] = -32; - var10000[30] = 25; - var10000[31] = -23; - var10000[32] = 20; - var10000[33] = 33; - var10000[34] = 26; - var10000[35] = -9; - var10000[36] = 23; - var10000[37] = 12; - var10000[38] = -14; - var10000[39] = 15; - var10000[40] = -20; - var10000[41] = 25; - var10000[42] = -21; - var10000[43] = 26; - var10000[44] = 9; - var10000[45] = -8; - var10000[46] = 28; - var10000[47] = 43; - var10000[48] = 27; - var10000[49] = 23; - var10000[50] = 41; - var10000[51] = -11; - var10000[52] = 14; - var10000[53] = 8; - var10000[54] = 23; - var10000[55] = 35; - var10000[56] = 55; - var10000[57] = 29; - var10000[58] = 44; - var10000[59] = 37; - var10000[60] = 20; - var10000[61] = 32; - var10000[62] = 11; - var10000[63] = 21; - int[] var10001 = BufferBuilder.c(5950533397468787817L).b(); - var10001[0] = -6; - var10001[1] = -60; - var10001[2] = -31; - var10001[3] = -21; - var10001[4] = -14; - var10001[5] = -36; - var10001[6] = 6; - var10001[7] = -13; - var10001[8] = -47; - var10001[9] = -13; - var10001[10] = -47; - var10001[11] = -6; - var10001[12] = -40; - var10001[13] = -36; - var10001[14] = -25; - var10001[15] = -21; - var10001[16] = -16; - var10001[17] = 6; - var10001[18] = 14; - var10001[19] = -39; - var10001[20] = 13; - var10001[21] = -14; - var10001[22] = 13; - var10001[23] = -6; - var10001[24] = 21; - var10001[25] = -1; - var10001[26] = 1; - var10001[27] = -21; - var10001[28] = -25; - var10001[29] = 6; - var10001[30] = -4; - var10001[31] = -31; - var10001[32] = 16; - var10001[33] = 31; - var10001[34] = 4; - var10001[35] = 14; - var10001[36] = 21; - var10001[37] = -9; - var10001[38] = -7; - var10001[39] = 25; - var10001[40] = -11; - var10001[41] = 36; - var10001[42] = -14; - var10001[43] = -11; - var10001[44] = -15; - var10001[45] = 7; - var10001[46] = 9; - var10001[47] = -3; - var10001[48] = 21; - var10001[49] = 36; - var10001[50] = 3; - var10001[51] = 11; - var10001[52] = 40; - var10001[53] = 25; - var10001[54] = 11; - var10001[55] = 47; - var10001[56] = 14; - var10001[57] = 47; - var10001[58] = 39; - var10001[59] = 15; - var10001[60] = -3; - var10001[61] = 60; - var10001[62] = 31; - var10001[63] = 3; - int[] var10002 = BufferBuilder.c(-2596380990021107437L).b(); - var10002[0] = -6; - var10002[1] = -60; - var10002[2] = -31; - var10002[3] = -21; - var10002[4] = -14; - var10002[5] = -36; - var10002[6] = 6; - var10002[7] = -13; - var10002[8] = -47; - var10002[9] = -10; - var10002[10] = -5; - var10002[11] = -40; - var10002[12] = -42; - var10002[13] = -4; - var10002[14] = -46; - var10002[15] = 5; - var10002[16] = -30; - var10002[17] = 4; - var10002[18] = 14; - var10002[19] = 10; - var10002[20] = 13; - var10002[21] = -32; - var10002[22] = -40; - var10002[23] = -24; - var10002[24] = 21; - var10002[25] = -17; - var10002[26] = -18; - var10002[27] = -23; - var10002[28] = -21; - var10002[29] = -30; - var10002[30] = -22; - var10002[31] = -32; - var10002[32] = -5; - var10002[33] = 31; - var10002[34] = -24; - var10002[35] = -4; - var10002[36] = -21; - var10002[37] = 5; - var10002[38] = -10; - var10002[39] = 4; - var10002[40] = -3; - var10002[41] = 36; - var10002[42] = 17; - var10002[43] = 3; - var10002[44] = 18; - var10002[45] = -11; - var10002[46] = 30; - var10002[47] = 24; - var10002[48] = 10; - var10002[49] = 21; - var10002[50] = 23; - var10002[51] = 40; - var10002[52] = 22; - var10002[53] = 32; - var10002[54] = 42; - var10002[55] = 47; - var10002[56] = 11; - var10002[57] = 21; - var10002[58] = 24; - var10002[59] = 30; - var10002[60] = 46; - var10002[61] = 60; - var10002[62] = 40; - var10002[63] = 32; - int[] var10003 = BufferBuilder.c(-2253118065328061215L).b(); - var10003[0] = -33; - var10003[1] = -55; - var10003[2] = -25; - var10003[3] = -8; - var10003[4] = -43; - var10003[5] = -25; - var10003[6] = -1; - var10003[7] = 1; - var10003[8] = -14; - var10003[9] = -16; - var10003[10] = -30; - var10003[11] = 8; - var10003[12] = -40; - var10003[13] = -37; - var10003[14] = -34; - var10003[15] = -3; - var10003[16] = -21; - var10003[17] = -6; - var10003[18] = 3; - var10003[19] = -30; - var10003[20] = -35; - var10003[21] = -36; - var10003[22] = 14; - var10003[23] = 6; - var10003[24] = -37; - var10003[25] = 16; - var10003[26] = -33; - var10003[27] = 25; - var10003[28] = -32; - var10003[29] = -2; - var10003[30] = 25; - var10003[31] = 2; - var10003[32] = -14; - var10003[33] = 33; - var10003[34] = -7; - var10003[35] = -18; - var10003[36] = -22; - var10003[37] = 21; - var10003[38] = -6; - var10003[39] = -23; - var10003[40] = 30; - var10003[41] = 7; - var10003[42] = -12; - var10003[43] = -8; - var10003[44] = 6; - var10003[45] = -18; - var10003[46] = 14; - var10003[47] = 43; - var10003[48] = 34; - var10003[49] = 30; - var10003[50] = 37; - var10003[51] = 8; - var10003[52] = 40; - var10003[53] = 18; - var10003[54] = 12; - var10003[55] = 35; - var10003[56] = 55; - var10003[57] = 36; - var10003[58] = 22; - var10003[59] = 33; - var10003[60] = 32; - var10003[61] = 37; - var10003[62] = 23; - var10003[63] = 18; - int[] var10004 = BufferBuilder.c(7343704662880998948L).b(); - var10004[0] = -6; - var10004[1] = -60; - var10004[2] = -31; - var10004[3] = -21; - var10004[4] = -14; - var10004[5] = -36; - var10004[6] = 6; - var10004[7] = -13; - var10004[8] = -47; - var10004[9] = -3; - var10004[10] = -37; - var10004[11] = -49; - var10004[12] = 3; - var10004[13] = -40; - var10004[14] = -34; - var10004[15] = -35; - var10004[16] = -3; - var10004[17] = -20; - var10004[18] = 14; - var10004[19] = 3; - var10004[20] = 13; - var10004[21] = -13; - var10004[22] = -18; - var10004[23] = -34; - var10004[24] = 21; - var10004[25] = -17; - var10004[26] = -6; - var10004[27] = -4; - var10004[28] = -31; - var10004[29] = -1; - var10004[30] = 1; - var10004[31] = 4; - var10004[32] = 6; - var10004[33] = 31; - var10004[34] = 13; - var10004[35] = -27; - var10004[36] = -13; - var10004[37] = 20; - var10004[38] = -7; - var10004[39] = -17; - var10004[40] = 18; - var10004[41] = 36; - var10004[42] = 17; - var10004[43] = -11; - var10004[44] = -19; - var10004[45] = 7; - var10004[46] = -5; - var10004[47] = 37; - var10004[48] = 34; - var10004[49] = 13; - var10004[50] = 35; - var10004[51] = 5; - var10004[52] = -6; - var10004[53] = 40; - var10004[54] = 11; - var10004[55] = 47; - var10004[56] = 17; - var10004[57] = 34; - var10004[58] = 6; - var10004[59] = 31; - var10004[60] = 49; - var10004[61] = 60; - var10004[62] = 27; - var10004[63] = 19; - int[] var10005 = BufferBuilder.c(5742901823694665156L).b(); - var10005[0] = -6; - var10005[1] = -60; - var10005[2] = -31; - var10005[3] = -21; - var10005[4] = -14; - var10005[5] = -36; - var10005[6] = 6; - var10005[7] = -13; - var10005[8] = -47; - var10005[9] = -2; - var10005[10] = -38; - var10005[11] = 2; - var10005[12] = -5; - var10005[13] = -25; - var10005[14] = -39; - var10005[15] = -15; - var10005[16] = -21; - var10005[17] = 5; - var10005[18] = 14; - var10005[19] = -31; - var10005[20] = 13; - var10005[21] = -36; - var10005[22] = -18; - var10005[23] = -37; - var10005[24] = 21; - var10005[25] = -10; - var10005[26] = -17; - var10005[27] = -24; - var10005[28] = -30; - var10005[29] = -5; - var10005[30] = 15; - var10005[31] = -23; - var10005[32] = -4; - var10005[33] = 31; - var10005[34] = 5; - var10005[35] = 10; - var10005[36] = 4; - var10005[37] = 21; - var10005[38] = 25; - var10005[39] = -23; - var10005[40] = 18; - var10005[41] = 36; - var10005[42] = -10; - var10005[43] = 17; - var10005[44] = -19; - var10005[45] = -14; - var10005[46] = -10; - var10005[47] = -2; - var10005[48] = 38; - var10005[49] = 2; - var10005[50] = 31; - var10005[51] = 24; - var10005[52] = 10; - var10005[53] = 39; - var10005[54] = 23; - var10005[55] = 47; - var10005[56] = 10; - var10005[57] = 36; - var10005[58] = 30; - var10005[59] = 14; - var10005[60] = 37; - var10005[61] = 60; - var10005[62] = 23; - var10005[63] = 19; - int[] var10006 = BufferBuilder.c(-20608640256306240L).b(); - var10006[0] = -33; - var10006[1] = -55; - var10006[2] = -25; - var10006[3] = -8; - var10006[4] = -43; - var10006[5] = -25; - var10006[6] = -1; - var10006[7] = 1; - var10006[8] = -14; - var10006[9] = -33; - var10006[10] = -13; - var10006[11] = 8; - var10006[12] = -27; - var10006[13] = -2; - var10006[14] = -45; - var10006[15] = 2; - var10006[16] = -24; - var10006[17] = -28; - var10006[18] = -11; - var10006[19] = -5; - var10006[20] = -35; - var10006[21] = -36; - var10006[22] = 14; - var10006[23] = 13; - var10006[24] = 5; - var10006[25] = -21; - var10006[26] = -24; - var10006[27] = 25; - var10006[28] = -21; - var10006[29] = 11; - var10006[30] = 25; - var10006[31] = -1; - var10006[32] = 1; - var10006[33] = 33; - var10006[34] = -10; - var10006[35] = -28; - var10006[36] = -16; - var10006[37] = -4; - var10006[38] = -24; - var10006[39] = 27; - var10006[40] = 24; - var10006[41] = 4; - var10006[42] = 33; - var10006[43] = -17; - var10006[44] = 10; - var10006[45] = 28; - var10006[46] = 21; - var10006[47] = 43; - var10006[48] = -10; - var10006[49] = 21; - var10006[50] = 24; - var10006[51] = -10; - var10006[52] = 16; - var10006[53] = -1; - var10006[54] = 1; - var10006[55] = 35; - var10006[56] = 55; - var10006[57] = 36; - var10006[58] = 10; - var10006[59] = 45; - var10006[60] = 17; - var10006[61] = 10; - var10006[62] = 24; - var10006[63] = 28; - int[] var10007 = BufferBuilder.c(5616324676001593377L).b(); - var10007[0] = -6; - var10007[1] = -60; - var10007[2] = -31; - var10007[3] = -21; - var10007[4] = -14; - var10007[5] = -36; - var10007[6] = 6; - var10007[7] = -13; - var10007[8] = -47; - var10007[9] = -14; - var10007[10] = -40; - var10007[11] = -3; - var10007[12] = -22; - var10007[13] = -4; - var10007[14] = 3; - var10007[15] = -15; - var10007[16] = -30; - var10007[17] = 4; - var10007[18] = 14; - var10007[19] = -34; - var10007[20] = 13; - var10007[21] = -4; - var10007[22] = -34; - var10007[23] = 14; - var10007[24] = 21; - var10007[25] = 4; - var10007[26] = -9; - var10007[27] = -31; - var10007[28] = -9; - var10007[29] = -16; - var10007[30] = 15; - var10007[31] = -32; - var10007[32] = -17; - var10007[33] = 31; - var10007[34] = 22; - var10007[35] = 9; - var10007[36] = -24; - var10007[37] = 9; - var10007[38] = -14; - var10007[39] = -3; - var10007[40] = -19; - var10007[41] = 36; - var10007[42] = 3; - var10007[43] = -14; - var10007[44] = -18; - var10007[45] = 16; - var10007[46] = 30; - var10007[47] = -7; - var10007[48] = -3; - var10007[49] = 17; - var10007[50] = 40; - var10007[51] = 3; - var10007[52] = 14; - var10007[53] = 34; - var10007[54] = 7; - var10007[55] = 47; - var10007[56] = 34; - var10007[57] = 14; - var10007[58] = 31; - var10007[59] = 19; - var10007[60] = 24; - var10007[61] = 60; - var10007[62] = 18; - var10007[63] = 32; - int[] var10008 = BufferBuilder.c(1583502930066492152L).b(); - var10008[0] = -33; - var10008[1] = -55; - var10008[2] = -25; - var10008[3] = -8; - var10008[4] = -43; - var10008[5] = -25; - var10008[6] = -1; - var10008[7] = 1; - var10008[8] = -36; - var10008[9] = -23; - var10008[10] = -21; - var10008[11] = 8; - var10008[12] = -5; - var10008[13] = -38; - var10008[14] = -14; - var10008[15] = -10; - var10008[16] = -2; - var10008[17] = 5; - var10008[18] = 2; - var10008[19] = -33; - var10008[20] = -35; - var10008[21] = -3; - var10008[22] = -19; - var10008[23] = -37; - var10008[24] = 3; - var10008[25] = 10; - var10008[26] = -33; - var10008[27] = 25; - var10008[28] = 14; - var10008[29] = -25; - var10008[30] = 25; - var10008[31] = 21; - var10008[32] = 23; - var10008[33] = 33; - var10008[34] = -12; - var10008[35] = -15; - var10008[36] = -6; - var10008[37] = -3; - var10008[38] = -23; - var10008[39] = -19; - var10008[40] = 3; - var10008[41] = 19; - var10008[42] = 6; - var10008[43] = -10; - var10008[44] = 36; - var10008[45] = -17; - var10008[46] = 12; - var10008[47] = 43; - var10008[48] = -9; - var10008[49] = -14; - var10008[50] = 15; - var10008[51] = 38; - var10008[52] = 33; - var10008[53] = 10; - var10008[54] = 25; - var10008[55] = 35; - var10008[56] = 55; - var10008[57] = 9; - var10008[58] = 19; - var10008[59] = 33; - var10008[60] = 37; - var10008[61] = 23; - var10008[62] = 17; - var10008[63] = 14; - int[] var10009 = BufferBuilder.c(7928853786274620176L).b(); - var10009[0] = -6; - var10009[1] = -60; - var10009[2] = -31; - var10009[3] = -21; - var10009[4] = -14; - var10009[5] = -36; - var10009[6] = 6; - var10009[7] = -13; - var10009[8] = -47; - var10009[9] = -26; - var10009[10] = -30; - var10009[11] = -21; - var10009[12] = -32; - var10009[13] = -12; - var10009[14] = -33; - var10009[15] = -8; - var10009[16] = -23; - var10009[17] = -11; - var10009[18] = 14; - var10009[19] = -29; - var10009[20] = 13; - var10009[21] = -22; - var10009[22] = -24; - var10009[23] = 8; - var10009[24] = 21; - var10009[25] = 12; - var10009[26] = -37; - var10009[27] = -2; - var10009[28] = 11; - var10009[29] = 2; - var10009[30] = -29; - var10009[31] = -18; - var10009[32] = 21; - var10009[33] = 31; - var10009[34] = -22; - var10009[35] = 26; - var10009[36] = -16; - var10009[37] = -21; - var10009[38] = -7; - var10009[39] = 23; - var10009[40] = 30; - var10009[41] = 36; - var10009[42] = -18; - var10009[43] = 22; - var10009[44] = 32; - var10009[45] = 7; - var10009[46] = 24; - var10009[47] = 33; - var10009[48] = 29; - var10009[49] = 18; - var10009[50] = -4; - var10009[51] = -6; - var10009[52] = 16; - var10009[53] = -9; - var10009[54] = 4; - var10009[55] = 47; - var10009[56] = 22; - var10009[57] = 6; - var10009[58] = 21; - var10009[59] = 29; - var10009[60] = 18; - var10009[61] = 60; - var10009[62] = 9; - var10009[63] = 37; - int[] var10010 = BufferBuilder.c(-1653901606767534226L).b(); - var10010[0] = -6; - var10010[1] = -60; - var10010[2] = -31; - var10010[3] = -21; - var10010[4] = -14; - var10010[5] = -36; - var10010[6] = 6; - var10010[7] = -13; - var10010[8] = -47; - var10010[9] = -6; - var10010[10] = -15; - var10010[11] = -37; - var10010[12] = -31; - var10010[13] = -33; - var10010[14] = -23; - var10010[15] = 6; - var10010[16] = -10; - var10010[17] = -10; - var10010[18] = 14; - var10010[19] = -17; - var10010[20] = 13; - var10010[21] = -7; - var10010[22] = -32; - var10010[23] = -33; - var10010[24] = 21; - var10010[25] = 15; - var10010[26] = 10; - var10010[27] = 10; - var10010[28] = 7; - var10010[29] = -30; - var10010[30] = -17; - var10010[31] = -11; - var10010[32] = -3; - var10010[33] = 31; - var10010[34] = -29; - var10010[35] = 3; - var10010[36] = 17; - var10010[37] = 23; - var10010[38] = -6; - var10010[39] = -14; - var10010[40] = -11; - var10010[41] = 36; - var10010[42] = 11; - var10010[43] = 31; - var10010[44] = 6; - var10010[45] = -5; - var10010[46] = 33; - var10010[47] = 17; - var10010[48] = 37; - var10010[49] = -3; - var10010[50] = 5; - var10010[51] = 11; - var10010[52] = 3; - var10010[53] = 14; - var10010[54] = 32; - var10010[55] = 47; - var10010[56] = 33; - var10010[57] = -1; - var10010[58] = 1; - var10010[59] = 30; - var10010[60] = -2; - var10010[61] = 60; - var10010[62] = 2; - var10010[63] = 29; - int[] var10011 = BufferBuilder.c(2280411435838905669L).b(); - var10011[0] = -6; - var10011[1] = -60; - var10011[2] = -31; - var10011[3] = -21; - var10011[4] = -14; - var10011[5] = -36; - var10011[6] = 6; - var10011[7] = -13; - var10011[8] = -47; - var10011[9] = -53; - var10011[10] = -43; - var10011[11] = -41; - var10011[12] = -45; - var10011[13] = -8; - var10011[14] = -16; - var10011[15] = -20; - var10011[16] = -38; - var10011[17] = -9; - var10011[18] = 14; - var10011[19] = -20; - var10011[20] = 13; - var10011[21] = 8; - var10011[22] = -10; - var10011[23] = -14; - var10011[24] = 21; - var10011[25] = -3; - var10011[26] = 9; - var10011[27] = -31; - var10011[28] = 3; - var10011[29] = -2; - var10011[30] = 16; - var10011[31] = 2; - var10011[32] = 10; - var10011[33] = 31; - var10011[34] = -15; - var10011[35] = 20; - var10011[36] = -10; - var10011[37] = 14; - var10011[38] = -9; - var10011[39] = 20; - var10011[40] = -20; - var10011[41] = 36; - var10011[42] = -1; - var10011[43] = 1; - var10011[44] = -6; - var10011[45] = -11; - var10011[46] = 10; - var10011[47] = 9; - var10011[48] = -3; - var10011[49] = 15; - var10011[50] = 6; - var10011[51] = 3; - var10011[52] = 41; - var10011[53] = 43; - var10011[54] = 38; - var10011[55] = 47; - var10011[56] = 11; - var10011[57] = 45; - var10011[58] = 31; - var10011[59] = -4; - var10011[60] = 20; - var10011[61] = 60; - var10011[62] = 53; - var10011[63] = 4; - int[] var10012 = BufferBuilder.c(-237866652065230594L).b(); - var10012[0] = -6; - var10012[1] = -60; - var10012[2] = -31; - var10012[3] = -21; - var10012[4] = -14; - var10012[5] = -36; - var10012[6] = 6; - var10012[7] = -13; - var10012[8] = -47; - var10012[9] = -13; - var10012[10] = -22; - var10012[11] = -29; - var10012[12] = -36; - var10012[13] = -45; - var10012[14] = -12; - var10012[15] = -44; - var10012[16] = -35; - var10012[17] = -35; - var10012[18] = 14; - var10012[19] = -18; - var10012[20] = 13; - var10012[21] = -33; - var10012[22] = 13; - var10012[23] = -8; - var10012[24] = 21; - var10012[25] = -37; - var10012[26] = 12; - var10012[27] = -30; - var10012[28] = -35; - var10012[29] = -20; - var10012[30] = -4; - var10012[31] = 8; - var10012[32] = 22; - var10012[33] = 31; - var10012[34] = 4; - var10012[35] = -15; - var10012[36] = -10; - var10012[37] = 18; - var10012[38] = -7; - var10012[39] = -17; - var10012[40] = 29; - var10012[41] = 36; - var10012[42] = -18; - var10012[43] = -4; - var10012[44] = -9; - var10012[45] = 7; - var10012[46] = 10; - var10012[47] = 4; - var10012[48] = 36; - var10012[49] = 20; - var10012[50] = 15; - var10012[51] = 35; - var10012[52] = 35; - var10012[53] = 9; - var10012[54] = 33; - var10012[55] = 47; - var10012[56] = 17; - var10012[57] = 30; - var10012[58] = 45; - var10012[59] = 44; - var10012[60] = 18; - var10012[61] = 60; - var10012[62] = 37; - var10012[63] = 35; - int[] var10013 = BufferBuilder.c(-5584414586753301100L).b(); - var10013[0] = -6; - var10013[1] = -60; - var10013[2] = -31; - var10013[3] = -21; - var10013[4] = -14; - var10013[5] = -36; - var10013[6] = 6; - var10013[7] = -13; - var10013[8] = -47; - var10013[9] = -54; - var10013[10] = -19; - var10013[11] = -1; - var10013[12] = 1; - var10013[13] = -26; - var10013[14] = -44; - var10013[15] = -28; - var10013[16] = -16; - var10013[17] = -4; - var10013[18] = 14; - var10013[19] = -33; - var10013[20] = 13; - var10013[21] = 4; - var10013[22] = -38; - var10013[23] = -34; - var10013[24] = 21; - var10013[25] = -31; - var10013[26] = -24; - var10013[27] = -24; - var10013[28] = -7; - var10013[29] = 19; - var10013[30] = -12; - var10013[31] = -16; - var10013[32] = 16; - var10013[33] = 31; - var10013[34] = -4; - var10013[35] = 7; - var10013[36] = -17; - var10013[37] = -9; - var10013[38] = 4; - var10013[39] = 26; - var10013[40] = -14; - var10013[41] = 36; - var10013[42] = 12; - var10013[43] = 28; - var10013[44] = -1; - var10013[45] = 1; - var10013[46] = 9; - var10013[47] = 16; - var10013[48] = -14; - var10013[49] = -10; - var10013[50] = 24; - var10013[51] = 24; - var10013[52] = 33; - var10013[53] = 17; - var10013[54] = 14; - var10013[55] = 47; - var10013[56] = 31; - var10013[57] = 34; - var10013[58] = 44; - var10013[59] = 10; - var10013[60] = 38; - var10013[61] = 60; - var10013[62] = 14; - var10013[63] = 54; - int[] var10014 = BufferBuilder.c(-1934195003383709633L).b(); - var10014[0] = -6; - var10014[1] = -60; - var10014[2] = -31; - var10014[3] = -21; - var10014[4] = -14; - var10014[5] = -36; - var10014[6] = 6; - var10014[7] = -13; - var10014[8] = -47; - var10014[9] = -51; - var10014[10] = -34; - var10014[11] = -14; - var10014[12] = -33; - var10014[13] = -38; - var10014[14] = -38; - var10014[15] = -38; - var10014[16] = -42; - var10014[17] = -15; - var10014[18] = 14; - var10014[19] = -20; - var10014[20] = 13; - var10014[21] = -5; - var10014[22] = -12; - var10014[23] = -17; - var10014[24] = 21; - var10014[25] = 14; - var10014[26] = 5; - var10014[27] = -35; - var10014[28] = -10; - var10014[29] = -14; - var10014[30] = -6; - var10014[31] = -32; - var10014[32] = 15; - var10014[33] = 31; - var10014[34] = 12; - var10014[35] = -14; - var10014[36] = 6; - var10014[37] = -10; - var10014[38] = 10; - var10014[39] = 20; - var10014[40] = 17; - var10014[41] = 36; - var10014[42] = -8; - var10014[43] = 14; - var10014[44] = 34; - var10014[45] = 33; - var10014[46] = -2; - var10014[47] = 10; - var10014[48] = 2; - var10014[49] = 14; - var10014[50] = 8; - var10014[51] = 38; - var10014[52] = 38; - var10014[53] = 38; - var10014[54] = -5; - var10014[55] = 47; - var10014[56] = -1; - var10014[57] = 1; - var10014[58] = 42; - var10014[59] = 5; - var10014[60] = 51; - var10014[61] = 60; - var10014[62] = 35; - var10014[63] = 32; - int[] var10015 = BufferBuilder.c(-1296816835787661976L).b(); - var10015[0] = -33; - var10015[1] = -55; - var10015[2] = -25; - var10015[3] = -8; - var10015[4] = -43; - var10015[5] = -25; - var10015[6] = -1; - var10015[7] = 1; - var10015[8] = -15; - var10015[9] = -23; - var10015[10] = -3; - var10015[11] = 8; - var10015[12] = -33; - var10015[13] = 3; - var10015[14] = -12; - var10015[15] = -34; - var10015[16] = -44; - var10015[17] = -21; - var10015[18] = -13; - var10015[19] = -3; - var10015[20] = -35; - var10015[21] = -41; - var10015[22] = 3; - var10015[23] = 15; - var10015[24] = -15; - var10015[25] = -4; - var10015[26] = 12; - var10015[27] = 25; - var10015[28] = -23; - var10015[29] = 4; - var10015[30] = 25; - var10015[31] = 13; - var10015[32] = 23; - var10015[33] = 33; - var10015[34] = -9; - var10015[35] = -2; - var10015[36] = -17; - var10015[37] = 2; - var10015[38] = 21; - var10015[39] = 15; - var10015[40] = -6; - var10015[41] = -18; - var10015[42] = -8; - var10015[43] = 9; - var10015[44] = -10; - var10015[45] = 33; - var10015[46] = 6; - var10015[47] = 43; - var10015[48] = -10; - var10015[49] = 34; - var10015[50] = 8; - var10015[51] = 23; - var10015[52] = -5; - var10015[53] = 17; - var10015[54] = 10; - var10015[55] = 35; - var10015[56] = 55; - var10015[57] = 5; - var10015[58] = 10; - var10015[59] = 18; - var10015[60] = 44; - var10015[61] = -2; - var10015[62] = 41; - var10015[63] = 2; - int[] var10016 = BufferBuilder.c(-6377697266470287510L).b(); - var10016[0] = -33; - var10016[1] = -55; - var10016[2] = -25; - var10016[3] = -8; - var10016[4] = -43; - var10016[5] = -25; - var10016[6] = -1; - var10016[7] = 1; - var10016[8] = -14; - var10016[9] = -9; - var10016[10] = -24; - var10016[11] = 8; - var10016[12] = -34; - var10016[13] = -22; - var10016[14] = -22; - var10016[15] = -11; - var10016[16] = -38; - var10016[17] = -7; - var10016[18] = 9; - var10016[19] = -23; - var10016[20] = -35; - var10016[21] = -22; - var10016[22] = 14; - var10016[23] = -2; - var10016[24] = 7; - var10016[25] = 2; - var10016[26] = 11; - var10016[27] = 25; - var10016[28] = -32; - var10016[29] = -11; - var10016[30] = 25; - var10016[31] = -20; - var10016[32] = -20; - var10016[33] = 33; - var10016[34] = 24; - var10016[35] = 22; - var10016[36] = 22; - var10016[37] = -25; - var10016[38] = -12; - var10016[39] = -19; - var10016[40] = 11; - var10016[41] = -3; - var10016[42] = 23; - var10016[43] = 22; - var10016[44] = 3; - var10016[45] = -8; - var10016[46] = 34; - var10016[47] = 43; - var10016[48] = -1; - var10016[49] = 1; - var10016[50] = 12; - var10016[51] = 20; - var10016[52] = 20; - var10016[53] = 8; - var10016[54] = 38; - var10016[55] = 35; - var10016[56] = 55; - var10016[57] = -6; - var10016[58] = 19; - var10016[59] = -2; - var10016[60] = 32; - var10016[61] = 2; - var10016[62] = 25; - var10016[63] = 6; - int[] var10017 = BufferBuilder.c(2045651182320285656L).b(); - var10017[0] = -33; - var10017[1] = -55; - var10017[2] = -25; - var10017[3] = -8; - var10017[4] = -43; - var10017[5] = -25; - var10017[6] = -1; - var10017[7] = 1; - var10017[8] = -23; - var10017[9] = -19; - var10017[10] = -39; - var10017[11] = 8; - var10017[12] = -33; - var10017[13] = -13; - var10017[14] = -49; - var10017[15] = -8; - var10017[16] = -8; - var10017[17] = -43; - var10017[18] = -30; - var10017[19] = -24; - var10017[20] = -35; - var10017[21] = -32; - var10017[22] = -15; - var10017[23] = 8; - var10017[24] = 8; - var10017[25] = -25; - var10017[26] = 13; - var10017[27] = 25; - var10017[28] = 19; - var10017[29] = -7; - var10017[30] = 25; - var10017[31] = 23; - var10017[32] = -30; - var10017[33] = 33; - var10017[34] = -17; - var10017[35] = -3; - var10017[36] = 7; - var10017[37] = 15; - var10017[38] = 3; - var10017[39] = -13; - var10017[40] = -17; - var10017[41] = -5; - var10017[42] = -12; - var10017[43] = 24; - var10017[44] = -15; - var10017[45] = 33; - var10017[46] = 5; - var10017[47] = 43; - var10017[48] = 30; - var10017[49] = 39; - var10017[50] = 25; - var10017[51] = 17; - var10017[52] = 13; - var10017[53] = 32; - var10017[54] = 12; - var10017[55] = 35; - var10017[56] = 55; - var10017[57] = 17; - var10017[58] = -3; - var10017[59] = 15; - var10017[60] = 43; - var10017[61] = 3; - var10017[62] = 30; - var10017[63] = 49; - int[] var10018 = BufferBuilder.c(-342104538574134758L).b(); - var10018[0] = -33; - var10018[1] = -55; - var10018[2] = -25; - var10018[3] = -8; - var10018[4] = -43; - var10018[5] = -25; - var10018[6] = -1; - var10018[7] = 1; - var10018[8] = -38; - var10018[9] = -32; - var10018[10] = -47; - var10018[11] = 8; - var10018[12] = -33; - var10018[13] = -25; - var10018[14] = -12; - var10018[15] = -13; - var10018[16] = -18; - var10018[17] = -35; - var10018[18] = -5; - var10018[19] = -32; - var10018[20] = -35; - var10018[21] = -14; - var10018[22] = -27; - var10018[23] = 5; - var10018[24] = -18; - var10018[25] = -36; - var10018[26] = 12; - var10018[27] = 25; - var10018[28] = 13; - var10018[29] = -21; - var10018[30] = 25; - var10018[31] = -28; - var10018[32] = -8; - var10018[33] = 33; - var10018[34] = 18; - var10018[35] = 14; - var10018[36] = -18; - var10018[37] = -25; - var10018[38] = 25; - var10018[39] = -4; - var10018[40] = 8; - var10018[41] = 32; - var10018[42] = 18; - var10018[43] = 4; - var10018[44] = -14; - var10018[45] = 33; - var10018[46] = 38; - var10018[47] = 43; - var10018[48] = -5; - var10018[49] = 27; - var10018[50] = 21; - var10018[51] = 32; - var10018[52] = 35; - var10018[53] = 5; - var10018[54] = 18; - var10018[55] = 35; - var10018[56] = 55; - var10018[57] = 47; - var10018[58] = 14; - var10018[59] = 28; - var10018[60] = -3; - var10018[61] = 36; - var10018[62] = 25; - var10018[63] = 3; - int[] var10019 = BufferBuilder.c(-6927450280967747556L).b(); - var10019[0] = -6; - var10019[1] = -60; - var10019[2] = -31; - var10019[3] = -21; - var10019[4] = -14; - var10019[5] = -36; - var10019[6] = 6; - var10019[7] = -13; - var10019[8] = -47; - var10019[9] = -8; - var10019[10] = -30; - var10019[11] = -32; - var10019[12] = -46; - var10019[13] = -8; - var10019[14] = -11; - var10019[15] = -22; - var10019[16] = -36; - var10019[17] = 8; - var10019[18] = 14; - var10019[19] = -27; - var10019[20] = 13; - var10019[21] = 8; - var10019[22] = -41; - var10019[23] = -36; - var10019[24] = 21; - var10019[25] = 11; - var10019[26] = -16; - var10019[27] = -2; - var10019[28] = -34; - var10019[29] = 2; - var10019[30] = -4; - var10019[31] = -8; - var10019[32] = -6; - var10019[33] = 31; - var10019[34] = 4; - var10019[35] = -16; - var10019[36] = -9; - var10019[37] = 22; - var10019[38] = 6; - var10019[39] = 8; - var10019[40] = 30; - var10019[41] = 36; - var10019[42] = 16; - var10019[43] = 32; - var10019[44] = -10; - var10019[45] = 9; - var10019[46] = 27; - var10019[47] = -2; - var10019[48] = -5; - var10019[49] = 2; - var10019[50] = -10; - var10019[51] = 16; - var10019[52] = 36; - var10019[53] = 5; - var10019[54] = 10; - var10019[55] = 47; - var10019[56] = -1; - var10019[57] = 1; - var10019[58] = 46; - var10019[59] = 36; - var10019[60] = 10; - var10019[61] = 60; - var10019[62] = 34; - var10019[63] = 41; - int[] var10020 = BufferBuilder.c(-5558465489872541456L).b(); - var10020[0] = -6; - var10020[1] = -60; - var10020[2] = -31; - var10020[3] = -21; - var10020[4] = -14; - var10020[5] = -36; - var10020[6] = 6; - var10020[7] = -13; - var10020[8] = -47; - var10020[9] = -2; - var10020[10] = -47; - var10020[11] = 2; - var10020[12] = -37; - var10020[13] = -30; - var10020[14] = -5; - var10020[15] = -30; - var10020[16] = -36; - var10020[17] = -20; - var10020[18] = 14; - var10020[19] = 5; - var10020[20] = 13; - var10020[21] = -10; - var10020[22] = -20; - var10020[23] = -35; - var10020[24] = 21; - var10020[25] = -22; - var10020[26] = -14; - var10020[27] = -7; - var10020[28] = -28; - var10020[29] = -30; - var10020[30] = -16; - var10020[31] = 10; - var10020[32] = -3; - var10020[33] = 31; - var10020[34] = 7; - var10020[35] = 3; - var10020[36] = -26; - var10020[37] = 20; - var10020[38] = -12; - var10020[39] = -12; - var10020[40] = 14; - var10020[41] = 36; - var10020[42] = 20; - var10020[43] = 30; - var10020[44] = -9; - var10020[45] = 30; - var10020[46] = 16; - var10020[47] = 22; - var10020[48] = -12; - var10020[49] = 37; - var10020[50] = 12; - var10020[51] = 12; - var10020[52] = 36; - var10020[53] = 9; - var10020[54] = -9; - var10020[55] = 47; - var10020[56] = 28; - var10020[57] = 47; - var10020[58] = 35; - var10020[59] = 30; - var10020[60] = 12; - var10020[61] = 60; - var10020[62] = 26; - var10020[63] = 9; - int[] var10021 = BufferBuilder.c(1010632811591794196L).b(); - var10021[0] = -33; - var10021[1] = -55; - var10021[2] = -25; - var10021[3] = -8; - var10021[4] = -43; - var10021[5] = -25; - var10021[6] = -1; - var10021[7] = 1; - var10021[8] = -6; - var10021[9] = -42; - var10021[10] = -40; - var10021[11] = 8; - var10021[12] = -29; - var10021[13] = -26; - var10021[14] = 6; - var10021[15] = -44; - var10021[16] = -5; - var10021[17] = -21; - var10021[18] = -7; - var10021[19] = -30; - var10021[20] = -35; - var10021[21] = 5; - var10021[22] = -12; - var10021[23] = -14; - var10021[24] = -38; - var10021[25] = 7; - var10021[26] = -18; - var10021[27] = 25; - var10021[28] = -1; - var10021[29] = 1; - var10021[30] = 25; - var10021[31] = -30; - var10021[32] = -8; - var10021[33] = 33; - var10021[34] = 12; - var10021[35] = -25; - var10021[36] = -22; - var10021[37] = 14; - var10021[38] = 21; - var10021[39] = 26; - var10021[40] = 8; - var10021[41] = 29; - var10021[42] = -3; - var10021[43] = -11; - var10021[44] = 18; - var10021[45] = 3; - var10021[46] = -6; - var10021[47] = 43; - var10021[48] = -15; - var10021[49] = 30; - var10021[50] = 40; - var10021[51] = 42; - var10021[52] = 6; - var10021[53] = -4; - var10021[54] = 11; - var10021[55] = 35; - var10021[56] = 55; - var10021[57] = 4; - var10021[58] = 22; - var10021[59] = 44; - var10021[60] = 25; - var10021[61] = 30; - var10021[62] = 38; - var10021[63] = 15; - int[] var10022 = BufferBuilder.c(-4724280968897488201L).b(); - var10022[0] = -33; - var10022[1] = -55; - var10022[2] = -25; - var10022[3] = -8; - var10022[4] = -43; - var10022[5] = -25; - var10022[6] = -1; - var10022[7] = 1; - var10022[8] = -5; - var10022[9] = -16; - var10022[10] = -4; - var10022[11] = 8; - var10022[12] = -10; - var10022[13] = 5; - var10022[14] = 4; - var10022[15] = -25; - var10022[16] = -43; - var10022[17] = -41; - var10022[18] = -25; - var10022[19] = -9; - var10022[20] = -35; - var10022[21] = -17; - var10022[22] = 10; - var10022[23] = -34; - var10022[24] = -22; - var10022[25] = 16; - var10022[26] = -34; - var10022[27] = 25; - var10022[28] = 9; - var10022[29] = -13; - var10022[30] = 25; - var10022[31] = -6; - var10022[32] = -18; - var10022[33] = 33; - var10022[34] = -1; - var10022[35] = 1; - var10022[36] = -25; - var10022[37] = 6; - var10022[38] = 17; - var10022[39] = -14; - var10022[40] = 25; - var10022[41] = -8; - var10022[42] = 13; - var10022[43] = 25; - var10022[44] = -19; - var10022[45] = -17; - var10022[46] = 22; - var10022[47] = 43; - var10022[48] = -3; - var10022[49] = 8; - var10022[50] = 18; - var10022[51] = 3; - var10022[52] = -2; - var10022[53] = 14; - var10022[54] = 2; - var10022[55] = 35; - var10022[56] = 55; - var10022[57] = 34; - var10022[58] = 41; - var10022[59] = 43; - var10022[60] = 34; - var10022[61] = 25; - var10022[62] = 17; - var10022[63] = 19; - int[] var10023 = BufferBuilder.c(-4307754147740420142L).b(); - var10023[0] = -33; - var10023[1] = -55; - var10023[2] = -25; - var10023[3] = -8; - var10023[4] = -43; - var10023[5] = -25; - var10023[6] = -1; - var10023[7] = 1; - var10023[8] = -23; - var10023[9] = -51; - var10023[10] = -38; - var10023[11] = 8; - var10023[12] = -24; - var10023[13] = -45; - var10023[14] = -8; - var10023[15] = -35; - var10023[16] = -5; - var10023[17] = -6; - var10023[18] = -44; - var10023[19] = -20; - var10023[20] = -35; - var10023[21] = 5; - var10023[22] = 8; - var10023[23] = 6; - var10023[24] = -10; - var10023[25] = -38; - var10023[26] = -28; - var10023[27] = 25; - var10023[28] = -33; - var10023[29] = -28; - var10023[30] = 25; - var10023[31] = 23; - var10023[32] = -19; - var10023[33] = 33; - var10023[34] = 10; - var10023[35] = -9; - var10023[36] = 24; - var10023[37] = -16; - var10023[38] = -8; - var10023[39] = 20; - var10023[40] = -5; - var10023[41] = -8; - var10023[42] = -1; - var10023[43] = 1; - var10023[44] = 9; - var10023[45] = 5; - var10023[46] = 8; - var10023[47] = 43; - var10023[48] = 38; - var10023[49] = 8; - var10023[50] = 35; - var10023[51] = 19; - var10023[52] = -7; - var10023[53] = 16; - var10023[54] = 28; - var10023[55] = 35; - var10023[56] = 55; - var10023[57] = 28; - var10023[58] = 45; - var10023[59] = 7; - var10023[60] = 51; - var10023[61] = 33; - var10023[62] = 44; - var10023[63] = 38; - int[] var10024 = BufferBuilder.c(-7836879728913743264L).b(); - var10024[0] = -33; - var10024[1] = -55; - var10024[2] = -25; - var10024[3] = -8; - var10024[4] = -43; - var10024[5] = -25; - var10024[6] = -1; - var10024[7] = 1; - var10024[8] = -16; - var10024[9] = -7; - var10024[10] = -33; - var10024[11] = 8; - var10024[12] = -22; - var10024[13] = -32; - var10024[14] = -47; - var10024[15] = -21; - var10024[16] = 7; - var10024[17] = -27; - var10024[18] = -31; - var10024[19] = -32; - var10024[20] = -35; - var10024[21] = -20; - var10024[22] = -31; - var10024[23] = -29; - var10024[24] = 16; - var10024[25] = -17; - var10024[26] = -32; - var10024[27] = 25; - var10024[28] = -26; - var10024[29] = -17; - var10024[30] = 25; - var10024[31] = -28; - var10024[32] = -25; - var10024[33] = 33; - var10024[34] = 22; - var10024[35] = -15; - var10024[36] = 21; - var10024[37] = -23; - var10024[38] = -2; - var10024[39] = -23; - var10024[40] = 2; - var10024[41] = 20; - var10024[42] = 17; - var10024[43] = 33; - var10024[44] = 27; - var10024[45] = 32; - var10024[46] = 17; - var10024[47] = 43; - var10024[48] = -15; - var10024[49] = 31; - var10024[50] = 15; - var10024[51] = 32; - var10024[52] = 29; - var10024[53] = 31; - var10024[54] = 26; - var10024[55] = 35; - var10024[56] = 55; - var10024[57] = 25; - var10024[58] = 32; - var10024[59] = 28; - var10024[60] = 23; - var10024[61] = 47; - var10024[62] = 23; - var10024[63] = 15; - int[] var10025 = BufferBuilder.c(8613108612602485740L).b(); - var10025[0] = -33; - var10025[1] = -55; - var10025[2] = -25; - var10025[3] = -8; - var10025[4] = -43; - var10025[5] = -25; - var10025[6] = -1; - var10025[7] = 1; - var10025[8] = -13; - var10025[9] = -53; - var10025[10] = -43; - var10025[11] = 8; - var10025[12] = -17; - var10025[13] = -21; - var10025[14] = -21; - var10025[15] = -11; - var10025[16] = -2; - var10025[17] = -8; - var10025[18] = 2; - var10025[19] = -19; - var10025[20] = -35; - var10025[21] = 13; - var10025[22] = -30; - var10025[23] = -13; - var10025[24] = -25; - var10025[25] = 8; - var10025[26] = 11; - var10025[27] = 25; - var10025[28] = -23; - var10025[29] = 17; - var10025[30] = 25; - var10025[31] = -15; - var10025[32] = -13; - var10025[33] = 33; - var10025[34] = 21; - var10025[35] = 21; - var10025[36] = 13; - var10025[37] = -4; - var10025[38] = 19; - var10025[39] = -24; - var10025[40] = -10; - var10025[41] = 4; - var10025[42] = -19; - var10025[43] = -16; - var10025[44] = -16; - var10025[45] = 13; - var10025[46] = 15; - var10025[47] = 43; - var10025[48] = -6; - var10025[49] = 25; - var10025[50] = 10; - var10025[51] = 23; - var10025[52] = 30; - var10025[53] = 43; - var10025[54] = 6; - var10025[55] = 35; - var10025[56] = 55; - var10025[57] = -1; - var10025[58] = 1; - var10025[59] = 16; - var10025[60] = 16; - var10025[61] = 19; - var10025[62] = 53; - var10025[63] = 24; - int[] var10026 = BufferBuilder.c(3737040454261252984L).b(); - var10026[0] = -33; - var10026[1] = -55; - var10026[2] = -25; - var10026[3] = -8; - var10026[4] = -43; - var10026[5] = -25; - var10026[6] = -1; - var10026[7] = 1; - var10026[8] = -45; - var10026[9] = -17; - var10026[10] = -25; - var10026[11] = 8; - var10026[12] = -26; - var10026[13] = -39; - var10026[14] = -36; - var10026[15] = -2; - var10026[16] = -16; - var10026[17] = 2; - var10026[18] = -43; - var10026[19] = -20; - var10026[20] = -35; - var10026[21] = -22; - var10026[22] = -23; - var10026[23] = -28; - var10026[24] = -25; - var10026[25] = -21; - var10026[26] = 17; - var10026[27] = 25; - var10026[28] = -12; - var10026[29] = -13; - var10026[30] = 25; - var10026[31] = -31; - var10026[32] = 16; - var10026[33] = 33; - var10026[34] = -7; - var10026[35] = 25; - var10026[36] = -1; - var10026[37] = 1; - var10026[38] = 26; - var10026[39] = 20; - var10026[40] = 12; - var10026[41] = 7; - var10026[42] = 13; - var10026[43] = 22; - var10026[44] = -16; - var10026[45] = 23; - var10026[46] = 21; - var10026[47] = 43; - var10026[48] = -6; - var10026[49] = 25; - var10026[50] = 36; - var10026[51] = 28; - var10026[52] = 39; - var10026[53] = 45; - var10026[54] = 6; - var10026[55] = 35; - var10026[56] = 55; - var10026[57] = -2; - var10026[58] = -5; - var10026[59] = 2; - var10026[60] = 16; - var10026[61] = 43; - var10026[62] = 31; - var10026[63] = 5; - int[] var10027 = BufferBuilder.c(3908735393055355633L).b(); - var10027[0] = -33; - var10027[1] = -55; - var10027[2] = -25; - var10027[3] = -8; - var10027[4] = -43; - var10027[5] = -25; - var10027[6] = -1; - var10027[7] = 1; - var10027[8] = -26; - var10027[9] = -49; - var10027[10] = -6; - var10027[11] = 8; - var10027[12] = -31; - var10027[13] = -36; - var10027[14] = -39; - var10027[15] = -9; - var10027[16] = 6; - var10027[17] = -28; - var10027[18] = -8; - var10027[19] = -27; - var10027[20] = -35; - var10027[21] = -41; - var10027[22] = -38; - var10027[23] = -31; - var10027[24] = 9; - var10027[25] = -19; - var10027[26] = 8; - var10027[27] = 25; - var10027[28] = -13; - var10027[29] = -19; - var10027[30] = 25; - var10027[31] = -32; - var10027[32] = -4; - var10027[33] = 33; - var10027[34] = 26; - var10027[35] = -16; - var10027[36] = 4; - var10027[37] = -3; - var10027[38] = -4; - var10027[39] = -11; - var10027[40] = 3; - var10027[41] = 13; - var10027[42] = 4; - var10027[43] = 31; - var10027[44] = 19; - var10027[45] = 28; - var10027[46] = 27; - var10027[47] = 43; - var10027[48] = 19; - var10027[49] = 36; - var10027[50] = 11; - var10027[51] = 16; - var10027[52] = -9; - var10027[53] = 39; - var10027[54] = 31; - var10027[55] = 35; - var10027[56] = 55; - var10027[57] = -2; - var10027[58] = 49; - var10027[59] = 2; - var10027[60] = 38; - var10027[61] = 9; - var10027[62] = 41; - var10027[63] = 32; - int[] var10028 = BufferBuilder.c(1164715155978098365L).b(); - var10028[0] = -33; - var10028[1] = -55; - var10028[2] = -25; - var10028[3] = -8; - var10028[4] = -43; - var10028[5] = -25; - var10028[6] = -1; - var10028[7] = 1; - var10028[8] = -26; - var10028[9] = -8; - var10028[10] = -34; - var10028[11] = 8; - var10028[12] = -34; - var10028[13] = -35; - var10028[14] = -28; - var10028[15] = -36; - var10028[16] = -27; - var10028[17] = 8; - var10028[18] = -23; - var10028[19] = -35; - var10028[20] = -35; - var10028[21] = -38; - var10028[22] = -18; - var10028[23] = -35; - var10028[24] = -11; - var10028[25] = -35; - var10028[26] = -12; - var10028[27] = 25; - var10028[28] = -25; - var10028[29] = -3; - var10028[30] = 25; - var10028[31] = -26; - var10028[32] = 3; - var10028[33] = 33; - var10028[34] = 26; - var10028[35] = 11; - var10028[36] = -3; - var10028[37] = -13; - var10028[38] = 12; - var10028[39] = 3; - var10028[40] = 18; - var10028[41] = 23; - var10028[42] = 28; - var10028[43] = 27; - var10028[44] = 34; - var10028[45] = -17; - var10028[46] = 34; - var10028[47] = 43; - var10028[48] = 35; - var10028[49] = -14; - var10028[50] = 13; - var10028[51] = 36; - var10028[52] = -9; - var10028[53] = 25; - var10028[54] = 35; - var10028[55] = 35; - var10028[56] = 55; - var10028[57] = 26; - var10028[58] = 35; - var10028[59] = 38; - var10028[60] = 35; - var10028[61] = 9; - var10028[62] = 17; - var10028[63] = 14; - int[] var10029 = BufferBuilder.c(3765519600156526181L).b(); - var10029[0] = -33; - var10029[1] = -55; - var10029[2] = -25; - var10029[3] = -8; - var10029[4] = -43; - var10029[5] = -25; - var10029[6] = -1; - var10029[7] = 1; - var10029[8] = -43; - var10029[9] = -30; - var10029[10] = -7; - var10029[11] = 8; - var10029[12] = -10; - var10029[13] = -49; - var10029[14] = -45; - var10029[15] = -17; - var10029[16] = -36; - var10029[17] = 7; - var10029[18] = -1; - var10029[19] = 1; - var10029[20] = -35; - var10029[21] = -2; - var10029[22] = 10; - var10029[23] = 2; - var10029[24] = -18; - var10029[25] = -3; - var10029[26] = -14; - var10029[27] = 25; - var10029[28] = 3; - var10029[29] = -19; - var10029[30] = 25; - var10029[31] = -5; - var10029[32] = 17; - var10029[33] = 33; - var10029[34] = -27; - var10029[35] = -11; - var10029[36] = 5; - var10029[37] = -4; - var10029[38] = -12; - var10029[39] = 30; - var10029[40] = 14; - var10029[41] = 4; - var10029[42] = 18; - var10029[43] = -15; - var10029[44] = -5; - var10029[45] = -18; - var10029[46] = 11; - var10029[47] = 43; - var10029[48] = 19; - var10029[49] = 5; - var10029[50] = 12; - var10029[51] = 43; - var10029[52] = 36; - var10029[53] = -1; - var10029[54] = 1; - var10029[55] = 35; - var10029[56] = 55; - var10029[57] = -3; - var10029[58] = 15; - var10029[59] = 45; - var10029[60] = 3; - var10029[61] = 27; - var10029[62] = 49; - var10029[63] = 18; - int[] var10030 = BufferBuilder.c(1756942045464368587L).b(); - var10030[0] = -33; - var10030[1] = -55; - var10030[2] = -25; - var10030[3] = -8; - var10030[4] = -43; - var10030[5] = -25; - var10030[6] = -1; - var10030[7] = 1; - var10030[8] = -45; - var10030[9] = -43; - var10030[10] = -48; - var10030[11] = 8; - var10030[12] = -11; - var10030[13] = -48; - var10030[14] = -34; - var10030[15] = -29; - var10030[16] = -5; - var10030[17] = -9; - var10030[18] = -28; - var10030[19] = -10; - var10030[20] = -35; - var10030[21] = 5; - var10030[22] = -40; - var10030[23] = 11; - var10030[24] = -11; - var10030[25] = -15; - var10030[26] = 9; - var10030[27] = 25; - var10030[28] = -13; - var10030[29] = 10; - var10030[30] = 25; - var10030[31] = -32; - var10030[32] = -5; - var10030[33] = 33; - var10030[34] = -25; - var10030[35] = 11; - var10030[36] = -3; - var10030[37] = 5; - var10030[38] = -16; - var10030[39] = 3; - var10030[40] = 15; - var10030[41] = 13; - var10030[42] = -18; - var10030[43] = -14; - var10030[44] = 29; - var10030[45] = -4; - var10030[46] = 28; - var10030[47] = 43; - var10030[48] = 34; - var10030[49] = 4; - var10030[50] = -1; - var10030[51] = 1; - var10030[52] = 43; - var10030[53] = 45; - var10030[54] = 16; - var10030[55] = 35; - var10030[56] = 55; - var10030[57] = 14; - var10030[58] = 48; - var10030[59] = 25; - var10030[60] = 18; - var10030[61] = 48; - var10030[62] = 40; - var10030[63] = 32; - int[] var10031 = BufferBuilder.c(8662041584318299614L).b(); - var10031[0] = -33; - var10031[1] = -55; - var10031[2] = -25; - var10031[3] = -8; - var10031[4] = -43; - var10031[5] = -25; - var10031[6] = -1; - var10031[7] = 1; - var10031[8] = -40; - var10031[9] = -45; - var10031[10] = -15; - var10031[11] = 8; - var10031[12] = -10; - var10031[13] = -23; - var10031[14] = -27; - var10031[15] = -17; - var10031[16] = -3; - var10031[17] = -32; - var10031[18] = -5; - var10031[19] = 3; - var10031[20] = -35; - var10031[21] = -17; - var10031[22] = 10; - var10031[23] = 5; - var10031[24] = -37; - var10031[25] = 15; - var10031[26] = -2; - var10031[27] = 25; - var10031[28] = 2; - var10031[29] = -33; - var10031[30] = 25; - var10031[31] = -4; - var10031[32] = 17; - var10031[33] = 33; - var10031[34] = -12; - var10031[35] = 4; - var10031[36] = 23; - var10031[37] = -13; - var10031[38] = 17; - var10031[39] = -13; - var10031[40] = -3; - var10031[41] = 27; - var10031[42] = -15; - var10031[43] = 3; - var10031[44] = -7; - var10031[45] = -13; - var10031[46] = 12; - var10031[47] = 43; - var10031[48] = 40; - var10031[49] = 32; - var10031[50] = 13; - var10031[51] = 7; - var10031[52] = 13; - var10031[53] = -6; - var10031[54] = 45; - var10031[55] = 35; - var10031[56] = 55; - var10031[57] = 15; - var10031[58] = 13; - var10031[59] = 6; - var10031[60] = -3; - var10031[61] = 37; - var10031[62] = 33; - var10031[63] = 3; - int[] var10032 = BufferBuilder.c(-6045479845538978909L).b(); - var10032[0] = -33; - var10032[1] = -55; - var10032[2] = -25; - var10032[3] = -8; - var10032[4] = -43; - var10032[5] = -25; - var10032[6] = -1; - var10032[7] = 1; - var10032[8] = -44; - var10032[9] = -50; - var10032[10] = -11; - var10032[11] = 8; - var10032[12] = -6; - var10032[13] = -35; - var10032[14] = -5; - var10032[15] = -14; - var10032[16] = -6; - var10032[17] = -27; - var10032[18] = 6; - var10032[19] = 5; - var10032[20] = -35; - var10032[21] = 11; - var10032[22] = 6; - var10032[23] = -2; - var10032[24] = -21; - var10032[25] = 2; - var10032[26] = -17; - var10032[27] = 25; - var10032[28] = -25; - var10032[29] = 14; - var10032[30] = 25; - var10032[31] = -4; - var10032[32] = -5; - var10032[33] = 33; - var10032[34] = -8; - var10032[35] = 4; - var10032[36] = -5; - var10032[37] = 5; - var10032[38] = -22; - var10032[39] = -19; - var10032[40] = -17; - var10032[41] = 5; - var10032[42] = 8; - var10032[43] = 17; - var10032[44] = 27; - var10032[45] = 21; - var10032[46] = -17; - var10032[47] = 43; - var10032[48] = 35; - var10032[49] = -1; - var10032[50] = 1; - var10032[51] = -10; - var10032[52] = 44; - var10032[53] = 25; - var10032[54] = -8; - var10032[55] = 35; - var10032[56] = 55; - var10032[57] = 17; - var10032[58] = 19; - var10032[59] = 50; - var10032[60] = 22; - var10032[61] = 10; - var10032[62] = 8; - var10032[63] = 17; - int[] var10033 = BufferBuilder.c(-6667183398356905020L).b(); - var10033[0] = -33; - var10033[1] = -55; - var10033[2] = -25; - var10033[3] = -8; - var10033[4] = -43; - var10033[5] = -25; - var10033[6] = -1; - var10033[7] = 1; - var10033[8] = -44; - var10033[9] = -6; - var10033[10] = -4; - var10033[11] = 8; - var10033[12] = -36; - var10033[13] = -36; - var10033[14] = 4; - var10033[15] = 6; - var10033[16] = -7; - var10033[17] = -8; - var10033[18] = -4; - var10033[19] = -18; - var10033[20] = -35; - var10033[21] = -32; - var10033[22] = 4; - var10033[23] = 7; - var10033[24] = -19; - var10033[25] = 8; - var10033[26] = -14; - var10033[27] = 25; - var10033[28] = -33; - var10033[29] = -17; - var10033[30] = 25; - var10033[31] = -29; - var10033[32] = -3; - var10033[33] = 33; - var10033[34] = -28; - var10033[35] = 3; - var10033[36] = -23; - var10033[37] = 18; - var10033[38] = -7; - var10033[39] = -5; - var10033[40] = 14; - var10033[41] = -16; - var10033[42] = -9; - var10033[43] = 19; - var10033[44] = 5; - var10033[45] = 7; - var10033[46] = 17; - var10033[47] = 43; - var10033[48] = 36; - var10033[49] = 36; - var10033[50] = -4; - var10033[51] = 9; - var10033[52] = 44; - var10033[53] = 32; - var10033[54] = 4; - var10033[55] = 35; - var10033[56] = 55; - var10033[57] = 16; - var10033[58] = -5; - var10033[59] = 23; - var10033[60] = 29; - var10033[61] = 33; - var10033[62] = 28; - var10033[63] = 5; - int[] var10034 = BufferBuilder.c(3212601057922666726L).b(); - var10034[0] = -6; - var10034[1] = -60; - var10034[2] = -31; - var10034[3] = -21; - var10034[4] = -14; - var10034[5] = -36; - var10034[6] = 6; - var10034[7] = -13; - var10034[8] = -47; - var10034[9] = -37; - var10034[10] = -13; - var10034[11] = -26; - var10034[12] = -42; - var10034[13] = -32; - var10034[14] = -16; - var10034[15] = -11; - var10034[16] = -35; - var10034[17] = -10; - var10034[18] = 14; - var10034[19] = -41; - var10034[20] = 13; - var10034[21] = -35; - var10034[22] = -20; - var10034[23] = 13; - var10034[24] = 21; - var10034[25] = -4; - var10034[26] = 11; - var10034[27] = 10; - var10034[28] = -29; - var10034[29] = 4; - var10034[30] = 16; - var10034[31] = -4; - var10034[32] = -17; - var10034[33] = 31; - var10034[34] = -10; - var10034[35] = 4; - var10034[36] = -2; - var10034[37] = 26; - var10034[38] = 2; - var10034[39] = -20; - var10034[40] = -18; - var10034[41] = 36; - var10034[42] = 20; - var10034[43] = -19; - var10034[44] = 10; - var10034[45] = 32; - var10034[46] = 37; - var10034[47] = -1; - var10034[48] = 1; - var10034[49] = 17; - var10034[50] = -2; - var10034[51] = 35; - var10034[52] = 2; - var10034[53] = -10; - var10034[54] = 42; - var10034[55] = 47; - var10034[56] = 35; - var10034[57] = 29; - var10034[58] = 18; - var10034[59] = 20; - var10034[60] = 41; - var10034[61] = 60; - var10034[62] = 19; - var10034[63] = 10; - int[] var10035 = BufferBuilder.c(3344936306907602924L).b(); - var10035[0] = -33; - var10035[1] = -55; - var10035[2] = -25; - var10035[3] = -8; - var10035[4] = -43; - var10035[5] = -25; - var10035[6] = -1; - var10035[7] = 1; - var10035[8] = -2; - var10035[9] = -8; - var10035[10] = 2; - var10035[11] = 8; - var10035[12] = -23; - var10035[13] = -26; - var10035[14] = -44; - var10035[15] = -31; - var10035[16] = -5; - var10035[17] = 8; - var10035[18] = -23; - var10035[19] = -23; - var10035[20] = -35; - var10035[21] = 5; - var10035[22] = -4; - var10035[23] = -14; - var10035[24] = -4; - var10035[25] = -20; - var10035[26] = 4; - var10035[27] = 25; - var10035[28] = 4; - var10035[29] = -21; - var10035[30] = 25; - var10035[31] = -23; - var10035[32] = -8; - var10035[33] = 33; - var10035[34] = -9; - var10035[35] = 23; - var10035[36] = -8; - var10035[37] = 14; - var10035[38] = -25; - var10035[39] = 26; - var10035[40] = 8; - var10035[41] = 23; - var10035[42] = 23; - var10035[43] = 9; - var10035[44] = 8; - var10035[45] = 20; - var10035[46] = 31; - var10035[47] = 43; - var10035[48] = -4; - var10035[49] = -13; - var10035[50] = 21; - var10035[51] = -10; - var10035[52] = 4; - var10035[53] = -7; - var10035[54] = 23; - var10035[55] = 35; - var10035[56] = 55; - var10035[57] = -2; - var10035[58] = 44; - var10035[59] = 2; - var10035[60] = 7; - var10035[61] = 10; - var10035[62] = 13; - var10035[63] = 25; - int[] var10036 = BufferBuilder.c(1755043760457313025L).b(); - var10036[0] = -33; - var10036[1] = -55; - var10036[2] = -25; - var10036[3] = -8; - var10036[4] = -43; - var10036[5] = -25; - var10036[6] = -1; - var10036[7] = 1; - var10036[8] = -40; - var10036[9] = -26; - var10036[10] = -16; - var10036[11] = 8; - var10036[12] = -38; - var10036[13] = -27; - var10036[14] = -40; - var10036[15] = -4; - var10036[16] = -41; - var10036[17] = -4; - var10036[18] = -45; - var10036[19] = 4; - var10036[20] = -35; - var10036[21] = 4; - var10036[22] = -1; - var10036[23] = 1; - var10036[24] = -5; - var10036[25] = -17; - var10036[26] = 16; - var10036[27] = 25; - var10036[28] = -30; - var10036[29] = 5; - var10036[30] = 25; - var10036[31] = -6; - var10036[32] = -11; - var10036[33] = 33; - var10036[34] = -2; - var10036[35] = 26; - var10036[36] = 2; - var10036[37] = 6; - var10036[38] = -3; - var10036[39] = -6; - var10036[40] = 27; - var10036[41] = 3; - var10036[42] = 17; - var10036[43] = 11; - var10036[44] = -15; - var10036[45] = 6; - var10036[46] = -3; - var10036[47] = 43; - var10036[48] = 40; - var10036[49] = 3; - var10036[50] = 38; - var10036[51] = -9; - var10036[52] = -1; - var10036[53] = 1; - var10036[54] = 40; - var10036[55] = 35; - var10036[56] = 55; - var10036[57] = 41; - var10036[58] = 30; - var10036[59] = 15; - var10036[60] = 9; - var10036[61] = -1; - var10036[62] = 1; - var10036[63] = 45; - int[] var10037 = BufferBuilder.c(-366617948719377118L).b(); - var10037[0] = -6; - var10037[1] = -60; - var10037[2] = -31; - var10037[3] = -21; - var10037[4] = -14; - var10037[5] = -36; - var10037[6] = 6; - var10037[7] = -13; - var10037[8] = -47; - var10037[9] = -49; - var10037[10] = -36; - var10037[11] = -28; - var10037[12] = -17; - var10037[13] = -31; - var10037[14] = -38; - var10037[15] = -38; - var10037[16] = -24; - var10037[17] = -31; - var10037[18] = 14; - var10037[19] = -7; - var10037[20] = 13; - var10037[21] = -33; - var10037[22] = -29; - var10037[23] = -27; - var10037[24] = 21; - var10037[25] = -3; - var10037[26] = 7; - var10037[27] = -7; - var10037[28] = 3; - var10037[29] = 17; - var10037[30] = -29; - var10037[31] = -32; - var10037[32] = -24; - var10037[33] = 31; - var10037[34] = 7; - var10037[35] = -25; - var10037[36] = -6; - var10037[37] = -12; - var10037[38] = -7; - var10037[39] = 28; - var10037[40] = 24; - var10037[41] = 36; - var10037[42] = 6; - var10037[43] = -4; - var10037[44] = 31; - var10037[45] = 7; - var10037[46] = 36; - var10037[47] = 4; - var10037[48] = 31; - var10037[49] = 12; - var10037[50] = 27; - var10037[51] = 29; - var10037[52] = 38; - var10037[53] = 38; - var10037[54] = 33; - var10037[55] = 47; - var10037[56] = 24; - var10037[57] = -5; - var10037[58] = 49; - var10037[59] = 29; - var10037[60] = 25; - var10037[61] = 60; - var10037[62] = 5; - var10037[63] = 32; - } - - private void d0() { - BufferBuilder.c(-6433384866451640969L).a(BufferBuilder.c(2751133349847670304L)); - BufferBuilder.c(5819988912380009159L).a(BufferBuilder.c(-5569404533034312644L)); - BufferBuilder.c(3144022859011070299L).a(BufferBuilder.c(2195861780209788923L)); - BufferBuilder.c(-323484322344497179L).a(BufferBuilder.c(1287248510659788211L)); - BufferBuilder.c(-3023298845698505033L).a(BufferBuilder.c(-2508934847389841789L)); - BufferBuilder.c(6272212655188765717L).a(BufferBuilder.c(2553336078968414973L)); - BufferBuilder.c(-5890200810754733173L).a(BufferBuilder.c(1728809645502243884L)); - BufferBuilder.c(-6430754845894068734L).a(BufferBuilder.c(5121892425327324244L)); - BufferBuilder.c(1882404738875753384L).a(BufferBuilder.c(3915763893019480615L)); - BufferBuilder.c(-4682900768752551810L).a(BufferBuilder.c(-504960531925425204L)); - BufferBuilder.c(4906852842161041255L).a(BufferBuilder.c(1828477663077296193L)); - BufferBuilder.c(2288481257042428235L).a(BufferBuilder.c(5310021161788070817L)); - BufferBuilder.c(-6517876833064454201L).a(BufferBuilder.c(3841128183343054783L)); - BufferBuilder.c(8952070302929597107L).a(BufferBuilder.c(7431818059949919030L)); - BufferBuilder.c(-2687299132854210582L).a(BufferBuilder.c(2165164938712353646L)); - BufferBuilder.c(-7505309228718869308L).a(BufferBuilder.c(6915424154172862414L)); - BufferBuilder.c(-1784166406179193482L).a(BufferBuilder.c(2245785139493274206L)); - BufferBuilder.c(-1876959731684581956L).a(BufferBuilder.c(-5658612350478630858L)); - BufferBuilder.c(7485267908729372859L).a(BufferBuilder.c(8413122227570161682L)); - BufferBuilder.c(2323391436684482125L).a(BufferBuilder.c(9206601960219183590L)); - BufferBuilder.c(-1507071407385304948L).a(BufferBuilder.c(-1229234117883320359L)); - BufferBuilder.c(-5457891943160835785L).a(BufferBuilder.c(-2623590791167867944L)); - BufferBuilder.c(-40691204931505654L).a(BufferBuilder.c(-3184541198778933375L)); - BufferBuilder.c(-7644534592537651046L).a(BufferBuilder.c(-6846092423548916896L)); - BufferBuilder.c(-818593336942314919L).a(BufferBuilder.c(-785225973900065061L)); - BufferBuilder.c(5401963943624756511L).a(BufferBuilder.c(-4486660301937081020L)); - BufferBuilder.c(6392141414067993468L).a(BufferBuilder.c(2309242757088335913L)); - BufferBuilder.c(1790997930970303764L).a(BufferBuilder.c(-2350069709937246708L)); - BufferBuilder.c(1694505409384910518L).a(BufferBuilder.c(42317624931543846L)); - BufferBuilder.c(6266026616629497495L).a(BufferBuilder.c(-8328293495267411864L)); - BufferBuilder.c(2477917140818162898L).a(BufferBuilder.c(3669001684241361696L)); - BufferBuilder.c(-6728575076292260896L).a(BufferBuilder.c(-4250761284502270703L)); - BufferBuilder.c(4371355358222139017L).a(BufferBuilder.c(1601763567752054023L)); - BufferBuilder.c(5124443822645091938L).a(BufferBuilder.c(-6519291337198594421L)); - BufferBuilder.c(7661705679215108667L).a(BufferBuilder.c(2780138497274774634L)); - BufferBuilder.c(8788979260042319537L).a(BufferBuilder.c(2362387801312524345L)); - BufferBuilder.c(-1589582051059651411L).a(BufferBuilder.c(7109932714460853988L)); - BufferBuilder.c(1102660249736885944L).a(BufferBuilder.c(6858412317131197283L)); - BufferBuilder.c(556478397389846323L).a(BufferBuilder.c(2302215381028009097L)); - BufferBuilder.c(8680992427992116444L).a(BufferBuilder.c(-7037886260596207144L)); - BufferBuilder.c(-3149022144955108232L).a(BufferBuilder.c(-1802095133829155656L)); - BufferBuilder.c(-2713315861388092375L).a(BufferBuilder.c(-1861073309773316650L)); - BufferBuilder.c(-2539614402145259929L).a(BufferBuilder.c(-769302230525969142L)); - BufferBuilder.c(-5303523889259019136L).a(BufferBuilder.c(3156030746040574043L)); - BufferBuilder.c(-6539379120989878524L).a(BufferBuilder.c(-4778808414532406346L)); - BufferBuilder.c(839622860140659349L).a(BufferBuilder.c(-5100064850369774135L)); - BufferBuilder.c(-3478013522691971827L).a(BufferBuilder.c(1640999897131039178L)); - BufferBuilder.c(830667906671923173L).a(BufferBuilder.c(-8077360855240267821L)); - BufferBuilder.c(4235395438889308936L).a(BufferBuilder.c(-7227068346076472417L)); - BufferBuilder.c(1611542781259124232L).a(BufferBuilder.c(6493948919409105126L)); - BufferBuilder.c(1572826644801469458L).a(BufferBuilder.c(1029912842852751L)); - BufferBuilder.c(-5628890781352697618L).a(BufferBuilder.c(3247991985786217261L)); - BufferBuilder.c(1987901276649088577L).a(BufferBuilder.c(6125948427325342297L)); - BufferBuilder.c(-5746491766205868947L).a(BufferBuilder.c(-5096492956377206115L)); - BufferBuilder.c(3310012225753804833L).a(BufferBuilder.c(1451688747544448595L)); - BufferBuilder.c(-3301721049215487739L).a(BufferBuilder.c(-1858822171874894211L)); - BufferBuilder.c(-7517957295116434057L).a(BufferBuilder.c(-8610807090543296157L)); - BufferBuilder.c(5354495820124167311L).a(BufferBuilder.c(-3958047076211185675L)); - BufferBuilder.c(-5828524651116760244L).a(BufferBuilder.c(-7441590886429314175L)); - BufferBuilder.c(-832070007081790293L).a(BufferBuilder.c(2815146931693039999L)); - BufferBuilder.c(-7216907144701545901L).a(BufferBuilder.c(1341267510036788131L)); - BufferBuilder.c(-5574650821431865702L).a(BufferBuilder.c(-6960001855474527347L)); - BufferBuilder.c(7749454734668009023L).a(BufferBuilder.c(-2549490353337609738L)); - BufferBuilder.c(5713098866985684934L).a(BufferBuilder.c(2541915337575101870L)); - BufferBuilder.c(-2354916741169152899L).a(BufferBuilder.c(3742386413547724357L)); - BufferBuilder.c(-7146323930755915820L).a(BufferBuilder.c(5511487877946201908L)); - BufferBuilder.c(-8670785474055768836L).a(BufferBuilder.c(-4799555463921305612L)); - BufferBuilder.c(4696720312905567453L).a(BufferBuilder.c(2385809017900513000L)); - BufferBuilder.c(-1071268761916540938L).a(BufferBuilder.c(8769902265701210727L)); - BufferBuilder.c(-583740923814193766L).a(BufferBuilder.c(1313719128556190631L)); - BufferBuilder.c(-4523173036317711548L).a(BufferBuilder.c(1726976151219196375L)); - BufferBuilder.c(-6358562965450905888L).a(BufferBuilder.c(6053862190672169391L)); - BufferBuilder.c(-4796185534192205772L).a(BufferBuilder.c(-3706389632569466943L)); - BufferBuilder.c(4585999973118486586L).a(BufferBuilder.c(59449207432830993L)); - BufferBuilder.c(6641495616418434180L).a(BufferBuilder.c(911477203025586126L)); - BufferBuilder.c(6245802941417065025L).a(BufferBuilder.c(8728489100000570536L)); - BufferBuilder.c(-8391758033765876512L).a(BufferBuilder.c(-137155034777446095L)); - BufferBuilder.c(-2930756414406953732L).a(BufferBuilder.c(-5692951113845885170L)); - BufferBuilder.c(-3560721622357630459L).a(BufferBuilder.c(286245375031813227L)); - BufferBuilder.c(272322249627660898L).a(BufferBuilder.c(6313526610097384261L)); - BufferBuilder.c(-7089363332009628062L).a(BufferBuilder.c(7212131210772763587L)); - BufferBuilder.c(289034318097321041L).a(BufferBuilder.c(1610041871761729356L)); - BufferBuilder.c(-5112402322759579594L).a(BufferBuilder.c(2655638555846522309L)); - BufferBuilder.c(4911739056961875155L).a(BufferBuilder.c(-2883947512511324431L)); - BufferBuilder.c(4544674800897222766L).a(BufferBuilder.c(-1977066422565745527L)); - BufferBuilder.c(-8889340233910831239L).a(BufferBuilder.c(5566054001911452024L)); - BufferBuilder.c(-3690169737777145763L).a(BufferBuilder.c(-1758705484192214189L)); - BufferBuilder.c(-6820536594964454200L).a(BufferBuilder.c(4060591742015175154L)); - BufferBuilder.c(-8568685379528510375L).a(BufferBuilder.c(3887001225931489445L)); - BufferBuilder.c(6127499927675209414L).a(BufferBuilder.c(8161712970609082747L)); - BufferBuilder.c(4909963404024222168L).a(BufferBuilder.c(98468435964659999L)); - BufferBuilder.c(-4574653293785396135L).a(BufferBuilder.c(-5294232770508537433L)); - BufferBuilder.c(1254874064854583291L).a(BufferBuilder.c(5758309860946712338L)); - BufferBuilder.c(7499848102720856093L).a(BufferBuilder.c(3799352127510747137L)); - BufferBuilder.c(7772994381578504251L).a(BufferBuilder.c(-8710872947158085532L)); - BufferBuilder.c(6599844594373466994L).a(BufferBuilder.c(-4647459599223722287L)); - BufferBuilder.c(2833851777837485694L).a(BufferBuilder.c(-1469806556996618015L)); - BufferBuilder.c(5072345805010719213L).a(BufferBuilder.c(6724983102637296862L)); - BufferBuilder.c(-4490220031481698959L).a(BufferBuilder.c(7418311514399525692L)); - BufferBuilder.c(-7124729686073999737L).a(BufferBuilder.c(-336563050783442278L)); - BufferBuilder.c(-2257045459481868595L).a(BufferBuilder.c(-7605840217315883252L)); - BufferBuilder.c(-2098556823529563155L).a(BufferBuilder.c(-7607067682650497312L)); - BufferBuilder.c(-1436947325249127808L).a(BufferBuilder.c(8915252789307033031L)); - BufferBuilder.c(-4216050240528256062L).a(BufferBuilder.c(-2012050494503716764L)); - BufferBuilder.c(-3608208380699220169L).a(BufferBuilder.c(1624309633060696526L)); - BufferBuilder.c(54217576217065833L).a(BufferBuilder.c(-6286863222696760427L)); - BufferBuilder.c(-6693567186149380334L).a(BufferBuilder.c(6197595546128207630L)); - BufferBuilder.c(-865788754116359921L).a(BufferBuilder.c(-1185745591685583588L)); - BufferBuilder.c(-8331737360925259320L).a(BufferBuilder.c(-5879000032735470279L)); - BufferBuilder.c(4934952998471487604L).a(BufferBuilder.c(-8576289508512385665L)); - BufferBuilder.c(7459960540565775234L).a(BufferBuilder.c(1282340251457997853L)); - BufferBuilder.c(6653166883929622337L).a(BufferBuilder.c(3502783123828293445L)); - BufferBuilder.c(7830576803666278314L).a(BufferBuilder.c(3100768625469803346L)); - BufferBuilder.c(-8671326299548217341L).a(BufferBuilder.c(540087420252272256L)); - BufferBuilder.c(-6473659856523123220L).a(BufferBuilder.c(-4151778396496865799L)); - BufferBuilder.c(395873969269184532L).a(BufferBuilder.c(-5945426470370828782L)); - BufferBuilder.c(7308957571162585291L).a(BufferBuilder.c(-2063915709068265680L)); - BufferBuilder.c(3551980804154500385L).a(BufferBuilder.c(661188139114501327L)); - BufferBuilder.c(-7237486654078107329L).a(BufferBuilder.c(8869643220055534622L)); - BufferBuilder.c(-2393989214715066532L).a(BufferBuilder.c(1909464260164608806L)); - BufferBuilder.c(8723761687317385335L).a(BufferBuilder.c(2359938622714050992L)); - BufferBuilder.c(317491837969628679L).a(BufferBuilder.c(-1292310815326294085L)); - BufferBuilder.c(4804927009072940327L).a(BufferBuilder.c(6324307427764390160L)); - BufferBuilder.c(-7793344822730272963L).a(BufferBuilder.c(8694629227280629128L)); - BufferBuilder.c(-8338565187882481159L).a(BufferBuilder.c(6812935496575835410L)); - BufferBuilder.c(4420870741345078760L).a(BufferBuilder.c(-8052352362510787222L)); - BufferBuilder.c(-4199303608178863135L).a(BufferBuilder.c(2811352502564604667L)); - BufferBuilder.c(6195365551177503947L).a(BufferBuilder.c(110120610187782623L)); - BufferBuilder.c(2590855191275977073L).a(BufferBuilder.c(5685453318961324032L)); - BufferBuilder.c(-4655300754585121440L).a(BufferBuilder.c(-2296638828418976587L)); - BufferBuilder.c(-3838653395367625175L).a(BufferBuilder.c(1509638862758006586L)); - BufferBuilder.c(-5561258238840120421L).a(BufferBuilder.c(-4088217231803114752L)); - BufferBuilder.c(-1411952427430077334L).a(BufferBuilder.c(-1977841953930781263L)); - BufferBuilder.c(5306847202869906900L).a(BufferBuilder.c(216759018147416462L)); - BufferBuilder.c(995901504334137279L).a(BufferBuilder.c(-1770008555636246885L)); - BufferBuilder.c(4379217990793816445L).a(BufferBuilder.c(8219700455004513571L)); - BufferBuilder.c(-5544543872502777205L).a(BufferBuilder.c(-7107346490981745345L)); - BufferBuilder.c(806563498872106163L).a(BufferBuilder.c(-6295723655477129874L)); - BufferBuilder.c(5103850150800809758L).a(BufferBuilder.c(5325292258382238615L)); - BufferBuilder.c(-7235838583809811276L).a(BufferBuilder.c(-173738592151920830L)); - BufferBuilder.c(-7795308655218940809L).a(BufferBuilder.c(3410185910123992223L)); - BufferBuilder.c(-3137090193684521932L).a(BufferBuilder.c(2198606142532385421L)); - BufferBuilder.c(479930906922729437L).a(BufferBuilder.c(7763471372799083903L)); - BufferBuilder.c(-2584188569066552016L).a(BufferBuilder.c(3418187196891592766L)); - BufferBuilder.c(-2493217681158420598L).a(BufferBuilder.c(-2042688564804874755L)); - BufferBuilder.c(6935694648762496520L).a(BufferBuilder.c(2434852049587773109L)); - BufferBuilder.c(-7451283529338946122L).a(BufferBuilder.c(-6839476183306893458L)); - BufferBuilder.c(904415093611413686L).a(BufferBuilder.c(-1199017418983776287L)); - BufferBuilder.c(-5728587262752908270L).a(BufferBuilder.c(-3011244947731364720L)); - BufferBuilder.c(6876692695002323444L).a(BufferBuilder.c(3935126296220998227L)); - BufferBuilder.c(8466325513365532286L).a(BufferBuilder.c(-149736830859378843L)); - BufferBuilder.c(-3761730900018739494L).a(BufferBuilder.c(6690417363845090547L)); - BufferBuilder.c(-8906616302012120589L).a(BufferBuilder.c(3379906495058118770L)); - BufferBuilder.c(4530875912851178562L).a(BufferBuilder.c(-3974505137674949672L)); - BufferBuilder.c(-1864529591814663068L).a(BufferBuilder.c(-6438663503688233397L)); - BufferBuilder.c(-5152031521614937806L).a(BufferBuilder.c(6463376002302056104L)); - BufferBuilder.c(-3848808016784647687L).a(BufferBuilder.c(3635853160202455384L)); - BufferBuilder.c(8290734092287207169L).a(BufferBuilder.c(7553209564167050668L)); - BufferBuilder.c(8502572570629285541L).a(BufferBuilder.c(-1116461396580693892L)); - BufferBuilder.c(3385951569107227418L).a(BufferBuilder.c(-6957940220483154138L)); - BufferBuilder.c(4170874431921211315L).a(BufferBuilder.c(527229692171559930L)); - BufferBuilder.c(1813094231092755780L).a(BufferBuilder.c(4009533049157750635L)); - BufferBuilder.c(3022414126847951437L).a(BufferBuilder.c(-9176796667148895691L)); - BufferBuilder.c(-2612513690046937649L).a(BufferBuilder.c(1703060537803843273L)); - BufferBuilder.c(4310556269704020036L).a(BufferBuilder.c(-1775013642634131575L)); - BufferBuilder.c(7273676869463409454L).a(BufferBuilder.c(5322451657705607793L)); - BufferBuilder.c(-93974071921448919L).a(BufferBuilder.c(-5469469778741630594L)); - BufferBuilder.c(-6759428920013129492L).a(BufferBuilder.c(-2101188588361924314L)); - BufferBuilder.c(-2503883546878329210L).a(BufferBuilder.c(8877586858593798665L)); - BufferBuilder.c(-888392487197248106L).a(BufferBuilder.c(5349195179291010017L)); - BufferBuilder.c(-5890057849110226122L).a(BufferBuilder.c(2885704560265128378L)); - BufferBuilder.c(3491562533069313127L).a(BufferBuilder.c(-3792447035635478195L)); - BufferBuilder.c(-7158509356060636754L).a(BufferBuilder.c(-8000877625145865006L)); - BufferBuilder.c(8851224227035144280L).a(BufferBuilder.c(4455490752937424631L)); - BufferBuilder.c(-6593259834469890090L).a(BufferBuilder.c(-3403519968480534709L)); - BufferBuilder.c(-9010088641248245933L).a(BufferBuilder.c(2706906001977890378L)); - BufferBuilder.c(5607861891640311850L).a(BufferBuilder.c(7558530788528731726L)); - BufferBuilder.c(7268211307321263195L).a(BufferBuilder.c(-7571130939724794584L)); - BufferBuilder.c(-866866882207072993L).a(BufferBuilder.c(1837415969454130270L)); - BufferBuilder.c(-7741228639719098468L).a(BufferBuilder.c(-5751223666343562301L)); - BufferBuilder.c(5647196338331640016L).a(BufferBuilder.c(-5114304955639536435L)); - BufferBuilder.c(2233496473133922431L).a(BufferBuilder.c(-1736813697678202390L)); - BufferBuilder.c(3119197462786375162L).a(BufferBuilder.c(-5916341707791660373L)); - BufferBuilder.c(7310998328218957047L).a(BufferBuilder.c(-4004359708417495799L)); - BufferBuilder.c(-5659585790463836993L).a(BufferBuilder.c(5295807373127065361L)); - BufferBuilder.c(-8024306151789041857L).a(BufferBuilder.c(2881171302872291057L)); - BufferBuilder.c(7818265484323306674L).a(BufferBuilder.c(5016400975612959600L)); - BufferBuilder.c(3975350339646683778L).a(BufferBuilder.c(-5977619637200940200L)); - BufferBuilder.c(8366861526660666619L).a(BufferBuilder.c(8817896571524017448L)); - BufferBuilder.c(8745277190777520433L).a(BufferBuilder.c(-3252695470802892111L)); - BufferBuilder.c(3854151361943642855L).a(BufferBuilder.c(-3236709656267022234L)); - BufferBuilder.c(6689789391108633544L).a(BufferBuilder.c(5913950036271878695L)); - BufferBuilder.c(-1016032669780072267L).a(BufferBuilder.c(-4187658250340789967L)); - BufferBuilder.c(8378473421187179701L).a(BufferBuilder.c(5569849471514679021L)); - BufferBuilder.c(-5805242715595672210L).a(BufferBuilder.c(-2159262685163602872L)); - BufferBuilder.c(-3018676595037292324L).a(BufferBuilder.c(952994185964076280L)); - BufferBuilder.c(-6180668059493537575L).a(BufferBuilder.c(-1678468053802806356L)); - BufferBuilder.c(-8463231234951640042L).a(BufferBuilder.c(128424129017454498L)); - BufferBuilder.c(-1181016684580735598L).a(BufferBuilder.c(6157214592197997652L)); - BufferBuilder.c(4044432657095384487L).a(BufferBuilder.c(5636617783858136936L)); - BufferBuilder.c(-7170519838996712824L).a(BufferBuilder.c(-7174312641841170223L)); - BufferBuilder.c(-5387738855123227213L).a(BufferBuilder.c(2814982883893081210L)); - BufferBuilder.c(1492843433208621795L).a(BufferBuilder.c(-8597050523506690262L)); - BufferBuilder.c(-5104689176539545090L).a(BufferBuilder.c(191048458038694573L)); - BufferBuilder.c(-1901149015503306416L).a(BufferBuilder.c(3099718519340585233L)); - BufferBuilder.c(8192251799473991794L).a(BufferBuilder.c(3650653733297216751L)); - BufferBuilder.c(-913705133198149479L).a(BufferBuilder.c(-7273022434189565683L)); - BufferBuilder.c(-3942086564792425431L).a(BufferBuilder.c(-7127299864434873626L)); - BufferBuilder.c(7628176971961115134L).a(BufferBuilder.c(-8558681966871924827L)); - BufferBuilder.c(-8624199217383875023L).a(BufferBuilder.c(-1821733067521129931L)); - BufferBuilder.c(-8714105549281234115L).a(BufferBuilder.c(195873306886953705L)); - BufferBuilder.c(-5342601169861385115L).a(BufferBuilder.c(-6221807914369220684L)); - BufferBuilder.c(-5024101054934228984L).a(BufferBuilder.c(625296695408499699L)); - BufferBuilder.c(-7575059913339960050L).a(BufferBuilder.c(-5599191385168167623L)); - BufferBuilder.c(3007483913276447253L).a(BufferBuilder.c(-1727156721979209869L)); - BufferBuilder.c(8715901980606873275L).a(BufferBuilder.c(4208302888112856221L)); - BufferBuilder.c(-8452796686154463549L).a(BufferBuilder.c(-7308359982845210550L)); - BufferBuilder.c(2875414443082151177L).a(BufferBuilder.c(-3324159501120754330L)); - BufferBuilder.c(3420869338752420664L).a(BufferBuilder.c(7278875459462013106L)); - BufferBuilder.c(9065784037386878868L).a(BufferBuilder.c(-7310734116636360730L)); - BufferBuilder.c(6827606099242128720L).a(BufferBuilder.c(-3757352104454144534L)); - BufferBuilder.c(7898601363559730976L).a(BufferBuilder.c(4304845948793444877L)); - BufferBuilder.c(6645433621681741211L).a(BufferBuilder.c(-7853850403665387049L)); - BufferBuilder.c(-4039253213498250165L).a(BufferBuilder.c(3353222597577309963L)); - BufferBuilder.c(1893331157183336134L).a(BufferBuilder.c(-2763374926005029819L)); - BufferBuilder.c(6741260395676814600L).a(BufferBuilder.c(6245906646829220135L)); - BufferBuilder.c(2572587291554575051L).a(BufferBuilder.c(8092148904455540329L)); - BufferBuilder.c(9015576562681262593L).a(BufferBuilder.c(6104753808067296860L)); - BufferBuilder.c(6299268876765583756L).a(BufferBuilder.c(2375971132206993213L)); - BufferBuilder.c(6404793873313026480L).a(BufferBuilder.c(3792107508545298218L)); - BufferBuilder.c(3796205233111521722L).a(BufferBuilder.c(-1178608127331302083L)); - BufferBuilder.c(-304840608875935812L).a(BufferBuilder.c(-3449583972281111662L)); - BufferBuilder.c(-1816009464645239237L).a(BufferBuilder.c(-498579382043649720L)); - BufferBuilder.c(4141901596799815262L).a(BufferBuilder.c(2774315880041257136L)); - BufferBuilder.c(4739090082484226909L).a(BufferBuilder.c(1633964451103595121L)); - BufferBuilder.c(-4798586434635467807L).a(BufferBuilder.c(-2544168645168247067L)); - BufferBuilder.c(8508738591520798796L).a(BufferBuilder.c(-441411581334517031L)); - BufferBuilder.c(-861646476034547997L).a(BufferBuilder.c(-510356898838057943L)); - BufferBuilder.c(-3225202945946769763L).a(BufferBuilder.c(1809453683670149809L)); - BufferBuilder.c(-4323960043662543109L).a(BufferBuilder.c(-3894915941524250527L)); - BufferBuilder.c(-8112051942663504353L).a(BufferBuilder.c(-6586935416418391216L)); - BufferBuilder.c(6413031977255861659L).a(BufferBuilder.c(-86708267596231549L)); - BufferBuilder.c(8150655561972730809L).a(BufferBuilder.c(-3999668606725785677L)); - BufferBuilder.c(1928598070529307169L).a(BufferBuilder.c(608789954679851834L)); - BufferBuilder.c(-2528989709081557370L).a(BufferBuilder.c(3567651020602941854L)); - BufferBuilder.c(-5938444516747709830L).a(BufferBuilder.c(-2358571660867415080L)); - BufferBuilder.c(519673267663566445L).a(BufferBuilder.c(-5258429146351416277L)); - BufferBuilder.c(-9200370189005692391L).a(BufferBuilder.c(821058678447645227L)); - BufferBuilder.c(6441159594620480236L).a(BufferBuilder.c(5707296184265769648L)); - BufferBuilder.c(8267663426694312834L).a(BufferBuilder.c(2633920992029092358L)); - BufferBuilder.c(-8528141946327162931L).a(BufferBuilder.c(-8645386228584758636L)); - BufferBuilder.c(986692594392833573L).a(BufferBuilder.c(-8647430114711133079L)); - BufferBuilder.c(-4335567285756192042L).a(BufferBuilder.c(1761216568184038487L)); - BufferBuilder.c(-8871937621669677081L).a(BufferBuilder.c(4398525507297884433L)); - BufferBuilder.c(38891535451921821L).a(BufferBuilder.c(5528311480479048835L)); - BufferBuilder.c(2959962938528465199L).a(BufferBuilder.c(-5096725358442459523L)); - BufferBuilder.c(5623951111455155939L).a(BufferBuilder.c(3415650059193821608L)); - BufferBuilder.c(-2949048322479482181L).a(BufferBuilder.c(4409695521660065218L)); - BufferBuilder.c(-554443890735325966L).a(BufferBuilder.c(1180351813751590612L)); - BufferBuilder.c(-6365028796151143774L).a(BufferBuilder.c(1089686068942755143L)); - BufferBuilder.c(-8659459499314084146L).a(BufferBuilder.c(-3205798691954050175L)); - BufferBuilder.c(8293437073781526872L).a(BufferBuilder.c(2328142913901942023L)); - BufferBuilder.c(5648185368546578185L).a(BufferBuilder.c(4860034544380982259L)); - BufferBuilder.c(-5188385297843088260L).a(BufferBuilder.c(-5559211378884211089L)); - BufferBuilder.c(1195882331665321757L).a(BufferBuilder.c(-1008121624077621480L)); - BufferBuilder.c(7715994059104850422L).a(BufferBuilder.c(-8334648287049223958L)); - BufferBuilder.c(-5793913901527819772L).a(BufferBuilder.c(-7638531479953405818L)); - BufferBuilder.c(-2961176069505939437L).a(BufferBuilder.c(8723410385435337714L)); - BufferBuilder.c(4889732941224121453L).a(BufferBuilder.c(1746728395544404599L)); - BufferBuilder.c(-6975601915498431121L).a(BufferBuilder.c(7759503928078711586L)); - BufferBuilder.c(1882215653863019955L).a(BufferBuilder.c(1382670085019103097L)); - BufferBuilder.c(-1621181481332280869L).a(BufferBuilder.c(-8088797406106713296L)); - BufferBuilder.c(-7486290312008502405L).a(BufferBuilder.c(7489568668908682519L)); - BufferBuilder.c(5502722107168057722L).a(BufferBuilder.c(-7170201050264787061L)); - BufferBuilder.c(7825709229871750972L).a(BufferBuilder.c(7586591776493037090L)); - BufferBuilder.c(5268801075489558813L).a(BufferBuilder.c(-1220472698756442748L)); - BufferBuilder.c(-2881189840639369540L).a(BufferBuilder.c(4955961918940590561L)); - BufferBuilder.c(-8113675464090773422L).a(BufferBuilder.c(-6380537408925055544L)); - BufferBuilder.c(-5796774259264329728L).a(BufferBuilder.c(8261098191116679943L)); - BufferBuilder.c(7516971331232673074L).a(BufferBuilder.c(5009628060353586943L)); - BufferBuilder.c(3013456362742736681L).a(BufferBuilder.c(602839739323417969L)); - BufferBuilder.c(-3736846275773378798L).a(BufferBuilder.c(7134369774976992212L)); - BufferBuilder.c(-4082327151293970251L).a(BufferBuilder.c(1649696961239562287L)); - BufferBuilder.c(-1622510229696450942L).a(BufferBuilder.c(-4191532873745040029L)); - BufferBuilder.c(9003014661519680675L).a(BufferBuilder.c(-324246822798203427L)); - BufferBuilder.c(-6885101577096582699L).a(BufferBuilder.c(-418223888914442406L)); - BufferBuilder.c(8683272805612032840L).a(BufferBuilder.c(3040088698762194638L)); - BufferBuilder.c(-5256402231990569091L).a(BufferBuilder.c(-4276691551416463845L)); - BufferBuilder.c(7388470240239214137L).a(BufferBuilder.c(-7998196652216096529L)); - BufferBuilder.c(-2286550932395213361L).a(BufferBuilder.c(5228904824084123471L)); - BufferBuilder.c(-4283939722466393521L).a(BufferBuilder.c(767401072760411418L)); - BufferBuilder.c(-3096774833291483250L).a(BufferBuilder.c(6131849581949396396L)); - BufferBuilder.c(3464445215086777448L).a(BufferBuilder.c(-798866978607404315L)); - BufferBuilder.c(3130058398647222054L).a(BufferBuilder.c(-6535445973697846776L)); - BufferBuilder.c(-2908208835269310489L).a(BufferBuilder.c(-8157201308201682138L)); - BufferBuilder.c(6364582053763590717L).a(BufferBuilder.c(4251939828645645799L)); - BufferBuilder.c(4290707426728757649L).a(BufferBuilder.c(-2174540286987619759L)); - BufferBuilder.c(280353155542562190L).a(BufferBuilder.c(8297096828119391714L)); - BufferBuilder.c(5058353316226940969L).a(BufferBuilder.c(-7914647450767508062L)); - BufferBuilder.c(-2665781772381740024L).a(BufferBuilder.c(-4722185679560997165L)); - BufferBuilder.c(-8535167252598974295L).a(BufferBuilder.c(-4944513482463347291L)); - BufferBuilder.c(7291932133386230358L).a(BufferBuilder.c(6321654947256321976L)); - BufferBuilder.c(567992579879835445L).a(BufferBuilder.c(-6417938334877488346L)); - BufferBuilder.c(2497118548981430357L).a(BufferBuilder.c(-261864528861731177L)); - BufferBuilder.c(1584021496806079586L).a(BufferBuilder.c(-2305703816662142940L)); - BufferBuilder.c(8062141699551974215L).a(BufferBuilder.c(-8831115045033640218L)); - BufferBuilder.c(8802853535910664974L).a(BufferBuilder.c(-6852146867059518049L)); - BufferBuilder.c(-2680961510923653403L).a(BufferBuilder.c(1586067109226745015L)); - BufferBuilder.c(-80147780315923754L).a(BufferBuilder.c(-8907722686154486289L)); - BufferBuilder.c(-5650970581684990904L).a(BufferBuilder.c(6080354852964939606L)); - BufferBuilder.c(613847567625132501L).a(BufferBuilder.c(-5140436188965164107L)); - BufferBuilder.c(4588195076844257509L).a(BufferBuilder.c(-5703073788528269397L)); - BufferBuilder.c(-3698576180317315048L).a(BufferBuilder.c(8447512790265613823L)); - BufferBuilder.c(8993302012069865481L).a(BufferBuilder.c(-6530660908033107393L)); - BufferBuilder.c(4332410148969905288L).a(BufferBuilder.c(2812315964845362220L)); - BufferBuilder.c(4705958791640965629L).a(BufferBuilder.c(8072006827040660431L)); - BufferBuilder.c(2583008079894833292L).a(BufferBuilder.c(-2091913134235689961L)); - BufferBuilder.c(-3357789566505922386L).a(BufferBuilder.c(-5441247488769480337L)); - BufferBuilder.c(8495694357330176082L).a(BufferBuilder.c(9069641119248259374L)); - BufferBuilder.c(-5258624786417360744L).a(BufferBuilder.c(9200476050167088412L)); - BufferBuilder.c(-7342496708649144271L).a(BufferBuilder.c(-7590701518685781947L)); - BufferBuilder.c(-3901686110755836157L).a(BufferBuilder.c(4770521633460663942L)); - BufferBuilder.c(-2257196133702278144L).a(BufferBuilder.c(-1199022114529914420L)); - BufferBuilder.c(-3546961223407694810L).a(BufferBuilder.c(-5258497913452971139L)); - BufferBuilder.c(-5493848780157947283L).a(BufferBuilder.c(123138757351392551L)); - BufferBuilder.c(24488351581764623L).a(BufferBuilder.c(-4678768106549762524L)); - BufferBuilder.c(312320816833906551L).a(BufferBuilder.c(-1000455401906879329L)); - BufferBuilder.c(1603804471542519501L).a(BufferBuilder.c(-7705590198200382571L)); - BufferBuilder.c(-290739744867099464L).a(BufferBuilder.c(-260471857290644607L)); - BufferBuilder.c(-6460048626873884890L).a(BufferBuilder.c(5996441971103271914L)); - BufferBuilder.c(8980620296842574222L).a(BufferBuilder.c(-626245219670130276L)); - BufferBuilder.c(-2438641379856637765L).a(BufferBuilder.c(8034789567635056696L)); - BufferBuilder.c(4910246354672378394L).a(BufferBuilder.c(-5631834081001900705L)); - BufferBuilder.c(441507819510821998L).a(BufferBuilder.c(-203742128992049279L)); - BufferBuilder.c(1364134070923648122L).a(BufferBuilder.c(-4602192050408242388L)); - BufferBuilder.c(4786922582582736890L).a(BufferBuilder.c(-9118525873778803872L)); - BufferBuilder.c(-3843212417481211000L).a(BufferBuilder.c(-6852363482386706151L)); - BufferBuilder.c(8020389942898225424L).a(BufferBuilder.c(-7906826044881537036L)); - BufferBuilder.c(-3871060328072271580L).a(BufferBuilder.c(-8042654696864300563L)); - BufferBuilder.c(-5113505707545016537L).a(BufferBuilder.c(7825647721712970473L)); - BufferBuilder.c(-2103418972464793562L).a(BufferBuilder.c(-7650129591123669190L)); - BufferBuilder.c(-3560497724726374746L).a(BufferBuilder.c(-5612976971668540930L)); - BufferBuilder.c(-2188393503617329747L).a(BufferBuilder.c(3471797253081221439L)); - BufferBuilder.c(-7012914377320134994L).a(BufferBuilder.c(4315023588517121153L)); - BufferBuilder.c(5928066026759052427L).a(BufferBuilder.c(-599671261573332609L)); - BufferBuilder.c(-3779542367907105717L).a(BufferBuilder.c(-2897414975865961858L)); - BufferBuilder.c(4002655096652243573L).a(BufferBuilder.c(-702837424697427754L)); - BufferBuilder.c(7408674610185654164L).a(BufferBuilder.c(-4887290093277667538L)); - BufferBuilder.c(6345430076527536797L).a(BufferBuilder.c(4135810473359148251L)); - BufferBuilder.c(5448834977801878353L).a(BufferBuilder.c(4712797362612972241L)); - BufferBuilder.c(7526048386252893421L).a(BufferBuilder.c(1071066890051237121L)); - BufferBuilder.c(2189372510773728279L).a(BufferBuilder.c(-2743217505581620734L)); - BufferBuilder.c(6375205996914467803L).a(BufferBuilder.c(2944070035904220813L)); - BufferBuilder.c(-846517665913626566L).a(BufferBuilder.c(2146201278373846611L)); - BufferBuilder.c(-5478605583940081864L).a(BufferBuilder.c(-3989008206749267490L)); - BufferBuilder.c(-7618113532065599279L).a(BufferBuilder.c(1749266470513908045L)); - BufferBuilder.c(-8663925109123469889L).a(BufferBuilder.c(4489743621914775627L)); - BufferBuilder.c(7047458953718367521L).a(BufferBuilder.c(-378708048862526928L)); - BufferBuilder.c(6910985884437452072L).a(BufferBuilder.c(-4417710474681440491L)); - BufferBuilder.c(2276030549858171951L).a(BufferBuilder.c(3152491210990642073L)); - BufferBuilder.c(7022977102074775831L).a(BufferBuilder.c(1663659749946774331L)); - BufferBuilder.c(6680993479288963172L).a(BufferBuilder.c(-1660420206810171760L)); - BufferBuilder.c(-2236108592580468855L).a(BufferBuilder.c(-1658087161207451766L)); - BufferBuilder.c(-8383102684881202124L).a(BufferBuilder.c(2506915197409446069L)); - BufferBuilder.c(7574642426046340007L).a(BufferBuilder.c(-2600193948172167092L)); - BufferBuilder.c(7125236328853267916L).a(BufferBuilder.c(-1352298115217901135L)); - BufferBuilder.c(-1848391123792631249L).a(BufferBuilder.c(2637990699504148253L)); - BufferBuilder.c(6994760288034621408L).a(BufferBuilder.c(-1645803358984435669L)); - BufferBuilder.c(1096620550850047071L).a(BufferBuilder.c(-1468960680401520131L)); - BufferBuilder.c(-5554172434784152765L).a(BufferBuilder.c(4378822312146803375L)); - BufferBuilder.c(873694616210160406L).a(BufferBuilder.c(7832335511419359294L)); - BufferBuilder.c(-7932553434355091631L).a(BufferBuilder.c(-6211206945471968262L)); - BufferBuilder.c(7683760726386733509L).a(BufferBuilder.c(-6669154675723938725L)); - BufferBuilder.c(1982662094761055131L).a(BufferBuilder.c(3735665744359156037L)); - BufferBuilder.c(-7861604154562798091L).a(BufferBuilder.c(-8170335015274371307L)); - BufferBuilder.c(3388907212007600488L).a(BufferBuilder.c(7338290406267537648L)); - BufferBuilder.c(8411299288386268836L).a(BufferBuilder.c(-5335616373161608340L)); - BufferBuilder.c(2803555742360847358L).a(BufferBuilder.c(-6498813545786764744L)); - BufferBuilder.c(-375346317864015726L).a(BufferBuilder.c(-1912941307398676740L)); - BufferBuilder.c(-3394663959165792816L).a(BufferBuilder.c(-6966231370014736334L)); - BufferBuilder.c(4645750553552335763L).a(BufferBuilder.c(3354715202820380118L)); - BufferBuilder.c(7388547354290671245L).a(BufferBuilder.c(3296680045212523154L)); - BufferBuilder.c(-2010715332498172779L).a(BufferBuilder.c(6544873332985336500L)); - BufferBuilder.c(5429432110410894102L).a(BufferBuilder.c(-8625669105813620455L)); - BufferBuilder.c(6478133964740912020L).a(BufferBuilder.c(-5154637968446071895L)); - BufferBuilder.c(5977253298712758315L).a(BufferBuilder.c(8673237309925493622L)); - BufferBuilder.c(3912178402131966067L).a(BufferBuilder.c(-1534486105001280536L)); - BufferBuilder.c(-4342124098199074460L).a(BufferBuilder.c(4440352613535273022L)); - BufferBuilder.c(7136958748870181605L).a(BufferBuilder.c(5095031025532849063L)); - BufferBuilder.c(-8831773164065862996L).a(BufferBuilder.c(7619709162188667760L)); - BufferBuilder.c(-8022431497624436336L).a(BufferBuilder.c(-523735725684757724L)); - BufferBuilder.c(6965050544542915324L).a(BufferBuilder.c(1983691741884714337L)); - BufferBuilder.c(644729596514065081L).a(BufferBuilder.c(-2537155407830503822L)); - BufferBuilder.c(-6610011556731496212L).a(BufferBuilder.c(1454795910328814266L)); - BufferBuilder.c(2814241500892583010L).a(BufferBuilder.c(-861656217628571768L)); - BufferBuilder.c(2326710766496297923L).a(BufferBuilder.c(-4380972025313538815L)); - BufferBuilder.c(6866645480514754407L).a(BufferBuilder.c(4648715945943748238L)); - BufferBuilder.c(-1070295271481559332L).a(BufferBuilder.c(-5425080388664977124L)); - BufferBuilder.c(-7875778153902482193L).a(BufferBuilder.c(-4581278895656255994L)); - BufferBuilder.c(-6393128375343302596L).a(BufferBuilder.c(-3880296298847608848L)); - BufferBuilder.c(5506007557507533657L).a(BufferBuilder.c(-2334377411506834472L)); - BufferBuilder.c(7132541859224705995L).a(BufferBuilder.c(214319744091194078L)); - BufferBuilder.c(8940807633627103565L).a(BufferBuilder.c(6229173852928540377L)); - BufferBuilder.c(-8211818960060715541L).a(BufferBuilder.c(-3250879676208812292L)); - BufferBuilder.c(-2211700497387734087L).a(BufferBuilder.c(-1154714212572077050L)); - BufferBuilder.c(-7345093123180745557L).a(BufferBuilder.c(-3841349777936715770L)); - BufferBuilder.c(-2159380355656019648L).a(BufferBuilder.c(5688232763926217076L)); - BufferBuilder.c(-3090627047569063817L).a(BufferBuilder.c(-1052196657504615462L)); - BufferBuilder.c(-4431875004104100858L).a(BufferBuilder.c(5545064854923171784L)); - BufferBuilder.c(4997017077520241098L).a(BufferBuilder.c(-2802569010840153663L)); - BufferBuilder.c(342937951180468316L).a(BufferBuilder.c(-1817195029514925157L)); - BufferBuilder.c(-191258812108409753L).a(BufferBuilder.c(-805194642299651850L)); - BufferBuilder.c(5995575405822059519L).a(BufferBuilder.c(-3177666589024202131L)); - BufferBuilder.c(-8421121445216826097L).a(BufferBuilder.c(-2511673013918899507L)); - BufferBuilder.c(5440926902488208467L).a(BufferBuilder.c(6339265277448948173L)); - BufferBuilder.c(-2361536448888252703L).a(BufferBuilder.c(7688283433424860747L)); - BufferBuilder.c(-3997250899502461707L).a(BufferBuilder.c(-5528609263428156645L)); - BufferBuilder.c(9144878685937520713L).a(BufferBuilder.c(-7094502638858659844L)); - BufferBuilder.c(7249059508150300305L).a(BufferBuilder.c(5783509985179786060L)); - BufferBuilder.c(3915536271342360037L).a(BufferBuilder.c(-3853941066373147513L)); - BufferBuilder.c(-363447800980187056L).a(BufferBuilder.c(4048636197418908942L)); - BufferBuilder.c(612467609325300327L).a(BufferBuilder.c(-1230660193552783018L)); - BufferBuilder.c(1887462052603549287L).a(BufferBuilder.c(-4150238958604382120L)); - BufferBuilder.c(-3854716206333935351L).a(BufferBuilder.c(3488460859410328846L)); - BufferBuilder.c(4815997953401462210L).a(BufferBuilder.c(90918131241821280L)); - BufferBuilder.c(-1506568153943102070L).a(BufferBuilder.c(-136890603909626304L)); - BufferBuilder.c(1645689222497579492L).a(BufferBuilder.c(7511422745795000191L)); - BufferBuilder.c(2360845121992699760L).a(BufferBuilder.c(-8471588520923422116L)); - BufferBuilder.c(2380888737993217946L).a(BufferBuilder.c(8192152770138984818L)); - BufferBuilder.c(-4784133180381476243L).a(BufferBuilder.c(-8452040969584536808L)); - BufferBuilder.c(1090506144751158140L).a(BufferBuilder.c(5683750734010988394L)); - BufferBuilder.c(-5737345412683804607L).a(BufferBuilder.c(2657536184692582646L)); - BufferBuilder.c(-8432765370018615534L).a(BufferBuilder.c(7928782559214884103L)); - BufferBuilder.c(-1176385026760506753L).a(BufferBuilder.c(-6150505791400610969L)); - BufferBuilder.c(1407661448770890958L).a(BufferBuilder.c(-5751909000005114321L)); - BufferBuilder.c(5141736086341550207L).a(BufferBuilder.c(2553968327053572388L)); - BufferBuilder.c(9186722752586456595L).a(BufferBuilder.c(-7523224983627494488L)); - BufferBuilder.c(7992952207957154625L).a(BufferBuilder.c(6385467331864228193L)); - BufferBuilder.c(-4370561400108917560L).a(BufferBuilder.c(3952557964921690448L)); - BufferBuilder.c(1152495672632266988L).a(BufferBuilder.c(-6536984032553250549L)); - BufferBuilder.c(-5979973685452071970L).a(BufferBuilder.c(4595103923163774362L)); - BufferBuilder.c(9168256981875647200L).a(BufferBuilder.c(5658208506209629599L)); - BufferBuilder.c(-8830213374613463724L).a(BufferBuilder.c(196571479583237858L)); - BufferBuilder.c(5120001268821838750L).a(BufferBuilder.c(-5386498053492248350L)); - BufferBuilder.c(-6834013825574714644L).a(BufferBuilder.c(-5379771050233804944L)); - BufferBuilder.c(4146319563911986212L).a(BufferBuilder.c(-7803490555508132936L)); - BufferBuilder.c(6473210564020529201L).a(BufferBuilder.c(7055003931924770061L)); - BufferBuilder.c(3488742256633801300L).a(BufferBuilder.c(-5545147623562283323L)); - BufferBuilder.c(3396559345587696546L).a(BufferBuilder.c(-7358168097588612124L)); - BufferBuilder.c(6296631622624604427L).a(BufferBuilder.c(-6825026873647556100L)); - BufferBuilder.c(-2000932780382119281L).a(BufferBuilder.c(-6840791830088014196L)); - BufferBuilder.c(1748037331260937453L).a(BufferBuilder.c(4203284230463054522L)); - BufferBuilder.c(-4514269651401589883L).a(BufferBuilder.c(6810010265556487559L)); - BufferBuilder.c(6012026956158457526L).a(BufferBuilder.c(4545864916921792973L)); - BufferBuilder.c(3386742727614810616L).a(BufferBuilder.c(1053578459089804159L)); - BufferBuilder.c(4572969535779583777L).a(BufferBuilder.c(6410994085439999547L)); - BufferBuilder.c(-3782504073496219476L).a(BufferBuilder.c(439219176484969097L)); - BufferBuilder.c(-8744908935664222971L).a(BufferBuilder.c(-8300713941759369499L)); - BufferBuilder.c(8872328349749762534L).a(BufferBuilder.c(-169685959381857055L)); - BufferBuilder.c(-2289964790367969858L).a(BufferBuilder.c(-1042167460647583291L)); - BufferBuilder.c(369803308725244231L).a(BufferBuilder.c(-3252510788464984276L)); - BufferBuilder.c(-2326884208364870559L).a(BufferBuilder.c(-4513365764948906305L)); - BufferBuilder.c(5969567643976479628L).a(BufferBuilder.c(-2099463538101129276L)); - BufferBuilder.c(1070205250807808709L).a(BufferBuilder.c(7468537882022000197L)); - BufferBuilder.c(-7007439771523519208L).a(BufferBuilder.c(3443363104853631854L)); - BufferBuilder.c(2448074232252178556L).a(BufferBuilder.c(3491752214578358375L)); - BufferBuilder.c(-6207821748871713726L).a(BufferBuilder.c(-1877135022178336455L)); - BufferBuilder.c(-7039147867225696066L).a(BufferBuilder.c(-562499629600543672L)); - BufferBuilder.c(3623579739080409375L).a(BufferBuilder.c(-7079491405164346945L)); - BufferBuilder.c(-5398848333882965068L).a(BufferBuilder.c(-3927370840527196048L)); - BufferBuilder.c(-8908919184544130787L).a(BufferBuilder.c(5612149301560278729L)); - BufferBuilder.c(-2768983996038216786L).a(BufferBuilder.c(4264238245187803506L)); - BufferBuilder.c(-620231103120942549L).a(BufferBuilder.c(-7186076229353027168L)); - BufferBuilder.c(7231332035795628826L).a(BufferBuilder.c(-1545394145172470328L)); - BufferBuilder.c(-7628650615801146370L).a(BufferBuilder.c(-4961332863213794673L)); - BufferBuilder.c(6473007650085950374L).a(BufferBuilder.c(-7655594801940545088L)); - BufferBuilder.c(1005431009019991237L).a(BufferBuilder.c(8828489842463791204L)); - BufferBuilder.c(5419882470995368224L).a(BufferBuilder.c(8041767056724365000L)); - BufferBuilder.c(125313686842854287L).a(BufferBuilder.c(1694265602101212223L)); - BufferBuilder.c(6703854400663634723L).a(BufferBuilder.c(4757195611421668986L)); - BufferBuilder.c(8306263272635977043L).a(BufferBuilder.c(4639709813650261902L)); - BufferBuilder.c(1071061802262277000L).a(BufferBuilder.c(9091067474789093217L)); - BufferBuilder.c(3998109203320201547L).a(BufferBuilder.c(-8589639116852581778L)); - BufferBuilder.c(-8072168881653616570L).a(BufferBuilder.c(-7506528354612298483L)); - BufferBuilder.c(-6133128320791670422L).a(BufferBuilder.c(1160307711668126964L)); - BufferBuilder.c(566396462670243778L).a(BufferBuilder.c(8596726486840590550L)); - BufferBuilder.c(5462297015428382399L).a(BufferBuilder.c(-8218410008343973356L)); - BufferBuilder.c(203132249504853705L).a(BufferBuilder.c(5580849778626741176L)); - BufferBuilder.c(-7526419737496172167L).a(BufferBuilder.c(6710035803676651499L)); - BufferBuilder.c(749735089483971964L).a(BufferBuilder.c(-6171868227379803903L)); - BufferBuilder.c(8656086250085560209L).a(BufferBuilder.c(-4138353763064805939L)); - BufferBuilder.c(7057627342619269088L).a(BufferBuilder.c(2682197074313513469L)); - BufferBuilder.c(785025610519629621L).a(BufferBuilder.c(-5414861106328918963L)); - BufferBuilder.c(7022355659690335058L).a(BufferBuilder.c(1226275049903142724L)); - BufferBuilder.c(726157286527744178L).a(BufferBuilder.c(-7172385374172521855L)); - BufferBuilder.c(8680301482711080062L).a(BufferBuilder.c(-1235082909936771034L)); - BufferBuilder.c(6994311790011614658L).a(BufferBuilder.c(-5219571795297944483L)); - BufferBuilder.c(-7227176087668736123L).a(BufferBuilder.c(-6947436026154604861L)); - BufferBuilder.c(-1901435923917647844L).a(BufferBuilder.c(-4560202259677598057L)); - BufferBuilder.c(8042631192413510979L).a(BufferBuilder.c(2405439743844020231L)); - BufferBuilder.c(6545763931423549694L).a(BufferBuilder.c(-4043798056457151969L)); - BufferBuilder.c(869715457793998605L).a(BufferBuilder.c(-8586729291576151505L)); - BufferBuilder.c(2456536236906695935L).a(BufferBuilder.c(-7522843138675059481L)); - BufferBuilder.c(134493900772775707L).a(BufferBuilder.c(4926171743050592905L)); - BufferBuilder.c(-7603356855706485372L).a(BufferBuilder.c(5401734782194913161L)); - BufferBuilder.c(-3953938350078438933L).a(BufferBuilder.c(-4059592245957162993L)); - BufferBuilder.c(4333348772056334123L).a(BufferBuilder.c(-9216297460169385845L)); - BufferBuilder.c(3061360435153929702L).a(BufferBuilder.c(-5482162531012654520L)); - BufferBuilder.c(2943017813379839471L).a(BufferBuilder.c(-3867784272677365629L)); - BufferBuilder.c(1352456582542910396L).a(BufferBuilder.c(1653885651825796909L)); - BufferBuilder.c(-8643311830719905163L).a(BufferBuilder.c(2196504337613952821L)); - BufferBuilder.c(-6617100478298431999L).a(BufferBuilder.c(8676687419643369868L)); - BufferBuilder.c(833687814277352909L).a(BufferBuilder.c(3179451368493065596L)); - BufferBuilder.c(4097474322180881872L).a(BufferBuilder.c(-3699966504261933600L)); - BufferBuilder.c(-1845213364230946373L).b(-2020408482432301789L); - BufferBuilder.c(4287959818139535507L).b(-3218863852248997102L); - BufferBuilder.c(7342268892466892305L).b(7277031317835197665L); - BufferBuilder.c(7093496617076596110L).b(5033515016123225680L); - BufferBuilder.c(-4504487250632179841L).b(-4456961286879182843L); - BufferBuilder.c(5435482183488332525L).b(5970613808658397789L); - BufferBuilder.c(4902079810980246620L).b(-4318219845552650597L); - BufferBuilder.c(-219609571205037429L).b(6648676423031465409L); - BufferBuilder.c(-7638656470627464879L).b(-6257252706959336868L); - BufferBuilder.c(-1797784982186079271L).b(-6816371458410301151L); - BufferBuilder.c(2020869634858998423L).b(217162396818628049L); - BufferBuilder.c(3080950570231523406L).b(-7171516417469437469L); - BufferBuilder.c(-444194340465604410L).b(5908645797565843761L); - BufferBuilder.c(-2035278480305217344L).b(6667928812952667691L); - BufferBuilder.c(-6870986473621613707L).b(-6950444827370103927L); - BufferBuilder.c(-5835942696886074668L).b(-4552101160325412093L); - BufferBuilder.c(1507308110785877756L).b(6168659481573451448L); - BufferBuilder.c(2048852039055856291L).b(3077990740797283042L); - BufferBuilder.c(7896509628149007195L).b(3518955808841307319L); - BufferBuilder.c(-8456239274167205781L).b(673389192540416609L); - BufferBuilder.c(8820885029097697420L).b(-7022177807256883411L); - BufferBuilder.c(-9205654401101794083L).b(-7279971611897694978L); - BufferBuilder.c(2596083843801124804L).b(918907211937166248L); - BufferBuilder.c(-2838089057075442542L).b(8834185600936559803L); - BufferBuilder.c(5099658664401088765L).b(7401768609551913145L); - BufferBuilder.c(-1195412425809301602L).b(-8867816936939530056L); - BufferBuilder.c(-389951980130122477L).b(-6507013357965465488L); - BufferBuilder.c(6409142513258220016L).b(-8413129082958565230L); - BufferBuilder.c(4475315471083246104L).b(7744280668373353290L); - BufferBuilder.c(-7208966955622854315L).b(1466392489131880903L); - BufferBuilder.c(1525822554105235837L).b(4110251203123221794L); - BufferBuilder.c(-2030256821754666200L).b(4926553548524233436L); - BufferBuilder.c(558305300626904481L).b(6494013700632928350L); - BufferBuilder.c(4894465608004530165L).b(-9139437414030842325L); - BufferBuilder.c(-7483179175922544394L).b(304307218448154380L); - BufferBuilder.c(6761473224376555059L).b(-8197252300703997836L); - BufferBuilder.c(-4310687008399055193L).b(7518315483315906944L); - BufferBuilder.c(216511982113892300L).b(-8973146896991870533L); - BufferBuilder.c(1604327757899896212L).b(-8488662577294053969L); - BufferBuilder.c(8128225080396882803L).b(-3345869401736189358L); - BufferBuilder.c(-6586661715863796376L).b(-5267215773883698434L); - BufferBuilder.c(-9100626184264678167L).b(-2358392331096127794L); - BufferBuilder.c(-4097371792976631990L).b(-8732853142184147764L); - BufferBuilder.c(-8483130721199189003L).b(829884455732998116L); - BufferBuilder.c(-1040690785730745338L).b(5441367366493923033L); - BufferBuilder.c(4015718895126772605L).b(-7692593296188986817L); - BufferBuilder.c(-6681497766190059009L).b(-3513964666398977063L); - BufferBuilder.c(-2456187456022148600L).b(-992749218720909564L); - BufferBuilder.c(1609886340941610214L).b(479676028174101694L); - BufferBuilder.c(-6961583084247017276L).b(-1228568260638548627L); - BufferBuilder.c(7319109824573299669L).b(-4701282868898235091L); - BufferBuilder.c(5976649996744788451L).b(9143352137152739000L); - BufferBuilder.c(8857511909403142993L).b(-5313255153834144999L); - BufferBuilder.c(-8001585694672411478L).b(1152741165179759325L); - BufferBuilder.c(3729029539311100629L).b(-7157063710714256891L); - BufferBuilder.c(-845978381580801271L).b(2336938725794295285L); - BufferBuilder.c(6959676787634117459L).b(-6781425031885391388L); - BufferBuilder.c(9161891948008819818L).b(-5416365157180092536L); - BufferBuilder.c(-6929669282779748844L).b(-7412326684343511744L); - BufferBuilder.c(-380128554400406843L).b(2319847045143851092L); - BufferBuilder.c(6854073497916601884L).b(-1618968433015410468L); - BufferBuilder.c(-6759167361394817293L).b(4914924705007180737L); - BufferBuilder.c(4413940682111310159L).b(-8821203938431206239L); - BufferBuilder.c(-8230029202912526580L).b(2059735963073641613L); - BufferBuilder.c(6192004229778113580L).b(-6592178581234581614L); - BufferBuilder.c(654351942045053287L).b(4815768102130366610L); - BufferBuilder.c(7641030796640809322L).b(-8872424470098546744L); - BufferBuilder.c(-4945994525564838844L).b(1708799308064975486L); - BufferBuilder.c(-2397708136714698329L).b(7589122023667494614L); - BufferBuilder.c(2846554635653221686L).b(807215418654810383L); - BufferBuilder.c(-9179681257057471188L).b(1899186933884225278L); - BufferBuilder.c(-3566965788672069988L).b(2127267389392199890L); - BufferBuilder.c(-8546188741668799396L).b(-6744458485174283281L); - BufferBuilder.c(-3478807447581511977L).b(6582604290109828739L); - BufferBuilder.c(-2792496003919358655L).b(-2503244088877551966L); - BufferBuilder.c(-5224410095250023238L).b(2537085077554849029L); - BufferBuilder.c(7164094661373768170L).b(8601379873181677957L); - BufferBuilder.c(6875239851852066798L).b(3145884776406958428L); - BufferBuilder.c(-173696957260134291L).b(-2712675986250486916L); - BufferBuilder.c(-9099305313424708199L).b(-4886394804725096757L); - BufferBuilder.c(-6176052921632577075L).b(323155732258365905L); - BufferBuilder.c(-8227074124848235901L).b(-2527404246327300918L); - BufferBuilder.c(3691999156642934468L).b(8837599466280685215L); - BufferBuilder.c(5312121154573132855L).b(6356865811717802137L); - BufferBuilder.c(5654500908812723050L).b(-2429739325232611822L); - BufferBuilder.c(-2282359003074849617L).b(-4845974740949469061L); - BufferBuilder.c(-7400511404986158861L).b(17390242108270231L); - BufferBuilder.c(5004983192079924724L).b(-3192399974581717498L); - BufferBuilder.c(6056269666596716410L).b(-2483376399137428119L); - BufferBuilder.c(3136416895341357020L).b(2919304530717716988L); - BufferBuilder.c(-2220978171917433998L).b(-2623267873966013893L); - BufferBuilder.c(-8525888561298160324L).b(-7823744998677534890L); - BufferBuilder.c(-9094550364875137290L).b(-8172099968893972305L); - BufferBuilder.c(-3499446289178769499L).b(-1025179468124005375L); - BufferBuilder.c(-6266663600842487772L).b(-8864734890344009866L); - BufferBuilder.c(-2577106697585879175L).b(-3370478528047032310L); - BufferBuilder.c(-8977423138212479093L).b(-8892041606616565155L); - BufferBuilder.c(8714174477313382920L).b(-2882693986864403685L); - BufferBuilder.c(-4838021357065285366L).b(-757084125901973532L); - BufferBuilder.c(5828863129166111676L).b(-657769905482464018L); - BufferBuilder.c(-2375919134319586489L).b(-7084107136549865289L); - BufferBuilder.c(-5967431410713113802L).b(-5019853110949990413L); - BufferBuilder.c(-450637965014233371L).b(-8721729389820598500L); - BufferBuilder.c(-1965314731011767934L).b(-7845550258726003882L); - BufferBuilder.c(1002882717812608709L).b(2099122920038918552L); - BufferBuilder.c(5465318456797892196L).b(1155456896084697652L); - BufferBuilder.c(-6045503911109884525L).b(-6000838158865298460L); - BufferBuilder.c(-6450101645481815416L).b(-4694336185275901709L); - BufferBuilder.c(4077919339612047706L).b(1788418734164497207L); - BufferBuilder.c(214435590000725620L).b(3633887579420772634L); - BufferBuilder.c(8614837492049472938L).b(5740158061797696515L); - BufferBuilder.c(-8129915903335647776L).b(-4579713946042766895L); - BufferBuilder.c(857870976206562916L).b(-2787208975818405997L); - BufferBuilder.c(-4366467922029602390L).b(-5678310897055814112L); - BufferBuilder.c(-8394579686610674457L).b(-6046837755788806084L); - BufferBuilder.c(3025582523289145864L).b(5010839043401522783L); - BufferBuilder.c(2910016532122455409L).b(8744963288293411367L); - BufferBuilder.c(-287265831132403572L).b(-3601426503409893702L); - BufferBuilder.c(-5593254858396860316L).b(-6440050650286118012L); - BufferBuilder.c(7791838748696645619L).b(-8951585606415937494L); - BufferBuilder.c(1960502526923817316L).b(9029839877660653773L); - BufferBuilder.c(-1849335017007466016L).b(-6778931694885387151L); - BufferBuilder.c(8809100297211711890L).b(7441882292913820969L); - BufferBuilder.c(-7827500194520613356L).b(5389670080513306357L); - BufferBuilder.c(5884584325412591302L).b(-6455596218801118955L); - BufferBuilder.c(968956282405172662L).b(1315282390578464124L); - BufferBuilder.c(617776156587928403L).b(-5799218523797219947L); - BufferBuilder.c(-713602149471933736L).b(-7417067539439729507L); - BufferBuilder.c(7453847787946597408L).b(-3744064050387260541L); - BufferBuilder.c(-2925517602000257980L).b(-6986472353219953096L); - BufferBuilder.c(6447035943265037406L).b(1017848991929991584L); - BufferBuilder.c(1391109255423512973L).b(771756421335507080L); - BufferBuilder.c(-4462237068856828059L).b(844632071495751579L); - BufferBuilder.c(2555642935638385757L).b(-1726790497303651678L); - BufferBuilder.c(-8024245180425336849L).b(7590428882844785442L); - BufferBuilder.c(-621504960333764613L).b(7418542768129268451L); - BufferBuilder.c(-5115036368001986379L).b(892194835302365456L); - BufferBuilder.c(-2061920012472680245L).b(4776329858304031011L); - BufferBuilder.c(-9039633152013257328L).b(-4408213234706184284L); - BufferBuilder.c(-1233571175571404840L).b(-3392154696170308732L); - BufferBuilder.c(-2661327592427823283L).b(-3041231291077296895L); - BufferBuilder.c(334763971995672031L).b(-4689477664612269254L); - BufferBuilder.c(8857230362876279628L).b(6875555629629665863L); - BufferBuilder.c(-780046227517333070L).b(-6147066541067188924L); - BufferBuilder.c(-6997348540754876900L).b(6954420629337638947L); - BufferBuilder.c(-1051468431252676644L).b(-8211631882177444212L); - BufferBuilder.c(5422391391943202157L).b(-8375118595294426791L); - BufferBuilder.c(6157985885924418452L).b(722289044332301375L); - BufferBuilder.c(-8487985662765948141L).b(-8694377405429965482L); - BufferBuilder.c(-5850441858651300782L).b(-4620480261778956640L); - BufferBuilder.c(6044486279236111136L).b(1728160076627626638L); - BufferBuilder.c(-2540046985748250130L).b(5197318427223528053L); - BufferBuilder.c(1240604953514665756L).b(4668906478281167395L); - BufferBuilder.c(-2332933063001819380L).b(-4957316735087124928L); - BufferBuilder.c(-7987883698441818393L).b(-7087219966208864140L); - BufferBuilder.c(-5942019085628959033L).b(-8121198570622513505L); - BufferBuilder.c(-7751527662823969622L).b(-2398171569232347994L); - BufferBuilder.c(2408754701465774201L).b(-8262455965182310117L); - BufferBuilder.c(5385552706047080493L).b(6232261684303902135L); - BufferBuilder.c(4436288773676835660L).b(5595697857184344833L); - BufferBuilder.c(7032233554443495819L).b(184581554566128022L); - BufferBuilder.c(-8501131351711363373L).b(6810319594416169546L); - BufferBuilder.c(-576636354850860286L).b(-8605223383303296057L); - BufferBuilder.c(-7201080234495698816L).b(1488839681943771074L); - BufferBuilder.c(8529634275917159933L).b(6338047054346371670L); - BufferBuilder.c(7967136643979164320L).b(-7187737923213069491L); - BufferBuilder.c(-7337715615392971860L).b(6889028986597700381L); - BufferBuilder.c(2882970632071168535L).b(9110232132974839142L); - BufferBuilder.c(-2064833175581022171L).b(-8581393020091036329L); - BufferBuilder.c(-6629904189628735996L).b(6056763722372608021L); - BufferBuilder.c(-3070803944553469287L).b(6600548852736711531L); - BufferBuilder.c(-6571587392056786731L).b(-5863961476220283161L); - BufferBuilder.c(8267417757224504874L).b(6192774848452981086L); - BufferBuilder.c(-591834523617790571L).b(7811021539181103944L); - BufferBuilder.c(-1562958520600687939L).b(-4235156866619097495L); - BufferBuilder.c(3617170125733013935L).b(-5754728959720031167L); - BufferBuilder.c(-424282734378930832L).b(-190966304927138518L); - BufferBuilder.c(531389777048348265L).b(542594625427439929L); - BufferBuilder.c(-7293929879189644998L).b(324001516754742915L); - BufferBuilder.c(4276259779284863868L).b(-7421629938080716624L); - BufferBuilder.c(3755506262669903424L).b(7910850068964391519L); - BufferBuilder.c(-823142284486894665L).b(399099454574708364L); - BufferBuilder.c(-2714251084741327065L).b(4947379414462726306L); - BufferBuilder.c(-1726546594056653388L).b(-2748123534014191075L); - BufferBuilder.c(6474471177250734694L).b(673042846465935475L); - BufferBuilder.c(-99316052644616974L).b(5492498912982670227L); - BufferBuilder.c(1508037617636204268L).b(-5330742984968271332L); - BufferBuilder.c(126122915399273800L).b(4880815364840154387L); - BufferBuilder.c(-1735468389360551140L).b(-5191749485774230359L); - BufferBuilder.c(-8998384803126963699L).b(-2703784079468717592L); - BufferBuilder.c(8428733179401055941L).b(-7325645359916000125L); - BufferBuilder.c(1571226399029031645L).b(-3868331814697652201L); - BufferBuilder.c(3402656986961471308L).b(2254976509598756198L); - BufferBuilder.c(8893506037068088725L).b(6385115172385393896L); - BufferBuilder.c(4041269987363387942L).b(-8282228957746904027L); - BufferBuilder.c(-4538303244192501648L).b(9176188973067759863L); - BufferBuilder.c(1380323165017608198L).b(8670437396568743956L); - BufferBuilder.c(872914618459666381L).b(3042821173555898124L); - BufferBuilder.c(-769399665137794804L).b(-3106951503580416381L); - BufferBuilder.c(-9074744972944402160L).b(9203854871208576974L); - BufferBuilder.c(7601513956527305673L).b(-585219793329953975L); - BufferBuilder.c(986635307858589375L).b(6746185924050569012L); - BufferBuilder.c(2632901090984489683L).b(6063848498170566760L); - BufferBuilder.c(5383737328182648646L).b(4393638392770862282L); - BufferBuilder.c(182506366878915466L).b(6443165953046202905L); - BufferBuilder.c(6619227832773093658L).b(-3129815536548035122L); - BufferBuilder.c(3963322362922929396L).b(4253829220488614919L); - BufferBuilder.c(-7061111942941038570L).b(-365497366882937050L); - BufferBuilder.c(-65017251597558196L).b(-8127322883475822456L); - BufferBuilder.c(-5489541592876828952L).b(-7569029706904303775L); - BufferBuilder.c(-7225381793981248551L).b(6294968031709778916L); - BufferBuilder.c(-1852497731045919101L).b(-8347786355677239028L); - BufferBuilder.c(3566371182667417374L).b(-4942714785163058321L); - BufferBuilder.c(2158968717674693817L).b(6864083148545489451L); - BufferBuilder.c(1156851469379966369L).b(6048382382993567032L); - BufferBuilder.c(3884154711591983032L).b(8032878182733782263L); - BufferBuilder.c(-1221874582813701577L).b(-1844829936823584459L); - BufferBuilder.c(-1445091822410001198L).b(-3621500026891136100L); - BufferBuilder.c(-7448699235860016419L).b(180952798086635983L); - BufferBuilder.c(-2465846635436135710L).b(3303625457919880459L); - BufferBuilder.c(7363206950573811782L).b(-3801740383662372028L); - BufferBuilder.c(-7384627833865856421L).b(1868413878324469287L); - BufferBuilder.c(-2641553349843194555L).b(-1995172119416967842L); - BufferBuilder.c(-8774586958917337097L).b(-7146030832467362815L); - BufferBuilder.c(6246674847370646584L).b(8933936667529348266L); - BufferBuilder.c(-5442328452670807909L).b(-2558968535608375559L); - BufferBuilder.c(3487122659612222270L).b(6182583996212930320L); - BufferBuilder.c(3202358660194171810L).b(-3776658930869218597L); - BufferBuilder.c(-5414996691365786622L).b(1888106292253240420L); - BufferBuilder.c(737772462189551512L).b(6149808581448347056L); - BufferBuilder.c(-3994995142185551809L).b(1673531750708510816L); - BufferBuilder.c(-3640805543609622402L).b(-8453611717346435635L); - BufferBuilder.c(1652187999299928975L).b(5756382559370610749L); - BufferBuilder.c(1735000777945892276L).b(-1344059220555169056L); - BufferBuilder.c(-5576079369542646907L).b(-3345113482480229376L); - BufferBuilder.c(7138530388666179175L).b(-3389385536863921725L); - BufferBuilder.c(648343130955495976L).b(-1941864134037807945L); - BufferBuilder.c(-8916280927686007791L).b(2200902081425130536L); - BufferBuilder.c(-8365112887141275287L).b(-8723658454923418178L); - BufferBuilder.c(8605014876375766680L).b(423781539117371041L); - BufferBuilder.c(6151018507794808064L).b(-9002392750481745315L); - BufferBuilder.c(-3296341903723471501L).b(-7400465368134851476L); - BufferBuilder.c(5907289089245263514L).b(-7592849924331587061L); - BufferBuilder.c(-3497022537926609424L).b(5874434626847506410L); - BufferBuilder.c(-38388883309955943L).b(896223110666024953L); - BufferBuilder.c(215012962708846769L).b(3544529858115450091L); - BufferBuilder.c(-3469900832445710355L).b(-4409871484494140302L); - BufferBuilder.c(5167997800705881576L).b(32516752795575187L); - BufferBuilder.c(1872430372387903165L).b(8296499098261317205L); - BufferBuilder.c(-2129466988826464285L).b(3401979016478799509L); - BufferBuilder.c(-8444378249808772383L).b(-421704256610731145L); - BufferBuilder.c(7110622511651129786L).b(-8726162723481745953L); - BufferBuilder.c(7979932354391793207L).b(-8269398866905315041L); - BufferBuilder.c(7654825399704545153L).b(2405704590505581301L); - BufferBuilder.c(-5907675156724558740L).b(-9080440177509689220L); - BufferBuilder.c(1646511669378123133L).b(-4938647140814209384L); - BufferBuilder.c(7347581133454886243L).b(-3427101167325904209L); - BufferBuilder.c(5267992572025921317L).b(-4741863485956058612L); - BufferBuilder.c(-5816160726960345723L).b(-3819594280598804323L); - BufferBuilder.c(-9043802292436132429L).b(2808864914626591263L); - BufferBuilder.c(7873874542793235437L).b(-2553410579634990515L); - BufferBuilder.c(5095183822074143425L).b(-4731141830134101882L); - BufferBuilder.c(-8580102118850270289L).b(1310583437686681358L); - BufferBuilder.c(6649105351778267467L).b(-8105089854216969531L); - BufferBuilder.c(8207947834092144089L).b(72620590557711851L); - BufferBuilder.c(9033014922286834896L).b(1090367199110735276L); - BufferBuilder.c(4046620736099131114L).b(-2702189634888521066L); - BufferBuilder.c(-2830281194828153874L).b(-1684848839739563117L); - BufferBuilder.c(3510356972398742007L).b(249824151818743735L); - BufferBuilder.c(5616993876707716885L).b(-8421567014123454519L); - BufferBuilder.c(-3875796048475801560L).b(5853359226495357154L); - BufferBuilder.c(551964206353423476L).b(-2877697272565871636L); - BufferBuilder.c(88117640668919537L).b(476663662614471453L); - BufferBuilder.c(6898048660091472670L).b(8724269144477881619L); - BufferBuilder.c(4203134140104910420L).b(-7391884598476141044L); - BufferBuilder.c(3503949130480830636L).b(8673211619521610066L); - BufferBuilder.c(7643032699756703891L).b(-2916091733720391355L); - BufferBuilder.c(-2780741205151059579L).b(-266421928347740803L); - BufferBuilder.c(-8554933247100678137L).b(-5402449668925741165L); - BufferBuilder.c(7898176508535219467L).b(-7589592833654108235L); - BufferBuilder.c(-8573507081701991901L).b(5374147691775598891L); - BufferBuilder.c(-1339125874847658174L).b(3617842426506437419L); - BufferBuilder.c(-2347577059506184347L).b(7586530478820331681L); - BufferBuilder.c(-2903206854995746730L).b(-459265454640647769L); - BufferBuilder.c(-951692575855697721L).b(-5712811706723515167L); - BufferBuilder.c(-4205580929948181784L).b(-2851667399056599634L); - BufferBuilder.c(-3889036799617421658L).b(-8810261776542489987L); - BufferBuilder.c(8640233108923554549L).b(7358113070652143083L); - BufferBuilder.c(-6260323372328909328L).b(-2036536852320786222L); - BufferBuilder.c(-7683362304456463387L).b(-3612236710923942403L); - BufferBuilder.c(-6732360761338075224L).b(-4478300521607959583L); - BufferBuilder.c(7564443943237473576L).b(9213083487336896087L); - BufferBuilder.c(-8609836294678405147L).b(7322280360532460229L); - BufferBuilder.c(2992479348716613153L).b(581121258358717573L); - BufferBuilder.c(-5142260211301447947L).b(-3541759425332066510L); - BufferBuilder.c(-2323707671380289739L).b(4022618241828268738L); - BufferBuilder.c(-7226917228418592626L).b(-257835119286588843L); - BufferBuilder.c(-469768361905226501L).b(-1131627538943390385L); - BufferBuilder.c(-456708452911216972L).b(-3692300331535286026L); - BufferBuilder.c(2409071812449128899L).b(-3497899782039852033L); - BufferBuilder.c(1884974405473021608L).b(4275685710241124887L); - BufferBuilder.c(-7271579277512443988L).b(-2449941566386705563L); - BufferBuilder.c(-737039829279273149L).b(5086211031040333556L); - BufferBuilder.c(-5009470484802589334L).b(-5721858906072507298L); - BufferBuilder.c(-8871235487918142808L).b(-6043478749008272167L); - BufferBuilder.c(-4839094563322420460L).b(-3482996504608036213L); - BufferBuilder.c(-4468530542551701141L).b(2130676860310846236L); - BufferBuilder.c(6444412152705437301L).b(2745841769192760154L); - BufferBuilder.c(5725278127228194700L).b(657364159223612600L); - BufferBuilder.c(4846957034029641962L).b(2043252458084442784L); - BufferBuilder.c(-2964650490527837132L).b(-2595149197908219448L); - BufferBuilder.c(8426172840808138048L).b(-7790349894980661379L); - BufferBuilder.c(-9136971050507819278L).b(3091241256285386391L); - BufferBuilder.c(6385552023579563424L).b(-55673327860623212L); - BufferBuilder.c(7138026793767973132L).b(-855817749317233085L); - BufferBuilder.c(-4426615463825699779L).b(1529450495599909737L); - BufferBuilder.c(-2078056883165523309L).b(2613569819942463661L); - BufferBuilder.c(-8175112917030400426L).b(-2785563090475188437L); - BufferBuilder.c(-4412996345535784699L).b(-3198852319858302585L); - BufferBuilder.c(-6443284141117116168L).b(4971496664466543612L); - BufferBuilder.c(769941833555336881L).b(-4712009719620403069L); - BufferBuilder.c(-5859107191573691652L).b(-6755601250481450757L); - BufferBuilder.c(1680567858059549835L).b(1548564973793197708L); - BufferBuilder.c(-1046823999422308414L).b(4727280091482550478L); - BufferBuilder.c(-6854848586859314378L).b(-6477806279226634220L); - BufferBuilder.c(-8115470366102505413L).b(3637319709113198015L); - BufferBuilder.c(7752666496165122153L).b(-2345974481339472972L); - BufferBuilder.c(8973105084369318331L).b(2373938635165742662L); - BufferBuilder.c(9084484110516139224L).b(-6792437607658904337L); - BufferBuilder.c(-7755941471205382L).b(7701757592811601756L); - BufferBuilder.c(-4348409445463191199L).b(-2664785328617497485L); - BufferBuilder.c(-2798552787101072545L).b(5194812476609911868L); - BufferBuilder.c(2082736368734298331L).b(-9049930229407122923L); - BufferBuilder.c(1126092565755853563L).b(-3093318655670891462L); - BufferBuilder.c(7813762443372610835L).b(4871584097925505798L); - BufferBuilder.c(4608090196536571052L).b(-2785320744304013718L); - BufferBuilder.c(1271106543806685613L).b(-7927010421349474316L); - BufferBuilder.c(2632958262051689614L).b(-7726341376282199785L); - BufferBuilder.c(3082049472348228785L).b(-7058719929833531398L); - BufferBuilder.c(3195753250699903155L).b(-8654129800518594909L); - BufferBuilder.c(6892164786157278678L).b(4991347809516383400L); - BufferBuilder.c(5192099055474271385L).b(5352436813914982722L); - BufferBuilder.c(-5847886511520897409L).b(5919235913505372823L); - BufferBuilder.c(-174426442320420098L).b(5431267554638620669L); - BufferBuilder.c(4606637329884532826L).b(6033490322262755550L); - BufferBuilder.c(-1641316286165416405L).b(-6035224411992589024L); - BufferBuilder.c(-9195657019112596L).b(3052253191355514669L); - BufferBuilder.c(-2746598470418785169L).b(-9005048495920397797L); - BufferBuilder.c(7763660417050426811L).b(2825165244197468541L); - BufferBuilder.c(-7308152821445856804L).b(-6199846904893866166L); - BufferBuilder.c(-8355061662190711236L).b(178383237066953644L); - BufferBuilder.c(-5190641344507600542L).b(4424884937106590642L); - BufferBuilder.c(-8321221388038248174L).b(-8946075921367364280L); - BufferBuilder.c(-2433211317962409119L).b(764218519350987494L); - BufferBuilder.c(7922770215498433425L).b(-3795881628972370241L); - BufferBuilder.c(-3430687288872738578L).b(-2841100412021369173L); - BufferBuilder.c(-4724791517775568003L).b(5576214599846816882L); - BufferBuilder.c(-7774598285362319333L).b(-2489711170563087583L); - BufferBuilder.c(1224547588944089255L).b(7639406434103339767L); - BufferBuilder.c(-4526531349908626705L).b(-4445831536328381749L); - BufferBuilder.c(-1426314915338700923L).b(-7746963253080008190L); - BufferBuilder.c(4523149592276081891L).b(3270172868782073017L); - BufferBuilder.c(4429782863262029953L).b(5913354680845533244L); - BufferBuilder.c(-2435223966917752334L).b(-4331183714944095146L); - BufferBuilder.c(-7535067292226738056L).b(2498968044219698758L); - BufferBuilder.c(-3161050156831303104L).b(6095760661114819767L); - BufferBuilder.c(6512294756483628594L).b(37549989714875098L); - BufferBuilder.c(-7214293060043304881L).b(-1102251056221899148L); - BufferBuilder.c(3048932180878793378L).b(-6430287119722464728L); - BufferBuilder.c(2676066759154696770L).b(-4866258135152839278L); - BufferBuilder.c(1440904659734628594L).b(-8307449478804688847L); - BufferBuilder.c(2115050304885320294L).b(5676027245528433724L); - BufferBuilder.c(5939890036417116655L).b(9061880506861144955L); - BufferBuilder.c(2463516971874726118L).b(-8722127098719065652L); - BufferBuilder.c(1917751789882844260L).b(-2769173403096796947L); - BufferBuilder.c(7842575142434529562L).b(3848692944349001234L); - BufferBuilder.c(-2184472196419658324L).b(1660178997705516459L); - BufferBuilder.c(8096892897773735953L).b(-6595622512153597118L); - BufferBuilder.c(-1013983275464760979L).b(8000743233879976732L); - BufferBuilder.c(474573114405234447L).b(7140432722592370110L); - BufferBuilder.c(-1783582615555500276L).b(-4488785599095926046L); - BufferBuilder.c(8649510251305804669L).b(1629609560074463832L); - BufferBuilder.c(6177706302511243261L).b(-1597231563399544438L); - BufferBuilder.c(8344594054546361188L).b(-1365706174321947274L); - BufferBuilder.c(-5314503481848897726L).b(5629148863427946371L); - BufferBuilder.c(3832013647607985524L).b(1466570254632150809L); - BufferBuilder.c(-8498545149534766786L).b(2708927574428101570L); - BufferBuilder.c(-4573652720422990121L).b(-3057938454191066178L); - BufferBuilder.c(-1786343480699741274L).b(4830674644197365383L); - BufferBuilder.c(8638886173670157246L).b(1678356883441332620L); - BufferBuilder.c(-1761167240094299031L).b(-8102594524877136714L); - BufferBuilder.c(-4720341244302582357L).b(-4429042035340740672L); - BufferBuilder.c(7546541156083701681L).b(1549899421431200848L); - BufferBuilder.c(-7787112349937013789L).b(-4824967789883402245L); - BufferBuilder.c(-5507991318638744417L).b(-549319097745012742L); - BufferBuilder.c(-4829853159091516961L).b(4633053003119802015L); - BufferBuilder.c(-4472986813696411718L).b(-8778703338715317243L); - BufferBuilder.c(4883849372909879558L).b(6360790829608601882L); - BufferBuilder.c(-8656980928539385717L).b(-5249769879978217807L); - BufferBuilder.c(6689033562417899147L).b(-3079367012684060878L); - BufferBuilder.c(-8272370868025276281L).b(-2104061043957578045L); - BufferBuilder.c(-4234561548040432583L).b(-2370572377375685768L); - BufferBuilder.c(7840230482361198893L).b(3512505137088891820L); - BufferBuilder.c(6492816985766645698L).b(-2665009593725888317L); - BufferBuilder.c(148024006846181999L).b(7998258227161163568L); - BufferBuilder.c(6856315501578259873L).b(8622658674521677616L); - BufferBuilder.c(-5439681440535602140L).b(5503632926229654105L); - BufferBuilder.c(-7494091220040463506L).b(-6517208298206272839L); - BufferBuilder.c(-7481725073426293901L).b(8960083003767512282L); - BufferBuilder.c(8666959067723367026L).b(-7429327927423919073L); - BufferBuilder.c(3678897283289516648L).b(-2971908180709030777L); - BufferBuilder.c(7011756393523352343L).b(-3558212083300712555L); - BufferBuilder.c(1689614801075907291L).b(4037137086658441626L); - BufferBuilder.c(-1378209232841786019L).b(1868411035469700897L); - BufferBuilder.c(-689177533568344418L).b(-7850077140784318101L); - BufferBuilder.c(5978312136190877588L).b(4675833302203937674L); - BufferBuilder.c(-652150970654186833L).b(7325475379030432222L); - BufferBuilder.c(-4331203834792248826L).b(-116418441464267076L); - BufferBuilder.c(5228735308888317896L).b(5648808968755644445L); - BufferBuilder.c(-3765916757869254754L).b(-3748043064569704430L); - BufferBuilder.c(-652230847140193155L).b(6568169337997516024L); - BufferBuilder.c(-2933996567543340739L).b(4481057516891979255L); - BufferBuilder.c(-4376975202101061923L).b(2115880913865848714L); - BufferBuilder.c(7355657188046834584L).b(-5221869925983820202L); - BufferBuilder.c(-1599366089014489088L).b(5469519280295940226L); - BufferBuilder.c(2908696126088698557L).b(-2657436590892922608L); - BufferBuilder.c(-6294665444791376975L).b(6671158568443540200L); - BufferBuilder.c(1629387284854390862L).b(-5030903628267911452L); - BufferBuilder.c(3991390284956517765L).b(1971833440777730829L); - BufferBuilder.c(-6540482794497135531L).b(-3391817375440363748L); - BufferBuilder.c(3020469592989142998L).b(4093165524790310654L); - BufferBuilder.c(1109855021901420042L).b(5237969708012187171L); - BufferBuilder.c(112420953977113872L).b(-3133682503763253060L); - BufferBuilder.c(-4025587533741489313L).b(5012696818520113725L); - BufferBuilder.c(8643102064805285466L).b(3782510085211789015L); - BufferBuilder.c(-6778860808332497700L).b(-6684154895079794076L); - BufferBuilder.c(8685636178903183831L).b(5265762443137809743L); - BufferBuilder.c(7308857005385708299L).b(-3605218507646027129L); - BufferBuilder.c(6804246521638348257L).b(-9026503875264837614L); - BufferBuilder.c(-7305919388867465503L).b(-2475149253691256419L); - BufferBuilder.c(3337607710598412918L).b(1153471533961665292L); - BufferBuilder.c(7836300817527635257L).b(8968462261776472189L); - BufferBuilder.c(-8648756134610073538L).b(2263710897068961573L); - BufferBuilder.c(-6590758942082489435L).b(1223146530342573110L); - BufferBuilder.c(-8436142010879049344L).b(-6930550614720552756L); - BufferBuilder.c(5175513628438221456L).b(-6132909810056742731L); - BufferBuilder.c(-4122584670604569529L).b(2923394450859781234L); - BufferBuilder.c(9030771359241589559L).b(1463928084866880868L); - BufferBuilder.c(-2341925422025673981L).b(2318273790135631245L); - BufferBuilder.c(-693635624858416562L).b(-2053709262339586520L); - BufferBuilder.c(-6969432909756913823L).b(-2634304206184605780L); - BufferBuilder.c(-6175804577257192128L).b(1373420416361832905L); - BufferBuilder.c(-5767049426170276225L).b(-7940187632494377852L); - BufferBuilder.c(3689439434688623108L).b(-9127337736703029429L); - BufferBuilder.c(5862582954646167662L).b(-4130431781220342194L); - BufferBuilder.c(8750684887458128586L).b(7086650139455137619L); - BufferBuilder.c(2697053802504291424L).b(-2857081366071626893L); - BufferBuilder.c(-1872778899424248837L).b(-7150038291744697771L); - BufferBuilder.c(4971478830846010993L).b(780409320205682770L); - BufferBuilder.c(-412725855463551860L).b(-6476910653387678898L); - BufferBuilder.c(1998569252213403687L).b(-8734692392884078041L); - BufferBuilder.c(8744572308633375207L).b(3260187034535203472L); - BufferBuilder.c(-5557114139681845201L).b(-6324680856420097747L); - BufferBuilder.c(-3568486482898545098L).b(-4853854259299745975L); - BufferBuilder.c(-1026967495158961974L).b(-3907696412266158072L); - BufferBuilder.c(-1307143387864224025L).b(1882621539237890965L); - BufferBuilder.c(6538615431550110609L).b(-5756040682698467871L); - BufferBuilder.c(-887751520313001717L).b(-315482822634693693L); - BufferBuilder.c(330676047560019247L).b(8870192103402144877L); - BufferBuilder.c(7720694912991215233L).b(39015398431157765L); - BufferBuilder.c(3073649233865266444L).b(4006655413542143568L); - BufferBuilder.c(14706171803155777L).b(5446393078501381538L); - BufferBuilder.c(5051305011756098486L).b(-8777687096973375559L); - BufferBuilder.c(2307833326995152495L).b(401510125812763639L); - BufferBuilder.c(-5781551931950981143L).b(123741937855516652L); - BufferBuilder.c(-8266066214665697447L).b(8656227504912082372L); - BufferBuilder.c(-7725174659566862798L).b(-3581096458849513587L); - BufferBuilder.c(-5942048859801133337L).b(8254088796477783818L); - BufferBuilder.c(-9032148876764198144L).b(-8130375986954012826L); - BufferBuilder.c(-5073028335007031494L).b(4937716269285457468L); - BufferBuilder.c(-3993311779804197653L).b(7693551552510103682L); - BufferBuilder.c(4877331377918668657L).b(3523865011989847266L); - BufferBuilder.c(-8730809333987252140L).b(1503702787024938017L); - BufferBuilder.c(5254680128376057778L).b(-6402033011188716003L); - BufferBuilder.c(-5458351555373260792L).b(6948175244712800194L); - BufferBuilder.c(-6001009409803691168L).b(-3921554776300840513L); - BufferBuilder.c(2078034670057013538L).b(6071518598854300933L); - BufferBuilder.c(-2887414791042276510L).b(-1820460828430335680L); - BufferBuilder.c(1850001528704122797L).b(-8277886354065616135L); - BufferBuilder.c(8573723080456227384L).b(3412185810309609489L); - BufferBuilder.c(-7972729962965450747L).b(5268389690944143014L); - BufferBuilder.c(7288105830535013214L).b(2660438160016755653L); - BufferBuilder.c(-3323323194419131845L).b(7123273169788095046L); - BufferBuilder.c(8782298193910714244L).b(1437230927113632321L); - BufferBuilder.c(7672930494863636376L).b(2810304334736586149L); - BufferBuilder.c(-6997348994717626669L).b(119693041995879522L); - BufferBuilder.c(6217888550769684044L).b(-8053073724256759455L); - BufferBuilder.c(8071288039001574004L).b(-3985930192824738680L); - BufferBuilder.c(5397786819934815718L).b(-3698234101909592193L); - BufferBuilder.c(-3746050245608753480L).b(-4254818502916754708L); - BufferBuilder.c(3830768029688936749L).b(663645723283699677L); - BufferBuilder.c(4857095404677955428L).b(-7213558138445173255L); - BufferBuilder.c(-2076545149710406984L).b(-5931675966696004144L); - BufferBuilder.c(-2504643262145387208L).b(-2805386646894930348L); - BufferBuilder.c(-8732963236604297329L).b(4757107687990504020L); - BufferBuilder.c(6668202863102784596L).b(-2190903982439012061L); - BufferBuilder.c(-432811686650327324L).b(3906742071308371856L); - BufferBuilder.c(6729424823378788228L).b(-2818844904391309882L); - BufferBuilder.c(1178030187922829395L).b(-5137399670159748746L); - BufferBuilder.c(5323447336710162634L).b(3811438598102751105L); - BufferBuilder.c(9118909179925050302L).b(-8974211740272701202L); - BufferBuilder.c(3714027819589354050L).b(-6637398617212039210L); - BufferBuilder.c(-7055210309533077463L).b(6579579840764060698L); - BufferBuilder.c(5744401958544598186L).b(2897654661109582084L); - BufferBuilder.c(-8749148617386216988L).b(2844727746920970495L); - BufferBuilder.c(8483029819420996272L).b(-4732679359011049139L); - BufferBuilder.c(-1700126233729662305L).b(-516160448393419934L); - BufferBuilder.c(-5530756464525011878L).b(1265335938728063291L); - BufferBuilder.c(5170614759707823669L).b(-561777105275996709L); - BufferBuilder.c(1743103094888060863L).b(-3640868026503317431L); - BufferBuilder.c(4743700005783369817L).b(-6331633758182282965L); - BufferBuilder.c(-721694563325172825L).b(4523790820778471144L); - BufferBuilder.c(2709946053083247249L).b(-2549573916886442751L); - BufferBuilder.c(8767604834716723543L).b(-3106226190568371318L); - BufferBuilder.c(-3338018775283280645L).b(7586305984649071620L); - BufferBuilder.c(-1401260371110165864L).b(-5302978141052142009L); - BufferBuilder.c(-7156988734016981279L).b(-4617984835330349612L); - BufferBuilder.c(-3827660839681909614L).b(2855304300426035685L); - BufferBuilder.c(-498776322263799745L).b(5161117015154941027L); - BufferBuilder.c(2243785150850258594L).b(6820412486119190823L); - BufferBuilder.c(-8981723543990027000L).b(-2646425095521768587L); - BufferBuilder.c(-4279145829677608028L).b(5482597669642304023L); - BufferBuilder.c(5682321361288860272L).b(3938383429225678636L); - BufferBuilder.c(2317249969296044086L).b(8653240766919799169L); - BufferBuilder.c(3280950550943826371L).b(-936874114269686573L); - BufferBuilder.c(5163360602375925512L).b(5542032664031198398L); - BufferBuilder.c(-7128234902409316983L).b(-6139498538914167810L); - BufferBuilder.c(5311160421491476244L).b(3371814576723561103L); - BufferBuilder.c(-3897603218343833880L).b(3578474496301035900L); - BufferBuilder.c(2456266901609251639L).b(333214133264760103L); - BufferBuilder.c(-4218856372523744119L).b(568108591075294876L); - BufferBuilder.c(5273658177129220392L).b(-1152927003218892766L); - BufferBuilder.c(8827982747270102930L).b(4853420543301875498L); - BufferBuilder.c(-5953135120904439807L).b(-1117614768394497642L); - BufferBuilder.c(1058458635992543280L).b(1082162029375885067L); - BufferBuilder.c(5366820869857885383L).b(666611363953566976L); - BufferBuilder.c(9119261721855063379L).b(6561601082055708194L); - BufferBuilder.c(6226942860705520956L).b(-8458933693113052535L); - BufferBuilder.c(9215868252625912524L).b(-6590662525996194145L); - BufferBuilder.c(1624948013531493381L).b(6202154729579766722L); - BufferBuilder.c(1023754309166149994L).b(-6962927823991716578L); - BufferBuilder.c(-4796677141764685558L).b(7902738044679051746L); - BufferBuilder.c(-8313347351707667576L).b(3681776480633495310L); - BufferBuilder.c(-258062868785155923L).b(-6982509539805286387L); - BufferBuilder.c(-6481854543108848486L).b(-2451930786756462021L); - BufferBuilder.c(7871156623883606496L).b(-3024588082238031245L); - BufferBuilder.c(-5494668407386080343L).b(-6473321984328390551L); - BufferBuilder.c(7071252850397336230L).b(7324720654226460158L); - BufferBuilder.c(5506922764683944816L).b(-3814842040972957208L); - BufferBuilder.c(-1224001032571272812L).b(5235372089903956971L); - BufferBuilder.c(-4055849662563281082L).b(-8419976280584647206L); - BufferBuilder.c(1494303082997832725L).b(-7362473315603840749L); - BufferBuilder.c(5831698218234809839L).b(1093174371146049342L); - BufferBuilder.c(-5695103851895861077L).b(-247737510717629217L); - BufferBuilder.c(5083818176948523884L).b(133370805023290305L); - BufferBuilder.c(-3568666185308781874L).b(-4121738868450753708L); - BufferBuilder.c(-975861476968968734L).b(-4277868948428999657L); - BufferBuilder.c(8860462404369317193L).b(5009234655858377345L); - BufferBuilder.c(-8296095443691916790L).b(-3276087363110896462L); - BufferBuilder.c(5053201536114531521L).b(-4134949248297635318L); - BufferBuilder.c(-1406570372393829369L).b(-2554673177051336743L); - BufferBuilder.c(8882177745378712461L).b(1958725316408093408L); - BufferBuilder.c(-9142917214194212223L).b(-4186435301525363010L); - BufferBuilder.c(3320382433953105986L).b(2589366328507954750L); - BufferBuilder.c(7565513099509257413L).b(5846620210789705551L); - BufferBuilder.c(-7212702014397741826L).b(4326451250744268477L); - BufferBuilder.c(2703402353611834870L).b(7964763184770790980L); - BufferBuilder.c(-5517131950427798380L).b(-6617926535514513032L); - BufferBuilder.c(-8661062324363979204L).b(2451956336071456083L); - BufferBuilder.c(2733857802498732766L).b(348067757700503323L); - BufferBuilder.c(317658828909163954L).b(-8114068072515850542L); - BufferBuilder.c(-4646413463605275262L).b(5842176221774526669L); - BufferBuilder.c(-1596730950086483447L).b(1594066798376724585L); - BufferBuilder.c(-8115986685605809991L).b(-714933149932303276L); - BufferBuilder.c(-8453519796253161584L).b(-2564087889014470954L); - BufferBuilder.c(-8094125668260734160L).b(905205222444642664L); - BufferBuilder.c(6107875763467523916L).b(1502316539682724983L); - BufferBuilder.c(-6835098069461567490L).b(-4838563612870010146L); - BufferBuilder.c(4112788748586444202L).b(-326745453799600954L); - BufferBuilder.c(-7265740782230415566L).b(-6211994329283603080L); - BufferBuilder.c(1742839235905512207L).b(-105395272227769075L); - BufferBuilder.c(249951524682509528L).b(1469316851571263565L); - BufferBuilder.c(-2744939183595206950L).b(6116544308904459677L); - BufferBuilder.c(-586146295640327920L).b(144458528907986208L); - BufferBuilder.c(3503742865848379707L).b(-7386847791256410908L); - BufferBuilder.c(-7849858666590024933L).b(-3326248137131054034L); - BufferBuilder.c(8944099417440865791L).b(-4734241251447073080L); - BufferBuilder.c(7562337149176061841L).b(-3695567877542092574L); - BufferBuilder.c(-1423942285767642111L).b(8611548855031872882L); - BufferBuilder.c(-782389259481464962L).b(-3257882526065064722L); - BufferBuilder.c(5250816219224081963L).b(-8697184090591791591L); - BufferBuilder.c(-5274511601316443378L).b(-3105834969836281399L); - BufferBuilder.c(-4252109761977404104L).b(-7076942614815013715L); - BufferBuilder.c(6573621617040532479L).b(1711692889488377003L); - BufferBuilder.c(-4279970344876504721L).b(6383492676842657433L); - BufferBuilder.c(6327520139905176153L).b(4093665500097313885L); - BufferBuilder.c(-422678938887474993L).b(-8918669914300165825L); - BufferBuilder.c(-7272213246470530123L).b(6543244186206169484L); - BufferBuilder.c(-848875013548663623L).b(895558031710812896L); - BufferBuilder.c(-781994492298764974L).b(-3578105466761338278L); - BufferBuilder.c(-8496430294372757041L).b(-6956114263456085238L); - BufferBuilder.c(-8502163265089558651L).b(1940078159523116661L); - BufferBuilder.c(5493694782970447841L).b(469035395381625964L); - BufferBuilder.c(6212659771830550322L).b(-3315231971020096236L); - BufferBuilder.c(-6250497632738138473L).b(-631493353485256455L); - BufferBuilder.c(-8022417542443645599L).b(4718814738640488369L); - BufferBuilder.c(1473809264908950683L).b(4995716788386722319L); - BufferBuilder.c(-4955825760373973137L).b(7395537399046096174L); - BufferBuilder.c(4778569455502089457L).b(-4282354024242889560L); - BufferBuilder.c(5466969301384576104L).b(-2233818015995224656L); - BufferBuilder.c(1960815965451335672L).b(5985470237532648208L); - BufferBuilder.c(698070677024744452L).b(5127300611643556381L); - BufferBuilder.c(-7352379702826502265L).b(-3565708697862057479L); - BufferBuilder.c(2247963737386723371L).b(1748551292302667980L); - BufferBuilder.c(8640719408367108833L).b(-6349085306610204918L); - BufferBuilder.c(187029826661523461L).b(-1950305000542140396L); - BufferBuilder.c(4208019741989059242L).b(-7858020657187796107L); - BufferBuilder.c(-5079837560613910140L).b(-1413495420448736542L); - BufferBuilder.c(7671489558023171590L).b(4217730325877839337L); - BufferBuilder.c(-829319165907680192L).b(-8408164446315347634L); - BufferBuilder.c(-3625452446243021133L).b(-4398675128332078736L); - BufferBuilder.c(-4314461076158171482L).b(7939314982087643702L); - BufferBuilder.c(-7884935411301967431L).b(1085879500514596896L); - BufferBuilder.c(-4609697423592603196L).b(-3146847819921122486L); - BufferBuilder.c(2465132226422709786L).b(884259164958524355L); - BufferBuilder.c(9155569810048083967L).b(4328129492761944208L); - BufferBuilder.c(5762422904308165679L).b(3624361233786129950L); - BufferBuilder.c(-4939819802321307585L).b(6198981845200177403L); - BufferBuilder.c(-3683028348701275018L).b(1557342365639258582L); - BufferBuilder.c(661020259448654043L).b(-1144948336313697485L); - BufferBuilder.c(2557372505833463081L).b(-4046136370869660420L); - BufferBuilder.c(1732354364495977700L).b(3641332504071730300L); - BufferBuilder.c(6565505692335856680L).b(3981136873801173138L); - BufferBuilder.c(8304604331114638369L).b(2073636467817104401L); - BufferBuilder.c(908523874307215079L).b(-3467485862588405001L); - BufferBuilder.c(7888836057011658930L).b(-461315090670382175L); - BufferBuilder.c(414584644424901438L).b(-1289613978649077801L); - BufferBuilder.c(-8255729793755591742L).b(-7190593300531547129L); - BufferBuilder.c(-8582255413501910164L).b(-1856237750374324505L); - BufferBuilder.c(7836993611482015826L).b(1488170551227802311L); - BufferBuilder.c(1228485605684035696L).b(4841102642408670356L); - BufferBuilder.c(-6543260063564382510L).b(3489921397428854583L); - BufferBuilder.c(-6186464620322077770L).b(2296199420651476773L); - BufferBuilder.c(2212474897503502703L).b(-4434411893605005291L); - BufferBuilder.c(8695966074371999072L).b(6006285253447226245L); - BufferBuilder.c(4330277679684958009L).b(8896537538693149519L); - BufferBuilder.c(7990930140402621155L).b(3166317072180543546L); - BufferBuilder.c(-6164848893192747924L).b(679642360962666778L); - BufferBuilder.c(-3929937009602852748L).b(-6803302593865758721L); - BufferBuilder.c(-3756101990585639671L).b(-8630690397656872934L); - BufferBuilder.c(-8315298324790206794L).b(-2348825794008753850L); - BufferBuilder.c(3686307672163734579L).b(5928433695037273224L); - BufferBuilder.c(-78154321865169613L).b(-6753246470881342774L); - BufferBuilder.c(1115563609824759051L).b(5135179897379608474L); - BufferBuilder.c(-4310454869918286260L).b(-3429439878713643810L); - BufferBuilder.c(8242720479074958635L).b(-866310407926533139L); - BufferBuilder.c(-1947199686960748961L).b(4877516305045834003L); - BufferBuilder.c(-4140090451322545386L).b(4437628838553410260L); - BufferBuilder.c(-2407074404612125302L).b(1348848021440417665L); - BufferBuilder.c(-8691681702186447028L).b(-5008364047278081564L); - BufferBuilder.c(6934647884891895011L).b(921789310545703828L); - BufferBuilder.c(6273624503119007431L).b(-2452442742952822619L); - BufferBuilder.c(-236425158521530138L).b(-7659772952473080641L); - BufferBuilder.c(9008712203226400565L).b(-7626105428880197967L); - BufferBuilder.c(-864909624332890095L).b(-8451401609990831532L); - BufferBuilder.c(-5273259142241016633L).b(6632652662274211585L); - BufferBuilder.c(-4077475012686829484L).b(-2409113413734359797L); - BufferBuilder.c(2031588073439626766L).b(-7654807980865565162L); - BufferBuilder.c(5392189964500318491L).b(-7727776033066725707L); - BufferBuilder.c(-9117945003614581327L).b(-7145108166342362107L); - BufferBuilder.c(5883834420456440832L).b(4580352557558669312L); - BufferBuilder.c(-2335301587822854319L).b(-7005005883092475605L); - BufferBuilder.c(5783797419098713041L).b(1876750879114293520L); - BufferBuilder.c(-4500051460597298593L).b(-7853041763703699208L); - BufferBuilder.c(-7612161422968854865L).b(-3076452799070889301L); - BufferBuilder.c(1572035787265359105L).b(7070820866522779482L); - BufferBuilder.c(3899279522305905702L).b(-2570080371823548375L); - BufferBuilder.c(-6706279280548720443L).b(-4081625945885424727L); - BufferBuilder.c(-3650448791907569021L).b(-8503644933877391664L); - BufferBuilder.c(-8546171659474175515L).b(-8055230146543089336L); - BufferBuilder.c(-6176201996254407824L).b(7243500866809467543L); - BufferBuilder.c(6279986705019754183L).b(8629841319614108275L); - BufferBuilder.c(-5718490696814905615L).b(6517184551134529622L); - BufferBuilder.c(-8313836586838204324L).b(492023461856279759L); - BufferBuilder.c(6844040454071521171L).b(-6844418336544707661L); - BufferBuilder.c(-4081305021091830169L).b(-3681980363469330659L); - BufferBuilder.c(-1084337582410168833L).b(1546820094080847821L); - BufferBuilder.c(-6317269857459202758L).b(-3205730619676417487L); - BufferBuilder.c(394122211889992398L).b(3267457973984142711L); - BufferBuilder.c(8060009748026893075L).b(5347874993255035679L); - BufferBuilder.c(-7968338325867179003L).b(6792202663394372904L); - BufferBuilder.c(8861800547289997602L).b(-6408921307266782193L); - BufferBuilder.c(8948038541632196046L).b(-2776408578809071632L); - BufferBuilder.c(-2896070016323560611L).b(1342491932585385690L); - BufferBuilder.c(-1040871196264266669L).b(6318847065734741053L); - BufferBuilder.c(1478510129771175419L).b(-7177852283395445179L); - BufferBuilder.c(1375136919260406530L).b(-2787705070126850910L); - BufferBuilder.c(-6270882912764784365L).b(7539328607880177744L); - BufferBuilder.c(1480123195094069974L).b(449255173686792846L); - BufferBuilder.c(-2196191223804001991L).b(-4490673665306411930L); - BufferBuilder.c(-4502542305166057212L).b(-2464267115239383168L); - BufferBuilder.c(5477781849735216944L).b(-3992108019131706618L); - BufferBuilder.c(-2713939716110816336L).b(-3719245322302242505L); - BufferBuilder.c(-3554306871025868531L).b(-5189752191900150013L); - BufferBuilder.c(1047083123371610313L).b(-259835178996925016L); - BufferBuilder.c(3804666899736871061L).b(-6273024998323114779L); - BufferBuilder.c(-4836586107958751201L).b(6815642083914125581L); - BufferBuilder.c(-7749099986321178948L).b(227114022115989595L); - BufferBuilder.c(-8326703197026544553L).b(-4577095507758423058L); - BufferBuilder.c(-3385642323145661354L).b(-6786234488193061931L); - BufferBuilder.c(-8579827814676389353L).b(-8022396294627343004L); - BufferBuilder.c(-601052805144458720L).b(6735763128326024335L); - BufferBuilder.c(-4914202646332808719L).b(5935760007642250477L); - BufferBuilder.c(725602078323897339L).b(5075730177107668370L); - BufferBuilder.c(5495822036873942103L).b(-8710233416105385201L); - BufferBuilder.c(-2198392663816405952L).b(5603796108383447761L); - BufferBuilder.c(5229098286717833802L).b(-7035680658197455506L); - BufferBuilder.c(8132215605895275963L).b(-2861226948548627831L); - BufferBuilder.c(-5627493341412721379L).b(4219250301817309910L); - BufferBuilder.c(-2129047552447251053L).b(1153604120155460295L); - BufferBuilder.c(3446627797631215464L).b(7573899528365103068L); - BufferBuilder.c(3432237270215307617L).b(8857360949108001794L); - BufferBuilder.c(5399855248358142934L).b(2257630148538710143L); - BufferBuilder.c(-2845758699208934696L).b(2598561391290001422L); - BufferBuilder.c(6674705788437391879L).b(-9031538151497483864L); - BufferBuilder.c(-3632596615205046985L).b(8984636601815345333L); - BufferBuilder.c(-5642573665522820089L).b(-7115031369412279677L); - BufferBuilder.c(3688140440632064887L).b(2497897741894999041L); - BufferBuilder.c(1068668191054638242L).b(-4209754281227483310L); - BufferBuilder.c(-7443057423380460850L).b(5853086244997234901L); - BufferBuilder.c(451031352696922051L).b(-1351540701704807042L); - BufferBuilder.c(-3900349178343618515L).b(278996850857009406L); - BufferBuilder.c(-2729831057362209622L).b(-1253693992523568569L); - BufferBuilder.c(-2888438285137016646L).b(-8638845239934620449L); - BufferBuilder.c(950742777434701174L).b(924468364918674095L); - BufferBuilder.c(796756310202990120L).b(7666574415015774773L); - BufferBuilder.c(1078225239757274071L).b(8516070756086103141L); - BufferBuilder.c(-3299130680337241920L).b(-3309231087169362710L); - BufferBuilder.c(7354111700498535020L).b(-6111776534673540830L); - BufferBuilder.c(280430494717871411L).b(2717407140767623770L); - BufferBuilder.c(6257595085778056372L).b(-3597434398799534697L); - BufferBuilder.c(-5273980491271317401L).b(-3708048639190794073L); - BufferBuilder.c(-1901230909077258922L).b(-8992951003599289325L); - BufferBuilder.c(8032459809170296047L).b(2125891544402321898L); - BufferBuilder.c(2498437028782671452L).b(6814720026636736560L); - BufferBuilder.c(-1323503519547807299L).b(-9049103850206061523L); - BufferBuilder.c(-7147377445220989295L).b(3526831011669900637L); - BufferBuilder.c(-1060393162547296185L).b(3664787063243953027L); - BufferBuilder.c(3593687250760568301L).b(6875334233415627913L); - BufferBuilder.c(700753518133568205L).b(-7745016194347846201L); - BufferBuilder.c(8862661325465488268L).b(5777993426952898392L); - BufferBuilder.c(-5017239000431951123L).b(-8473690473210587100L); - BufferBuilder.c(-4402188237841560698L).b(-8375178607774199245L); - BufferBuilder.c(2823479007560311988L).b(-7019455084924700104L); - BufferBuilder.c(-8428908175089032664L).b(-8357884156934976934L); - BufferBuilder.c(688109143752013151L).b(1568875487893446408L); - BufferBuilder.c(1195893369093918280L).b(-1835619248639111798L); - BufferBuilder.c(-6436894458595320335L).b(-3874688637968370570L); - BufferBuilder.c(-8367077089466257697L).b(-594328013613713907L); - BufferBuilder.c(6815639639447293414L).b(-8556389157365603823L); - BufferBuilder.c(-3210970271011240166L).b(517846970499532927L); - BufferBuilder.c(3698505626126405542L).b(307913442227506691L); - BufferBuilder.c(322244427580169575L).b(222014054574279573L); - BufferBuilder.c(-2142769365863905806L).b(-4956594810219298870L); - BufferBuilder.c(5753278805181972152L).b(2950821919637190170L); - BufferBuilder.c(6541444626380448602L).b(-1081879449395207491L); - BufferBuilder.c(3995418003087254156L).b(5498943341501767559L); - BufferBuilder.c(751408009961987857L).b(1554765329811465964L); - BufferBuilder.c(6151389397873841691L).b(8477857147723586202L); - BufferBuilder.c(-1106122246880007218L).b(-3370142830467594115L); - BufferBuilder.c(-5781771939490986984L).b(-2736989662889926318L); - BufferBuilder.c(-8119426679407061215L).b(1756086975772627610L); - BufferBuilder.c(4873180706061590929L).b(-4232087679616995642L); - BufferBuilder.c(-5018215997125002452L).b(2780391249703015214L); - BufferBuilder.c(6885940722854707360L).b(-4776754173564069794L); - BufferBuilder.c(-2500376786117877941L).b(-4518511328899865842L); - BufferBuilder.c(2585293852013837253L).b(2910422263231575932L); - BufferBuilder.c(8347832721932487942L).b(1574130726328887508L); - BufferBuilder.c(6037736276466896129L).b(1116839172289082495L); - BufferBuilder.c(-1019423522312089543L).b(8667069357210008633L); - BufferBuilder.c(-5198193943255991055L).b(-3350178788240635866L); - BufferBuilder.c(-6233153892085855704L).b(7765264297413234382L); - BufferBuilder.c(1634786281987147240L).b(-7242825313229636967L); - BufferBuilder.c(4455260918197170167L).b(2917006455661722891L); - BufferBuilder.c(-2425151848790823003L).b(-5888243675223131635L); - BufferBuilder.c(6046756763580888592L).b(-7438430275424324226L); - BufferBuilder.c(-6979979459788779392L).b(-5889838338069329123L); - BufferBuilder.c(-7885274367483329523L).b(-8459131198625903547L); - BufferBuilder.c(7413319286341277855L).b(280930516324803560L); - BufferBuilder.c(2983544313273271265L).b(-2780316123666303462L); - BufferBuilder.c(1169460498801274331L).b(-1860188191418366533L); - BufferBuilder.c(-2243820610761668723L).b(2060759358034885518L); - BufferBuilder.c(-6037033162472940850L).b(6718627472139099040L); - BufferBuilder.c(5524998663849456397L).b(-7437762960595537309L); - BufferBuilder.c(3269071854579493978L).b(2662210176001394063L); - BufferBuilder.c(-1489595077804190627L).b(6393646946778084668L); - BufferBuilder.c(3030639649726426235L).b(1694488083659149552L); - BufferBuilder.c(3058646846605724040L).b(6422022400619785994L); - BufferBuilder.c(-7025676183931908242L).b(5520465455916949648L); - BufferBuilder.c(8560102294675382049L).b(8702693696972056665L); - BufferBuilder.c(4375061919516668140L).b(2893140036834684268L); - BufferBuilder.c(-6518462694483379303L).b(-6569645608275683242L); - BufferBuilder.c(-7465909326588017271L).b(4852062909321152335L); - BufferBuilder.c(-501357241974168587L).b(-2468740965999175970L); - BufferBuilder.c(1107361719303616473L).b(1274853843381469021L); - BufferBuilder.c(436081296860670912L).b(6466483369814899357L); - BufferBuilder.c(6677107096877602676L).b(-8130248047982891808L); - BufferBuilder.c(-3648600465286649510L).b(5306392881839345607L); - BufferBuilder.c(-1443477626834342351L).b(4632743030962276213L); - BufferBuilder.c(8953884075678308206L).b(-8292789021614659019L); - BufferBuilder.c(-8378443350319565513L).b(2677062090551059498L); - BufferBuilder.c(-8207546194237151354L).b(-2392194197420495341L); - BufferBuilder.c(-5234696734882688663L).b(489861549942111420L); - BufferBuilder.c(-7350330324798173708L).b(-2459264595682017292L); - BufferBuilder.c(5845200254640663245L).b(4063620019683258686L); - BufferBuilder.c(8926192768810090785L).b(5047656105144355371L); - BufferBuilder.c(-6711137386682615462L).b(7837948627491789317L); - BufferBuilder.c(2287600592895999745L).b(4016065198577188200L); - BufferBuilder.c(2179054557196247828L).b(-4538425658760170021L); - BufferBuilder.c(4308095507160853235L).b(-7236095297868305667L); - BufferBuilder.c(5618176996407310662L).b(4727874207900095220L); - BufferBuilder.c(1811283359896028460L).b(-1411535444237275794L); - BufferBuilder.c(-8300153816055977051L).b(3008745760338454797L); - BufferBuilder.c(-7515835734970055606L).b(-2629644025809799249L); - BufferBuilder.c(-1472789911025624317L).b(-3118147029635767066L); - BufferBuilder.c(4493092848614771544L).b(-3160090873600867477L); - BufferBuilder.c(-7213895162295489287L).b(-4977582709915548112L); - BufferBuilder.c(3758945202906969174L).b(-5553245585584765371L); - BufferBuilder.c(-6433933557690849961L).b(6089433696362977622L); - BufferBuilder.c(-1299104769040236934L).b(-5139840215931461676L); - BufferBuilder.c(6376299577819985941L).b(1092145292971252290L); - BufferBuilder.c(-7413657129497381191L).b(3166683347846555105L); - BufferBuilder.c(-4279553664106952613L).b(-7549510755099116080L); - BufferBuilder.c(-7657321408460146071L).b(2163860271128252954L); - BufferBuilder.c(-1643068703505509856L).b(-4804330449833060273L); - BufferBuilder.c(3552057220676890772L).b(1432485584977585848L); - BufferBuilder.c(2364737817836619349L).b(694990496552940175L); - BufferBuilder.c(-4000470713940293601L).b(5507526931014405127L); - BufferBuilder.c(-8321936103358961604L).b(1987349524319731214L); - BufferBuilder.c(-5867202364392009523L).b(3212577296488744235L); - BufferBuilder.c(-7192187884056967153L).b(2405796378549454550L); - BufferBuilder.c(-176255362735658702L).b(-574608978221165005L); - BufferBuilder.c(-1763966590250740735L).b(3920684089649231470L); - BufferBuilder.c(4935516620088357505L).b(-8258820792268445084L); - BufferBuilder.c(7800147187788589517L).b(-8935030789949690388L); - BufferBuilder.c(-7208499360328402432L).b(-7275088064988341986L); - BufferBuilder.c(-5335915457036429315L).b(1070239274805112999L); - BufferBuilder.c(-502323354149346239L).b(-947898307070583829L); - BufferBuilder.c(-4107794900588605990L).b(1915403590462104317L); - BufferBuilder.c(3684786174103849046L).b(-4157773098660070829L); - BufferBuilder.c(1072011150903169337L).b(-8146708352729793457L); - BufferBuilder.c(2360713748092211605L).b(-6833066739799095357L); - BufferBuilder.c(-1274710419488558772L).b(-2514842225397858791L); - BufferBuilder.c(454600338690814869L).b(-754328286319406230L); - BufferBuilder.c(-2371943388760292051L).b(-6051594710785826898L); - BufferBuilder.c(-1340914808714894466L).b(158159080860347988L); - BufferBuilder.c(8006506505569578457L).b(-6325767622248844268L); - BufferBuilder.c(1722069052780414874L).b(6814470713627460920L); - BufferBuilder.c(-8139951598632042493L).b(-6005815904246566612L); - BufferBuilder.c(3215213994035226123L).b(5022171286447306868L); - BufferBuilder.c(3522081171500146525L).b(2373234278045238232L); - BufferBuilder.c(6999484554709677367L).b(2887644242792939002L); - BufferBuilder.c(-3510183108164053569L).b(-7195962732980294274L); - BufferBuilder.c(-6392730812969422190L).b(5028148911125824264L); - BufferBuilder.c(-2685399325134356063L).b(-1865544469491839678L); - BufferBuilder.c(-5694186881983034256L).b(6399268730320690983L); - BufferBuilder.c(-7863497430272960384L).b(2182230431325367575L); - BufferBuilder.c(-3691525353719635641L).b(-7822807055416800307L); - BufferBuilder.c(-2432749586556784293L).b(-7540893805125999325L); - BufferBuilder.c(1626964632512916104L).b(717234477601834728L); - BufferBuilder.c(62223203074265114L).b(7693556353715810188L); - BufferBuilder.c(5257344629299928639L).b(-7646594007545547782L); - BufferBuilder.c(-4110722092314695604L).b(3970878443931837475L); - BufferBuilder.c(1472174279146249558L).b(4731406083360377834L); - BufferBuilder.c(-804825950854495817L).b(879430544236838027L); - BufferBuilder.c(-1802473790304664927L).b(-8084192041785346278L); - BufferBuilder.c(2724072737789815917L).b(4397198010826033333L); - BufferBuilder.c(-3490535484335222814L).b(-556380564760641079L); - BufferBuilder.c(1854868568553505121L).b(1279444255090995653L); - BufferBuilder.c(8891368673890728755L).b(-2934241337175662394L); - BufferBuilder.c(2211660540825519524L).b(-6872142404461812386L); - BufferBuilder.c(-7328648992268769359L).b(-8989330627456081374L); - BufferBuilder.c(1329358724962281637L).b(615960491630126651L); - BufferBuilder.c(253000453352467352L).b(3457627454166490807L); - BufferBuilder.c(-8529480523339769970L).b(2231085797926020832L); - BufferBuilder.c(2605464397380573764L).b(6722119023596985837L); - BufferBuilder.c(3432787719305594526L).b(-2629113920794924052L); - BufferBuilder.c(-493362390573368155L).b(2310790286446340920L); - BufferBuilder.c(-6415921920452468603L).b(-3343974770156932515L); - BufferBuilder.c(8983789202307830607L).b(-3127055432145571767L); - BufferBuilder.c(4730740619633946119L).b(-3237929297110811231L); - BufferBuilder.c(4230474973272366961L).b(-2879631366355341694L); - BufferBuilder.c(2395915044553752387L).b(-516071320000632706L); - BufferBuilder.c(-5936927239840921113L).b(-3092088195337307797L); - BufferBuilder.c(-1764603522154195367L).b(5800708577630415582L); - BufferBuilder.c(6506990316040875596L).b(-434489053890404070L); - BufferBuilder.c(-1514804691518037190L).b(6611157339418638392L); - BufferBuilder.c(-206296954710660277L).b(-55690725513389852L); - BufferBuilder.c(1623772140148283823L).b(707525094352178533L); - BufferBuilder.c(-8057116045908461380L).b(6923861272648196798L); - BufferBuilder.c(-3139777361822769841L).b(-1903239806508171478L); - BufferBuilder.c(-1400082716551076807L).b(-8060296282797889207L); - BufferBuilder.c(709172967661668612L).b(-2794068467623698005L); - BufferBuilder.c(-760059144007867022L).b(1460103878348766012L); - BufferBuilder.c(-628801793594616768L).b(6320998414087385735L); - BufferBuilder.c(1749413796227307001L).b(-5777387240876372118L); - BufferBuilder.c(7621180888939694549L).b(789851718658560114L); - BufferBuilder.c(-1935343288878442267L).b(944292458306886339L); - BufferBuilder.c(-5960993225520882004L).b(-6241981998871390780L); - BufferBuilder.c(-4296927476942836238L).b(-8099420129988324540L); - BufferBuilder.c(6726469330891370534L).b(3338591613309696584L); - BufferBuilder.c(-1124685423237795838L).b(-1057642608589339594L); - BufferBuilder.c(-5173403158701169966L).b(-7252485897744172711L); - BufferBuilder.c(6192230325814915608L).b(4369730213512516207L); - BufferBuilder.c(-5926587925381111946L).b(-3170043222052734597L); - BufferBuilder.c(-694892747564300786L).b(-2438891405512397355L); - BufferBuilder.c(-715010062601828738L).b(-961004943754828721L); - BufferBuilder.c(2326498566946230727L).b(1204770017401710898L); - BufferBuilder.c(-5168196058388253171L).b(8065749711944824159L); - BufferBuilder.c(-2118257998910723605L).b(5282504072514127303L); - BufferBuilder.c(-4991664870118884316L).b(-3747666752659985271L); - BufferBuilder.c(3703369730168207116L).b(-4450026348431083604L); - BufferBuilder.c(-6280542117017598259L).b(5409437599205653428L); - BufferBuilder.c(-8239801987787063196L).b(1597870571785757094L); - BufferBuilder.c(1795781164296871282L).b(-1696725354750161249L); - BufferBuilder.c(-4820123596584191048L).b(3700592935555063311L); - BufferBuilder.c(8326655621276796991L).b(604359179609640341L); - BufferBuilder.c(5933437707756051105L).b(-2355563360855134877L); - BufferBuilder.c(4416639379710233180L).b(-5028825570334829627L); - BufferBuilder.c(-340185490599784563L).b(8162504282726734081L); - BufferBuilder.c(-2453473077335215453L).b(-4038592379241261373L); - BufferBuilder.c(5533775529958854001L).b(3273899740705726743L); - BufferBuilder.c(-3999919822418733061L).b(8937566397611382361L); - BufferBuilder.c(350893895576416773L).b(-8496815000230706636L); - BufferBuilder.c(4148205109241598683L).b(6699408936133861499L); - BufferBuilder.c(759967093255044387L).b(-3759190055717364484L); - BufferBuilder.c(-3736641269927885051L).b(-2529027187374447543L); - BufferBuilder.c(1260380143229704100L).b(363956562777798587L); - BufferBuilder.c(-4960771450471880434L).b(7123272334512342972L); - BufferBuilder.c(3556899831953747287L).b(-7474203108615740165L); - BufferBuilder.c(5729571201355842652L).b(4670106208449406873L); - BufferBuilder.c(-3149569560956763816L).b(-3670218899221093820L); - BufferBuilder.c(-5100575915790476434L).b(-5891409546136575319L); - BufferBuilder.c(4251400468418094446L).b(7681616116307305189L); - BufferBuilder.c(8670404562587769150L).b(503367379559302828L); - BufferBuilder.c(-8364164603887039141L).b(5775647456240436405L); - BufferBuilder.c(-7522166880890378486L).b(61405772963083682L); - BufferBuilder.c(-4026215594853715199L).b(1221246113086615462L); - BufferBuilder.c(2922538269411582009L).b(-7495792408037986651L); - BufferBuilder.c(-2235428818920863846L).b(-2456205364820118132L); - BufferBuilder.c(-4092667347156693663L).b(-8508606508853828433L); - BufferBuilder.c(1601099142857768002L).b(3134336546308200190L); - BufferBuilder.c(5250870329749765541L).b(8021361661640350244L); - BufferBuilder.c(-8159680165001967184L).b(-9035863572472589011L); - BufferBuilder.c(-6278919106355538809L).b(-5273892160198056910L); - BufferBuilder.c(3260993425166147398L).b(-2579099169818398592L); - BufferBuilder.c(-8705697742116843453L).b(4078707036612496086L); - BufferBuilder.c(1539401427456984632L).b(5241273210348698867L); - BufferBuilder.c(5870812867176324333L).b(-7477216605833180331L); - BufferBuilder.c(3337741319543854670L).b(-4334723411366327415L); - BufferBuilder.c(-1447888946500373273L).b(8643485034260215394L); - BufferBuilder.c(8918601932212780989L).b(-5630883880138343375L); - BufferBuilder.c(312268644799815392L).b(4639784347233251202L); - BufferBuilder.c(-2699529036966025898L).b(3320054396845126888L); - BufferBuilder.c(2320869538453213131L).b(433009741637178382L); - BufferBuilder.c(-2269280284340869697L).b(7783531005309404236L); - BufferBuilder.c(2968292755882990466L).b(-318339710125239419L); - BufferBuilder.c(2616263803421625011L).b(7648261971029027730L); - BufferBuilder.c(-3121759658300251445L).b(3131879596742780211L); - BufferBuilder.c(-3884496459048688760L).b(-8781575112950554106L); - BufferBuilder.c(-1403997081937252401L).b(-302378892556092795L); - BufferBuilder.c(-2167477666553885980L).b(5887997726293024029L); - BufferBuilder.c(8369639872712580723L).b(3366082660226395626L); - BufferBuilder.c(3576248524708060135L).b(-7302463029302501839L); - BufferBuilder.c(-7711410900948844675L).b(2743961392146951403L); - BufferBuilder.c(8644666792775114712L).b(-7030011485688973941L); - BufferBuilder.c(-7045481348386696843L).b(176628954160213082L); - BufferBuilder.c(-2349648515023711319L).b(-2802389136256652237L); - BufferBuilder.c(-2867035143216488208L).b(3440159215087217940L); - BufferBuilder.c(-9038847037172448299L).b(7148605468830230345L); - BufferBuilder.c(3613923994171449134L).b(-6559524177902900247L); - BufferBuilder.c(-6643584465625733745L).b(3111539523519713179L); - BufferBuilder.c(2107474770879903115L).b(3232285536695090102L); - BufferBuilder.c(-7856792277802667954L).b(-4444305950830431380L); - BufferBuilder.c(-1720512923520762412L).b(5674642223982510507L); - BufferBuilder.c(5382773025915968324L).b(-748333978943973572L); - BufferBuilder.c(3351644752222251251L).b(6548116746722336581L); - BufferBuilder.c(1146645189557161112L).b(-3727485464662432666L); - BufferBuilder.c(-4079445875959633638L).b(8471560645636062612L); - BufferBuilder.c(-47842464777164636L).b(6850797170579729601L); - BufferBuilder.c(-6461782894230121047L).b(9203125980378250350L); - BufferBuilder.c(8137532536358435191L).b(-3262675496832791843L); - BufferBuilder.c(-5303059513311977510L).b(-8849071964641084809L); - BufferBuilder.c(-2149616095938189493L).b(3156236769127411181L); - BufferBuilder.c(3421514271253042224L).b(2547955995015821643L); - BufferBuilder.c(3894994903027676483L).b(-6814247454960476761L); - BufferBuilder.c(1050489439849141739L).b(9133072912637191690L); - BufferBuilder.c(5134064236162865546L).b(6551273651842634945L); - BufferBuilder.c(6067356651078401447L).b(-1778249799661660855L); - BufferBuilder.c(573333326520588886L).b(5522724880619794512L); - BufferBuilder.c(-827080644161390933L).b(6508472647206827072L); - BufferBuilder.c(-773922973694841894L).b(2635419718604412009L); - BufferBuilder.c(-2766464089394688548L).b(1167598227628786831L); - BufferBuilder.c(-2362430298727123027L).b(-8324352999196749665L); - BufferBuilder.c(-6006027098344063634L).b(3315695924920065978L); - BufferBuilder.c(-3202958651829089236L).b(4936345106871788463L); - BufferBuilder.c(2309787635243418263L).b(-5335021929299069485L); - BufferBuilder.c(4958229141636066872L).b(-2453808136920395389L); - BufferBuilder.c(8173961518818535360L).b(3108757994370643823L); - BufferBuilder.c(4001686915948811850L).b(-4028618330731764029L); - BufferBuilder.c(-372756846466231116L).b(-3601630131925137392L); - BufferBuilder.c(3936961062847453308L).b(-2604785456511113570L); - BufferBuilder.c(-8783464000833406449L).b(-5957679833583641547L); - BufferBuilder.c(-8296690941706200936L).b(8211183136396562473L); - BufferBuilder.c(-8175420756125012252L).b(-8007166333883364847L); - BufferBuilder.c(-1058218319243529064L).b(-7656084109600543236L); - BufferBuilder.c(-4316931548250997757L).b(1141207763505361085L); - BufferBuilder.c(1137699965789110419L).b(5690377538330381856L); - BufferBuilder.c(-2406112943032087539L).b(5051660464676119583L); - BufferBuilder.c(-4552854219666577640L).b(2220494401313572192L); - BufferBuilder.c(-2475215991570946796L).b(1496032769582844502L); - BufferBuilder.c(-4340838176526807080L).b(-416084696458659841L); - BufferBuilder.c(-8346529525853795352L).b(-3577733539190789362L); - BufferBuilder.c(-1432702075326275302L).b(3583947593099685245L); - BufferBuilder.c(-2422473980237759692L).b(5114975717810688389L); - BufferBuilder.c(-3378818224327033654L).b(-4068513190308837278L); - BufferBuilder.c(-1462670305659295811L).b(4845723926611628741L); - BufferBuilder.c(-3015080043209757218L).b(-8428776960253337431L); - BufferBuilder.c(-8647095318829432460L).b(-6884825122758050680L); - BufferBuilder.c(6044019408706602031L).b(-4349355588244027936L); - BufferBuilder.c(-3668479288627307876L).b(1159525352800195455L); - BufferBuilder.c(-5085376500609708453L).b(-2982231342852086633L); - BufferBuilder.c(-4904200501216107589L).b(9112566297066274783L); - BufferBuilder.c(-6998795946894090933L).b(1234447858707286318L); - BufferBuilder.c(5540947224157901115L).b(-2851530493069596217L); - BufferBuilder.c(6592963288020255792L).b(-3679179866693236432L); - BufferBuilder.c(7228872923686153305L).b(5640596821608376489L); - BufferBuilder.c(-2019323846716371206L).b(4143047835152264318L); - BufferBuilder.c(4358563204872871301L).b(-309095017733841506L); - BufferBuilder.c(-8537367858584789374L).b(6814127498095930576L); - BufferBuilder.c(5272516158567217115L).b(-9130514032677522119L); - BufferBuilder.c(1943232876531641967L).b(7894098975134433664L); - BufferBuilder.c(790479195182036045L).b(-1282000292520888714L); - BufferBuilder.c(-3304756787156493413L).b(-689338222266140721L); - BufferBuilder.c(-6716383635259487500L).b(-2990887256894563137L); - BufferBuilder.c(-2019642734297520278L).b(-8076039462333935656L); - BufferBuilder.c(-8320944417726456568L).b(-8972699936503621451L); - BufferBuilder.c(261284297452280462L).b(2227949075362302409L); - BufferBuilder.c(-6975297735243446808L).b(-5521022963389704962L); - BufferBuilder.c(-6066543649520830359L).b(-3132270440573943659L); - BufferBuilder.c(4949250497181742304L).b(-3319201279788116210L); - BufferBuilder.c(6891004113409432152L).b(2560586220403338589L); - BufferBuilder.c(-1930240959986928803L).b(-7797323460223805130L); - BufferBuilder.c(3075185648783099313L).b(589998578306001175L); - BufferBuilder.c(-4223669750098756521L).b(8408472877823171400L); - BufferBuilder.c(-8573373156980981865L).b(3477743993118761563L); - BufferBuilder.c(-2501268460804997347L).b(-8300772686836529595L); - BufferBuilder.c(-2192418341964066381L).b(4719128863309278550L); - BufferBuilder.c(2522772383953301578L).b(-4292534264101344458L); - BufferBuilder.c(2323654674544427804L).b(388399325740491277L); - BufferBuilder.c(-3322925108641965310L).b(1879228361593667715L); - BufferBuilder.c(-3461093108244511021L).b(6776014107600660107L); - BufferBuilder.c(2770647344667370463L).b(276553879508728812L); - BufferBuilder.c(2169788601273790244L).b(635967499333087394L); - BufferBuilder.c(-5236606021102409605L).b(-7957843711690207294L); - BufferBuilder.c(5339182854647411820L).b(-3624514978753353678L); - BufferBuilder.c(-4695787613258812659L).b(7484491238903344694L); - BufferBuilder.c(2848706563976162758L).b(8057388396096951711L); - BufferBuilder.c(-2348285229036539385L).b(1040028551750252073L); - BufferBuilder.c(4293276980972152148L).b(159907344051963074L); - BufferBuilder.c(778388907695055487L).b(-875298150513923251L); - BufferBuilder.c(-3954616615806534749L).b(5106199430844424115L); - BufferBuilder.c(2401936665571341169L).b(-5831134675916083078L); - BufferBuilder.c(-7711059699004296961L).b(-8148804524517717592L); - BufferBuilder.c(-4430982323453248900L).b(6430562069894731289L); - BufferBuilder.c(8544066283068918351L).b(-8439753117381198118L); - BufferBuilder.c(3830265853605796269L).b(7277780845747311429L); - BufferBuilder.c(-2861288582788468554L).b(-8092289879232490289L); - BufferBuilder.c(-2920968418896882814L).b(575038045680972125L); - BufferBuilder.c(-3064005702089686338L).b(-8630896268580872414L); - BufferBuilder.c(-5605712170785189025L).b(4300412654357302153L); - BufferBuilder.c(-1531249039830917667L).b(-5017258041232226735L); - BufferBuilder.c(843165643228587662L).b(-2617635821894339038L); - BufferBuilder.c(-6345612316358939220L).b(-8228475873843199587L); - BufferBuilder.c(4357070602361161186L).b(-5354167489480745876L); - BufferBuilder.c(1496568539859001166L).b(-1846319731459628440L); - BufferBuilder.c(2538924215655698194L).b(-7539173604535426141L); - BufferBuilder.c(4156706130907240875L).b(5053817131609460165L); - BufferBuilder.c(7287822711397345346L).b(-8833329309526340246L); - BufferBuilder.c(8264544161339180578L).b(-4256395826215630288L); - BufferBuilder.c(-121425951815446911L).b(-3543281089462709916L); - BufferBuilder.c(-2863233594189078383L).b(5273775047822087932L); - BufferBuilder.c(-1066326648608373999L).b(8515801667466034903L); - BufferBuilder.c(4896486042175493682L).b(4174349703942660312L); - BufferBuilder.c(-2779184190725401357L).b(-305054072018862110L); - BufferBuilder.c(-154655952688173779L).b(1038341760353803199L); - BufferBuilder.c(6047423375171564633L).b(-8077794408667097813L); - BufferBuilder.c(-2387303933743279007L).b(-960888072551470702L); - BufferBuilder.c(-5413989715188241273L).b(7903963652866898104L); - BufferBuilder.c(-7538002080611763506L).b(69407159710020905L); - BufferBuilder.c(-7239615413333155383L).b(-6022312300709392094L); - BufferBuilder.c(8704595217820102220L).b(4870060547348498452L); - BufferBuilder.c(-6982076909600297171L).b(-5733145641833423884L); - BufferBuilder.c(6885144593081704431L).b(-4939212938078094421L); - BufferBuilder.c(-7505614208848802841L).b(-8175751613784068253L); - BufferBuilder.c(716902117723564917L).b(7588527466819960614L); - BufferBuilder.c(-5045323826868130658L).b(8912456097865059005L); - BufferBuilder.c(-3601286398748674473L).b(-8774428774146737244L); - BufferBuilder.c(-3130704788024785937L).b(7555099815591043627L); - BufferBuilder.c(-7032724692718578749L).b(162030378305297364L); - BufferBuilder.c(-860256462855025887L).b(-4264011116735179231L); - BufferBuilder.c(-6286429460657409590L).b(-4546293934833107744L); - BufferBuilder.c(6468963142961696190L).b(5726797882982990703L); - BufferBuilder.c(-6354720282602148478L).b(-555146407878628223L); - BufferBuilder.c(-3903117658061352307L).b(-6023239667304516472L); - BufferBuilder.c(-8748323004494449352L).b(-8278812968236917695L); - BufferBuilder.c(-3134683404377943262L).b(6298008480323128461L); - BufferBuilder.c(-8486904113163887684L).b(6125300235922925066L); - BufferBuilder.c(-7799846895424982242L).b(-9058956445194576286L); - BufferBuilder.c(9123603097639606523L).b(-4146022311286339132L); - BufferBuilder.c(-8263822001814948600L).b(-4539289636397770011L); - BufferBuilder.c(4759344011942636759L).b(-5197567354642153993L); - BufferBuilder.c(268975764743020295L).b(9034369113334158511L); - BufferBuilder.c(-5525006861493780490L).b(5538768805524579182L); - BufferBuilder.c(-1055681761189021753L).b(-7346774851452604072L); - BufferBuilder.c(-5430443687721953492L).b(-2023511716988461410L); - BufferBuilder.c(-4948663706982591183L).b(9150472344492611825L); - BufferBuilder.c(7202264798755044529L).b(-7798948360526480656L); - BufferBuilder.c(-5818518588964142279L).b(8807740932781158082L); - BufferBuilder.c(1807150727101207918L).b(6749331918823775653L); - BufferBuilder.c(2865700041304800386L).b(7840008873385787175L); - BufferBuilder.c(-8267265671235349206L).b(-3826302581282263866L); - BufferBuilder.c(-6060007129406594289L).b(-2884938102615394446L); - BufferBuilder.c(-3502213670616022203L).b(3924519916974222683L); - BufferBuilder.c(-3488635473066936637L).b(5504474751403630739L); - BufferBuilder.c(-9101937340777560376L).b(65435838728718723L); - BufferBuilder.c(-5285014235019310863L).b(6381886828028455959L); - BufferBuilder.c(-1690658458338927654L).b(-5995620824862100204L); - BufferBuilder.c(-6695896528027011064L).b(4884414319760358544L); - BufferBuilder.c(7361025931051590177L).b(2113158920233641625L); - BufferBuilder.c(2461612507583164905L).b(5112492925334119507L); - BufferBuilder.c(-5177217982626040869L).b(2862321283817868677L); - BufferBuilder.c(-5752730572296267529L).b(-177621148770602165L); - BufferBuilder.c(-7419414832564293257L).b(-6323213817842276562L); - BufferBuilder.c(-8784493559222735742L).b(400369906956255078L); - BufferBuilder.c(8707273472705094936L).b(1600111154403430795L); - BufferBuilder.c(1172662849883474655L).b(5939081218145015499L); - BufferBuilder.c(-8809862084885546688L).b(-6807787799387653778L); - BufferBuilder.c(-4773613595852575757L).b(2055132957016079961L); - BufferBuilder.c(-6026038700343882657L).b(2152482661760279089L); - BufferBuilder.c(-8059068138692700215L).b(4632889481950187321L); - BufferBuilder.c(-4508453221504244975L).b(2131915218079363561L); - BufferBuilder.c(-8567536853364019518L).b(-4207328539165398362L); - BufferBuilder.c(-4998040470324986123L).b(5417493381609320513L); - BufferBuilder.c(1017529955064076946L).b(8144590828009818078L); - BufferBuilder.c(-6336757528396370680L).b(-3846733057611463851L); - BufferBuilder.c(5183150180829075620L).b(-2988429994087231504L); - BufferBuilder.c(-1915451815331270197L).b(-2510511774093983665L); - BufferBuilder.c(804388588253216680L).b(5347752248311886326L); - BufferBuilder.c(-4570424069972390113L).b(7663306604771559122L); - BufferBuilder.c(-8283271844361965321L).b(-8390175283130314549L); - BufferBuilder.c(-3672090967726398617L).b(-3266255795749736223L); - BufferBuilder.c(-5811830260132832043L).b(-2572548721666061249L); - BufferBuilder.c(1539420839412098656L).b(-8616170965968864039L); - BufferBuilder.c(7162978176415628108L).b(1341547254874990857L); - BufferBuilder.c(-5108115230495334746L).b(-6627734433102178398L); - BufferBuilder.c(-7344174487548999969L).b(-7443798365478875959L); - BufferBuilder.c(3824671709750937145L).b(3128862608272328485L); - BufferBuilder.c(564340334833704929L).b(-2982939612702808143L); - BufferBuilder.c(-8811255242239580884L).b(8331766701134948503L); - BufferBuilder.c(998789240436059291L).b(1644207680150170357L); - BufferBuilder.c(-4085100543326657344L).b(-1604947573803378636L); - BufferBuilder.c(-3071965526919811471L).b(1312110784998978248L); - BufferBuilder.c(-1947515811776435328L).b(6277333338791655453L); - BufferBuilder.c(2524167706760842014L).b(-9070041050400999195L); - BufferBuilder.c(4712535140039391165L).b(6627573755943952580L); - BufferBuilder.c(7659549299074919567L).b(-7206600544632608496L); - BufferBuilder.c(-4790881518346309957L).b(-3613672898837803765L); - BufferBuilder.c(7375752888496235542L).b(-8355261738342251347L); - BufferBuilder.c(1313572510592994734L).b(8872980345956092881L); - BufferBuilder.c(-2699002773176825801L).b(6250270697669279565L); - BufferBuilder.c(3408711449548844336L).b(-3576794911869671300L); - BufferBuilder.c(-4072068577098141081L).b(-7038781839438302662L); - BufferBuilder.c(-2437221282736496196L).b(1614151678075067367L); - BufferBuilder.c(-1285331197880312858L).b(-6169817275195149573L); - BufferBuilder.c(-8163373963334919698L).b(-1717871860475182564L); - BufferBuilder.c(5841051809355055368L).b(2540760096795942399L); - BufferBuilder.c(5722027967957262345L).b(-5287758229903305527L); - BufferBuilder.c(5721417177448156335L).b(6802094455222976534L); - BufferBuilder.c(-265164701868902920L).b(5563212664464836878L); - BufferBuilder.c(2329698585400663113L).b(3850082934491270024L); - BufferBuilder.c(413605039580130008L).b(-7345542760479961295L); - BufferBuilder.c(3960656473845862999L).b(415461648804189772L); - BufferBuilder.c(-6768832528600968222L).b(4499812385138878669L); - BufferBuilder.c(-5703085027113121947L).b(2142929405986263989L); - BufferBuilder.c(-2055922289972997486L).b(1393261512315860575L); - BufferBuilder.c(-113236295726445625L).b(1504936782394273519L); - BufferBuilder.c(-5457510538188806723L).b(-3461963165704085564L); - BufferBuilder.c(4742251980605100084L).b(6509474319750880497L); - BufferBuilder.c(4503994620026106541L).b(-4528446297541102393L); - BufferBuilder.c(-110388594607593173L).b(-8951290245751154896L); - BufferBuilder.c(-55828611177319433L).b(3711095347044796974L); - BufferBuilder.c(8112415771452514782L).b(3296807253612424464L); - BufferBuilder.c(-4449613343763814696L).b(-1125259039215654144L); - BufferBuilder.c(4096994922462548639L).b(-7332901678627773235L); - BufferBuilder.c(-3146760855101593233L).b(8128767362036185947L); - BufferBuilder.c(2406943681045029564L).b(-1259111463989701654L); - BufferBuilder.c(-910981103136977988L).b(1887077318306591964L); - BufferBuilder.c(6273158258677150940L).b(2782854707129477024L); - BufferBuilder.c(-2416674717338549653L).b(4906823564395555529L); - BufferBuilder.c(-5530230586824736418L).b(-5669914647592998325L); - BufferBuilder.c(3234327330197224566L).b(-5335172340812555196L); - BufferBuilder.c(-949864630951598014L).b(3289359606951994912L); - BufferBuilder.c(-981268869113812162L).b(-2348659585252566943L); - BufferBuilder.c(1344395521764670519L).b(-2616270445802203442L); - BufferBuilder.c(-2056347163649999140L).b(-1399506934157004959L); - BufferBuilder.c(-338181638579610143L).b(-6329469920868088396L); - BufferBuilder.c(2638959495116967229L).b(-2460195216016962687L); - BufferBuilder.c(3940037382404540233L).b(-3512679198495556268L); - BufferBuilder.c(2601645292491996622L).b(4790710434374417815L); - BufferBuilder.c(-5101948302526989600L).b(2495289193597374858L); - BufferBuilder.c(1723892479273015671L).b(6120591281766031722L); - BufferBuilder.c(-629210868998159884L).b(647613405639625226L); - BufferBuilder.c(4252259215813538217L).b(-6321046233407919643L); - BufferBuilder.c(-8068531108144468334L).b(-1058205760716248627L); - BufferBuilder.c(-2593810014334561277L).b(4521798211446330200L); - BufferBuilder.c(4392729931163719603L).b(-2453502155321200664L); - BufferBuilder.c(8025593977126006083L).b(1772641426053453857L); - BufferBuilder.c(6264880396932245760L).b(-2472360575208206907L); - BufferBuilder.c(2948634760141998247L).b(3635272193364576998L); - BufferBuilder.c(5302147011888912123L).b(8243767557373832708L); - BufferBuilder.c(-1936688372990324825L).b(-2426083905491389081L); - BufferBuilder.c(3326971656882133445L).b(2754698538651039312L); - BufferBuilder.c(9107496756422964517L).b(4613617684773096697L); - BufferBuilder.c(-5224768130141552321L).b(4523033007341572141L); - BufferBuilder.c(-3682074545411096654L).b(-3740958428539952540L); - BufferBuilder.c(-8927724858058609273L).b(6344071190320803382L); - BufferBuilder.c(-6629287294873795416L).b(-5496195804533877027L); - BufferBuilder.c(-8518556946010183344L).b(4727848007576655076L); - BufferBuilder.c(6096661146083878650L).b(-4344855971098433927L); - BufferBuilder.c(-7895323979963328681L).b(6438278601812018505L); - BufferBuilder.c(-676201279594864915L).b(109663846464034963L); - BufferBuilder.c(4923363845669214906L).b(5216562424766746462L); - BufferBuilder.c(-184285724264381972L).b(2627335780617329105L); - BufferBuilder.c(7292360509064818704L).b(8710637406786470356L); - BufferBuilder.c(6913839683339095994L).b(-7572924199665641702L); - BufferBuilder.c(8999022946182785304L).b(3627682332889863122L); - BufferBuilder.c(-4451996213054986980L).b(-3617593417374835603L); - BufferBuilder.c(4097272958758176691L).b(-7338947735632414957L); - BufferBuilder.c(8203069458919683429L).b(-1960386464865577224L); - BufferBuilder.c(2616955989169521290L).b(-7078397253913644146L); - BufferBuilder.c(2737094832975466023L).b(-5227491820025427475L); - BufferBuilder.c(-5775754657923674100L).b(735832087185997793L); - BufferBuilder.c(135344058805693178L).b(-2207641403864833750L); - BufferBuilder.c(-6000394975944021120L).b(-2397481358013042157L); - BufferBuilder.c(-5858739214879683397L).b(5507481816136722569L); - BufferBuilder.c(3141533104497991274L).b(1928533754735922320L); - BufferBuilder.c(7613928078496840404L).b(-7893929727453998639L); - BufferBuilder.c(8059956856451120361L).b(2052011910181711511L); - BufferBuilder.c(-3001430344579671427L).b(1324132691302249613L); - BufferBuilder.c(-3096771532120968693L).b(2858118124939029437L); - BufferBuilder.c(3948624603926959826L).b(-2952093994602136952L); - BufferBuilder.c(-5156421925072987256L).b(4004716920825507189L); - BufferBuilder.c(-5787018398935902836L).b(6881724503754577523L); - BufferBuilder.c(-374279559829010854L).b(3768513218468336713L); - BufferBuilder.c(8253860279622068293L).b(-9075310566104909447L); - BufferBuilder.c(-6006573195861986127L).b(-1145643629642061333L); - BufferBuilder.c(1383866451155199788L).b(-5136569449519282569L); - BufferBuilder.c(-3274940828882656038L).b(3758494773150494614L); - BufferBuilder.c(-8886900576477133956L).b(-6339147561413911976L); - BufferBuilder.c(507632143524984100L).b(-6951535812879707207L); - BufferBuilder.c(9015100006027798842L).b(-4910699034455616022L); - BufferBuilder.c(-7260157005974634947L).b(6050606488984332856L); - BufferBuilder.c(-1808257865256217467L).b(-8876199745658789414L); - BufferBuilder.c(8957722556456034492L).b(7111515242469117248L); - BufferBuilder.c(4350124318831466187L).b(2202964134668035642L); - BufferBuilder.c(3780175465172420511L).b(-3387677170169161880L); - BufferBuilder.c(2940159163186992770L).b(-536992572370015004L); - BufferBuilder.c(2818311731969883267L).b(2063182126462266991L); - BufferBuilder.c(-1676189337994523777L).b(-2759084322044396268L); - BufferBuilder.c(4435885303688393632L).b(-6491476374720507448L); - BufferBuilder.c(9072316965173515560L).b(-2404742876857017878L); - BufferBuilder.c(2838896171596366837L).b(1546915535298740186L); - BufferBuilder.c(4009331295718108593L).b(5327615148662388723L); - BufferBuilder.c(7181034289544013088L).b(-5231797021893867950L); - BufferBuilder.c(4833941924475049767L).b(-8193982881866988156L); - BufferBuilder.c(-4599904662467992429L).b(7540625137378803253L); - BufferBuilder.c(1918648375155674601L).b(-6714509344269210258L); - BufferBuilder.c(-610192967709895001L).b(4059684911914024389L); - BufferBuilder.c(7591437386791518046L).b(-3223318919348773014L); - BufferBuilder.c(2325899218794887490L).b(5845445935271843217L); - BufferBuilder.c(2199336301481579957L).b(8348612111905203595L); - BufferBuilder.c(-4207215742895093844L).b(-7577704313384103757L); - BufferBuilder.c(-3454011861274112408L).b(1093065346249674003L); - BufferBuilder.c(-5728336705253045345L).b(-8024992214285473414L); - BufferBuilder.c(1188763965600288046L).b(-8174709396409125143L); - BufferBuilder.c(536271109980000564L).b(1701754252035619478L); - BufferBuilder.c(-8891078077632653470L).b(-844681284460420004L); - BufferBuilder.c(-1852213617342787380L).b(1699900084103641534L); - BufferBuilder.c(4628669642635937610L).b(-7858165208609451967L); - BufferBuilder.c(4854655812543307917L).b(-8941082663554861793L); - BufferBuilder.c(-5118897629021275585L).b(3526136045640075974L); - BufferBuilder.c(7483977317254456790L).b(3895302083970668895L); - BufferBuilder.c(-2052447288694543280L).b(-5427496033728750856L); - BufferBuilder.c(-4067879091758914314L).b(-6479880230680716873L); - BufferBuilder.c(4514132527051253411L).b(-469929146980028475L); - BufferBuilder.c(-4281941673390311574L).b(-4221596694312305702L); - BufferBuilder.c(847974179364369745L).b(-5438722636223694207L); - BufferBuilder.c(7527129190226278097L).b(-1094908092560389228L); - BufferBuilder.c(5538219386150704247L).b(1603426366827891465L); - BufferBuilder.c(-4319508339752501181L).b(-438353692495672422L); - BufferBuilder.c(-8953162468153143828L).b(1259884257926449885L); - BufferBuilder.c(-6321033323797509569L).b(1876333709936600919L); - BufferBuilder.c(8353712369256647611L).b(-3658682113283542515L); - BufferBuilder.c(-4005487829416699846L).b(9009574836848882962L); - BufferBuilder.c(-2125053586144456451L).b(139740165934650060L); - BufferBuilder.c(-8640949079720656478L).b(3219059906128548458L); - BufferBuilder.c(3504119052237057988L).b(2374755394546039506L); - BufferBuilder.c(-3123277590451372698L).b(-5884473428082062406L); - BufferBuilder.c(1991223898474307540L).b(-8512279316007284400L); - BufferBuilder.c(4099001055226908491L).b(6032246162852131797L); - BufferBuilder.c(3039744067152215864L).b(-6292884105645088694L); - BufferBuilder.c(-3783470629461113909L).b(-415245434369086398L); - BufferBuilder.c(3985279955291983227L).b(338229480224054986L); - BufferBuilder.c(8956439773519698148L).b(2544718823602695191L); - BufferBuilder.c(-6334685377486164631L).b(-7028411348188831811L); - BufferBuilder.c(-3518123707915246766L).b(2656192198167012314L); - BufferBuilder.c(6704960052676515266L).b(-5300487957179412582L); - BufferBuilder.c(209835989992986501L).b(-1378928929521909715L); - BufferBuilder.c(-385980712800511639L).b(5033516523626163977L); - BufferBuilder.c(-287739776203127483L).b(-8910359076127439733L); - BufferBuilder.c(-857201028570517619L).b(-9158118528919248827L); - BufferBuilder.c(134219271324239153L).b(-2273132438512159005L); - BufferBuilder.c(-136485575400884180L).b(8726972439401766738L); - BufferBuilder.c(-3156248117093217338L).b(-7708260534918290774L); - BufferBuilder.c(-4445815209287853446L).b(2152030649341655079L); - BufferBuilder.c(4353227211471731802L).b(-1896590992115444179L); - BufferBuilder.c(6829741492553821249L).b(5896602754629057235L); - BufferBuilder.c(-7369574417933384407L).b(-2315213550764458907L); - BufferBuilder.c(-6974411990630531705L).b(1869658571745693943L); - BufferBuilder.c(-3481303325938424636L).b(-8849948015661974985L); - BufferBuilder.c(1950154383442318291L).b(4166754158659454019L); - BufferBuilder.c(1670182921038826909L).b(-7228038567793986431L); - BufferBuilder.c(-8268160667446260675L).b(-573475663308482318L); - BufferBuilder.c(8443696548298801435L).b(7594603618596639496L); - BufferBuilder.c(2474457089723835384L).b(4521338246041441131L); - BufferBuilder.c(7855161441001637371L).b(-3852249998288179387L); - BufferBuilder.c(-2695208413436670208L).b(-2435860321374843972L); - BufferBuilder.c(5059454501046314793L).b(6422149947547544724L); - BufferBuilder.c(6468588141399674468L).b(-8221261800240351829L); - BufferBuilder.c(8226778711117288147L).b(-6590643007026951006L); - BufferBuilder.c(-989373905425722125L).b(6056682805562384225L); - BufferBuilder.c(8486439914453484390L).b(-8812385728186895727L); - BufferBuilder.c(-2838296255574054631L).b(8804161148140326639L); - BufferBuilder.c(6488519418352078354L).b(5915938137612156242L); - BufferBuilder.c(-354838633700998540L).b(2979626374251207424L); - BufferBuilder.c(-6456438707928995496L).b(-1994099895353918460L); - BufferBuilder.c(-850415946248036339L).b(-7020125636460452087L); - BufferBuilder.c(-5810216177976806764L).b(2987801616504650698L); - BufferBuilder.c(5756957239427136998L).b(-2791649328568052416L); - BufferBuilder.c(562158953005120431L).b(-6132210526162046541L); - BufferBuilder.c(-7564016012379008006L).b(-3730211338395703751L); - BufferBuilder.c(7716667519963807188L).b(-1567328262031732276L); - BufferBuilder.c(-7359825676933100065L).b(742808534887284067L); - BufferBuilder.c(-8938415972710837535L).b(-6587634413217735035L); - BufferBuilder.c(-577955934177630453L).b(2285146327938967290L); - BufferBuilder.c(-5823712755461206556L).b(-6313659471330174544L); - BufferBuilder.c(5653552562569545271L).b(-3574383335872768858L); - BufferBuilder.c(2482099211703148900L).b(8859410652342054362L); - BufferBuilder.c(1436411448308381080L).b(-361162780015018338L); - BufferBuilder.c(8255744655048996414L).b(-6915214329484992375L); - BufferBuilder.c(-7711661167961886421L).b(-7231651147952829241L); - BufferBuilder.c(-3904228676195585112L).b(129261311910778993L); - BufferBuilder.c(2581523811945349538L).b(-3334896270488790198L); - BufferBuilder.c(8530392904622889542L).b(-7375879238019579903L); - BufferBuilder.c(3200395779698749121L).b(-1963506712887097643L); - BufferBuilder.c(3126360316113832310L).b(1204028289463345890L); - BufferBuilder.c(8640424891526797013L).b(-4009228959499821454L); - BufferBuilder.c(-3338527750430150203L).b(5628112548543857288L); - BufferBuilder.c(-7674393720540791811L).b(-6839416183837520531L); - BufferBuilder.c(3074940005310835725L).b(-4135029205256232220L); - BufferBuilder.c(548500740435226136L).b(-4665793070497614692L); - BufferBuilder.c(2072962692455970092L).b(5656669971391404929L); - BufferBuilder.c(-2194971337681748231L).b(-7330570310180153557L); - BufferBuilder.c(-8630014470513377256L).b(8576913032930922100L); - BufferBuilder.c(-1171885614172554046L).b(5890657585710805907L); - BufferBuilder.c(-1075032562858966170L).b(8030016158774391954L); - BufferBuilder.c(-1644679040489265094L).b(7382081092074228254L); - BufferBuilder.c(6556895149574198375L).b(-507500874151514902L); - BufferBuilder.c(6217570287624776396L).b(1450244640219119795L); - BufferBuilder.c(1233083947472847684L).b(5804524415498617511L); - BufferBuilder.c(8541107009546375211L).b(-5741007085645495734L); - BufferBuilder.c(805711759057026647L).b(-8103629889140070127L); - BufferBuilder.c(9051051319537324641L).b(3005687932362552188L); - BufferBuilder.c(7983237388834485099L).b(8181714191701761678L); - BufferBuilder.c(-2847461774459327905L).b(4139047986404764923L); - BufferBuilder.c(-1933679592138048486L).b(-1471382068920119703L); - BufferBuilder.c(-944290641205141437L).b(4241137761074108830L); - BufferBuilder.c(5369552469682963385L).b(8306663478304011378L); - BufferBuilder.c(2109979476395718415L).b(-4032793748371791266L); - BufferBuilder.c(3051580964959595422L).b(-7252677485886470306L); - BufferBuilder.c(6986104036644567685L).b(5436919774501343536L); - BufferBuilder.c(1994186691863530610L).b(-6951479726011279438L); - BufferBuilder.c(2231085198837677244L).b(6855557248843871973L); - BufferBuilder.c(-7213097441751191982L).b(4055885210563137999L); - BufferBuilder.c(8755606476373367639L).b(-8756219626538037817L); - BufferBuilder.c(-697131569904893773L).b(-2836071083350008035L); - BufferBuilder.c(-8224390174289173987L).b(-642251149824074977L); - BufferBuilder.c(-8862694745058728779L).b(-2881092085541716609L); - BufferBuilder.c(7828813238505259981L).b(3050509340231790737L); - BufferBuilder.c(-1687229138170394931L).b(2068028494656910609L); - BufferBuilder.c(6115102778944394052L).b(-3947371169408764445L); - BufferBuilder.c(8069682136221286023L).b(-6186593001417123537L); - BufferBuilder.c(2712088433119615007L).b(710745609059021315L); - BufferBuilder.c(6861656459361434559L).b(-3886954876282577048L); - BufferBuilder.c(-5459387802029532669L).b(4358211098681921526L); - BufferBuilder.c(3591795020706141397L).b(-3781026287477456594L); - BufferBuilder.c(-2267114883647618739L).b(6022149309237178441L); - BufferBuilder.c(8884089838121695731L).b(-3031916599586818176L); - BufferBuilder.c(-1767365383708245537L).b(4579967963268412886L); - BufferBuilder.c(7110164805505601512L).b(6280394531743455204L); - BufferBuilder.c(5438982298519922504L).b(-3978233778211651358L); - BufferBuilder.c(5784528616977081506L).b(7108776566756027382L); - BufferBuilder.c(4687636635909005923L).b(6638288699830425515L); - BufferBuilder.c(1721128515204371152L).b(1820734773261626096L); - BufferBuilder.c(3621951230891872947L).b(-4031736720629023207L); - BufferBuilder.c(-378201049579441884L).b(-7673584758944472894L); - BufferBuilder.c(-5535859507719322220L).b(-2622642975863641719L); - BufferBuilder.c(8067776551731783021L).b(-5482325657245768102L); - BufferBuilder.c(-5078759505238638839L).b(-3618154824341361673L); - BufferBuilder.c(3376013825362227126L).b(8036971803105800198L); - BufferBuilder.c(1577914332436113196L).b(1354173428093343049L); - BufferBuilder.c(1179307747067137016L).b(5004798150752722460L); - BufferBuilder.c(5780705566427550884L).b(1786599130898922375L); - BufferBuilder.c(-2163067991742362610L).b(-8716798687361365458L); - BufferBuilder.c(8575090203831747339L).b(-7478413056746409924L); - BufferBuilder.c(-7417889782631044181L).b(-7227471351835091769L); - BufferBuilder.c(3385967634285696341L).b(-4352037858757541345L); - BufferBuilder.c(9082148732115416460L).b(7151434111276425064L); - BufferBuilder.c(8462580628192824806L).b(2052377876125332064L); - BufferBuilder.c(-8940725489575788522L).b(2207461856241787066L); - BufferBuilder.c(2124853510088785057L).b(-3920532009449933228L); - BufferBuilder.c(-7154888668880348633L).b(-3776194685514938518L); - BufferBuilder.c(1172429742843026813L).b(393480510034920250L); - BufferBuilder.c(-3057951231231027949L).b(6835097514832218305L); - BufferBuilder.c(554354415092423622L).b(4507772074056387185L); - BufferBuilder.c(-8527731775068243939L).b(-4096470375824761704L); - BufferBuilder.c(3179534354250609285L).b(6680611388658004747L); - BufferBuilder.c(4844923408701665646L).b(5398931845480109433L); - BufferBuilder.c(2698396877529371397L).b(6095887738940434630L); - BufferBuilder.c(6604009592117900940L).b(1944609415626861937L); - BufferBuilder.c(3469433181900547418L).b(-7947776357996483480L); - BufferBuilder.c(8337356348568765499L).b(-8291633700828596920L); - BufferBuilder.c(-8834930257068131148L).b(7223419937352831350L); - BufferBuilder.c(7417181296675508953L).b(750728705518915423L); - BufferBuilder.c(-8904765430646529313L).b(3537397432639292325L); - BufferBuilder.c(-6816127065071157776L).b(7996504675555188781L); - BufferBuilder.c(-4224311470606001463L).b(1555975595630763111L); - BufferBuilder.c(7431008166693426590L).b(-8166265120763076655L); - BufferBuilder.c(4352397194671861295L).b(-4353655980642024859L); - BufferBuilder.c(-2946079281996949770L).b(-7206047188342265368L); - BufferBuilder.c(3033890288086627145L).b(1540870035284022859L); - BufferBuilder.c(5024509849901682283L).b(576321186866420037L); - BufferBuilder.c(4300842727859555726L).b(-2256453019453750095L); - BufferBuilder.c(9222461777389697958L).b(-1035156652178910222L); - BufferBuilder.c(-3511871995718173942L).b(-2175498585286565590L); - BufferBuilder.c(6226733391319852348L).b(6706781977740258161L); - BufferBuilder.c(7908490381532813945L).b(395414214676576716L); - BufferBuilder.c(-7703934696868908992L).b(-4426151026585672195L); - BufferBuilder.c(904900497802421640L).b(2575394257452142550L); - BufferBuilder.c(8796084824170477476L).b(-7831496603381335812L); - BufferBuilder.c(-3152323300245029529L).b(6295932566021597366L); - BufferBuilder.c(-1278358754012016514L).b(381714954272836656L); - BufferBuilder.c(562938450811709484L).b(-5137202913657279945L); - BufferBuilder.c(-2016173870630177352L).b(-1797503355178959323L); - BufferBuilder.c(-6218660721968237494L).b(695441222577644587L); - BufferBuilder.c(-2638658893227952275L).b(5205365009691005915L); - BufferBuilder.c(9204357213215228031L).b(7519179389381160211L); - BufferBuilder.c(203790798144931899L).b(-6923799000282793803L); - BufferBuilder.c(7402621484798615100L).b(-3114259808105184068L); - BufferBuilder.c(-4981207563574224275L).b(-7367181018117914918L); - BufferBuilder.c(1483915382477986300L).b(-6220112501434816468L); - BufferBuilder.c(-8299969626548403801L).b(-6528232996823605658L); - BufferBuilder.c(4734429618331394587L).b(6198804761175198601L); - BufferBuilder.c(-4874166705028740454L).b(4937802421536746454L); - BufferBuilder.c(-4694796741182564304L).b(-3515825957906844233L); - BufferBuilder.c(6556514473903365901L).b(147772771162696205L); - BufferBuilder.c(582283897812142819L).b(2227243661482809680L); - BufferBuilder.c(-8245578293372068620L).b(3146519120919140193L); - BufferBuilder.c(3114750004592278183L).b(-8202804497661159679L); - BufferBuilder.c(-8741214593520313451L).b(1145200135012557909L); - BufferBuilder.c(6416753186990783434L).b(3898031505732991285L); - BufferBuilder.c(7810745020069898626L).b(2484723545306644758L); - BufferBuilder.c(-1789209926761755707L).b(4408988086585596240L); - BufferBuilder.c(5713788843050424941L).b(1897430879651509810L); - BufferBuilder.c(8959598306289393501L).b(-316313348378774233L); - BufferBuilder.c(-2916918425552000613L).b(6127188324918102116L); - BufferBuilder.c(-2633352694979232000L).b(4042839257237453022L); - BufferBuilder.c(1724030550551949461L).b(-8009172336706827031L); - BufferBuilder.c(-6218792124959133390L).b(-5578351117335395637L); - BufferBuilder.c(-559819465025498484L).b(1982873686098282873L); - BufferBuilder.c(-9070038928697482554L).b(-8094993978830002805L); - BufferBuilder.c(-5140160547783307483L).b(-8310867571188872658L); - BufferBuilder.c(-419786799092160594L).b(-1136525753899471912L); - BufferBuilder.c(-2848136351256777881L).b(-6291357214986407638L); - BufferBuilder.c(-4445296107887305395L).b(-7293168476164634091L); - BufferBuilder.c(-2256894305642668307L).b(766582943228561880L); - BufferBuilder.c(7248017125541109136L).b(-7131455385054970447L); - BufferBuilder.c(-4259071070166039479L).b(-3440884105116960438L); - BufferBuilder.c(5274860956889160549L).b(-714180984835185996L); - BufferBuilder.c(-2529635288157738656L).b(-1398507834760237022L); - BufferBuilder.c(-3596236961036621702L).b(3479970941561485561L); - BufferBuilder.c(-6262437775550591369L).b(-4630768740998645326L); - BufferBuilder.c(-8029096742710402633L).b(-2019454874226061827L); - BufferBuilder.c(-53114082218223094L).b(-6554343363031560419L); - BufferBuilder.c(5572581337911195191L).b(6014281998135206155L); - BufferBuilder.c(866414243384883363L).b(-4921836887776803873L); - BufferBuilder.c(7245640902958289699L).b(5639830125043835405L); - BufferBuilder.c(4938539555300065459L).b(3929814348156708491L); - BufferBuilder.c(4375692486289609416L).b(8095690493662856504L); - BufferBuilder.c(3228665327848647264L).b(7047029613713393473L); - BufferBuilder.c(7529127146039263769L).b(-4337790721112927603L); - BufferBuilder.c(2080967094497336139L).b(-4131347853475596470L); - BufferBuilder.c(4330493107321690821L).b(2153390839036649981L); - BufferBuilder.c(-5142084847533507529L).b(2308415522843717128L); - BufferBuilder.c(7710102270978275050L).b(6294512325628527241L); - BufferBuilder.c(3021065116695756018L).b(129535437722916815L); - BufferBuilder.c(1595647255519326827L).b(-3345008635113961058L); - BufferBuilder.c(-5851801352255323136L).b(7132232971876974882L); - BufferBuilder.c(-4529062008429765420L).b(-6448337922114318730L); - BufferBuilder.c(1946034441046789603L).b(-2869541372488057482L); - BufferBuilder.c(2297508333643851830L).b(-5162704409245756330L); - BufferBuilder.c(9222344071738456681L).b(-5683186997317435265L); - BufferBuilder.c(-4942268279088418669L).b(7115594080837273545L); - BufferBuilder.c(-499548088427958238L).b(-4068580077156171054L); - BufferBuilder.c(-7541367115084449349L).b(-604187526957279977L); - BufferBuilder.c(-2843766860521093384L).b(81821826005217463L); - BufferBuilder.c(8751852586882512497L).b(-8759668792530370858L); - BufferBuilder.c(198220682696224872L).b(-4820681735034975932L); - BufferBuilder.c(-2256439105964419367L).b(5933860301271475342L); - BufferBuilder.c(2976369917707647775L).b(-7479566631429214315L); - BufferBuilder.c(-7055203616897761553L).b(-3541067741080286630L); - BufferBuilder.c(4705762120827918943L).b(1562406786573105259L); - BufferBuilder.c(2850009228461103049L).b(7509079901703196200L); - BufferBuilder.c(-5892094117162449732L).b(2488734934597736418L); - BufferBuilder.c(-7388920056655592054L).b(-2717943771337356731L); - BufferBuilder.c(-2955718546774188349L).b(-1852344532254565583L); - BufferBuilder.c(-4598194906924485134L).b(4969761995836966051L); - BufferBuilder.c(462585489463576975L).b(3580593639863115478L); - BufferBuilder.c(-4494707531976488687L).b(6512263122815954974L); - BufferBuilder.c(3291265519361718870L).b(-919540492674664397L); - BufferBuilder.c(7568100304648553874L).b(372641230344507034L); - BufferBuilder.c(-8714042911129067465L).b(-2324524825209844565L); - BufferBuilder.c(6557867314342666316L).b(27785887947324384L); - BufferBuilder.c(-1296929793902235252L).b(325484000827192359L); - BufferBuilder.c(1005213366016723523L).b(-5467929672209782800L); - BufferBuilder.c(7555421857558727527L).b(690776643524885410L); - BufferBuilder.c(-5104297308041710491L).b(4189751132158271414L); - BufferBuilder.c(3872920025520472818L).b(5258017620668659800L); - BufferBuilder.c(8382831810607036173L).b(5104259645390359211L); - BufferBuilder.c(7584205814858138609L).b(7480295599316755421L); - BufferBuilder.c(668321091936190793L).b(-8332810632125619904L); - BufferBuilder.c(-4251297345388336554L).b(-5131035797317577097L); - BufferBuilder.c(6213442561338393483L).b(4961718890754816034L); - BufferBuilder.c(6016027952638608950L).b(-7486023874422780646L); - BufferBuilder.c(1482825276986950363L).b(5097915139123682711L); - BufferBuilder.c(-7450666773776079675L).b(4801920667289542288L); - BufferBuilder.c(-2770235465170785694L).b(4178090700704216640L); - BufferBuilder.c(1294094472941564346L).b(2076616694092397553L); - BufferBuilder.c(-794416920284290923L).b(2452196946787062268L); - BufferBuilder.c(-2988439039317551779L).b(806281163505347488L); - BufferBuilder.c(-9211242772214241482L).b(-521408913907590909L); - BufferBuilder.c(7974423053617214602L).b(-1761213719504640378L); - BufferBuilder.c(-5383485217404904943L).b(6622560166971638272L); - BufferBuilder.c(-748541905538131588L).b(937261744167237176L); - BufferBuilder.c(4022275966517173119L).b(-7800378325856685318L); - BufferBuilder.c(-8299344543870413040L).b(-3476469174286623898L); - BufferBuilder.c(-2111456980403779073L).b(-5733291624611241964L); - BufferBuilder.c(8005011013347816287L).b(6482061026346671625L); - BufferBuilder.c(1497707654702376706L).b(2627980288043955861L); - BufferBuilder.c(4073596761488714645L).b(-5428927711678494626L); - BufferBuilder.c(5516582033593702935L).b(-8839105086103800490L); - BufferBuilder.c(8148753585751585198L).b(8066546381934959303L); - BufferBuilder.c(-2534510473587584961L).b(8277238971720695221L); - BufferBuilder.c(4634462488250085943L).b(4088815996889845050L); - BufferBuilder.c(-4278653789713114330L).b(1402609909407346858L); - BufferBuilder.c(-925998240565568803L).b(776938005565001940L); - BufferBuilder.c(-6767465346652095591L).b(1913789806457072283L); - BufferBuilder.c(-5597420690538051545L).b(-4335845488748254664L); - BufferBuilder.c(-8851793472893970127L).b(-6205933830952458821L); - BufferBuilder.c(7152886800185879305L).b(-8228060871919720310L); - BufferBuilder.c(-5689150158584515524L).b(-1398983575784554698L); - BufferBuilder.c(-7408468093887264927L).b(1540100654680007331L); - BufferBuilder.c(5411435294452092630L).b(-3485742655067967763L); - BufferBuilder.c(6037220609353430001L).b(5377390195486966565L); - BufferBuilder.c(1265339478180494885L).b(-5687254055540986426L); - BufferBuilder.c(1887757279930813197L).b(-2651701304120328732L); - BufferBuilder.c(4108484346118260722L).b(-8143224986303467605L); - BufferBuilder.c(3150038202464340820L).b(-7671918625428588927L); - BufferBuilder.c(6105862004157896151L).b(7155261336472393346L); - BufferBuilder.c(-2065175048987796848L).b(-3789222001354114220L); - BufferBuilder.c(3976161756833272185L).b(-3535946994912729995L); - BufferBuilder.c(5615778748157777536L).b(-4096297078414489186L); - BufferBuilder.c(383791274828559247L).b(-4685672242949327152L); - BufferBuilder.c(-2068749787595717337L).b(-6555259109745781961L); - BufferBuilder.c(1731744803198430884L).b(-2822525743976915656L); - BufferBuilder.c(-1725098436960750884L).b(220490445437372561L); - BufferBuilder.c(-4297663104087793191L).b(-8719310135890014620L); - BufferBuilder.c(3945454027817245010L).b(8836850489637802256L); - BufferBuilder.c(941725680730303173L).b(-3976821617701714585L); - BufferBuilder.c(-3226467878351036580L).b(5637827836980288622L); - BufferBuilder.c(7135182174609462844L).b(-2784717241211095354L); - BufferBuilder.c(-4737330819010099102L).b(-7032951643214769521L); - BufferBuilder.c(-7407498164952319225L).b(1829766823865505201L); - BufferBuilder.c(-1820119239015162223L).b(8971261537803408336L); - BufferBuilder.c(2852285104648356454L).b(-5646843493898001469L); - BufferBuilder.c(-256287785847833290L).b(2334148565031045169L); - BufferBuilder.c(-2786303134639501312L).b(3292344582117760527L); - BufferBuilder.c(-2234761130158345996L).b(2025540624416440491L); - BufferBuilder.c(3782792435624311454L).b(6403425303760612369L); - BufferBuilder.c(-3023670709625122048L).b(-4705024137283155193L); - BufferBuilder.c(-8461364654828645803L).b(-2221569162117846213L); - BufferBuilder.c(3703372499722805569L).b(2667857893334319217L); - BufferBuilder.c(5344472703443756520L).b(-4887286547407773565L); - BufferBuilder.c(3351517113298796632L).b(-2428796874595813497L); - BufferBuilder.c(5637375758043204279L).b(3294946638602023430L); - BufferBuilder.c(108130418403020651L).b(-8860291683899578364L); - BufferBuilder.c(5282273813835516785L).b(6534013323325191383L); - BufferBuilder.c(1081938250871417582L).b(-8352023368100490904L); - BufferBuilder.c(77108080501768712L).b(8324333448563878035L); - BufferBuilder.c(-1397864648340394505L).b(72333891886548281L); - BufferBuilder.c(-5615270168687072993L).b(-7488105022990164610L); - BufferBuilder.c(-6064865351695805177L).b(1565281023029561843L); - BufferBuilder.c(-5927031011805866752L).b(3204317126371082909L); - BufferBuilder.c(-2323095915354860961L).b(2335239627949690538L); - BufferBuilder.c(-2524973899244730773L).b(8986603205992553196L); - BufferBuilder.c(930148058413728863L).b(-9166112474589839067L); - BufferBuilder.c(-7604825485837883124L).b(-7363384635874690533L); - BufferBuilder.c(-3803368267795413733L).b(-7134265565296142096L); - BufferBuilder.c(822624998292037907L).b(6524941969391944515L); - BufferBuilder.c(2814426575387827701L).b(447598053099151884L); - BufferBuilder.c(-1132911781308204882L).b(-3263481199442747049L); - BufferBuilder.c(7486312999015609147L).b(5686375572638203002L); - BufferBuilder.c(6845750916740421363L).b(-3930820922679114110L); - BufferBuilder.c(-1145418274140824058L).b(6097483088248464061L); - BufferBuilder.c(-2726184383113139118L).b(2353270141030789208L); - BufferBuilder.c(-4976139396386861621L).b(-303446804544159030L); - BufferBuilder.c(-4833639952383682523L).b(1633546325955246248L); - BufferBuilder.c(-5393159496562964331L).b(-4532698905890862134L); - BufferBuilder.c(8578016105673329562L).b(-3798374483130821559L); - BufferBuilder.c(5810577030174684164L).b(1994176622727137935L); - BufferBuilder.c(830749366789263926L).b(1143825965582654760L); - BufferBuilder.c(7108630420853897735L).b(408145168815004807L); - BufferBuilder.c(-7406913874568043739L).b(-6661421829688919136L); - BufferBuilder.c(-1264411758356256186L).b(5655760434936864435L); - BufferBuilder.c(-7362731078648060379L).b(1412891740242204566L); - BufferBuilder.c(1544787451781170779L).b(1766605934750303415L); - BufferBuilder.c(-5025277654809885026L).b(-8214708142346211419L); - BufferBuilder.c(-7772959943502866804L).b(864220130507518602L); - BufferBuilder.c(-8022477672414239411L).b(-534747657883874019L); - BufferBuilder.c(-4742467975407165083L).b(1702596562122656569L); - BufferBuilder.c(6236849515927004459L).b(-7385660133495169625L); - BufferBuilder.c(-7852337461433025672L).b(62212309036744031L); - BufferBuilder.c(2353215613037303281L).b(-3250880505211119705L); - BufferBuilder.c(1146471931202729953L).b(-2918534025086707276L); - BufferBuilder.c(3656054283656611345L).b(-3485595517846691174L); - BufferBuilder.c(5614308322484853142L).b(-6480908232881478707L); - BufferBuilder.c(2764728633872644659L).b(-7463301844905624071L); - BufferBuilder.c(8119898006271475791L).b(-6334121124339058077L); - BufferBuilder.c(-1424810765294483832L).b(-5535765269936202964L); - BufferBuilder.c(-7828863537714141253L).b(1264739292358014347L); - BufferBuilder.c(8348272510982176471L).b(-3705295609520973987L); - BufferBuilder.c(-6998789275325542277L).b(-8499060684536680170L); - BufferBuilder.c(9193922215249891811L).b(6813731181168487710L); - BufferBuilder.c(-5208136352593335973L).b(-6146173729922586865L); - BufferBuilder.c(5104707734620009469L).b(8342773677693086040L); - BufferBuilder.c(6728981484510348530L).b(6602488705734868938L); - BufferBuilder.c(-4166927326173560823L).b(6227789501223114073L); - BufferBuilder.c(6804179825164005866L).b(-6120156681267202308L); - BufferBuilder.c(-8852082801046920960L).b(-4067758157626856135L); - BufferBuilder.c(-8494566723562989519L).b(8959421803091227607L); - BufferBuilder.c(8530836657414369585L).b(-7726308979485428490L); - BufferBuilder.c(7676026271381982799L).b(536847404391763395L); - BufferBuilder.c(-5789660792812445892L).b(-3643485237968513637L); - BufferBuilder.c(-6684657150332249256L).b(7099049397206537273L); - BufferBuilder.c(5877620829495223198L).b(-4649077301180896046L); - BufferBuilder.c(-1324549690662297244L).b(-3501410558744908973L); - BufferBuilder.c(3287876784878497707L).b(4083976565858150160L); - BufferBuilder.c(5260419981125870777L).b(-7158666642750863056L); - BufferBuilder.c(-6521269230084292321L).b(2148319331772927541L); - BufferBuilder.c(3778908972560058224L).b(4513791184349989875L); - BufferBuilder.c(-2755489209550783043L).b(-6792121818834645980L); - BufferBuilder.c(5095736693502830487L).b(7246186301195857808L); - BufferBuilder.c(-2038954103219409615L).b(-2453804707469978188L); - BufferBuilder.c(5327019581793722057L).b(5736351393366597713L); - BufferBuilder.c(-1244318741712826621L).b(-4405447377783269643L); - BufferBuilder.c(1496509707920897589L).b(-2792107618156077636L); - BufferBuilder.c(5463164419645899709L).b(-9208323476760770105L); - BufferBuilder.c(4118126429116592712L).b(-5760478727354552722L); - BufferBuilder.c(-2827888866111383652L).b(8725370671701271805L); - BufferBuilder.c(-7025004032624316174L).b(-5740623129399311062L); - BufferBuilder.c(7951293870907161205L).b(-4822237405678885207L); - BufferBuilder.c(-231221534174048150L).b(-5027680470665313918L); - BufferBuilder.c(562778454269962816L).b(1688243141658074388L); - BufferBuilder.c(3689324601162595583L).b(3737252502909374312L); - BufferBuilder.c(-530483337032205771L).b(2676053123874454019L); - BufferBuilder.c(-4194762609938646453L).b(6904886817718895396L); - BufferBuilder.c(1966173244306918343L).b(1449990707682523024L); - BufferBuilder.c(-6914016954217530897L).b(-381847182299848246L); - BufferBuilder.c(1790306392288737274L).b(8669074881800860234L); - BufferBuilder.c(5549054441806549437L).b(-195556078387001444L); - BufferBuilder.c(-8915648716932053102L).b(-3229236363618798900L); - BufferBuilder.c(8044404358340463064L).b(-8412241782467665685L); - BufferBuilder.c(-6839198005826245708L).b(5776011591221824560L); - BufferBuilder.c(-2291386059426432965L).b(-4598860480676701537L); - BufferBuilder.c(-150237177545292614L).b(3030549552259426059L); - BufferBuilder.c(-3122066942757270627L).b(-8095794954868733593L); - BufferBuilder.c(8665050111412190057L).b(-8381510600009494519L); - BufferBuilder.c(-4740381640052014758L).b(-3431936761867036484L); - BufferBuilder.c(-6094612047692545000L).b(-5867871083680202760L); - BufferBuilder.c(-8315241877547970984L).b(3071417241230184586L); - BufferBuilder.c(-8202481865284021383L).b(-6708616010535487605L); - BufferBuilder.c(-4535567124653128798L).b(5219714748361590664L); - BufferBuilder.c(414545290804145935L).b(-4527252712457205637L); - BufferBuilder.c(9176591389313781824L).b(-1260671700490079501L); - BufferBuilder.c(-2254477109301811151L).b(-383040476734626105L); - BufferBuilder.c(-7331287671312531526L).b(5028547284932160057L); - BufferBuilder.c(25871167917385017L).b(-8220918321168639374L); - BufferBuilder.c(-3482391306280842043L).b(1427686008822638053L); - BufferBuilder.c(8922522243786549616L).b(1550070881062154679L); - BufferBuilder.c(3283802686931392641L).b(3163087876447335352L); - BufferBuilder.c(3193212150309687922L).b(-3216238424358286583L); - BufferBuilder.c(-3145996246505533721L).b(-3199805554270024937L); - BufferBuilder.c(827541589706304044L).b(-437290035268124357L); - BufferBuilder.c(2143605267463213441L).b(6557365115350586133L); - BufferBuilder.c(7763391269438677555L).b(-7010244317623641030L); - BufferBuilder.c(1096808501127729724L).b(-4321264774187777548L); - BufferBuilder.c(6105135349428619147L).b(866553943940328138L); - BufferBuilder.c(1685219989486362714L).b(-1205908483614914874L); - BufferBuilder.c(7794193308004716411L).b(-2903070867021819639L); - BufferBuilder.c(-6336446953316287050L).b(4807690126420249555L); - BufferBuilder.c(-808483964778283980L).b(1849578509302491444L); - BufferBuilder.c(8640430941670988619L).b(-5676765415206518891L); - BufferBuilder.c(5080164871312000194L).b(4246407939069594834L); - BufferBuilder.c(-2119711537406879689L).b(-4863237643974161806L); - BufferBuilder.c(-2572093894493551291L).b(4944034060149238546L); - BufferBuilder.c(8541620454177374671L).b(801562203379419805L); - BufferBuilder.c(-7339929402420043852L).b(-4192987129446046111L); - BufferBuilder.c(-5168955652363193417L).b(9098837796175971960L); - BufferBuilder.c(8589742852395072089L).b(7370948594739229340L); - BufferBuilder.c(-7682797156724825915L).b(-9213963127003941611L); - BufferBuilder.c(7626580558040570481L).b(8715346216888883017L); - BufferBuilder.c(1299752038143540332L).b(-4489135932791091460L); - BufferBuilder.c(-8141139073308466993L).b(5941928886567491261L); - BufferBuilder.c(9202504407335564608L).b(5346287932826819181L); - BufferBuilder.c(-7248501121723426729L).b(6071918953906466893L); - BufferBuilder.c(-5017808572002952136L).b(886123105151702921L); - BufferBuilder.c(-6461650442708092311L).b(-9031061241276971355L); - BufferBuilder.c(1276049364233743566L).b(3578426325822843970L); - BufferBuilder.c(-8747213986782187335L).b(5847908201177219421L); - BufferBuilder.c(6760673408077853202L).b(-3832227454633372847L); - BufferBuilder.c(2639530775197139996L).b(-2968417077586326745L); - BufferBuilder.c(-5086469280440490815L).b(6160578936080989079L); - BufferBuilder.c(4834481797018063286L).b(5882558841566302195L); - BufferBuilder.c(4026124113686210776L).b(-5474637889582888142L); - BufferBuilder.c(-2584482242516753996L).b(-2762759002161088971L); - BufferBuilder.c(-5072467982389738920L).b(5331819836323114514L); - BufferBuilder.c(-4825998368913239840L).b(-2226019417505298235L); - BufferBuilder.c(-5174247260379140146L).b(-2787815901893553633L); - BufferBuilder.c(-7905514920960488443L).b(1793964620547692887L); - BufferBuilder.c(130897064489258667L).b(4671952880640501628L); - BufferBuilder.c(-4446076426733884014L).b(-8309751657522969502L); - BufferBuilder.c(-5656122997760779827L).b(-5569895683358745630L); - BufferBuilder.c(6423509275150423744L).b(-8510605605575997658L); - BufferBuilder.c(6332573532319029566L).b(1890599092811611020L); - BufferBuilder.c(-2905396019703770523L).b(3121319068288032184L); - BufferBuilder.c(-489705959048287065L).b(-6488843036831824584L); - BufferBuilder.c(7598515041891181980L).b(-6530044110940570624L); - BufferBuilder.c(-7062502280177137089L).b(-7195892003132080860L); - BufferBuilder.c(-7672562920116718542L).b(-6921897904029465971L); - BufferBuilder.c(9189304404653879788L).b(191824058855239766L); - BufferBuilder.c(5733451411946520608L).b(-2084754256322305516L); - BufferBuilder.c(1185236882579274364L).b(7397293839786481809L); - BufferBuilder.c(3849835725692892752L).b(-2635820081229156652L); - BufferBuilder.c(-4223361049313962675L).b(7177971034576072062L); - BufferBuilder.c(5005497062138077841L).b(-2679901289801152404L); - BufferBuilder.c(-274521624913377248L).b(-7803631717151240488L); - BufferBuilder.c(-2500371108312385579L).b(-9088021747387006354L); - BufferBuilder.c(5139821722744444835L).b(-1782753655995708305L); - BufferBuilder.c(-6728617011069250977L).b(5425177000321134593L); - BufferBuilder.c(-2235194285475165829L).b(2122934427522359613L); - BufferBuilder.c(-2168284712142747061L).b(-2505553478094484437L); - BufferBuilder.c(7225506763107174784L).b(1430864592961210780L); - BufferBuilder.c(-3873432424513502060L).b(1483480013622116879L); - BufferBuilder.c(1132035216530289401L).b(-5113164895578297872L); - BufferBuilder.c(-937988372821397428L).b(-3660609909484903945L); - BufferBuilder.c(5270558166850803787L).b(-38945352023299768L); - BufferBuilder.c(3095524557896024253L).b(-3119525098769685242L); - BufferBuilder.c(5581779200858338645L).b(-6041354888544822930L); - BufferBuilder.c(6602613527964899493L).b(-7679512513017270697L); - BufferBuilder.c(3642486992705897191L).b(4284922625015425918L); - BufferBuilder.c(2629279780351771058L).b(-8249422017486013150L); - BufferBuilder.c(-3693549261610211028L).b(1865964265916869656L); - BufferBuilder.c(-4662745559605930224L).b(-2742607404728771703L); - BufferBuilder.c(-2033736956842225736L).b(658738731005724698L); - BufferBuilder.c(-2170469319803567784L).b(-6938268833769098262L); - BufferBuilder.c(4087026604104152847L).b(8114204653281580882L); - BufferBuilder.c(8576757036521076687L).b(6881256050016033810L); - BufferBuilder.c(-1126978924363424093L).b(8071954582885611302L); - BufferBuilder.c(-1305480831065783374L).b(1415871574038838361L); - BufferBuilder.c(-4264027502909096761L).b(3291476443320278120L); - BufferBuilder.c(8100699956925678848L).b(-1166793026536913713L); - BufferBuilder.c(5646452041104523058L).b(-2762696632301714418L); - BufferBuilder.c(5182262768055004212L).b(5407677875704616520L); - BufferBuilder.c(1420541125341456514L).b(5707746613694988719L); - BufferBuilder.c(5647716896214935055L).b(-3483417681832540571L); - BufferBuilder.c(-1623103208758238230L).b(-5001118790531390622L); - BufferBuilder.c(-4928058727259446800L).b(6106852699338001348L); - BufferBuilder.c(-8946675519946831393L).b(-3137157043347476919L); - BufferBuilder.c(-7003623521313692453L).b(-7976660337047738565L); - BufferBuilder.c(3300527238070736043L).b(-7286733366895742107L); - BufferBuilder.c(2171716425855630760L).b(-8924141125589096750L); - BufferBuilder.c(-5424921019359470207L).b(1468872713362785169L); - BufferBuilder.c(-4675990906062662127L).b(780500324040626214L); - BufferBuilder.c(-8618564078227046848L).b(3176813040705025675L); - BufferBuilder.c(-2105995561356357049L).b(683879936170437320L); - BufferBuilder.c(4909757236062309136L).b(-8114084134320742917L); - BufferBuilder.c(4637090828397616720L).b(-2386389174656138488L); - BufferBuilder.c(-4891113531434996876L).b(-7482287660227940273L); - BufferBuilder.c(3473777849603441097L).b(-3405325077155043141L); - BufferBuilder.c(5073391276319670958L).b(2030088209535296321L); - BufferBuilder.c(6862438000748716140L).b(-2752120444286380102L); - BufferBuilder.c(-5964445156254309490L).b(1107306738204107407L); - BufferBuilder.c(9222739872571690737L).b(-1305194194139711290L); - BufferBuilder.c(3596323964171498639L).b(-3791610345934557298L); - BufferBuilder.c(-7775302929995774618L).b(-3521188663377266186L); - BufferBuilder.c(9145984711471871650L).b(-7529276270259422748L); - BufferBuilder.c(1950731857999911391L).b(5932982450690626531L); - BufferBuilder.c(-6197700114894757139L).b(-4170269717030158022L); - BufferBuilder.c(3036021808078195719L).b(8102688619893076215L); - BufferBuilder.c(-7857094123876971927L).b(6699431352385356952L); - BufferBuilder.c(7971120879659866288L).b(4848780257913861337L); - BufferBuilder.c(2882698758198268691L).b(4540020394997504277L); - BufferBuilder.c(3276451332464677961L).b(-2898546002705603622L); - BufferBuilder.c(-4321380245884174677L).b(-6994993186801720465L); - BufferBuilder.c(6985733026428232760L).b(1924010093644875315L); - BufferBuilder.c(6704792890526102510L).b(-2188924045692527494L); - BufferBuilder.c(-5343066580328101784L).b(8820314337878089082L); - BufferBuilder.c(-63590628662681526L).b(-8919256114500823660L); - BufferBuilder.c(6694919375876911258L).b(2800604991083568556L); - BufferBuilder.c(7798240642330301509L).b(8410024517470387488L); - BufferBuilder.c(-908608358087425047L).b(-6381960790900578799L); - BufferBuilder.c(3204610931845964858L).b(-7751489077105861160L); - BufferBuilder.c(-161601217946272596L).b(-65606490078151492L); - BufferBuilder.c(88980439141764782L).b(4467725003268781164L); - BufferBuilder.c(-753958846480153887L).b(-2090915457532497452L); - BufferBuilder.c(-1035901435259553006L).b(-6453045037794554596L); - BufferBuilder.c(-2837309306063473185L).b(6529835155006038453L); - BufferBuilder.c(1699967812323940575L).b(-3412965857049094449L); - BufferBuilder.c(1595100759567487159L).b(4658490173494597623L); - BufferBuilder.c(-570318223397270412L).b(1463971496842476472L); - BufferBuilder.c(8874380128929346094L).b(4844155281345988140L); - BufferBuilder.c(841277793837063703L).b(42930998204402920L); - BufferBuilder.c(8443700805574333529L).b(9115606932091430854L); - BufferBuilder.c(6907062296732250177L).b(-810294395524008522L); - BufferBuilder.c(-5668766938626225014L).b(-4391514718496780325L); - BufferBuilder.c(231362638098714979L).b(6659500735946428313L); - BufferBuilder.c(-931530755472300688L).b(-9215665228174538844L); - BufferBuilder.c(-645248899040379645L).b(6778632234806299987L); - BufferBuilder.c(-6078601046418529922L).b(-6739900149347849795L); - BufferBuilder.c(503268159389229354L).b(-6468195172499050554L); - BufferBuilder.c(-8420985832821029258L).b(9042138622144488819L); - BufferBuilder.c(-8401029684414055606L).b(3881263240970724635L); - BufferBuilder.c(7075284757953434971L).b(-4076503907331742346L); - BufferBuilder.c(6059922763952735627L).b(-4312523793265290969L); - BufferBuilder.c(-1514615030223918669L).b(-5180970635018164989L); - BufferBuilder.c(8331220182529483675L).b(7987518290842939694L); - BufferBuilder.c(6380233059597283986L).b(2064644954174026092L); - BufferBuilder.c(-3725150538193724628L).b(6650050128659745113L); - BufferBuilder.c(6275241143065900454L).b(-6037488994301900392L); - BufferBuilder.c(-5029701486107351787L).b(-3934391062027461862L); - BufferBuilder.c(-1411305451636658382L).b(1594260702783272568L); - BufferBuilder.c(-4580363082690718728L).b(1694411568269606997L); - BufferBuilder.c(-7914662704107512254L).b(7850031699873820798L); - BufferBuilder.c(4514523337577012341L).b(1148138354790184741L); - BufferBuilder.c(5168495253339453381L).b(-6261741684144813961L); - BufferBuilder.c(-767866833773652317L).b(8265687767132022059L); - BufferBuilder.c(-3672267585205003676L).b(-6109053976068819241L); - BufferBuilder.c(-2421819378558865968L).b(-8749033422787949874L); - BufferBuilder.c(-8098888293410540136L).b(-862614645036696753L); - BufferBuilder.c(8015964837033059876L).b(-6817299622368004701L); - BufferBuilder.c(-4745225300309995776L).b(-4092589762309907740L); - BufferBuilder.c(-403886346699758777L).b(1740037321740624300L); - BufferBuilder.c(-6436753035580121634L).b(3399964022429976245L); - BufferBuilder.c(5478837330624235319L).b(5673134040869094569L); - BufferBuilder.c(7551705442287180927L).b(6031913609851461049L); - BufferBuilder.c(8132039720289270458L).b(-2280663286966780939L); - BufferBuilder.c(-6118650754967201363L).b(5845202761567240344L); - BufferBuilder.c(-5844618433453551692L).b(6493654219066210110L); - BufferBuilder.c(4542006869731490395L).b(-8260172982460493715L); - BufferBuilder.c(7037534843422026275L).b(1496608744284708874L); - BufferBuilder.c(-6957820045195750220L).b(2166825798192013753L); - BufferBuilder.c(2437503204200343166L).b(1899492070645399202L); - BufferBuilder.c(8140378082912671094L).b(-3444029931063012889L); - BufferBuilder.c(-4454099413641986694L).b(-3791337407772862416L); - BufferBuilder.c(-150299283934927016L).b(-2693900683237723630L); - BufferBuilder.c(-7345064506687184155L).b(1354734273747666409L); - BufferBuilder.c(-169231686907303154L).b(-8253758995621766767L); - BufferBuilder.c(138130711880357825L).b(-968891870026101002L); - BufferBuilder.c(6898787537758214273L).b(-3633941808917205744L); - BufferBuilder.c(-4723394104610547610L).b(-8219700585941128483L); - BufferBuilder.c(1055019578024352207L).b(-7925710531792882458L); - BufferBuilder.c(-3165241024848277632L).b(-1969457364945180353L); - BufferBuilder.c(8156631404024469702L).b(-949749954995039410L); - BufferBuilder.c(-574796435185385271L).b(-2854729854673393203L); - BufferBuilder.c(-8423150222290993509L).b(-7961023911016643413L); - BufferBuilder.c(4242878640842346883L).b(-2115389390618916172L); - BufferBuilder.c(5505338345798645451L).b(3238157460846350863L); - BufferBuilder.c(-3303615675709866412L).b(7388389547730683168L); - BufferBuilder.c(2265431188327412289L).b(1883859115701254436L); - BufferBuilder.c(-4869587230806455006L).b(-4386314451235158189L); - BufferBuilder.c(-1550974839191684124L).b(-3553043856624162650L); - BufferBuilder.c(-2551468334138235622L).b(-3897521818745601247L); - BufferBuilder.c(-8834942482329293515L).b(4180181438785118124L); - BufferBuilder.c(8609264059577619841L).b(-6957496262535435087L); - BufferBuilder.c(-3924709399304511895L).b(-4074291587342500604L); - BufferBuilder.c(694898699010923435L).b(-9012625050628447963L); - BufferBuilder.c(3708365057652858456L).b(-2061024911774121624L); - BufferBuilder.c(-488717958605109193L).b(4956071551315966814L); - BufferBuilder.c(-3321335447046538520L).b(5091494569160543876L); - BufferBuilder.c(-2378187529087648738L).b(-8439679803783348872L); - BufferBuilder.c(-295940842491343509L).b(4821716065846338072L); - BufferBuilder.c(-2166957017198308553L).b(6494145095266358539L); - BufferBuilder.c(8910700260326961649L).b(2121030880135150348L); - BufferBuilder.c(-6507572692657712846L).b(-8957886092886073948L); - BufferBuilder.c(-401854428750985433L).b(-8390924781255583757L); - BufferBuilder.c(-7170392806352468014L).b(1982933821343827173L); - BufferBuilder.c(7640999519350905242L).b(5767330447271878589L); - BufferBuilder.c(-3666055086803384002L).b(1650351029524145963L); - BufferBuilder.c(7291987556473807589L).b(1976748544328599096L); - BufferBuilder.c(-4571531235407712626L).b(-1053521140688037161L); - BufferBuilder.c(6256333035278081445L).b(5492067950975187918L); - BufferBuilder.c(-3927954009547837722L).b(6042697435786607470L); - BufferBuilder.c(1138853882222852824L).b(7821224879763836563L); - BufferBuilder.c(-6607705775306607362L).b(4455442509636841876L); - BufferBuilder.c(-283114172161732523L).b(8186086967548481062L); - BufferBuilder.c(-99110988172045466L).b(1051290356621690683L); - BufferBuilder.c(-2181665811180460280L).b(4165390052362270810L); - BufferBuilder.c(-4516715520821869467L).b(-8645877549883576294L); - BufferBuilder.c(-154269003180717959L).b(3377005286990421200L); - BufferBuilder.c(-5170458706759139840L).b(1276120452021745189L); - BufferBuilder.c(-3169376173586013303L).b(-9059282625119254371L); - BufferBuilder.c(-3764045928554084703L).b(1501222418826640267L); - BufferBuilder.c(-4509718727022039393L).b(780954719337364920L); - BufferBuilder.c(2325898755752872095L).b(-8386251223534105814L); - BufferBuilder.c(-1622470454320924215L).b(-8171908653432319575L); - BufferBuilder.c(8555963703435474580L).b(1429477598395083453L); - BufferBuilder.c(4757030504794614923L).b(3200555645895951814L); - BufferBuilder.c(-3351155715930877995L).b(-5051972222674758412L); - BufferBuilder.c(3172349562248409458L).b(-4237268866365781649L); - BufferBuilder.c(-6546803192072253252L).b(69133396717205646L); - BufferBuilder.c(-828228914241560166L).b(-2035375713004955462L); - BufferBuilder.c(-8197378970244460820L).b(6885103905515016749L); - BufferBuilder.c(-8477265733977943523L).b(-2663684371686251207L); - BufferBuilder.c(-4513813536017398399L).b(5842341059549524257L); - BufferBuilder.c(8764190303490192808L).b(346844443809046724L); - BufferBuilder.c(-3391996114001596590L).b(-8859868297126730703L); - BufferBuilder.c(8464199491054154782L).b(4903066498973205413L); - BufferBuilder.c(7208682102991361069L).b(-19833955485715013L); - BufferBuilder.c(5479472352454568813L).b(-4055489940314153419L); - BufferBuilder.c(-5054613563806434495L).b(-7677779688769928051L); - BufferBuilder.c(-8884415009048130042L).b(-453285477414650329L); - BufferBuilder.c(-3841651071977585569L).b(3479240311977325452L); - BufferBuilder.c(-504666478230655823L).b(-3505625793214984024L); - BufferBuilder.c(3367925203349074375L).b(114282260662488564L); - BufferBuilder.c(1251987594585575301L).b(7068270011822527100L); - BufferBuilder.c(-1580559387548457277L).b(8885088868705682697L); - BufferBuilder.c(-3971257720267768888L).b(3329653299903495172L); - BufferBuilder.c(-4274751032353755677L).b(-6830862072663520988L); - BufferBuilder.c(-8549513217131654298L).b(510819178395655994L); - BufferBuilder.c(-5214252239745899331L).b(-9194438859042902199L); - BufferBuilder.c(7069680742250978743L).b(5570122138012148675L); - BufferBuilder.c(125297825657219994L).b(-3594608769276230726L); - BufferBuilder.c(246381031295026648L).b(865087220626983862L); - BufferBuilder.c(-2880824240757852102L).b(-3473902455261605069L); - BufferBuilder.c(-4388515139168520262L).b(6799941435078250651L); - BufferBuilder.c(-258383954051556101L).b(5477527642940759613L); - BufferBuilder.c(-9025139818763332064L).b(-4879557722595266775L); - BufferBuilder.c(289443346275912317L).b(-1958645359669341982L); - BufferBuilder.c(-933096457279391617L).b(6174465449194075491L); - BufferBuilder.c(-4277816943045956953L).b(-5720176711922528540L); - BufferBuilder.c(-7633956366441311326L).b(-6890840199144010914L); - BufferBuilder.c(2301855769190358680L).b(-9078325218971129420L); - BufferBuilder.c(5772022095323581678L).b(7295551518037896292L); - BufferBuilder.c(-6680048064040512619L).b(3227920815314543601L); - BufferBuilder.c(-7605020452410436882L).b(2217376779948741833L); - BufferBuilder.c(-2457546845727491590L).b(3989172818085321203L); - BufferBuilder.c(6117511370276633634L).b(-8436443891490977432L); - BufferBuilder.c(-7645194573246478769L).b(1985644518452835371L); - BufferBuilder.c(-8789613881482794053L).b(1929591796451864606L); - BufferBuilder.c(-6657801281200423954L).b(8017842198931972478L); - BufferBuilder.c(4453694505679038246L).b(8375275788397051988L); - BufferBuilder.c(2478416497529443017L).b(-8147215554640515962L); - BufferBuilder.c(-4143966186163746055L).b(6640669897952512494L); - BufferBuilder.c(-6994624423436879456L).b(235636139779262333L); - BufferBuilder.c(-6840229856041782924L).b(510438067203872767L); - BufferBuilder.c(5051722757472620391L).b(-4836089869496261346L); - BufferBuilder.c(1581769580186278407L).b(-1054755527260103335L); - BufferBuilder.c(7443303772673301351L).b(-8729499854888065912L); - BufferBuilder.c(5745380377422069980L).b(6705147265148312542L); - BufferBuilder.c(-682374447155138337L).b(831329031154820388L); - BufferBuilder.c(2205200003303143682L).b(-9037730573615252862L); - BufferBuilder.c(-603973830061146571L).b(5897548257169845904L); - BufferBuilder.c(-5054886877382745999L).b(-6941644425750215720L); - BufferBuilder.c(2715951687008079599L).b(-7187505813233133620L); - BufferBuilder.c(-2247209788812739684L).b(6062991104578703338L); - BufferBuilder.c(11492119568002241L).b(-7865532219408780814L); - BufferBuilder.c(-6307414798761561771L).b(6233727515455382079L); - BufferBuilder.c(-7930153827818791759L).b(-2706436339006041040L); - BufferBuilder.c(-8029718594344152429L).b(-4163339668736685151L); - BufferBuilder.c(-2399062148411901899L).b(1993402785378523367L); - BufferBuilder.c(1266143979546674761L).b(1703652363157097054L); - BufferBuilder.c(2495116467089990543L).b(-7974111226821425452L); - BufferBuilder.c(-7363052059507375456L).b(-8947284609766020924L); - BufferBuilder.c(-7970370690888227738L).b(-198606936961263764L); - BufferBuilder.c(2021855339327277653L).b(-2633861177516890040L); - BufferBuilder.c(988984483075625896L).b(-1356153255067390700L); - BufferBuilder.c(-210417140668657852L).b(-962360281146904668L); - BufferBuilder.c(-5689446350473456767L).b(6059977778231639240L); - BufferBuilder.c(3812256441028166870L).b(-7933947783247907682L); - BufferBuilder.c(7579676408316303217L).b(-4665482486762027879L); - BufferBuilder.c(-3308767824965465000L).b(-3256117363167320317L); - BufferBuilder.c(-4781115199139437207L).b(-2141648377884593802L); - BufferBuilder.c(-494564014312281993L).b(5013589435378307645L); - BufferBuilder.c(-1939312335107899794L).b(6272155925355977427L); - BufferBuilder.c(187533957427142796L).b(5869312384530720429L); - BufferBuilder.c(-6219304895181217634L).b(-8193846149499566445L); - BufferBuilder.c(1506061754942005333L).b(8024976250615526224L); - BufferBuilder.c(3149364156109150357L).b(4355766292828965427L); - BufferBuilder.c(-5251996979881326987L).b(-5476194529237378174L); - BufferBuilder.c(8096785489466798551L).b(-8534072205303723971L); - BufferBuilder.c(1094843840507759340L).b(-1740749118550091560L); - BufferBuilder.c(3371141874554951917L).b(-3752892137348622866L); - BufferBuilder.c(-2330276127344670715L).b(-2024675462541651002L); - BufferBuilder.c(-6972767867235091419L).b(2750840833062339606L); - BufferBuilder.c(-1502542884152846376L).b(-3437835894584711869L); - BufferBuilder.c(-7444144369372550705L).b(191377589950582061L); - BufferBuilder.c(7042386413220599489L).b(8890949280148875885L); - BufferBuilder.c(-165463304351852300L).b(-13056877629947586L); - BufferBuilder.c(-5721969485080930648L).b(451061470999034466L); - BufferBuilder.c(4031230029253989124L).b(-1137964372246746172L); - BufferBuilder.c(-3081154203761675485L).b(-791203173038774671L); - BufferBuilder.c(5867884165754232818L).b(1922602138822604845L); - BufferBuilder.c(-6693188452910060555L).b(-3633900974138604205L); - BufferBuilder.c(4122488201742455700L).b(5035725371221419138L); - BufferBuilder.c(1186061981553295260L).b(-7702757573318290883L); - BufferBuilder.c(-258434457942130886L).b(-731796515576248260L); - BufferBuilder.c(-5413870765904982367L).b(-1587870551307331725L); - BufferBuilder.c(6565139086423367629L).b(-157631491506957425L); - BufferBuilder.c(1510936918550761037L).b(-9127930858177107516L); - BufferBuilder.c(-7832408794081613342L).b(3609216508317740574L); - BufferBuilder.c(5018118980598101108L).b(8058587928808531696L); - BufferBuilder.c(2481276298974312386L).b(458908771426049191L); - BufferBuilder.c(-8859825569701298039L).b(-2303655218484632613L); - BufferBuilder.c(3156888685058561921L).b(-3246127916586853919L); - BufferBuilder.c(-553628246521308098L).b(8125434396695583822L); - BufferBuilder.c(-2077274871646805560L).b(-8522641595215746185L); - BufferBuilder.c(-2074359994300403220L).b(-6507282833562003029L); - BufferBuilder.c(-7046697748437112548L).b(-3158437166641807785L); - BufferBuilder.c(-5257833765983858965L).b(6454623422631952035L); - BufferBuilder.c(-456214792005573978L).b(-7213817108102465839L); - BufferBuilder.c(4839187235377559560L).b(6942294015729703223L); - BufferBuilder.c(5793998808968051392L).b(-202144062489951938L); - BufferBuilder.c(-5413929176701908855L).b(-6683635023747003679L); - BufferBuilder.c(-6102424624654320918L).b(-4475185188632234308L); - BufferBuilder.c(-8133569770788381109L).b(-6599438160334373049L); - BufferBuilder.c(-4748340205576204797L).b(-7187441592059998270L); - BufferBuilder.c(5023581836975654048L).b(-8399048111632828058L); - BufferBuilder.c(-1712714134590958238L).b(-7782067803866229969L); - BufferBuilder.c(-4144151984960534221L).b(-7250666544029279541L); - BufferBuilder.c(-5273798121993994847L).b(4594088428801397188L); - BufferBuilder.c(-7858978587371075325L).b(4857681389552606959L); - BufferBuilder.c(-272026057087283992L).b(-7705900203744640953L); - BufferBuilder.c(7139955381347935477L).b(-2520659916483338449L); - BufferBuilder.c(-9084831151402622101L).b(-1719607436077657055L); - BufferBuilder.c(7448555190262831628L).b(-6513491756254464450L); - BufferBuilder.c(6612923323016777922L).b(8820275993150399486L); - BufferBuilder.c(-356372161095967003L).b(-8782881999175620761L); - BufferBuilder.c(4367884181835738844L).b(-6058103736868052378L); - BufferBuilder.c(5734378911248377425L).b(6529966605742421952L); - BufferBuilder.c(4921316319873956199L).b(5786633838511967283L); - BufferBuilder.c(-180849680887083220L).b(-9168765423050832129L); - BufferBuilder.c(-1241302937256587145L).b(4585790181857296489L); - BufferBuilder.c(637106165505714966L).b(-1512060690594911970L); - BufferBuilder.c(-6739467429476989387L).b(-1328347340617276650L); - BufferBuilder.c(-2127284909619905896L).b(-5305633658546311727L); - BufferBuilder.c(-6569580692180507784L).b(3975994850662571573L); - BufferBuilder.c(-6786487463137594758L).b(-4311934639750633001L); - BufferBuilder.c(-6422612752952617343L).b(-7930544884584200293L); - BufferBuilder.c(-5177592465652280614L).b(14089832719252398L); - BufferBuilder.c(1091522833392007822L).b(7405401219867844698L); - BufferBuilder.c(1063928348804873350L).b(5518190301209753437L); - BufferBuilder.c(3775355284976116983L).b(-1418541459140810798L); - BufferBuilder.c(2378666981043070827L).b(4313286471399439297L); - BufferBuilder.c(-3155923703721945315L).b(8884145639342138443L); - BufferBuilder.c(-1204255819530260318L).b(-8478962902424847433L); - BufferBuilder.c(-3895804800642774817L).b(-770869704080903752L); - BufferBuilder.c(237904815891397188L).b(-5976834659887249602L); - BufferBuilder.c(-659727223367786679L).b(7902831334526491750L); - BufferBuilder.c(2737958988681335958L).b(183343626838729653L); - BufferBuilder.c(-7540748986601792692L).b(-8156906884402809009L); - BufferBuilder.c(4620866461646292045L).b(-8728009490310722541L); - BufferBuilder.c(335399501703742667L).b(-7059149521822829713L); - BufferBuilder.c(6713405489700642946L).b(-3071848552274256344L); - BufferBuilder.c(676014047896552810L).b(-3561274738089636897L); - BufferBuilder.c(470499749929975541L).b(5249385066398166695L); - BufferBuilder.c(7717552742508119317L).b(-246139803869770952L); - BufferBuilder.c(2039457253362575279L).b(1819238967689767336L); - BufferBuilder.c(3631385284107833251L).b(-4980566955793346509L); - BufferBuilder.c(6016544230307204933L).b(5439351658513656989L); - BufferBuilder.c(234475253820733511L).b(-9032166157502819874L); - BufferBuilder.c(-3972748171960074470L).b(-4084430406874628979L); - BufferBuilder.c(2638907805533158798L).b(5529405651363261063L); - BufferBuilder.c(-3050824122647561712L).b(-8705927421397893840L); - BufferBuilder.c(-8505284730943656385L).b(-458076214045670975L); - BufferBuilder.c(-5333870376848818019L).b(101567200701239615L); - BufferBuilder.c(6409910563255654552L).b(5016857951389715833L); - BufferBuilder.c(-4482253618692460722L).b(-1287228038146715894L); - BufferBuilder.c(-7417486653783223389L).b(1999980071852769227L); - BufferBuilder.c(1421633012570693267L).b(6185471025540026653L); - BufferBuilder.c(-1751061798371570227L).b(9132404881387632639L); - BufferBuilder.c(744603242792244242L).b(1525605656848572462L); - BufferBuilder.c(-3360559926248790952L).b(-1186494478478292923L); - BufferBuilder.c(-1238557313676902458L).b(-7889572940637553790L); - BufferBuilder.c(-4297028121467577334L).b(-2572071622122342218L); - BufferBuilder.c(1996005662391586984L).b(-7052797443899127687L); - BufferBuilder.c(-8374935306943623700L).b(-6762190344354948469L); - BufferBuilder.c(8742223120666093810L).b(4673034514428627223L); - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper34.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper34.java deleted file mode 100644 index 93cf254..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper34.java +++ /dev/null @@ -1,97 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.MethodValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.gui.render.GuiRenderer; -import net.minecraft.client.render.ProjectionMatrix2; - -public class RenderHelper34 { - private static final MethodValue a; - private final GuiRenderer b; - - public RenderHelper34(GuiRenderer var1) { - this.b = var1; - } - - public ProjectionMatrix2 a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 102668752421660L ^ var2; - long var4 = var2 ^ 51762531076872L; - return (ProjectionMatrix2)a.b_Object(new Object[]{this.b, var4}); - } - - static { - Object var0 = "guiProjectionMatrix"; - a = FieldAccessor.a_MethodValue(new Object[]{GuiRenderer.class, var0, ProjectionMatrix2.class, 0L}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper35.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper35.java deleted file mode 100644 index f72709c..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper35.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.option.KeyBinding; -import net.minecraft.client.util.InputUtil.Key; - -public class RenderHelper35 { - private final KeyBinding a; - private static final String c = "boundKey"; - - public RenderHelper35(KeyBinding var1) { - this.a = var1; - } - - public Key a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 109166156949250L ^ var2; - long var4 = var2 ^ 122513438798405L; - long var6 = var2 ^ 29567259778995L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, c, KeyBinding.class, Key.class, var6}); - return (Key)var8.a(new Object[]{var4}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper36.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper36.java deleted file mode 100644 index 35a32cf..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper36.java +++ /dev/null @@ -1,99 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.reflect.MethodAccessor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.Mouse; -import net.minecraft.client.input.MouseInput; - -public class RenderHelper36 { - private final Mouse a; - private static final String c = "onMouseButton"; - - public RenderHelper36(Mouse var1) { - this.a = var1; - } - - public void a(Object[] var1) { - long var7 = (Long)var1[0]; - int var4 = (Integer)var1[1]; - int var3 = (Integer)var1[2]; - int var2 = (Integer)var1[3]; - long var5 = (Long)var1[4]; - var5 = 96267497211421L ^ var5; - long var9 = var5 ^ 73977705220219L; - long var11 = var5 ^ 12261113047470L; - RenderHelper16 var13 = MethodAccessor.a_RenderHelper16( - new Object[]{this.a, c, Mouse.class, void.class, new Class[]{long.class, MouseInput.class, int.class}, var11} - ); - var13.a(new Object[]{new Object[]{var7, new MouseInput(var4, var2), var3}, var9}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper37.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper37.java deleted file mode 100644 index 731cf7c..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper37.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.render; - -public class RenderHelper37 { -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper38.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper38.java deleted file mode 100644 index 43c98f1..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper38.java +++ /dev/null @@ -1,4 +0,0 @@ -package dev.zprestige.prestige.render; - -public class RenderHelper38 { -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper39.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper39.java deleted file mode 100644 index cef023f..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper39.java +++ /dev/null @@ -1,81 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.gl.PostEffectPass; - -public class RenderHelper39 { - private final PostEffectPass a; - - public RenderHelper39(PostEffectPass var1) { - this.a = var1; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper4.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper4.java deleted file mode 100644 index d4003f2..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper4.java +++ /dev/null @@ -1,81 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.render.WorldRenderer; - -public class RenderHelper4 { - private final WorldRenderer a; - - public RenderHelper4(WorldRenderer var1) { - this.a = var1; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper40.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper40.java deleted file mode 100644 index fb12bd2..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper40.java +++ /dev/null @@ -1,103 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.reflect.MethodAccessor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.render.ProjectionMatrix2; -import org.joml.Matrix4f; - -public class RenderHelper40 { - private static final MethodAccessor a; - private final ProjectionMatrix2 b; - - public RenderHelper40(ProjectionMatrix2 var1) { - this.b = var1; - } - - public Matrix4f a(Object[] var1) { - float var2 = (Float)var1[0]; - float var3 = (Float)var1[1]; - long var4 = (Long)var1[2]; - var4 = 20438541473024L ^ var4; - long var6 = var4 ^ 40941517329865L; - - try { - return (Matrix4f)a.b(new Object[]{this.b, new Object[]{var2, var3}, var6}); - } catch (Throwable var9) { - throw new RuntimeException(var9); - } - } - - static { - Object var0 = "getMatrix"; - a = MethodAccessor.e(new Object[]{ProjectionMatrix2.class, var0, Matrix4f.class, new Class[]{float.class, float.class}, 0L}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper41.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper41.java deleted file mode 100644 index 4ce56a7..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper41.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.RenderSetup; - -public class RenderHelper41 { - private final RenderLayer a; - private static final String c = "renderSetup"; - - public RenderHelper41(RenderLayer var1) { - this.a = var1; - } - - public RenderSetup a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 38454838076691L ^ var2; - long var4 = var2 ^ 73642057929811L; - long var6 = var2 ^ 60966713686437L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, c, RenderLayer.class, RenderSetup.class, var6}); - return (RenderSetup)var8.a(new Object[]{var4}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper5.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper5.java deleted file mode 100644 index 7e9dc2e..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper5.java +++ /dev/null @@ -1,169 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.type.Easing; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.function.Supplier; - -public class RenderHelper5 { - private final Supplier a; - private final boolean b; - private final Supplier c; - private long d; - private boolean e; - private static final long g = 0L; - - public RenderHelper5(Supplier var1, boolean var2, Supplier var3, long var4) { - this.d = g; - this.a = var1; - this.b = var2; - this.c = var3; - this.e = var2; - } - - public RenderHelper5(float var1, boolean var2, Easing var3, long var4) { - this(() -> var1, var2, () -> var3, (33527026285589L)); - var4 = 0L; - var4 = 40258606618875L ^ var4; - long var6 = var4 ^ 64748537226478L; - } - - public RenderHelper5(Supplier var1, boolean var2, Easing var3, long var4) { - this(var1, var2, () -> var3, (139086976318679L)); - var4 = 0L; - var4 = 40258606618875L ^ var4; - long var6 = var4 ^ 99930368812076L; - } - - public RenderHelper5(float var1, boolean var2, Supplier var3, long var4) { - this(() -> var1, var2, var3, (107597476211729L)); - var4 = 0L; - var4 = 40258606618875L ^ var4; - long var6 = var4 ^ 76169410737386L; - } - - public boolean a(Object[] var1) { - return this.e; - } - - public void a_void_______________________(Object[] var1) { - boolean var4 = (Boolean)var1[0]; - long var2 = (Long)var1[1]; - var2 = 40258606618875L ^ var2; - long var5 = var2 ^ 36133467499546L; - if (!var4) { - this.d = System.currentTimeMillis() - (long)((1.0 - this.a_double__________(new Object[]{var5})) * ((Float)this.a.get()).floatValue()); - } else { - this.d = System.currentTimeMillis() - (long)(this.a_double__________(new Object[]{var5}) * ((Float)this.a.get()).floatValue()); - } - - this.e = var4; - } - - public float a_float___________________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 40258606618875L ^ var2; - long var4 = var2 ^ 45632900503376L; - if (this.e) { - Easing var7 = (Easing)this.c.get(); - double var8 = Math.min(1.0, Math.max(0.0, (double)(System.currentTimeMillis() - this.d) / ((Float)this.a.get()).floatValue())); - Object[] var9 = new Object[]{null, var4}; - var9[0] = var8; - return (float)var7.a(var9); - } else { - Easing var10000 = (Easing)this.c.get(); - double var10001 = Math.min(1.0, Math.max(0.0, 1.0 - (double)(System.currentTimeMillis() - this.d) / ((Float)this.a.get()).floatValue())); - Object[] var10004 = new Object[]{null, var4}; - var10004[0] = var10001; - return (float)var10000.a(var10004); - } - } - - public void b(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 40258606618875L ^ var2; - long var4 = var2 ^ 91143086842938L; - Event.b(); - this.e = this.b; - if (this.b) { - this.d = System.currentTimeMillis() - (long)((1.0 - this.a_double__________(new Object[]{var4})) * ((Float)this.a.get()).floatValue()); - } else { - this.d = System.currentTimeMillis() - (long)(this.a_double__________(new Object[]{var4}) * ((Float)this.a.get()).floatValue()); - } - } - - private double a_double__________(Object[] var1) { - return !this.e - ? Math.min(1.0, Math.max(0.0, 1.0 - (double)(System.currentTimeMillis() - this.d) / ((Float)this.a.get()).floatValue())) - : Math.min(1.0, Math.max(0.0, (double)(System.currentTimeMillis() - this.d) / ((Float)this.a.get()).floatValue())); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper6.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper6.java deleted file mode 100644 index 8b74232..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper6.java +++ /dev/null @@ -1,230 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.VectorData; -import dev.zprestige.prestige.world.WorldContract; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import org.joml.Matrix4f; - -public final class RenderHelper6 implements RenderContract4 { - private final VectorData a; - private final float b; - private final float c; - private final float d; - private final float e; - private final float f; - private final float g; - private final float h; - private final float i; - private final int j; - private final Matrix4f k; - - public RenderHelper6( - VectorData var1, float var2, float var3, float var4, float var5, int var6, float var7, float var8, float var9, float var10, Matrix4f var11, long var12 - ) { - this.a = var1; - this.b = var2; - this.c = var3; - this.d = var4; - this.e = var5; - this.f = var7; - this.g = var8; - this.h = var9; - this.i = var10; - this.k = var11; - int var14 = var6 >>> 24 & 0xFF; - int var15 = var6 >>> 16 & 0xFF; - int var16 = var6 >>> 8 & 0xFF; - int var17 = var6 & 0xFF; - this.j = var14 << 24 | var17 << 16 | var16 << 8 | var15; - } - - @Override - public void a(Object[] var1) { - WorldContract var2 = (WorldContract)var1[0]; - float var5 = (Float)var1[1]; - long var3 = (Long)var1[2]; - long var6 = var3 ^ 24167567963691L; - long var8 = var3 ^ 82935697402127L; - long var10 = var3 ^ 130143315315328L; - long var12 = var3 ^ 39310700723775L; - long var14 = var3 ^ 17653510059253L; - long var16 = var3 ^ 29374964166188L; - long var18 = var3 ^ 30482090942171L; - var2.k(new Object[]{var6}); - if (this.k == null) { - float var10001 = this.b; - float var10002 = this.e; - Object[] var10006 = new Object[]{null, null, null, var8}; - var10006[2] = var5; - var10006[1] = var10002; - var10006[0] = var10001; - WorldContract var10000 = var2.c_WorldContract(var10006); - int var33 = this.j; - Object[] var10004 = new Object[]{null, var14}; - var10004[0] = var33; - var10000 = var10000.e(var10004).b_WorldContract(new Object[]{new float[]{this.f, this.i}, var18}); - var10001 = this.b; - var10002 = this.c; - var10006 = new Object[]{null, null, null, var8}; - var10006[2] = var5; - var10006[1] = var10002; - var10006[0] = var10001; - var10000 = var10000.c_WorldContract(var10006); - int var35 = this.j; - var10004 = new Object[]{null, var14}; - var10004[0] = var35; - var10000 = var10000.e(var10004).b_WorldContract(new Object[]{new float[]{this.f, this.g}, var18}); - var10001 = this.d; - var10002 = this.c; - var10006 = new Object[]{null, null, null, var8}; - var10006[2] = var5; - var10006[1] = var10002; - var10006[0] = var10001; - var10000 = var10000.c_WorldContract(var10006); - int var37 = this.j; - var10004 = new Object[]{null, var14}; - var10004[0] = var37; - var10000 = var10000.e(var10004).b_WorldContract(new Object[]{new float[]{this.h, this.g}, var18}); - var10001 = this.d; - var10002 = this.e; - var10006 = new Object[]{null, null, null, var8}; - var10006[2] = var5; - var10006[1] = var10002; - var10006[0] = var10001; - var10000 = var10000.c_WorldContract(var10006); - int var39 = this.j; - var10004 = new Object[]{null, var14}; - var10004[0] = var39; - var10000.e(var10004).b_WorldContract(new Object[]{new float[]{this.h, this.i}, var18}); - } else { - Matrix4f var40 = this.k; - float var51 = this.b; - float var10003 = this.e; - Object[] var10007 = new Object[]{null, null, null, null, var16}; - var10007[3] = var5; - var10007[2] = var10003; - var10007[1] = var51; - var10007[0] = var40; - WorldContract var26 = var2.d(var10007); - int var41 = this.j; - Object[] var61 = new Object[]{null, var14}; - var61[0] = var41; - var26 = var26.e(var61).b_WorldContract(new Object[]{new float[]{this.f, this.i}, var18}); - var40 = this.k; - var51 = this.b; - var10003 = this.c; - var10007 = new Object[]{null, null, null, null, var16}; - var10007[3] = var5; - var10007[2] = var10003; - var10007[1] = var51; - var10007[0] = var40; - var26 = var26.d(var10007); - int var43 = this.j; - var61 = new Object[]{null, var14}; - var61[0] = var43; - var26 = var26.e(var61).b_WorldContract(new Object[]{new float[]{this.f, this.g}, var18}); - var40 = this.k; - var51 = this.d; - var10003 = this.c; - var10007 = new Object[]{null, null, null, null, var16}; - var10007[3] = var5; - var10007[2] = var10003; - var10007[1] = var51; - var10007[0] = var40; - var26 = var26.d(var10007); - int var45 = this.j; - var61 = new Object[]{null, var14}; - var61[0] = var45; - var26 = var26.e(var61).b_WorldContract(new Object[]{new float[]{this.h, this.g}, var18}); - var40 = this.k; - var51 = this.d; - var10003 = this.e; - var10007 = new Object[]{null, null, null, null, var16}; - var10007[3] = var5; - var10007[2] = var10003; - var10007[1] = var51; - var10007[0] = var40; - var26 = var26.d(var10007); - int var47 = this.j; - var61 = new Object[]{null, var14}; - var61[0] = var47; - var26.e(var61).b_WorldContract(new Object[]{new float[]{this.h, this.i}, var18}); - } - - var2.g(new Object[]{new int[]{0, 1, 2, 2, 3, 0}, var12}).h(new Object[]{var10}); - } - - @Override - public VectorData a_VectorData_(Object[] var1) { - return this.a; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper7.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper7.java deleted file mode 100644 index 64748a0..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper7.java +++ /dev/null @@ -1,277 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.function.Consumer; -import net.minecraft.client.MinecraftClient; -import org.lwjgl.opengl.GL13; -import org.lwjgl.opengl.GL20; -import org.lwjgl.opengl.GL30; - -public class RenderHelper7 { - public Framebuffer a; - public Framebuffer b; - public FontRenderer c; - public FontRenderer d; - private int e; - private int f; - private static final MinecraftClient g = MinecraftClient.getInstance(); - private static final int h; - private static final int i; - private static final int j; - private final float k; - private final float l; - private boolean m; - private final VertexBuffer n; - private long o; - private static final long t = Long.MIN_VALUE; - - public int a(Object[] var1) { - return this.e; - } - - public int b(Object[] var1) { - return this.f; - } - - public RenderHelper7(float var1, float var2, long var3) { - super(); - var3 = 0L; - var3 = 117519987309236L ^ var3; - long var5 = var3 ^ 64673413241473L; - long var7 = var3 ^ 87901495498316L; - long var9 = var3 ^ 17519793599063L; - long var11 = var3 ^ 38108902190762L; - this.a = Framebuffer.a(new Object[]{var5}); - this.b = Framebuffer.a(new Object[]{var5}); - Object[] var10004 = new Object[]{null, var11}; - var10004[0] = 3553; - this.c = FontRenderer.a(var10004); - var10004 = new Object[]{null, var11}; - var10004[0] = 3553; - this.d = FontRenderer.a(var10004); - this.m = false; - this.o = t; - this.e = g.getWindow().getFramebufferWidth(); - this.f = g.getWindow().getFramebufferHeight(); - this.k = var1; - this.l = var2; - this.a_void________________________(new Object[]{var9}); - VertexBuffer var10001 = new VertexBuffer(); - Shader var10002 = RenderHelper22.d; - Consumer var10003 = lpL12_0 -> { - GL13.glActiveTexture(33984); - int var6 = RenderUtil.b(new Object[]{110551307634167L}); - GL30.glBindTexture(3553, var6); - GL20.glUniform2f(h, 1.0F, 0.0F); - GL20.glUniform1f(i, this.k); - GL20.glUniform1f(j, this.l); - }; - int var19 = this.b.a; - Object[] var10007 = new Object[]{null, null, null, var7}; - var10007[2] = var19; - var10007[1] = var10003; - var10007[0] = var10002; - var10001 = var10001.a(var10007); - var10002 = RenderHelper22.d; - var10003 = lpL11_0 -> { - GL13.glActiveTexture(33984); - GL30.glBindTexture(3553, this.d.a); - GL20.glUniform2f(h, 0.0F, 1.0F); - GL20.glUniform1f(i, this.k); - GL20.glUniform1f(j, this.l); - }; - int var20 = this.a.a; - var10007 = new Object[]{null, null, null, var7}; - var10007[2] = var20; - var10007[1] = var10003; - var10007[0] = var10002; - this.n = var10001.a(var10007); - } - - private void a_void________________________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 117519987309236L ^ var2; - long var4 = var2 ^ 35527023105165L; - long var6 = var2 ^ 84656432960849L; - long var8 = var2 ^ 78776404403785L; - long var10 = var2 ^ 45786829980009L; - if (this.m) { - this.c.close(); - this.d.close(); - } - - Object[] var10004 = new Object[]{null, var8}; - var10004[0] = 3553; - this.c = FontRenderer.a(var10004); - FontRenderer var10000 = this.c; - int var10002 = this.e; - int var10003 = this.f; - Object[] var10006 = new Object[]{null, null, null, var4}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = 32849; - var10000.c(var10006); - var10000 = this.c; - var10004 = new Object[]{null, var6}; - var10004[0] = 9729; - var10000.b_void_______(var10004); - var10000 = this.c; - var10004 = new Object[]{null, var10}; - var10004[0] = 33071; - var10000.e(var10004); - var10004 = new Object[]{null, var8}; - var10004[0] = 3553; - this.d = FontRenderer.a(var10004); - var10000 = this.d; - var10002 = this.e; - var10003 = this.f; - var10006 = new Object[]{null, null, null, var4}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = 32849; - var10000.c(var10006); - var10000 = this.d; - var10004 = new Object[]{null, var6}; - var10004[0] = 9729; - var10000.b_void_______(var10004); - var10000 = this.d; - var10004 = new Object[]{null, var10}; - var10004[0] = 33071; - var10000.e(var10004); - GL30.glBindFramebuffer(36160, this.a.a); - GL30.glFramebufferTexture2D(36160, 36064, 3553, this.c.a, 0); - GL30.glBindFramebuffer(36160, this.b.a); - GL30.glFramebufferTexture2D(36160, 36064, 3553, this.d.a, 0); - GL30.glBindFramebuffer(36160, 0); - this.m = true; - } - - private boolean a_boolean___________________________________________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 117519987309236L ^ var2; - long var4 = var2 ^ 66642561940597L; - if (g.getWindow() == null) { - return false; - } else { - int var7 = g.getWindow().getFramebufferWidth(); - int var8 = g.getWindow().getFramebufferHeight(); - if (var7 <= 0 || var8 <= 0) { - return false; - } else if (this.e == var7 && this.f == var8) { - return false; - } else { - this.e = var7; - this.f = var8; - this.a_void________________________(new Object[]{var4}); - return true; - } - } - } - - public void b_void_________(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = (Long)var1[1]; - var4 = 117519987309236L ^ var4; - long var6 = var4 ^ 19784286000452L; - long var8 = var4 ^ 95451703888586L; - Event.b(); - boolean var11 = this.a_boolean___________________________________________(new Object[]{var6}); - if (var11 || this.o != var2) { - Object[] var10004 = new Object[]{null, var8}; - var10004[0] = var2; - this.c(var10004); - } - } - - private void c(Object[] var1) { - long var2 = (Long)var1[0]; - long var4 = (Long)var1[1]; - var4 = 117519987309236L ^ var4; - long var6 = var4 ^ 15354003995179L; - this.o = var2; - this.n.a_void______________________________(new Object[]{var6}); - } - - static { - Object var16 = new String[]{"width", "direction", "texSampler", "sigma"}; - h = RenderHelper22.d.d(new Object[]{((Object[])var16)[1], 0L}); - i = RenderHelper22.d.d(new Object[]{((Object[])var16)[0], 0L}); - j = RenderHelper22.d.d(new Object[]{((Object[])var16)[3], 0L}); - Shader var10000 = RenderHelper22.d; - Object var10001 = ((Object[])var16)[2]; - Object[] var10005 = new Object[]{null, null, 0L}; - var10005[1] = 0; - var10005[0] = var10001; - var10000.a_void_____________________________(var10005); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper8.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper8.java deleted file mode 100644 index c563d60..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper8.java +++ /dev/null @@ -1,191 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.BufferData; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.data.VertexIntData; -import dev.zprestige.prestige.event.Event; -import it.unimi.dsi.fastutil.Pair; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.LinkedHashSet; -import java.util.Set; -import java.util.WeakHashMap; -import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Stream; -import org.lwjgl.opengl.ARBVertexArrayObject; - -public class RenderHelper8 { - private final WeakHashMap a = new WeakHashMap(); - private final Set b = new LinkedHashSet(); - public static final boolean c = !RenderHelper8.class.desiredAssertionStatus(); - private static final String e = "empty buffer but we have a record of it being requested. huh?"; - private static final long i = 4L; - - public TextRenderer a(Object[] var1) { - DrawMode var4 = (DrawMode)var1[0]; - long var2 = (Long)var1[1]; - var2 = 28755365965556L ^ var2; - long var5 = var2 ^ 4283583056413L; - Object[] var10006 = new Object[]{null, null, null, var5}; - var10006[2] = 128; - var10006[1] = 128; - var10006[0] = var4; - return this.b(var10006); - } - - public TextRenderer b(Object[] var1) { - DrawMode var4 = (DrawMode)var1[0]; - int var5 = (Integer)var1[1]; - int var6 = (Integer)var1[2]; - long var2 = (Long)var1[3]; - var2 = 28755365965556L ^ var2; - long var7 = var2 ^ 109936647766440L; - long var9 = var2 ^ 25036787234434L; - long var11 = var2 ^ 86209165402986L; - long var13 = var2 ^ 8454589949756L; - Event.b(); - this.b.add(var4); - BufferData var16 = (BufferData)this.a.get(var4); - if (var16 != null) { - if (var16.ax().get() != null) { - return (TextRenderer)var16.ax().get(); - } else { - TextRenderer var22 = new TextRenderer(var4.a, var16.au(), var16.av(), var9); - var16.ax().set(var22); - return var22; - } - } else { - GpuBuffer var17 = (GpuBuffer)RenderUtil.a_Object___(new Object[]{(java.util.function.Supplier)GpuBuffer::a, var7}); - GpuBuffer var18 = (GpuBuffer)RenderUtil.a_Object___(new Object[]{(java.util.function.Supplier)GpuBuffer::a, var7}); - long var10002 = (long)var5 * var4.a.b; - Object[] var10005 = new Object[]{null, null, var13}; - var10005[1] = var10002; - var10005[0] = 35048; - var17.a(var10005); - var10002 = var6 * i; - var10005 = new Object[]{null, null, var13}; - var10005[1] = var10002; - var10005[0] = 35048; - var18.a(var10005); - TextRenderer var19 = new TextRenderer(var4.a, var17, var18, var9); - RenderHelper31 var20 = RenderHelper31.a(new Object[]{var17, var4.a, var11}); - this.a.put(var4, new BufferData(var17, var18, var20, new AtomicReference<>(var19))); - return var19; - } - } - - private void a_void_________________________(Object[] var1) { - MatrixCameraData var2 = (MatrixCameraData)var1[0]; - DrawMode var3 = (DrawMode)var1[1]; - long var4 = (Long)var1[2]; - var4 = 28755365965556L ^ var4; - long var6 = var4 ^ 120533942898075L; - long var8 = var4 ^ 21811419897088L; - long var10 = var4 ^ 31203651073671L; - Event.b(); - BufferData var13 = (BufferData)this.a.get(var3); - if (!c && var13 == null) { - throw new AssertionError(); - } else { - TextRenderer var14 = (TextRenderer)var13.ax().get(); - if (!c && var14 == null) { - throw new AssertionError(e); - } else { - int var15 = var14.b_int__(new Object[]{var10}); - int var16 = var14.a_int_____________________________(new Object[]{var8}); - var14.close(); - var13.ax().set(null); - ARBVertexArrayObject.glBindVertexArray(var13.aw().a_int________________________(new Object[0])); - var3.a_void________________(new Object[]{var2, var13.aw(), var13.av(), new VertexIntData(var3.a, var16, var15), var6}); - ARBVertexArrayObject.glBindVertexArray(0); - } - } - } - - public void b_void__________(Object[] var1) { - MatrixCameraData var2 = (MatrixCameraData)var1[0]; - long var3 = (Long)var1[1]; - var3 = 28755365965556L ^ var3; - long var5 = var3 ^ 71082937393543L; - Event.b(); - - for (DrawMode var9 : (Iterable)(this.b)) { - this.a_void_________________________(new Object[]{var2, var9, var5}); - } - - this.b.clear(); - this.a.size(); - } - - public Stream a_Stream(Object[] var1) { - return this.b.stream().map(lpL13_0 -> Pair.of(((dev.zprestige.prestige.render.DrawMode)lpL13_0), (TextRenderer)((BufferData)this.a.get(((dev.zprestige.prestige.render.DrawMode)lpL13_0))).ax().get())); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderHelper9.java b/src/main/java/dev/zprestige/prestige/render/RenderHelper9.java deleted file mode 100644 index c6c7bb0..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderHelper9.java +++ /dev/null @@ -1,74 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class RenderHelper9 { - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderLayerAccessor.java b/src/main/java/dev/zprestige/prestige/render/RenderLayerAccessor.java new file mode 100644 index 0000000..a5fe4a4 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/RenderLayerAccessor.java @@ -0,0 +1,18 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.RenderSetup; + +public class RenderLayerAccessor { + private final RenderLayer renderLayer; + private static final String RENDER_SETUP_FIELD = "renderSetup"; + + public RenderLayerAccessor(RenderLayer layer) { + this.renderLayer = layer; + } + + public RenderSetup getRenderSetup() { + return (RenderSetup)FieldAccessor.bindMapped(this.renderLayer, RENDER_SETUP_FIELD, RenderLayer.class, RenderSetup.class).get(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderLayerUtil.java b/src/main/java/dev/zprestige/prestige/render/RenderLayerUtil.java index c6cdac1..61fd503 100644 --- a/src/main/java/dev/zprestige/prestige/render/RenderLayerUtil.java +++ b/src/main/java/dev/zprestige/prestige/render/RenderLayerUtil.java @@ -1,9 +1,6 @@ package dev.zprestige.prestige.render; -import dev.zprestige.prestige.data.ConsumerData; -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.data.OutlineCaptureConsumer; import java.util.ArrayList; import java.util.Map; import java.util.Optional; @@ -16,108 +13,25 @@ import net.minecraft.client.render.RenderSetup.Texture; import net.minecraft.client.texture.GlTextureView; public class RenderLayerUtil { - public static Optional a(Object[] var0) { - RenderLayer var1 = (RenderLayer)var0[0]; - long var2 = (Long)var0[1]; - var2 = 50887277444900L ^ var2; - long var4 = var2 ^ 21565215403969L; - Event.b(); - RenderSetup var7 = new RenderHelper41(var1).a(new Object[]{var4}); - if (var7 == null) { + public static Optional getTextureId(RenderLayer layer) { + RenderSetup setup = new RenderLayerAccessor(layer).getRenderSetup(); + if (setup == null) { return Optional.empty(); } else { - Map var8 = var7.resolveTextures(); - ArrayList var9 = new ArrayList(); + Map textures = setup.resolveTextures(); + ArrayList textureIds = new ArrayList(); - for (Entry var11 : (Iterable)(var8.entrySet())) { - if (((Texture)var11.getValue()).textureView() instanceof GlTextureView var12) { - var9.add(var12.texture().getGlId()); + for (Entry entry : (Iterable)(textures.entrySet())) { + if (((Texture)entry.getValue()).textureView() instanceof GlTextureView glView) { + textureIds.add(glView.texture().getGlId()); } } - return var9.isEmpty() ? Optional.empty() : Optional.of((Integer)var9.get(0)); + return textureIds.isEmpty() ? Optional.empty() : Optional.of((Integer)textureIds.get(0)); } } - public static VertexConsumer a_class_4588(Object[] var0) { - VertexConsumer var3 = (VertexConsumer)var0[0]; - int var4 = (Integer)var0[1]; - long var1 = (Long)var0[2]; - var1 = 50887277444900L ^ var1; - long var5 = var1 ^ 75356188662889L; - PostShader var10003 = ESPUtil.a_PostShader(new Object[0]); - RenderHelper8 var10004 = RenderUtil.b; - Object[] var10008 = new Object[]{null, null, var5}; - var10008[1] = var4; - var10008[0] = var10004; - return VertexConsumers.union(var3, new ConsumerData(var10003.a_TextRenderer(var10008))); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public static VertexConsumer withOutlineBuffer(VertexConsumer consumer, int textureId) { + return VertexConsumers.union(consumer, new OutlineCaptureConsumer(EspShaderManager.getActiveShader().getMaskBuffer(RenderCore.BUFFER_SOURCE, textureId))); } } diff --git a/src/main/java/dev/zprestige/prestige/render/RenderPass.java b/src/main/java/dev/zprestige/prestige/render/RenderPass.java deleted file mode 100644 index c4f567a..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderPass.java +++ /dev/null @@ -1,193 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.math.MathUtil4; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.nio.FloatBuffer; -import java.util.Objects; -import java.util.OptionalDouble; -import java.util.OptionalInt; -import java.util.function.IntSupplier; -import org.lwjgl.opengl.GL30; -import org.lwjgl.system.MemoryStack; - -public class RenderPass { - private final IntSupplier a; - private final OptionalInt b; - private final OptionalDouble c; - public final Shader d; - private final int e; - private final int f; - - public RenderPass(DrawContext var1, long var2) { - this.a = Objects.requireNonNull(var1.a, "targetFramebuffer cannot be null"); - this.b = Objects.requireNonNull(var1.b, "clearColor cannot be null"); - this.c = Objects.requireNonNull(var1.c, "clearDepth cannot be null"); - this.d = Objects.requireNonNull(var1.d, "shaderProgram cannot be null"); - this.e = var1.d.b(new Object[0]); - this.f = var1.d.c(new Object[0]); - } - - public static DrawContext a(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 112476627212957L ^ var1; - long var3 = var1 ^ 115491843720741L; - return new DrawContext(var3); - } - - public void a_void__________________________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 112476627212957L ^ var2; - long var4 = var2 ^ 2820097244064L; - GL30.glBindFramebuffer(36160, this.a.getAsInt()); - this.e(new Object[]{var4}); - GL30.glUseProgram(this.d.a(new Object[0])); - } - - public void b(Object[] var1) { - MatrixCameraData var4 = (MatrixCameraData)var1[0]; - Event.b(); - this.d.a(new Object[0]); - - try (MemoryStack var7 = MemoryStack.stackPush()) { - FloatBuffer var8 = var7.mallocFloat(16); - FloatBuffer var9 = var7.mallocFloat(16); - if (this.e >= 0) { - var4.bA().get(var8); - var8.rewind(); - GL30.glUniformMatrix4fv(this.e, false, var8); - } - - if (this.f >= 0) { - var4.bB().get(var9); - var9.rewind(); - GL30.glUniformMatrix4fv(this.f, false, var9); - } - } - } - - public void d(Object[] var1) { - RenderHelper31 var3 = (RenderHelper31)var1[0]; - GpuBuffer var7 = (GpuBuffer)var1[1]; - int var4 = (Integer)var1[2]; - int var2 = (Integer)var1[3]; - GL30.glBindVertexArray(var3.a_int________________________(new Object[0])); - GL30.glBindBuffer(34963, var7.a_int_____________________(new Object[0])); - GL30.glDrawElements(var4, var2, 5125, 0L); - GL30.glBindVertexArray(0); - GL30.glBindBuffer(34963, 0); - } - - private void e(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 112476627212957L ^ var2; - long var4 = var2 ^ 107379758519815L; - long var6 = var2 ^ 116191617908441L; - long var8 = var2 ^ 67522234459532L; - long var10 = var2 ^ 41457372901639L; - Event.b(); - short var13 = 0; - if (this.b.isPresent()) { - int var14 = this.b.getAsInt(); - Object[] var10003 = new Object[]{null, var6}; - var10003[0] = var14; - float var10000 = MathUtil4.c_float_(var10003); - Object[] var10004 = new Object[]{null, var10}; - var10004[0] = var14; - float var10001 = MathUtil4.d_float(var10004); - Object[] var10005 = new Object[]{null, var8}; - var10005[0] = var14; - float var10002 = MathUtil4.e(var10005); - Object[] var10006 = new Object[]{null, var4}; - var10006[0] = var14; - GL30.glClearColor(var10000, var10001, var10002, MathUtil4.b_float_______(var10006)); - var13 = 16384; - } - - if (this.c.isPresent()) { - GL30.glClearDepth(this.c.getAsDouble()); - var13 |= 256; - } - - if (var13 != 0) { - GL30.glDisable(3089); - GL30.glDepthMask(true); - GL30.glColorMask(true, true, true, true); - GL30.glClear(var13); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderState.java b/src/main/java/dev/zprestige/prestige/render/RenderState.java deleted file mode 100644 index fce1ddd..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderState.java +++ /dev/null @@ -1,1278 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.type.GlPrimitive; -import dev.zprestige.prestige.world.WorldContract; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.concurrent.atomic.AtomicReference; -import net.minecraft.util.math.Vec3d; -import org.joml.Matrix4f; -import org.joml.Vector3d; -import org.joml.Vector4f; - -public class RenderState { - public static AtomicReference a = new AtomicReference(); - private static final ThreadLocal b = ThreadLocal.withInitial(Matrix4f::new); - private static final Matrix4f c = new Matrix4f(); - private static final ThreadLocal d = ThreadLocal.withInitial(Vector3d::new); - - public static void a(Object[] var0) { - if (a.get() == null) { - a.compareAndSet(null, new RenderHelper30()); - } - } - - public static RenderHelper30 a_RenderHelper30(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 18046302082221L ^ var1; - long var3 = var1 ^ 92530132840722L; - Event.b(); - RenderHelper30 var6 = (RenderHelper30)a.get(); - if (var6 == null) { - a(new Object[]{var3}); - var6 = (RenderHelper30)a.get(); - } - - return var6; - } - - public static void b(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 18046302082221L ^ var1; - long var3 = var1 ^ 36463098488120L; - long var5 = var1 ^ 72256607524280L; - a_RenderHelper30(new Object[]{var3}).c(new Object[]{MatrixStack.h, var5}); - } - - public static void c(Object[] var0) { - MatrixCameraData var5 = (MatrixCameraData)var0[0]; - RenderHelper8 var6 = (RenderHelper8)var0[1]; - ArrayList var1 = (ArrayList)var0[2]; - Color var2 = (Color)var0[3]; - long var3 = (Long)var0[4]; - var3 = 18046302082221L ^ var3; - long var7 = var3 ^ 120665052813699L; - long var9 = var3 ^ 55014381306608L; - long var11 = var3 ^ 21383307439867L; - long var13 = var3 ^ 71707964313541L; - long var15 = var3 ^ 94290272811548L; - long var17 = var3 ^ 79348456535108L; - long var19 = var3 ^ 117686603046534L; - if (!var1.isEmpty()) { - Matrix4f var22 = ((Matrix4f)b.get()).identity(); - TextRenderer var23 = var6.a(new Object[]{UniformCache.e, var19}); - int var24 = a_int_________________________(new Object[]{var2, var7}); - var23.k(new Object[]{var9}); - Vector3d var25 = (Vector3d)d.get(); - - for (Vec3d var27 : (Iterable)(var1)) { - double var10001 = var27.x; - double var10002 = var27.y; - double var10003 = var27.z; - Object[] var10007 = new Object[]{null, null, null, null, var25, var17}; - var10007[3] = var10003; - var10007[2] = var10002; - var10007[1] = var10001; - var10007[0] = var5; - RenderUtil.b_Vector3d(var10007); - float var29 = (float)var25.x; - float var30 = (float)var25.y; - float var10004 = (float)var25.z; - var10007 = new Object[]{null, null, null, null, var13}; - var10007[3] = var10004; - var10007[2] = var30; - var10007[1] = var29; - var10007[0] = var22; - TextRenderer var10000 = var23.d_TextRenderer(var10007); - Object[] var31 = new Object[]{null, var11}; - var31[0] = var24; - var10000.e_TextRenderer(var31); - } - - ((TextRenderer)var23.i_WorldContract(new Object[]{GlPrimitive.DEBUG_LINE_STRIP, var15})).h_TextRenderer(new Object[0]); - } - } - - public static void d(Object[] var0) { - MatrixCameraData var10 = (MatrixCameraData)var0[0]; - RenderHelper8 var7 = (RenderHelper8)var0[1]; - float var3 = (Float)var0[2]; - float var6 = (Float)var0[3]; - float var4 = (Float)var0[4]; - float var5 = (Float)var0[5]; - Color var1 = (Color)var0[6]; - Color var2 = (Color)var0[7]; - long var8 = (Long)var0[8]; - var8 = 18046302082221L ^ var8; - long var11 = var8 ^ 7964302088389L; - Matrix4f var10002 = ((Matrix4f)b.get()).identity(); - Object[] var10011 = new Object[]{null, null, null, null, null, null, null, var1, var2, var11}; - var10011[6] = var5; - var10011[5] = var4; - var10011[4] = var6; - var10011[3] = var3; - var10011[2] = var10002; - var10011[1] = var7; - var10011[0] = var10; - e(var10011); - } - - public static void e(Object[] var0) { - MatrixCameraData var10 = (MatrixCameraData)var0[0]; - RenderHelper8 var5 = (RenderHelper8)var0[1]; - Matrix4f var4 = (Matrix4f)var0[2]; - float var7 = (Float)var0[3]; - float var1 = (Float)var0[4]; - float var6 = (Float)var0[5]; - float var2 = (Float)var0[6]; - Color var3 = (Color)var0[7]; - Color var11 = (Color)var0[8]; - long var8 = (Long)var0[9]; - var8 = 18046302082221L ^ var8; - long var12 = var8 ^ 28605165352853L; - long var14 = var8 ^ 85800112683306L; - long var16 = var8 ^ 19513781723737L; - long var18 = var8 ^ 53621875101266L; - long var20 = var8 ^ 108309128245100L; - long var22 = var8 ^ 130256872118965L; - long var24 = var8 ^ 79986997050927L; - double var10001 = var7; - double var10002 = var1; - double var10003 = var6; - Object[] var10006 = new Object[]{null, null, null, null, var12}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var10; - Vector3d var27 = RenderUtil.a_Vector3d(var10006); - TextRenderer var28 = var5.a(new Object[]{UniformCache.b, var24}); - Event.b(); - float var29 = (float)var27.x; - float var30 = (float)var27.y; - float var31 = (float)var27.z; - int var32 = a_int_________________________(new Object[]{var3, var14}); - int var33 = a_int_________________________(new Object[]{var11, var14}); - var28.k(new Object[]{var16}); - Object[] var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var31; - var10007[2] = var30; - var10007[1] = var29; - var10007[0] = var4; - TextRenderer var10000 = var28.d_TextRenderer(var10007); - Object[] var10004 = new Object[]{null, var18}; - var10004[0] = var32; - var10000.e_TextRenderer(var10004); - - for (int var34 = 0; var34 <= 100; var34++) { - float var35 = (float)((Math.PI * 2) * var34 / 100.0); - float var36 = (float)Math.cos(var35); - float var37 = (float)Math.sin(var35); - float var38 = var29 + var2 * var36; - float var39 = var31 + var2 * var37; - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var39; - var10007[2] = var30; - var10007[1] = var38; - var10007[0] = var4; - var10000 = var28.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var33; - var10000.e_TextRenderer(var10004); - } - - ((TextRenderer)var28.i_WorldContract(new Object[]{GlPrimitive.TRIANGLES_FAN, var22})).h_TextRenderer(new Object[0]); - } - - public static void f(Object[] var0) { - MatrixCameraData var3 = (MatrixCameraData)var0[0]; - RenderHelper8 var4 = (RenderHelper8)var0[1]; - float var8 = (Float)var0[2]; - float var2 = (Float)var0[3]; - float var5 = (Float)var0[4]; - float var7 = (Float)var0[5]; - float var1 = (Float)var0[6]; - float var6 = (Float)var0[7]; - Color var10 = (Color)var0[8]; - Color var9 = (Color)var0[9]; - long var11 = (Long)var0[10]; - var11 = 18046302082221L ^ var11; - long var13 = var11 ^ 56965606282520L; - long var15 = var11 ^ 114089820871591L; - long var17 = var11 ^ 62071236788436L; - long var19 = var11 ^ 27555148295391L; - long var21 = var11 ^ 82784708152801L; - long var23 = var11 ^ 52805101659756L; - long var25 = var11 ^ 13433469854200L; - long var27 = var11 ^ 107151155109026L; - double var10001 = var8; - double var10002 = var2; - double var10003 = var5; - Object[] var10006 = new Object[]{null, null, null, null, var13}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var3; - Vector3d var30 = RenderUtil.a_Vector3d(var10006); - Matrix4f var31 = ((Matrix4f)b.get()).identity(); - TextRenderer var32 = var4.a(new Object[]{UniformCache.b, var27}); - Event.b(); - float var33 = (float)var30.x; - float var34 = (float)var30.y; - float var35 = (float)var30.z; - int var36 = a_int_________________________(new Object[]{var10, var15}); - int var37 = a_int_________________________(new Object[]{var9, var15}) & 16777215; - var32.k(new Object[]{var17}); - - for (int var38 = 0; var38 <= 100; var38++) { - float var39 = (float)((Math.PI * 2) * var38 / 100.0); - float var40 = (float)Math.cos(var39); - float var41 = (float)Math.sin(var39); - float var42 = var33 + (var7 + var1 / 2.0F + var6) * var40; - float var43 = var35 + (var7 + var1 / 2.0F + var6) * var41; - Object[] var10007 = new Object[]{null, null, null, null, var21}; - var10007[3] = var43; - var10007[2] = var34; - var10007[1] = var42; - var10007[0] = var31; - TextRenderer var10000 = var32.d_TextRenderer(var10007); - Object[] var10004 = new Object[]{null, var19}; - var10004[0] = var37; - var10000.e_TextRenderer(var10004); - float var44 = var33 + (var7 + var1 / 2.0F) * var40; - float var45 = var35 + (var7 + var1 / 2.0F) * var41; - var10007 = new Object[]{null, null, null, null, var21}; - var10007[3] = var45; - var10007[2] = var34; - var10007[1] = var44; - var10007[0] = var31; - var10000 = var32.d_TextRenderer(var10007); - var10004 = new Object[]{null, var19}; - var10004[0] = var36; - var10000.e_TextRenderer(var10004); - float var46 = var33 + (var7 - var1 / 2.0F) * var40; - float var47 = var35 + (var7 - var1 / 2.0F) * var41; - var10007 = new Object[]{null, null, null, null, var21}; - var10007[3] = var47; - var10007[2] = var34; - var10007[1] = var46; - var10007[0] = var31; - var10000 = var32.d_TextRenderer(var10007); - var10004 = new Object[]{null, var19}; - var10004[0] = var36; - var10000.e_TextRenderer(var10004); - float var48 = var33 + (var7 - var1 / 2.0F - var6) * var40; - float var49 = var35 + (var7 - var1 / 2.0F - var6) * var41; - var10007 = new Object[]{null, null, null, null, var21}; - var10007[3] = var49; - var10007[2] = var34; - var10007[1] = var48; - var10007[0] = var31; - var10000 = var32.d_TextRenderer(var10007); - var10004 = new Object[]{null, var19}; - var10004[0] = var37; - var10000.e_TextRenderer(var10004); - } - - Object[] var60 = new Object[]{null, var23}; - var60[0] = 7200; - var32.a(var60); - - for (int var51 = 0; var51 < 100; var51++) { - int var52 = var51 * 4; - int var53 = (var51 + 1) % 101 * 4; - var32.g_TextRenderer(new Object[]{new int[]{var52, var52 + 1, var53 + 1, var53 + 1, var53, var52}, var25}); - var32.g_TextRenderer(new Object[]{new int[]{var52 + 1, var52 + 2, var53 + 2, var53 + 2, var53 + 1, var52 + 1}, var25}); - var32.g_TextRenderer(new Object[]{new int[]{var52 + 2, var52 + 3, var53 + 3, var53 + 3, var53 + 2, var52 + 2}, var25}); - } - - var32.h_TextRenderer(new Object[0]); - } - - public static void g(Object[] var0) { - MatrixCameraData var4 = (MatrixCameraData)var0[0]; - RenderHelper8 var3 = (RenderHelper8)var0[1]; - float var1 = (Float)var0[2]; - float var9 = (Float)var0[3]; - float var8 = (Float)var0[4]; - float var10 = (Float)var0[5]; - float var5 = (Float)var0[6]; - float var11 = (Float)var0[7]; - Color var2 = (Color)var0[8]; - long var6 = (Long)var0[9]; - var6 = 18046302082221L ^ var6; - long var12 = var6 ^ 20846251341884L; - long var14 = var6 ^ 78037020522115L; - long var16 = var6 ^ 27826654342640L; - long var18 = var6 ^ 61801845654011L; - long var20 = var6 ^ 117029852061893L; - long var22 = var6 ^ 139115186640156L; - long var24 = var6 ^ 70707532034438L; - double var10001 = var1; - double var10002 = var9; - double var10003 = var8; - Object[] var10006 = new Object[]{null, null, null, null, var12}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var4; - Vector3d var26 = RenderUtil.a_Vector3d(var10006); - var10001 = var10; - var10002 = var5; - var10003 = var11; - var10006 = new Object[]{null, null, null, null, var12}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var4; - Vector3d var27 = RenderUtil.a_Vector3d(var10006); - Matrix4f var28 = ((Matrix4f)b.get()).identity(); - TextRenderer var29 = var3.a(new Object[]{UniformCache.e, var24}); - int var30 = a_int_________________________(new Object[]{var2, var14}); - float var31 = (float)var26.x; - float var32 = (float)var26.y; - float var33 = (float)var26.z; - float var34 = (float)var27.x; - float var35 = (float)var27.y; - float var36 = (float)var27.z; - TextRenderer var10000 = (TextRenderer)var29.k(new Object[]{var16}); - Object[] var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var32; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - Object[] var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var32; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var32; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var32; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var32; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var35; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var35; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var32; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var32; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var35; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var32; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var35; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - ((TextRenderer)var10000.e_TextRenderer(var10004).i_WorldContract(new Object[]{GlPrimitive.DEBUG_LINE_STRIP, var22})).h_TextRenderer(new Object[0]); - } - - public static void h(Object[] var0) { - MatrixCameraData var11 = (MatrixCameraData)var0[0]; - RenderHelper8 var3 = (RenderHelper8)var0[1]; - float var1 = (Float)var0[2]; - float var5 = (Float)var0[3]; - float var7 = (Float)var0[4]; - float var2 = (Float)var0[5]; - float var6 = (Float)var0[6]; - float var4 = (Float)var0[7]; - Color var8 = (Color)var0[8]; - long var9 = (Long)var0[9]; - var9 = 18046302082221L ^ var9; - long var12 = var9 ^ 31196498330283L; - long var14 = var9 ^ 79522623343636L; - long var16 = var9 ^ 26271250421607L; - long var18 = var9 ^ 60058546928492L; - long var20 = var9 ^ 110887592974930L; - long var22 = var9 ^ 123335926886283L; - long var24 = var9 ^ 86744447847185L; - double var10001 = var1; - double var10002 = var5; - double var10003 = var7; - Object[] var10006 = new Object[]{null, null, null, null, var12}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var11; - Vector3d var26 = RenderUtil.a_Vector3d(var10006); - var10001 = var2; - var10002 = var6; - var10003 = var4; - var10006 = new Object[]{null, null, null, null, var12}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var11; - Vector3d var27 = RenderUtil.a_Vector3d(var10006); - Matrix4f var28 = ((Matrix4f)b.get()).identity(); - TextRenderer var29 = var3.a(new Object[]{UniformCache.b, var24}); - int var30 = a_int_________________________(new Object[]{var8, var14}); - float var31 = (float)var26.x; - float var32 = (float)var26.y; - float var33 = (float)var26.z; - float var34 = (float)var27.x; - float var35 = (float)var27.y; - float var36 = (float)var27.z; - TextRenderer var10000 = (TextRenderer)var29.k(new Object[]{var16}); - Object[] var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var35; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - Object[] var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var35; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var32; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var32; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var32; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var32; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var32; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var32; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var35; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var32; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var35; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var32; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var32; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var32; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var35; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var35; - var10007[1] = var31; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var32; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var33; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var20}; - var10007[3] = var36; - var10007[2] = var32; - var10007[1] = var34; - var10007[0] = var28; - var10000 = var10000.d_TextRenderer(var10007); - var10004 = new Object[]{null, var18}; - var10004[0] = var30; - ((TextRenderer)var10000.e_TextRenderer(var10004).i_WorldContract(new Object[]{GlPrimitive.QUADS, var22})).h_TextRenderer(new Object[0]); - } - - public static void k(Object[] var0) { - Matrix4f var5 = (Matrix4f)var0[0]; - float var1 = (Float)var0[1]; - float var4 = (Float)var0[2]; - float var7 = (Float)var0[3]; - float var9 = (Float)var0[4]; - float var8 = (Float)var0[5]; - float var6 = (Float)var0[6]; - int var10 = (Integer)var0[7]; - long var2 = (Long)var0[8]; - var2 = 18046302082221L ^ var2; - long var11 = var2 ^ 26689699278352L; - long var13 = var2 ^ 110910168466156L; - a_RenderHelper30(new Object[]{var11}).b(new Object[]{new RenderHelper13(UniformCache.c, (lpL70_0, lpL70_1) -> { - Object[] var10003 = new Object[]{null, 91022737183023L}; - var10003[0] = var10; - int var24 = b_int_(var10003); - WorldContract var10000 = ((dev.zprestige.prestige.world.WorldContract)lpL70_1).k(new Object[]{111161505170643L}); - float var10004 = ((java.lang.Float)lpL70_0); - Object[] var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var4; - var10007[1] = var1; - var10007[0] = var5; - var10000 = var10000.d(var10007); - Object[] var30 = new Object[]{null, 106573078251021L}; - var30[0] = var24; - var10000 = var10000.e(var30); - var10004 = ((java.lang.Float)lpL70_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var9; - var10007[1] = var7; - var10007[0] = var5; - var10000 = var10000.d(var10007); - Object[] var32 = new Object[]{null, 106573078251021L}; - var32[0] = var24; - var10000 = var10000.e(var32); - var10004 = ((java.lang.Float)lpL70_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var6; - var10007[1] = var8; - var10007[0] = var5; - var10000 = var10000.d(var10007); - Object[] var34 = new Object[]{null, 106573078251021L}; - var34[0] = var24; - var10000.e(var34).i_WorldContract(new Object[]{GlPrimitive.TRIANGLES, 3098493320255L}).h(new Object[]{7414847813752L}); - }), var13}); - } - - public static void l(Object[] var0) { - Matrix4f var1 = (Matrix4f)var0[0]; - float var4 = (Float)var0[1]; - float var7 = (Float)var0[2]; - float var2 = (Float)var0[3]; - float var3 = (Float)var0[4]; - Color var8 = (Color)var0[5]; - long var5 = (Long)var0[6]; - var5 = 18046302082221L ^ var5; - long var9 = var5 ^ 77113810277705L; - int var10005 = var8.getRGB(); - Object[] var10008 = new Object[]{null, null, null, null, null, null, var9}; - var10008[5] = var10005; - var10008[4] = var3; - var10008[3] = var2; - var10008[2] = var7; - var10008[1] = var4; - var10008[0] = var1; - m(var10008); - } - - public static void m(Object[] var0) { - Matrix4f var7 = (Matrix4f)var0[0]; - float var6 = (Float)var0[1]; - float var2 = (Float)var0[2]; - float var5 = (Float)var0[3]; - float var1 = (Float)var0[4]; - int var8 = (Integer)var0[5]; - long var3 = (Long)var0[6]; - var3 = 18046302082221L ^ var3; - long var9 = var3 ^ 6194065297283L; - long var11 = var3 ^ 133295588582271L; - a_RenderHelper30(new Object[]{var9}).b(new Object[]{new RenderHelper13(UniformCache.c, (lpL69_0, lpL69_1) -> { - Object[] var10003 = new Object[]{null, 91022737183023L}; - var10003[0] = var8; - int var22 = b_int_(var10003); - WorldContract var10000 = ((dev.zprestige.prestige.world.WorldContract)lpL69_1).k(new Object[]{111161505170643L}); - float var10004 = ((java.lang.Float)lpL69_0); - Object[] var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var1; - var10007[1] = var6; - var10007[0] = var7; - var10000 = var10000.d(var10007); - Object[] var30 = new Object[]{null, 106573078251021L}; - var30[0] = var22; - var10000 = var10000.e(var30); - var10004 = ((java.lang.Float)lpL69_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var1; - var10007[1] = var5; - var10007[0] = var7; - var10000 = var10000.d(var10007); - Object[] var32 = new Object[]{null, 106573078251021L}; - var32[0] = var22; - var10000 = var10000.e(var32); - var10004 = ((java.lang.Float)lpL69_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var2; - var10007[1] = var5; - var10007[0] = var7; - var10000 = var10000.d(var10007); - Object[] var34 = new Object[]{null, 106573078251021L}; - var34[0] = var22; - var10000 = var10000.e(var34); - var10004 = ((java.lang.Float)lpL69_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var2; - var10007[1] = var6; - var10007[0] = var7; - var10000 = var10000.d(var10007); - Object[] var36 = new Object[]{null, 106573078251021L}; - var36[0] = var22; - var10000.e(var36).i_WorldContract(new Object[]{GlPrimitive.QUADS, 3098493320255L}).h(new Object[]{7414847813752L}); - }), var11}); - } - - public static void u(Object[] var0) { - Matrix4f var5 = (Matrix4f)var0[0]; - float var1 = (Float)var0[1]; - float var4 = (Float)var0[2]; - float var3 = (Float)var0[3]; - float var2 = (Float)var0[4]; - Color var6 = (Color)var0[5]; - Vector4f var9 = (Vector4f)var0[6]; - long var7 = (Long)var0[7]; - var7 = 18046302082221L ^ var7; - long var10 = var7 ^ 116335856689068L; - long var12 = var7 ^ 73997186512419L; - long var14 = var7 ^ 23467337675600L; - a_RenderHelper30(new Object[]{var10}) - .b( - new Object[]{ - new RenderHelper13( - UniformCache.a(new Object[]{var9, var12}), - (lpL68_0, lpL68_1) -> { - int var10000 = var6.getRGB(); - Object[] var10003 = new Object[]{null, 91022737183023L}; - var10003[0] = var10000; - int var24 = b_int_(var10003); - float var25 = var3 - var1; - float var26 = var2 - var4; - WorldContract var27 = ((dev.zprestige.prestige.world.WorldContract)lpL68_1).k(new Object[]{111161505170643L}); - float var10004 = ((java.lang.Float)lpL68_0); - Object[] var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var2; - var10007[1] = var1; - var10007[0] = var5; - WorldContract var28 = var27.d(var10007) - .b_WorldContract(new Object[]{new float[]{0.0F, 0.0F}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var25, var26}, 118034685045795L}); - Object[] var35 = new Object[]{null, 106573078251021L}; - var35[0] = var24; - WorldContract var29 = var28.e(var35); - var10004 = ((java.lang.Float)lpL68_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var2; - var10007[1] = var3; - var10007[0] = var5; - WorldContract var30 = var29.d(var10007) - .b_WorldContract(new Object[]{new float[]{var25, 0.0F}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var25, var26}, 118034685045795L}); - Object[] var37 = new Object[]{null, 106573078251021L}; - var37[0] = var24; - WorldContract var31 = var30.e(var37); - var10004 = ((java.lang.Float)lpL68_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var4; - var10007[1] = var3; - var10007[0] = var5; - WorldContract var32 = var31.d(var10007) - .b_WorldContract(new Object[]{new float[]{var25, var26}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var25, var26}, 118034685045795L}); - Object[] var39 = new Object[]{null, 106573078251021L}; - var39[0] = var24; - WorldContract var33 = var32.e(var39); - var10004 = ((java.lang.Float)lpL68_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var4; - var10007[1] = var1; - var10007[0] = var5; - WorldContract var34 = var33.d(var10007) - .b_WorldContract(new Object[]{new float[]{0.0F, var26}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var25, var26}, 118034685045795L}); - Object[] var41 = new Object[]{null, 106573078251021L}; - var41[0] = var24; - var34.e(var41).i_WorldContract(new Object[]{GlPrimitive.QUADS, 3098493320255L}).h(new Object[]{7414847813752L}); - } - ), - var14 - } - ); - } - - public static void w(Object[] var0) { - Matrix4f var7 = (Matrix4f)var0[0]; - float var12 = (Float)var0[1]; - float var8 = (Float)var0[2]; - float var3 = (Float)var0[3]; - float var11 = (Float)var0[4]; - Color var2 = (Color)var0[5]; - Color var4 = (Color)var0[6]; - Color var9 = (Color)var0[7]; - Color var1 = (Color)var0[8]; - Vector4f var10 = (Vector4f)var0[9]; - long var5 = (Long)var0[10]; - var5 = 18046302082221L ^ var5; - long var13 = var5 ^ 11828101370340L; - long var15 = var5 ^ 35475031750763L; - long var17 = var5 ^ 130122862378264L; - a_RenderHelper30(new Object[]{var13}) - .b( - new Object[]{ - new RenderHelper13( - UniformCache.a(new Object[]{var10, var15}), - (lpL67_0, lpL67_1) -> { - int var27 = a_int_________________________(new Object[]{var2, 64520126767008L}); - int var28 = a_int_________________________(new Object[]{var4, 64520126767008L}); - int var29 = a_int_________________________(new Object[]{var9, 64520126767008L}); - int var30 = a_int_________________________(new Object[]{var1, 64520126767008L}); - float var31 = var3 - var12; - float var32 = var11 - var8; - WorldContract var10000 = ((dev.zprestige.prestige.world.WorldContract)lpL67_1).k(new Object[]{111161505170643L}); - float var10004 = ((java.lang.Float)lpL67_0); - Object[] var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var11; - var10007[1] = var12; - var10007[0] = var7; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{0.0F, 0.0F}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var31, var32}, 118034685045795L}); - Object[] var40 = new Object[]{null, 106573078251021L}; - var40[0] = var27; - var10000 = var10000.e(var40); - var10004 = ((java.lang.Float)lpL67_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var11; - var10007[1] = var3; - var10007[0] = var7; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{var31, 0.0F}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var31, var32}, 118034685045795L}); - Object[] var42 = new Object[]{null, 106573078251021L}; - var42[0] = var28; - var10000 = var10000.e(var42); - var10004 = ((java.lang.Float)lpL67_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var8; - var10007[1] = var3; - var10007[0] = var7; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{var31, var32}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var31, var32}, 118034685045795L}); - Object[] var44 = new Object[]{null, 106573078251021L}; - var44[0] = var29; - var10000 = var10000.e(var44); - var10004 = ((java.lang.Float)lpL67_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var8; - var10007[1] = var12; - var10007[0] = var7; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{0.0F, var32}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var31, var32}, 118034685045795L}); - Object[] var46 = new Object[]{null, 106573078251021L}; - var46[0] = var30; - var10000.e(var46).i_WorldContract(new Object[]{GlPrimitive.QUADS, 3098493320255L}).h(new Object[]{7414847813752L}); - } - ), - var17 - } - ); - } - - public static void y(Object[] var0) { - Matrix4f var4 = (Matrix4f)var0[0]; - float var1 = (Float)var0[1]; - float var3 = (Float)var0[2]; - float var7 = (Float)var0[3]; - int var2 = (Integer)var0[4]; - long var5 = (Long)var0[5]; - var5 = 18046302082221L ^ var5; - long var8 = var5 ^ 78498517662214L; - long var10 = var5 ^ 65960957990650L; - a_RenderHelper30(new Object[]{var8}).b(new Object[]{new RenderHelper13(UniformCache.c, (lpL66_0, lpL66_1) -> { - Object[] var10003 = new Object[]{null, 91022737183023L}; - var10003[0] = var2; - int var22 = b_int_(var10003); - ((dev.zprestige.prestige.world.WorldContract)lpL66_1).k(new Object[]{111161505170643L}); - Event.b(); - float var10005 = ((java.lang.Float)lpL66_0); - Object[] var10008 = new Object[]{null, null, null, null, 116910503435476L}; - var10008[3] = var10005; - var10008[2] = var3; - var10008[1] = var1; - var10008[0] = var4; - WorldContract var10001 = ((dev.zprestige.prestige.world.WorldContract)lpL66_1).d(var10008); - Object[] var28 = new Object[]{null, 106573078251021L}; - var28[0] = var22; - var10001.e(var28); - int var23 = Math.max(12, (int)(var7 * 2.0F)); - - for (int var24 = 0; var24 < var23; var24++) { - float var25 = (float)((Math.PI * 2) * var24 / var23); - float var10002 = (float)(var1 + Math.sin(var25) * var7); - float var26 = (float)(var3 + Math.cos(var25) * var7); - float var10004 = ((java.lang.Float)lpL66_0); - Object[] var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var26; - var10007[1] = var10002; - var10007[0] = var4; - WorldContract var10000 = ((dev.zprestige.prestige.world.WorldContract)lpL66_1).d(var10007); - Object[] var27 = new Object[]{null, 106573078251021L}; - var27[0] = var22; - var10000.e(var27); - } - - ((dev.zprestige.prestige.world.WorldContract)lpL66_1).i_WorldContract(new Object[]{GlPrimitive.TRIANGLES_FAN, 3098493320255L}).h(new Object[]{7414847813752L}); - }), var10}); - } - - public static void A(Object[] var0) { - Matrix4f var5 = (Matrix4f)var0[0]; - float var3 = (Float)var0[1]; - float var1 = (Float)var0[2]; - float var2 = (Float)var0[3]; - float var8 = (Float)var0[4]; - int var4 = (Integer)var0[5]; - long var6 = (Long)var0[6]; - var6 = 18046302082221L ^ var6; - long var9 = var6 ^ 131489645526610L; - long var11 = var6 ^ 12162116752046L; - a_RenderHelper30(new Object[]{var9}).b(new Object[]{new RenderHelper13(UniformCache.c, (lpL65_0, lpL65_1) -> { - Event.b(); - Object[] var10004 = new Object[]{null, 91022737183023L}; - var10004[0] = var4; - int var23 = b_int_(var10004); - float var25 = var8 / 2.0F; - float var26 = var2 + var25; - float var27 = Math.max(0.0F, var2 - var25); - ((dev.zprestige.prestige.world.WorldContract)lpL65_1).k(new Object[]{111161505170643L}); - - for (int var28 = 0; var28 <= 100; var28++) { - float var29 = (float)((Math.PI * 2) * var28 / 100); - float var30 = (float)Math.cos(var29); - float var31 = (float)Math.sin(var29); - float var32 = var3 + var26 * var30; - float var33 = var1 + var26 * var31; - float var34 = var3 + var27 * var30; - float var35 = var1 + var27 * var31; - float var37 = ((java.lang.Float)lpL65_0); - Object[] var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var37; - var10007[2] = var33; - var10007[1] = var32; - var10007[0] = var5; - WorldContract var10000 = ((dev.zprestige.prestige.world.WorldContract)lpL65_1).d(var10007); - var10004 = new Object[]{null, 106573078251021L}; - var10004[0] = var23; - var10000.e(var10004); - float var39 = ((java.lang.Float)lpL65_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var39; - var10007[2] = var35; - var10007[1] = var34; - var10007[0] = var5; - var10000 = ((dev.zprestige.prestige.world.WorldContract)lpL65_1).d(var10007); - var10004 = new Object[]{null, 106573078251021L}; - var10004[0] = var23; - var10000.e(var10004); - } - - ((dev.zprestige.prestige.world.WorldContract)lpL65_1).i_WorldContract(new Object[]{GlPrimitive.QUAD_STRIP, 3098493320255L}).h(new Object[]{7414847813752L}); - }), var11}); - } - - public static void C(Object[] var0) { - RenderHelper8 var8 = (RenderHelper8)var0[0]; - MatrixCameraData var9 = (MatrixCameraData)var0[1]; - Matrix4f var12 = (Matrix4f)var0[2]; - float var3 = (Float)var0[3]; - float var6 = (Float)var0[4]; - float var7 = (Float)var0[5]; - float var4 = (Float)var0[6]; - Color var2 = (Color)var0[7]; - float var5 = (Float)var0[8]; - float var1 = (Float)var0[9]; - long var10 = (Long)var0[10]; - var10 = 18046302082221L ^ var10; - long var13 = var10 ^ 128467875067440L; - float var10005 = var7 - var3; - float var10006 = var4 - var6; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, null, null, var13}; - var10012[9] = var1; - var10012[8] = var5; - var10012[7] = var2; - var10012[6] = var10006; - var10012[5] = var10005; - var10012[4] = var6; - var10012[3] = var3; - var10012[2] = var12; - var10012[1] = var9; - var10012[0] = var8; - RoundedOutlinePosColorShader.c(var10012); - } - - public static Color a_Color________(Object[] var0) { - Color var1 = (Color)var0[0]; - float var4 = (Float)var0[1]; - float var5 = var1.getRed() / 255.0F; - float var6 = var1.getGreen() / 255.0F; - float var7 = var1.getBlue() / 255.0F; - return new Color(var5, var6, var7, var4); - } - - public static int a_int_________________________(Object[] var0) { - Color var1 = (Color)var0[0]; - long var2 = (Long)var0[1]; - var2 = 18046302082221L ^ var2; - long var4 = var2 ^ 132006251518498L; - int var10000 = var1.getRGB(); - Object[] var10003 = new Object[]{null, var4}; - var10003[0] = var10000; - return b_int_(var10003); - } - - public static int b_int_(Object[] var0) { - int var3 = (Integer)var0[0]; - int var4 = var3 >> 24 & 0xFF; - int var5 = var3 >> 16 & 0xFF; - int var6 = var3 >> 8 & 0xFF; - int var7 = var3 & 0xFF; - return var4 << 24 | var7 << 16 | var6 << 8 | var5; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderStateElement.java b/src/main/java/dev/zprestige/prestige/render/RenderStateElement.java new file mode 100644 index 0000000..e1d3aea --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/RenderStateElement.java @@ -0,0 +1,81 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.DepthMaskState; +import dev.zprestige.prestige.data.BlendToggleState; +import dev.zprestige.prestige.data.BlendFuncState; +import dev.zprestige.prestige.data.ScissorState; +import dev.zprestige.prestige.data.UniformCallbackState; +import dev.zprestige.prestige.data.GlCapabilityState; +import dev.zprestige.prestige.data.DepthFuncState; +import dev.zprestige.prestige.data.FramebufferBindState; +import dev.zprestige.prestige.data.ShaderBindState; +import java.util.function.Consumer; + +public interface RenderStateElement { + FramebufferBindState MAIN_TARGET = new FramebufferBindState(RenderCore::getMainFramebufferId); + + default void configure(GlRenderPassBuilder passBuilder) { + } + + default void apply(GlRenderPass pass) { + } + + default void cleanup() { + } + + default boolean allowsDuplicates() { + return false; + } + + static DepthMaskState depthMask(boolean enabled, boolean restoreEnabled) { + return new DepthMaskState(enabled, restoreEnabled); + } + + static DepthMaskState depthMask(boolean enabled) { + return new DepthMaskState(enabled, enabled); + } + + static GlCapabilityState capability(int cap, boolean enabled) { + return new GlCapabilityState(cap, enabled); + } + + static GlCapabilityState capability(int cap, boolean enabled, boolean restoreEnabled) { + return new GlCapabilityState(cap, enabled, restoreEnabled); + } + + static ShaderBindState shader(Shader program) { + return new ShaderBindState(program); + } + + static FramebufferBindState target(int framebufferId) { + return new FramebufferBindState(framebufferId); + } + + static DepthFuncState depthFunc(int func, int restoreFunc) { + return new DepthFuncState(func, restoreFunc); + } + + static BlendToggleState blend(boolean enabled, boolean restoreEnabled) { + return new BlendToggleState(enabled, restoreEnabled); + } + + static BlendFuncState blendFunc(boolean enabled, boolean restoreEnabled, int srcRgb, int dstRgb, int srcAlpha, int dstAlpha) { + return new BlendFuncState(enabled, restoreEnabled, srcRgb, dstRgb, srcAlpha, dstAlpha); + } + + static ScissorState scissor(boolean enabled, boolean restoreEnabled, int x, int y, int width, int height) { + return new ScissorState(enabled, restoreEnabled, x, y, width, height); + } + + static UniformCallbackState uniforms(Consumer uniformSetter) { + return new UniformCallbackState(uniformSetter); + } + + static RenderStateElement onApply(Consumer action) { + return new ApplyCallbackState(action); + } + + static RenderStateElement onConfigure(Consumer action) { + return new ConfigureCallbackState(action); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderTarget.java b/src/main/java/dev/zprestige/prestige/render/RenderTarget.java deleted file mode 100644 index 150f0d6..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderTarget.java +++ /dev/null @@ -1,286 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.math.MathUtil4; -import dev.zprestige.prestige.type.GlPrimitive; -import dev.zprestige.prestige.world.WorldContract; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Map; -import java.util.function.Consumer; -import org.joml.Matrix4f; -import org.joml.Vector4f; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL13; -import org.lwjgl.opengl.GL20; - -public class RenderTarget extends ShaderBase { - private static final RenderTarget a = new RenderTarget(0L); - private static final Map b; - private static final Map c; - private final int d; - private final int e; - - private RenderTarget(long var1) { - super("shaders/rounded_texture.vert", "shaders/rounded_texture_blurred.frag", (16076376986889L)); - var1 = 0L; - var1 = 82121221110725L ^ var1; - long var3 = var1 ^ 34477175487750L; - long var5 = var1 ^ 74969804123852L; - long var7 = var1 ^ 23882391755052L; - this.d = this.a_Shader(new Object[0]).d(new Object[]{"roundness", var3}); - this.e = this.a_Shader(new Object[0]).d(new Object[]{"invBlurTexSize", var3}); - Shader var10000 = this.a_Shader(new Object[0]); - Object[] var10005 = new Object[]{null, null, var7}; - var10005[1] = 0; - var10005[0] = "texSampler"; - var10000.a_void_____________________________(var10005); - } - - public static void d(Object[] var0) { - RenderHelper8 var10 = (RenderHelper8)var0[0]; - MatrixCameraData var2 = (MatrixCameraData)var0[1]; - Matrix4f var5 = (Matrix4f)var0[2]; - float var4 = (Float)var0[3]; - float var7 = (Float)var0[4]; - float var11 = (Float)var0[5]; - float var3 = (Float)var0[6]; - int var6 = (Integer)var0[7]; - Vector4f var1 = (Vector4f)var0[8]; - long var8 = (Long)var0[9]; - var8 = 82121221110725L ^ var8; - long var12 = var8 ^ 57232308482566L; - RenderHelper7 var14 = (RenderHelper7)b.computeIfAbsent(var6, lpL124_0 -> new RenderHelper7(var6, var6 * 2, 80247927805987L)); - RenderTarget var10000 = a; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, var1, var12}; - var10012[7] = var3; - var10012[6] = var11; - var10012[5] = var7; - var10012[4] = var4; - var10012[3] = var14; - var10012[2] = var5; - var10012[1] = var2; - var10012[0] = var10; - var10000.g(var10012); - } - - public static void e(Object[] var0) { - RenderHelper8 var8 = (RenderHelper8)var0[0]; - MatrixCameraData var5 = (MatrixCameraData)var0[1]; - Matrix4f var11 = (Matrix4f)var0[2]; - float var1 = (Float)var0[3]; - float var7 = (Float)var0[4]; - float var9 = (Float)var0[5]; - float var2 = (Float)var0[6]; - int var6 = (Integer)var0[7]; - float var10 = (Float)var0[8]; - long var3 = (Long)var0[9]; - var3 = 82121221110725L ^ var3; - long var12 = var3 ^ 105119791449421L; - RenderHelper7 var14 = (RenderHelper7)b.computeIfAbsent(var6, lpL123_0 -> new RenderHelper7(var6, var6 * 2, 80247927805987L)); - RenderTarget var10000 = a; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, new Vector4f(var10), var12}; - var10012[7] = var2; - var10012[6] = var9; - var10012[5] = var7; - var10012[4] = var1; - var10012[3] = var14; - var10012[2] = var11; - var10012[1] = var5; - var10012[0] = var8; - var10000.g(var10012); - } - - private void g(Object[] var1) { - Matrix4f var6 = (Matrix4f)var1[2]; - RenderHelper7 var9 = (RenderHelper7)var1[3]; - float var8 = (Float)var1[4]; - float var4 = (Float)var1[5]; - float var12 = (Float)var1[6]; - float var10 = (Float)var1[7]; - Vector4f var5 = (Vector4f)var1[8]; - long var2 = (Long)var1[9]; - var2 = 82121221110725L ^ var2; - long var13 = var2 ^ 30505240229135L; - long var15 = var2 ^ 113421114350067L; - long var17 = var2 ^ 52783725153125L; - DrawMode var19 = this.a(new Object[]{var9, var5, var17}); - RenderState.a_RenderHelper30(new Object[]{var13}) - .b( - new Object[]{ - new RenderHelper13( - var19, - (lpL122_0, lpL122_1) -> { - WorldContract var10000 = ((dev.zprestige.prestige.world.WorldContract)lpL122_1).k(new Object[]{111161505170643L}); - float var10003 = var4 + var10; - float var10004 = ((java.lang.Float)lpL122_0); - Object[] var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var10003; - var10007[1] = var8; - var10007[0] = var6; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{0.0F, 0.0F}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var12, var10}, 118034685045795L}); - float var10002 = var8 + var12; - var10003 = var4 + var10; - var10004 = ((java.lang.Float)lpL122_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var10003; - var10007[1] = var10002; - var10007[0] = var6; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{var12, 0.0F}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var12, var10}, 118034685045795L}); - var10002 = var8 + var12; - var10004 = ((java.lang.Float)lpL122_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var4; - var10007[1] = var10002; - var10007[0] = var6; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{var12, var10}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var12, var10}, 118034685045795L}); - var10004 = ((java.lang.Float)lpL122_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var4; - var10007[1] = var8; - var10007[0] = var6; - var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{0.0F, var10}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var12, var10}, 118034685045795L}) - .i_WorldContract(new Object[]{GlPrimitive.QUADS, 3098493320255L}) - .h(new Object[]{7414847813752L}); - } - ), - var15 - } - ); - } - - private DrawMode a(Object[] var1) { - RenderHelper7 var4 = (RenderHelper7)var1[0]; - Vector4f var5 = (Vector4f)var1[1]; - long var2 = (Long)var1[2]; - var2 = 82121221110725L ^ var2; - long var6 = var2 ^ 52267581780368L; - long var8 = var2 ^ 133019812511942L; - Vector4f var11 = MathUtil4.a_Vector4f(new Object[]{var5, var6}); - Map var12 = (Map)c.computeIfAbsent(var4, lpL121_0 -> { - Object[] var10003 = new Object[]{null, 61743098197066L}; - var10003[0] = 128; - return MathUtil4.a(var10003); - }); - Event.b(); - DrawMode var13 = (DrawMode)var12.get(var11); - if (var13 == null) { - VertexFormat var10002 = VertexAttribute.g; - Uniform[] var10005 = new Uniform[]{Uniform.b_Uniform(new Object[]{(Consumer)lpL120_0 -> { - long var10001 = RenderUtil.a_long__(new Object[0]); - Object[] var10004 = new Object[]{null, 632507136497L}; - var10004[0] = var10001; - var4.b_void_________(var10004); - }}), Uniform.a, Uniform.a_ShaderData(new Object[]{this.a_Shader(new Object[0])}), null, null, null, null}; - Object[] var10011 = new Object[]{null, true}; - var10011[0] = 2884; - var10005[3] = Uniform.a_IntBoolData2(var10011); - var10011 = new Object[]{null, true}; - var10011[0] = true; - var10005[4] = Uniform.a_BoolData2(var10011); - var10011 = new Object[]{null, 515}; - var10011[0] = 515; - var10005[5] = Uniform.a_IntData2(var10011); - var10005[6] = Uniform.a_Uniform(new Object[]{(Consumer)lpL119_0 -> { - GL13.glActiveTexture(33984); - GL11.glBindTexture(3553, var4.c.a); - GL20.glUniform2f(this.e, 1.0F / var4.a(new Object[0]), 1.0F / var4.b(new Object[0])); - GL20.glUniform4f(this.d, var11.x, var11.y, var11.z, var11.w); - }}); - var13 = new DrawMode(var10002, 4, false, var10005, var8); - var12.put(var11, var13); - } - - return var13; - } - - static { - Object[] var10003 = new Object[]{null, 0L}; - var10003[0] = 4; - b = MathUtil4.a(var10003); - var10003 = new Object[]{null, 0L}; - var10003[0] = 4; - c = MathUtil4.a(var10003); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderUtil.java b/src/main/java/dev/zprestige/prestige/render/RenderUtil.java deleted file mode 100644 index 479a2c5..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderUtil.java +++ /dev/null @@ -1,285 +0,0 @@ -package dev.zprestige.prestige.render; - -import com.mojang.blaze3d.systems.RenderSystem; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import java.lang.ref.Cleaner; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.function.Supplier; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gl.GlBackend; -import net.minecraft.client.texture.GlTexture; -import net.minecraft.util.math.Vec3d; -import org.joml.Vector3d; - -public class RenderUtil { - public static final Cleaner a = Cleaner.create(); - public static final RenderHelper8 b = new RenderHelper8(); - private static final List c = new ArrayList(); - public static MatrixCameraData d = null; - private static Thread e; - private static long f = -9223372036854775807L; - - public static int a() { - return ((GlTexture)Objects.requireNonNull(MinecraftClient.getInstance().getFramebuffer().getColorAttachment())) - .getOrCreateFramebuffer( - ((GlBackend)RenderSystem.getDevice()).getBufferManager(), MinecraftClient.getInstance().getFramebuffer().getDepthAttachment() - ); - } - - public static int b(Object[] var0) { - return ((GlTexture)Objects.requireNonNull(MinecraftClient.getInstance().getFramebuffer().getColorAttachment())).getGlId(); - } - - public static float a(Object[] var0) { - return MinecraftClient.getInstance().getWindow().getScaleFactor(); - } - - public static int c(Object[] var0) { - return MinecraftClient.getInstance().getWindow().getFramebufferHeight(); - } - - public static Vector3d a_Vector3d(Object[] var0) { - MatrixCameraData var9 = (MatrixCameraData)var0[0]; - double var1 = (Double)var0[1]; - double var3 = (Double)var0[2]; - double var5 = (Double)var0[3]; - long var7 = (Long)var0[4]; - var7 = 52698670966595L ^ var7; - long var10 = var7 ^ 103858031838267L; - Object[] var10007 = new Object[]{null, null, null, null, new Vector3d(), var10}; - var10007[3] = var5; - var10007[2] = var3; - var10007[1] = var1; - var10007[0] = var9; - return b_Vector3d(var10007); - } - - public static Vector3d b_Vector3d(Object[] var0) { - MatrixCameraData var1 = (MatrixCameraData)var0[0]; - double var4 = (Double)var0[1]; - double var6 = (Double)var0[2]; - double var8 = (Double)var0[3]; - Vector3d var10 = (Vector3d)var0[4]; - Vec3d var11 = var1.bC().getCameraPos(); - return var10.set(var4 - var11.x, var6 - var11.y, var8 - var11.z); - } - - public static void a_void___________________________(Object[] var0) { - Runnable var1 = (Runnable)var0[0]; - synchronized (c) { - c.add(var1); - } - } - - // $VF: Could not create synchronized statement, marking monitor enters and exits - // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!) - public static List a_List__(Object[] var0) { - Event.b(); - List var4 = c; - synchronized (c){} // $VF: monitorenter - - try { - if (c.isEmpty()) { - List var10000 = List.of(); - // $VF: monitorexit - return var10000; - } else { - ArrayList var5 = new ArrayList(c); - c.clear(); - // $VF: monitorexit - return var5; - } - } finally { - // $VF: monitorexit - } - } - - public static void c_void__(Object[] var0) { - List var1 = (List)var0[0]; - Event.b(); - - for (Runnable var6 : (Iterable)(var1)) { - var6.run(); - } - } - - public static void d(Object[] var0) { - MatrixCameraData var1 = (MatrixCameraData)var0[0]; - long var2 = (Long)var0[1]; - var2 = 52698670966595L ^ var2; - long var4 = var2 ^ 31406291669022L; - MatrixStack.h = var1; - MatrixStack.g = b; - d = var1; - ((RenderContract6)RenderContract5.b.invoker()).a(b, var1); - b.b_void__________(new Object[]{var1, var4}); - } - - public static void e(Object[] var0) { - MatrixCameraData var3 = (MatrixCameraData)var0[0]; - long var1 = (Long)var0[1]; - var1 = 52698670966595L ^ var1; - long var4 = var1 ^ 93262027522045L; - long var6 = var1 ^ 88314557730749L; - Event.b(); - h(new Object[]{var4}); - if (RenderContract2.b.world != null && RenderContract2.b.player != null) { - MatrixStack.h = var3; - MatrixStack.g = b; - ((RenderContract6)RenderContract5.a.invoker()).a(b, var3); - b.b_void__________(new Object[]{var3, var6}); - ((RenderContract6)RenderContract5.c.invoker()).a(b, var3); - b.b_void__________(new Object[]{var3, var6}); - } - } - - public static void f(Object[] var0) { - Runnable var3 = (Runnable)var0[0]; - long var1 = (Long)var0[1]; - var1 = 52698670966595L ^ var1; - long var4 = var1 ^ 120559174517494L; - if (Thread.currentThread() == e) { - var3.run(); - } else { - a_void___________________________(new Object[]{var3, var4}); - } - } - - public static Object a_Object___(Object[] var0) { - Supplier var1 = (Supplier)var0[0]; - long var2 = (Long)var0[1]; - var2 = 52698670966595L ^ var2; - long var4 = var2 ^ 49816714551203L; - if (e != null && Thread.currentThread() != e) { - CompletableFuture var6 = new CompletableFuture(); - a_void___________________________(new Object[]{(Runnable)() -> { - try { - var6.complete(var1.get()); - } catch (Throwable var5) { - var6.completeExceptionally(var5); - } - }, var4}); - - try { - return var6.get(30L, TimeUnit.SECONDS); - } catch (InterruptedException var9) { - Thread.currentThread().interrupt(); - throw new RuntimeException("interrupted waiting on render thread", var9); - } catch (TimeoutException var10) { - throw new RuntimeException("timed out waiting for render thread to execute supplier", var10); - } catch (ExecutionException var11) { - Object var8 = var11.getCause() == null ? var11 : var11.getCause(); - if (var8 instanceof RuntimeException) { - throw (RuntimeException)var8; - } else { - throw new RuntimeException((Throwable)var8); - } - } - } else { - return var1.get(); - } - } - - public static void g(Object[] var0) { - Thread var1 = (Thread)var0[0]; - e = var1; - } - - public static Thread a_Thread(Object[] var0) { - return e; - } - - public static long a_long__(Object[] var0) { - return f; - } - - public static void h(Object[] var0) { - f++; - } - - static { - short var10000 = 2821; - long var10001 = 5991801754864537605L; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Exception a(Exception var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderUtil2.java b/src/main/java/dev/zprestige/prestige/render/RenderUtil2.java deleted file mode 100644 index 031a399..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderUtil2.java +++ /dev/null @@ -1,111 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.client.Prestige; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.util.InputUtil; - -public final class RenderUtil2 implements RenderContract2 { - public static int a = 0; - private static boolean c = false; - - private RenderUtil2() { - } - - public static void a(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 93541403458849L ^ var1; - long var3 = var1 ^ 81162841569345L; - if (!c) { - c = true; - Prestige.eventBus.register(new Object[]{new RenderUtil3(), var3}); - } - - b.options.jumpKey.setPressed(true); - a = 2; - } - - public static void b(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 93541403458849L ^ var1; - long var3 = var1 ^ 139211699224092L; - if (a > 0) { - a = 0; - c(new Object[]{var3}); - } - } - - public static void c(Object[] var0) { - if (!InputUtil.isKeyPressed(b.getWindow(), b.options.jumpKey.getDefaultKey().getCode())) { - b.options.jumpKey.setPressed(false); - } - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderUtil3.java b/src/main/java/dev/zprestige/prestige/render/RenderUtil3.java deleted file mode 100644 index 8cfc70a..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderUtil3.java +++ /dev/null @@ -1,83 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.event.TickEvent19; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class RenderUtil3 { - @Subscribe - public void a(TickEvent19 var1) { - if (RenderUtil2.a > 0 && --RenderUtil2.a == 0) { - RenderUtil2.c(new Object[]{13513797398451L}); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderUtil4.java b/src/main/java/dev/zprestige/prestige/render/RenderUtil4.java deleted file mode 100644 index 6adb9d6..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderUtil4.java +++ /dev/null @@ -1,155 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; - -public class RenderUtil4 { - private static final Map a = new HashMap(); - - private RenderUtil4() { - } - - public static int a(Object[] var0) { - int var3 = (Integer)var0[0]; - return !a.containsKey(var3) ? var3 : (Integer)a.getOrDefault(var3, var3); - } - - static { - for (int var13 = 0; var13 < 26; var13++) { - a.put(65 + var13, 65 + var13); - } - - for (int var14 = 0; var14 < 10; var14++) { - a.put(48 + var14, 48 + var14); - } - - a.put(188, 44); - a.put(190, 46); - a.put(191, 47); - a.put(186, 59); - a.put(222, 39); - a.put(219, 91); - a.put(221, 93); - a.put(220, 92); - a.put(189, 45); - a.put(187, 61); - a.put(192, 96); - a.put(32, 32); - a.put(13, 257); - a.put(9, 258); - a.put(8, 259); - a.put(46, 261); - a.put(45, 260); - a.put(39, 262); - a.put(37, 263); - a.put(40, 264); - a.put(38, 265); - a.put(33, 266); - a.put(34, 267); - a.put(36, 268); - a.put(35, 269); - a.put(27, 256); - a.put(44, 283); - a.put(145, 281); - a.put(19, 284); - a.put(20, 280); - a.put(144, 282); - a.put(93, 348); - - for (int var15 = 0; var15 < 24; var15++) { - a.put(112 + var15, 290 + var15); - } - - a.put(160, 340); - a.put(161, 344); - a.put(162, 341); - a.put(163, 345); - a.put(164, 342); - a.put(165, 346); - a.put(91, 343); - a.put(92, 347); - a.put(16, 340); - a.put(17, 341); - a.put(18, 342); - - for (int var16 = 0; var16 < 10; var16++) { - a.put(96 + var16, 320 + var16); - } - - a.put(106, 332); - a.put(107, 334); - a.put(109, 333); - a.put(110, 330); - a.put(111, 331); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderUtil5.java b/src/main/java/dev/zprestige/prestige/render/RenderUtil5.java deleted file mode 100644 index 8accac9..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderUtil5.java +++ /dev/null @@ -1,104 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Random; - -public class RenderUtil5 { - public static final Random a = new Random(); - - public static float a(Object[] var0) { - float var4 = (Float)var0[0]; - float var3 = (Float)var0[1]; - long var1 = (Long)var0[2]; - var1 = 16164445651919L ^ var1; - long var5 = var1 ^ 60111729527913L; - float var10000 = var4 + a.nextFloat() * (var3 - var4); - Object[] var10005 = new Object[]{null, null, null, var5}; - var10005[2] = var3; - var10005[1] = var4; - var10005[0] = var10000; - return b(var10005); - } - - public static int a_int__________________________(Object[] var0) { - int var1 = (Integer)var0[0]; - int var4 = (Integer)var0[1]; - return var1 + a.nextInt(var4 - var1 + 1); - } - - private static float b(Object[] var0) { - float var5 = (Float)var0[0]; - float var1 = (Float)var0[1]; - float var4 = (Float)var0[2]; - return Math.max(var1, Math.min(var4, var5)); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RenderUtil6.java b/src/main/java/dev/zprestige/prestige/render/RenderUtil6.java deleted file mode 100644 index 9f5b2e3..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RenderUtil6.java +++ /dev/null @@ -1,110 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.inventory.InventoryUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class RenderUtil6 implements RenderContract2 { - private static Object a; - private static int b = -1; - - public static int a(Object[] var0) { - Object var1 = var0[0]; - long var2 = (Long)var0[1]; - var2 = 111044566853839L ^ var2; - long var4 = var2 ^ 131986150899554L; - if (a == null) { - a = var1; - b = InventoryUtil.a_int_____(new Object[]{var4}); - } else if (a != var1) { - a = var1; - } - - return b; - } - - public static boolean a_boolean____________________________________________(Object[] var0) { - Object var1 = var0[0]; - return a == var1; - } - - public static void a_void____________________________(Object[] var0) { - Object var3 = var0[0]; - if (a == var3) { - a = null; - b = -1; - } - } - - public static int b(Object[] var0) { - return b; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/Renderer2D.java b/src/main/java/dev/zprestige/prestige/render/Renderer2D.java deleted file mode 100644 index 1017484..0000000 --- a/src/main/java/dev/zprestige/prestige/render/Renderer2D.java +++ /dev/null @@ -1,404 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.Module; -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.FloatEvent3; -import dev.zprestige.prestige.event.FloatPositionEvent; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.event.TickEvent4; -import dev.zprestige.prestige.module.movement.Freecam; -import dev.zprestige.prestige.network.NetworkHelper2; -import dev.zprestige.prestige.world.WorldUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; -import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket; -import net.minecraft.util.math.Vec3d; - -public class Renderer2D implements RenderContract2 { - private final CopyOnWriteArrayList a; - private RenderBatch c; - private RenderBatch d; - private RenderBatch e; - private static float f = 300.0F; - private static float g = 90.0F; - private RenderBatch h; - boolean i; - private Object j; - private RenderBatch k; - private Object l; - final List m; - - @Subscribe - public void a(TickEvent19 var1) { - Event.b(); - this.i = false; - if (!this.m.isEmpty()) { - ArrayList var7 = new ArrayList(this.m); - this.m.clear(); - - for (Runnable var9 : (Iterable)(var7)) { - try { - var9.run(); - } catch (Throwable var12) { - } - } - } - - if (this.a.isEmpty() && this.c == null && this.h == null) { - this.d = null; - this.e = null; - } else { - if (this.d == null) { - this.d = new RenderBatch(b.player.getYaw(), b.player.getPitch()); - } - - boolean var13 = false; - boolean var14 = this.c != null; - - for (RenderContract3 var10 : (Iterable)(this.a)) { - RenderBatch var11 = var10.a(new Object[]{87456531541945L}); - if (var11 != null) { - this.c = var11; - var13 = true; - } - } - - if (!var13 && this.c != null) { - float var16 = Math.abs(this.c.a(new Object[0]) - b.player.getYaw()); - if (var16 > f) { - float var18 = this.c.a(new Object[0]) - f * Math.signum(this.c.a(new Object[0]) - b.player.getYaw()); - this.c = new RenderBatch(var18, this.c.b(new Object[0])); - } else { - this.c = null; - } - } - - if (var14 && this.c == null) { - float var17 = b.player.getYaw() + (float)(Math.random() * 0.06 - 0.03); - float var19 = b.player.getPitch() + (float)(Math.random() * 0.06 - 0.03); - this.h = new RenderBatch(var17, var19); - } else if (this.c != null) { - this.h = null; - } - - this.d = this.c != null ? this.c : (this.h != null ? this.h : null); - } - } - - @Subscribe - public void a(FloatEvent2 var1) { - if (this.c != null) { - var1.b(new Object[]{this.c.a(new Object[0])}); - var1.c(new Object[]{this.c.b(new Object[0])}); - } else if (this.h != null) { - var1.b(new Object[]{this.h.a(new Object[0])}); - var1.c(new Object[]{this.h.b(new Object[0])}); - this.h = null; - } - - this.e = this.c; - var1.a_void_____(new Object[0]); - } - - @Subscribe - public void a(FloatPositionEvent var1) { - if (this.c != null) { - var1.b(new Object[]{this.c.a(new Object[0])}); - } - - var1.a_void_____(new Object[0]); - } - - @Subscribe - public void a(FloatEvent3 var1) { - if (this.c != null) { - var1.a = this.c.a(new Object[0]); - var1.b = this.c.b(new Object[0]); - } - - var1.a_void_____(new Object[0]); - } - - @Subscribe - public void a(PacketEvent2 var1) { - Event.b(); - if (var1.a(new Object[0]) instanceof PlayerInteractItemC2SPacket var11) { - RenderBatch var14 = this.d(new Object[]{74534716520795L}); - if (var14 == null) { - var14 = this.c != null ? this.c : this.h; - } - - if (var14 != null) { - NetworkHelper2 var13 = new NetworkHelper2(var11); - float var10001 = var14.a(new Object[0]); - Object[] var10004 = new Object[]{null, 51004495053360L}; - var10004[0] = var10001; - var13.a(var10004); - var10001 = var14.b(new Object[0]); - var10004 = new Object[]{null, 93811211214329L}; - var10004[0] = var10001; - var13.b(var10004); - } - } - } - - public void a(Object[] var1) { - RenderBatch var2 = (RenderBatch)var1[0]; - this.c = var2; - } - - public void b(Object[] var1) { - this.c = null; - this.h = null; - } - - public RenderBatch a_RenderBatch(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - long var3 = (Long)var1[1]; - var3 = 117860352239008L ^ var3; - long var5 = var3 ^ 51437924751915L; - RenderBatch var8 = this.d != null ? this.d : new RenderBatch(b.player.getYaw(), b.player.getPitch()); - float var10002 = g; - Object[] var10005 = new Object[]{null, null, null, var5}; - var10005[2] = var10002; - var10005[1] = var2; - var10005[0] = var8; - return WorldUtil.c_RenderBatch(var10005); - } - - public RenderBatch b_RenderBatch____________(Object[] var1) { - return this.d; - } - - public RenderBatch c(Object[] var1) { - return this.c; - } - - public synchronized boolean a_boolean_____________________________________________(Object[] var1) { - Object var3 = var1[0]; - RenderBatch var2 = (RenderBatch)var1[1]; - long var4 = (Long)var1[2]; - var4 = 117860352239008L ^ var4; - long var6 = var4 ^ 80391577534074L; - if (var3 != null && var2 != null) { - if (!this.c_boolean____(new Object[]{var6})) { - this.d_void_(new Object[0]); - return false; - } else { - if (this.l != b.world) { - this.d_void_(new Object[0]); - } - - if (this.j != null && this.j != var3) { - return false; - } else { - this.j = var3; - this.k = new RenderBatch(var2.a(new Object[0]), var2.b(new Object[0])); - this.l = b.world; - return true; - } - } - } else { - return false; - } - } - - public synchronized boolean b_boolean_______(Object[] var1) { - Object var4 = var1[0]; - long var2 = (Long)var1[1]; - var2 = 117860352239008L ^ var2; - long var5 = var2 ^ 120995730053419L; - if (var4 != null && this.k != null) { - if (this.l != b.world || !this.c_boolean____(new Object[]{var5})) { - this.d_void_(new Object[0]); - } - - return this.j == var4 && this.k != null; - } else { - return false; - } - } - - public synchronized RenderBatch d(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 117860352239008L ^ var2; - long var4 = var2 ^ 36350391803780L; - if (this.k == null) { - return null; - } else { - if (this.l != b.world || !this.c_boolean____(new Object[]{var4})) { - this.d_void_(new Object[0]); - } - - return this.k == null ? null : new RenderBatch(this.k.a(new Object[0]), this.k.b(new Object[0])); - } - } - - public synchronized void c_void___(Object[] var1) { - Object var4 = var1[0]; - if (var4 != null && this.j == var4) { - this.d_void_(new Object[0]); - } - } - - public boolean c_boolean____(Object[] var1) { - if (b.player != null && b.world != null && !b.player.hasVehicle() && b.getCameraEntity() == b.player) { - if (Prestige.moduleManager != null && Prestige.moduleManager.getModules() != null) { - for (Module var6 : (Iterable)(Prestige.moduleManager.getModules())) { - if (var6 instanceof Freecam && var6.isEnabled()) { - return false; - } - } - - return true; - } else { - return true; - } - } else { - return false; - } - } - - @Subscribe - public synchronized void a(TickEvent3 var1) { - this.d_void_(new Object[0]); - } - - @Subscribe - public synchronized void a(TickEvent4 var1) { - if (this.l != null && this.l != b.world) { - this.d_void_(new Object[0]); - } - } - - private void d_void_(Object[] var1) { - this.j = null; - this.k = null; - this.l = null; - } - - public Renderer2D(long var1) { - super(); - var1 = 0L; - var1 = 117860352239008L ^ var1; - long var3 = var1 ^ 118450842598666L; - this.a = new CopyOnWriteArrayList(); - this.h = null; - this.m = new CopyOnWriteArrayList(); - Prestige.eventBus.register(new Object[]{this, var3}); - } - - public void e(Object[] var1) { - RenderContract3 var4 = (RenderContract3)var1[0]; - if (this.a.addIfAbsent(var4)) { - this.a.sort(Comparator.comparingInt(RenderContract3::a).reversed()); - } - } - - public void f(Object[] var1) { - RenderContract3 var2 = (RenderContract3)var1[0]; - this.a.remove(var2); - } - - public boolean d_boolean______(Object[] var1) { - return this.i; - } - - public void g(Object[] var1) { - boolean var2 = (Boolean)var1[0]; - this.i = var2; - } - - public void h(Object[] var1) { - Runnable var4 = (Runnable)var1[0]; - if (var4 != null) { - this.m.add(var4); - } - } - - public void i(Object[] var1) { - int var2 = (Integer)var1[0]; - this.m.add(new RenderHelper24(this, var2)); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/Rotation.java b/src/main/java/dev/zprestige/prestige/render/Rotation.java new file mode 100644 index 0000000..1a3fbb5 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/Rotation.java @@ -0,0 +1,36 @@ +package dev.zprestige.prestige.render; + +public class Rotation { + private float yaw; + private float pitch; + private boolean clamped; + + public Rotation(float initialYaw, float initialPitch) { + this.yaw = initialYaw; + this.pitch = initialPitch; + } + + public float getYaw() { + return this.yaw; + } + + public void setYaw(float newYaw) { + this.yaw = newYaw; + } + + public float getPitch() { + return this.pitch; + } + + public void setPitch(float newPitch) { + this.pitch = newPitch; + } + + public boolean isClamped() { + return this.clamped; + } + + public void setClamped(boolean wasClamped) { + this.clamped = wasClamped; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/RotationProvider.java b/src/main/java/dev/zprestige/prestige/render/RotationProvider.java new file mode 100644 index 0000000..d378e4c --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/RotationProvider.java @@ -0,0 +1,9 @@ +package dev.zprestige.prestige.render; + +public interface RotationProvider { + Rotation provideRotation(); + + default int getRotationPriority() { + return 0; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/RoundedOutlinePosColorShader.java b/src/main/java/dev/zprestige/prestige/render/RoundedOutlinePosColorShader.java deleted file mode 100644 index fedcd8b..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RoundedOutlinePosColorShader.java +++ /dev/null @@ -1,376 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.data.VectorFloatData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.math.MathUtil4; -import dev.zprestige.prestige.type.GlPrimitive; -import dev.zprestige.prestige.world.WorldContract; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Map; -import java.util.function.Consumer; -import org.joml.Matrix4f; -import org.joml.Vector4f; -import org.lwjgl.opengl.GL20; - -public class RoundedOutlinePosColorShader extends ShaderBase { - private static final RoundedOutlinePosColorShader a = new RoundedOutlinePosColorShader(0L); - private static final Map b; - private static final Matrix4f c = new Matrix4f(); - private static final ThreadLocal d = ThreadLocal.withInitial(Vector4f::new); - private final int e; - private final int f; - - private RoundedOutlinePosColorShader(long var1) { - super("shaders/rounded_pos_color.vert", "shaders/rounded_outline_pos_color.frag", (10094525613653L)); - var1 = 0L; - var1 = 6996815971196L ^ var1; - long var3 = var1 ^ 92390406821603L; - long var5 = var1 ^ 16987705443625L; - this.e = this.a_Shader(new Object[0]).d(new Object[]{"roundness", var3}); - this.f = this.a_Shader(new Object[0]).d(new Object[]{"outlineThickness", var3}); - } - - public static void c(Object[] var0) { - RenderHelper8 var6 = (RenderHelper8)var0[0]; - MatrixCameraData var12 = (MatrixCameraData)var0[1]; - Matrix4f var10 = (Matrix4f)var0[2]; - float var11 = (Float)var0[3]; - float var1 = (Float)var0[4]; - float var7 = (Float)var0[5]; - float var5 = (Float)var0[6]; - Color var3 = (Color)var0[7]; - float var2 = (Float)var0[8]; - float var4 = (Float)var0[9]; - long var8 = (Long)var0[10]; - var8 = 6996815971196L ^ var8; - long var13 = var8 ^ 11309767004819L; - RoundedOutlinePosColorShader var10000 = a; - int var10008 = var3.getRGB(); - Vector4f var10009 = ((Vector4f)d.get()).set(var2); - Object[] var10013 = new Object[]{null, null, null, null, null, null, null, null, null, null, var13}; - var10013[9] = var4; - var10013[8] = var10009; - var10013[7] = var10008; - var10013[6] = var5; - var10013[5] = var7; - var10013[4] = var1; - var10013[3] = var11; - var10013[2] = var10; - var10013[1] = var12; - var10013[0] = var6; - var10000.e(var10013); - } - - private void e(Object[] var1) { - Matrix4f var11 = (Matrix4f)var1[2]; - float var10 = (Float)var1[3]; - float var6 = (Float)var1[4]; - float var12 = (Float)var1[5]; - float var2 = (Float)var1[6]; - int var4 = (Integer)var1[7]; - Vector4f var5 = (Vector4f)var1[8]; - float var13 = (Float)var1[9]; - long var7 = (Long)var1[10]; - var7 = 6996815971196L ^ var7; - long var14 = var7 ^ 14044989008541L; - long var16 = var7 ^ 123555432777313L; - long var18 = var7 ^ 64518496702926L; - Object[] var10005 = new Object[]{null, null, var18}; - var10005[1] = var13; - var10005[0] = var5; - DrawMode var20 = this.a(var10005); - float var21 = var5.x; - float var22 = var5.y; - float var23 = var5.z; - float var24 = var5.w; - RenderState.a_RenderHelper30(new Object[]{var14}).b(new Object[]{new RenderHelper13(var20, (lpL140_0, lpL140_1) -> { - Event.b(); - Object[] var10004 = new Object[]{null, 91022737183023L}; - var10004[0] = var4; - int var26x = RenderState.b_int_(var10004); - float var27 = Math.max(Math.max(var21, var22), Math.max(var23, var24)); - float var28 = 2.0F * var13 + var27 + 2.0F; - ((dev.zprestige.prestige.world.WorldContract)lpL140_1).k(new Object[]{111161505170643L}); - if (var28 * 2.0F >= Math.min(var12, var2)) { - float var10002 = ((java.lang.Float)lpL140_0); - Object[] var10016 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, null, null, 82698704610984L}; - var10016[13] = var2; - var10016[12] = var12; - var10016[11] = 0.0F; - var10016[10] = 0.0F; - var10016[9] = var2; - var10016[8] = var12; - var10016[7] = var6; - var10016[6] = var10; - var10016[5] = var2; - var10016[4] = var12; - var10016[3] = var26x; - var10016[2] = var10002; - var10016[1] = var11; - var10016[0] = ((dev.zprestige.prestige.world.WorldContract)lpL140_1); - f(var10016); - } else { - float var29 = ((java.lang.Float)lpL140_0); - float var10011 = var2 - var28; - Object[] var37 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, null, null, 82698704610984L}; - var37[13] = var2; - var37[12] = var12; - var37[11] = var10011; - var37[10] = 0.0F; - var37[9] = var28; - var37[8] = var12; - var37[7] = var6; - var37[6] = var10; - var37[5] = var2; - var37[4] = var12; - var37[3] = var26x; - var37[2] = var29; - var37[1] = var11; - var37[0] = ((dev.zprestige.prestige.world.WorldContract)lpL140_1); - f(var37); - var29 = ((java.lang.Float)lpL140_0); - float var10007 = var6 + var2 - var28; - var37 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, null, null, 82698704610984L}; - var37[13] = var28; - var37[12] = var12; - var37[11] = 0.0F; - var37[10] = 0.0F; - var37[9] = var28; - var37[8] = var12; - var37[7] = var10007; - var37[6] = var10; - var37[5] = var2; - var37[4] = var12; - var37[3] = var26x; - var37[2] = var29; - var37[1] = var11; - var37[0] = ((dev.zprestige.prestige.world.WorldContract)lpL140_1); - f(var37); - var29 = ((java.lang.Float)lpL140_0); - var10007 = var6 + var28; - float var10009 = var2 - 2.0F * var28; - float var10013 = var2 - var28; - var37 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, null, null, 82698704610984L}; - var37[13] = var10013; - var37[12] = var28; - var37[11] = var28; - var37[10] = 0.0F; - var37[9] = var10009; - var37[8] = var28; - var37[7] = var10007; - var37[6] = var10; - var37[5] = var2; - var37[4] = var12; - var37[3] = var26x; - var37[2] = var29; - var37[1] = var11; - var37[0] = ((dev.zprestige.prestige.world.WorldContract)lpL140_1); - f(var37); - var29 = ((java.lang.Float)lpL140_0); - float var10006 = var10 + var12 - var28; - var10007 = var6 + var28; - var10009 = var2 - 2.0F * var28; - float var10010 = var12 - var28; - var10013 = var2 - var28; - var37 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, null, null, 82698704610984L}; - var37[13] = var10013; - var37[12] = var12; - var37[11] = var28; - var37[10] = var10010; - var37[9] = var10009; - var37[8] = var28; - var37[7] = var10007; - var37[6] = var10006; - var37[5] = var2; - var37[4] = var12; - var37[3] = var26x; - var37[2] = var29; - var37[1] = var11; - var37[0] = ((dev.zprestige.prestige.world.WorldContract)lpL140_1); - f(var37); - } - - ((dev.zprestige.prestige.world.WorldContract)lpL140_1).i_WorldContract(new Object[]{GlPrimitive.QUADS, 3098493320255L}).h(new Object[]{7414847813752L}); - }), var16}); - } - - private static void f(Object[] var0) { - WorldContract var16 = (WorldContract)var0[0]; - Matrix4f var3 = (Matrix4f)var0[1]; - float var10 = (Float)var0[2]; - int var4 = (Integer)var0[3]; - float var15 = (Float)var0[4]; - float var12 = (Float)var0[5]; - float var8 = (Float)var0[6]; - float var9 = (Float)var0[7]; - float var11 = (Float)var0[8]; - float var2 = (Float)var0[9]; - float var13 = (Float)var0[10]; - float var7 = (Float)var0[11]; - float var1 = (Float)var0[12]; - float var14 = (Float)var0[13]; - long var5 = (Long)var0[14]; - var5 = 6996815971196L ^ var5; - long var17 = var5 ^ 50056269571033L; - long var19 = var5 ^ 43153706285312L; - long var21 = var5 ^ 41995370973687L; - float var10003 = var9 + var2; - Object[] var10007 = new Object[]{null, null, null, null, var19}; - var10007[3] = var10; - var10007[2] = var10003; - var10007[1] = var8; - var10007[0] = var3; - WorldContract var10000 = var16.d(var10007) - .b_WorldContract(new Object[]{new float[]{var13, var7}, var21}) - .b_WorldContract(new Object[]{new float[]{var15, var12}, var21}); - Object[] var10004 = new Object[]{null, var17}; - var10004[0] = var4; - var10000 = var10000.e(var10004); - float var10002 = var8 + var11; - var10003 = var9 + var2; - var10007 = new Object[]{null, null, null, null, var19}; - var10007[3] = var10; - var10007[2] = var10003; - var10007[1] = var10002; - var10007[0] = var3; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{var1, var7}, var21}) - .b_WorldContract(new Object[]{new float[]{var15, var12}, var21}); - var10004 = new Object[]{null, var17}; - var10004[0] = var4; - var10000 = var10000.e(var10004); - var10002 = var8 + var11; - var10007 = new Object[]{null, null, null, null, var19}; - var10007[3] = var10; - var10007[2] = var9; - var10007[1] = var10002; - var10007[0] = var3; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{var1, var14}, var21}) - .b_WorldContract(new Object[]{new float[]{var15, var12}, var21}); - var10004 = new Object[]{null, var17}; - var10004[0] = var4; - var10000 = var10000.e(var10004); - var10007 = new Object[]{null, null, null, null, var19}; - var10007[3] = var10; - var10007[2] = var9; - var10007[1] = var8; - var10007[0] = var3; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{var13, var14}, var21}) - .b_WorldContract(new Object[]{new float[]{var15, var12}, var21}); - var10004 = new Object[]{null, var17}; - var10004[0] = var4; - var10000.e(var10004); - } - - public DrawMode a(Object[] var1) { - Vector4f var5 = (Vector4f)var1[0]; - float var2 = (Float)var1[1]; - long var3 = (Long)var1[2]; - var3 = 6996815971196L ^ var3; - long var6 = var3 ^ 139298265287696L; - long var8 = var3 ^ 45915609480518L; - Event.b(); - VectorFloatData var11 = new VectorFloatData(MathUtil4.a_Vector4f(new Object[]{var5, var6}), var2); - DrawMode var12 = (DrawMode)b.get(var11); - if (var12 == null) { - VertexFormat var10002 = VertexAttribute.e; - Uniform[] var10005 = new Uniform[]{Uniform.a, Uniform.a_ShaderData(new Object[]{this.a_Shader(new Object[0])}), null, null, null, null}; - Object[] var10011 = new Object[]{null, true}; - var10011[0] = 2884; - var10005[2] = Uniform.a_IntBoolData2(var10011); - var10011 = new Object[]{null, true}; - var10011[0] = true; - var10005[3] = Uniform.a_BoolData2(var10011); - var10011 = new Object[]{null, 515}; - var10011[0] = 515; - var10005[4] = Uniform.a_IntData2(var10011); - var10005[5] = Uniform.a_Uniform(new Object[]{(Consumer)lpL139_0 -> { - GL20.glUniform4f(this.e, var11.bF().x, var11.bF().y, var11.bF().z, var11.bF().w); - GL20.glUniform1f(this.f, var11.bG()); - }}); - var12 = new DrawMode(var10002, 4, false, var10005, var8); - b.put(var11, var12); - } - - return var12; - } - - static { - Object[] var10003 = new Object[]{null, 0L}; - var10003[0] = 128; - b = MathUtil4.a(var10003); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RoundedOutlineShader.java b/src/main/java/dev/zprestige/prestige/render/RoundedOutlineShader.java new file mode 100644 index 0000000..252e963 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/RoundedOutlineShader.java @@ -0,0 +1,91 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.data.RoundedOutlineKey; +import dev.zprestige.prestige.math.RenderCacheUtil; +import dev.zprestige.prestige.type.GlPrimitive; +import dev.zprestige.prestige.world.MeshBuilder; +import java.awt.Color; +import java.util.Map; +import java.util.function.Consumer; +import org.joml.Matrix4f; +import org.joml.Vector4f; +import org.lwjgl.opengl.GL20; + +public class RoundedOutlineShader extends ShaderBase { + private static final RoundedOutlineShader INSTANCE = new RoundedOutlineShader(); + private static final Map DRAW_MODE_CACHE; + private static final Matrix4f TEMP_MATRIX = new Matrix4f(); + private static final ThreadLocal RADII_SCRATCH = ThreadLocal.withInitial(Vector4f::new); + private final int roundnessUniform; + private final int thicknessUniform; + + private RoundedOutlineShader() { + super("shaders/rounded_pos_color.vert", "shaders/rounded_outline_pos_color.frag"); + this.roundnessUniform = this.getShader().getUniformLocation("roundness"); + this.thicknessUniform = this.getShader().getUniformLocation("outlineThickness"); + } + + public static void drawRoundedOutline(BufferSource buffers, CameraMatrices context, Matrix4f matrix, float x, float y, float width, float height, Color color, float radius, float thickness) { + INSTANCE.queueOutline(buffers, context, matrix, x, y, width, height, color.getRGB(), ((Vector4f)RADII_SCRATCH.get()).set(radius), thickness); + } + + private void queueOutline(BufferSource unusedBuffers, CameraMatrices unusedContext, Matrix4f matrix, float x, float y, float width, float height, int argb, Vector4f radii, float thickness) { + DrawPipeline drawMode = this.getDrawMode(radii, thickness); + float radiusX = radii.x; + float radiusY = radii.y; + float radiusZ = radii.z; + float radiusW = radii.w; + ShapeRenderer.getDrawQueue().enqueue(new CallbackDrawCommand(drawMode, (depth, builder) -> { + int abgrColor = ShapeRenderer.argbToAbgr(argb); + float edgeSize = 2.0F * thickness + Math.max(Math.max(radiusX, radiusY), Math.max(radiusZ, radiusW)) + 2.0F; + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape(); + if (edgeSize * 2.0F >= Math.min(width, height)) { + addSubQuad(((dev.zprestige.prestige.world.MeshBuilder)builder), matrix, ((java.lang.Float)depth), abgrColor, width, height, x, y, width, height, 0.0F, 0.0F, width, height); + } else { + addSubQuad(((dev.zprestige.prestige.world.MeshBuilder)builder), matrix, ((java.lang.Float)depth), abgrColor, width, height, x, y, width, edgeSize, 0.0F, height - edgeSize, width, height); + addSubQuad(((dev.zprestige.prestige.world.MeshBuilder)builder), matrix, ((java.lang.Float)depth), abgrColor, width, height, x, y + height - edgeSize, width, edgeSize, 0.0F, 0.0F, width, edgeSize); + addSubQuad(((dev.zprestige.prestige.world.MeshBuilder)builder), matrix, ((java.lang.Float)depth), abgrColor, width, height, x, y + edgeSize, edgeSize, height - 2.0F * edgeSize, 0.0F, edgeSize, edgeSize, height - edgeSize); + addSubQuad(((dev.zprestige.prestige.world.MeshBuilder)builder), matrix, ((java.lang.Float)depth), abgrColor, width, height, x + width - edgeSize, y + edgeSize, edgeSize, height - 2.0F * edgeSize, width - edgeSize, edgeSize, width, height - edgeSize); + } + + ((dev.zprestige.prestige.world.MeshBuilder)builder).generateIndices(GlPrimitive.QUADS).resetBaseVertex(); + })); + } + + private static void addSubQuad(MeshBuilder builder, Matrix4f matrix, float depth, int abgr, float fullWidth, float fullHeight, float x, float y, float width, float height, float u0, float v0, float u1, float v1) { + builder.putTransformedVertex(matrix, x, y + height, depth) + .putFloats(new float[]{u0, v0}) + .putFloats(new float[]{fullWidth, fullHeight}).putColor(abgr).putTransformedVertex(matrix, x + width, y + height, depth) + .putFloats(new float[]{u1, v0}) + .putFloats(new float[]{fullWidth, fullHeight}).putColor(abgr).putTransformedVertex(matrix, x + width, y, depth) + .putFloats(new float[]{u1, v1}) + .putFloats(new float[]{fullWidth, fullHeight}).putColor(abgr).putTransformedVertex(matrix, x, y, depth) + .putFloats(new float[]{u0, v1}) + .putFloats(new float[]{fullWidth, fullHeight}).putColor(abgr); + } + + public DrawPipeline getDrawMode(Vector4f radii, float thickness) { + RoundedOutlineKey key = new RoundedOutlineKey(RenderCacheUtil.quantizeVector(radii), thickness); + DrawPipeline drawMode = (DrawPipeline)DRAW_MODE_CACHE.get(key); + if (drawMode == null) { + VertexLayout format = VertexLayouts.POSITION_UV_SIZE_COLOR; + RenderStateElement[] states = new RenderStateElement[]{RenderStateElement.MAIN_TARGET, RenderStateElement.shader(this.getShader()), null, null, null, null}; + states[2] = RenderStateElement.capability(2884, true); + states[3] = RenderStateElement.blend(true, true); + states[4] = RenderStateElement.depthFunc(515, 515); + states[5] = RenderStateElement.onApply((Consumer)pass -> { + GL20.glUniform4f(this.roundnessUniform, key.cornerRadii().x, key.cornerRadii().y, key.cornerRadii().z, key.cornerRadii().w); + GL20.glUniform1f(this.thicknessUniform, key.outlineThickness()); + }); + drawMode = new DrawPipeline(format, 4, false, states); + DRAW_MODE_CACHE.put(key, drawMode); + } + + return drawMode; + } + + static { + DRAW_MODE_CACHE = RenderCacheUtil.newLruCache(128); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/RoundedPosColorShader.java b/src/main/java/dev/zprestige/prestige/render/RoundedPosColorShader.java deleted file mode 100644 index ce378f6..0000000 --- a/src/main/java/dev/zprestige/prestige/render/RoundedPosColorShader.java +++ /dev/null @@ -1,243 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.math.MathUtil4; -import dev.zprestige.prestige.type.GlPrimitive; -import dev.zprestige.prestige.world.WorldContract; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Map; -import java.util.function.Consumer; -import org.joml.Matrix4f; -import org.joml.Vector4f; -import org.lwjgl.opengl.GL20; - -public class RoundedPosColorShader extends ShaderBase { - private static final RoundedPosColorShader a = new RoundedPosColorShader(0L); - private static final Map b; - private final int c; - - private RoundedPosColorShader(long var1) { - super("shaders/rounded_pos_color.vert", "shaders/rounded_pos_color.frag", (86459433955547L)); - var1 = 0L; - var1 = 122901707857854L ^ var1; - long var3 = var1 ^ 134214443711663L; - long var5 = var1 ^ 36718471982949L; - this.c = this.a_Shader(new Object[0]).d(new Object[]{"roundness", var3}); - } - - public static void c(Object[] var0) { - RenderHelper8 var6 = (RenderHelper8)var0[0]; - MatrixCameraData var5 = (MatrixCameraData)var0[1]; - Matrix4f var9 = (Matrix4f)var0[2]; - float var7 = (Float)var0[3]; - float var10 = (Float)var0[4]; - float var2 = (Float)var0[5]; - float var8 = (Float)var0[6]; - Color var11 = (Color)var0[7]; - float var1 = (Float)var0[8]; - long var3 = (Long)var0[9]; - var3 = 122901707857854L ^ var3; - long var12 = var3 ^ 129088124588045L; - RoundedPosColorShader var10000 = a; - int var10008 = var11.getRGB(); - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, new Vector4f(var1), var12}; - var10012[7] = var10008; - var10012[6] = var8; - var10012[5] = var2; - var10012[4] = var10; - var10012[3] = var7; - var10012[2] = var9; - var10012[1] = var5; - var10012[0] = var6; - var10000.e(var10012); - } - - private void e(Object[] var1) { - Matrix4f var4 = (Matrix4f)var1[2]; - float var7 = (Float)var1[3]; - float var6 = (Float)var1[4]; - float var8 = (Float)var1[5]; - float var5 = (Float)var1[6]; - int var11 = (Integer)var1[7]; - Vector4f var2 = (Vector4f)var1[8]; - long var9 = (Long)var1[9]; - var9 = 122901707857854L ^ var9; - long var13 = var9 ^ 34638110780916L; - long var15 = var9 ^ 108962103099656L; - long var17 = var9 ^ 131252492588175L; - DrawMode var19 = this.a(new Object[]{var2, var17}); - RenderState.a_RenderHelper30(new Object[]{var13}) - .b( - new Object[]{ - new RenderHelper13( - var19, - (lpL142_0, lpL142_1) -> { - Object[] var10003 = new Object[]{null, 91022737183023L}; - var10003[0] = var11; - int var24 = RenderState.b_int_(var10003); - WorldContract var10000 = ((dev.zprestige.prestige.world.WorldContract)lpL142_1).k(new Object[]{111161505170643L}); - float var33 = var6 + var5; - float var10004 = ((java.lang.Float)lpL142_0); - Object[] var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var33; - var10007[1] = var7; - var10007[0] = var4; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{0.0F, 0.0F}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var8, var5}, 118034685045795L}); - Object[] var35 = new Object[]{null, 106573078251021L}; - var35[0] = var24; - var10000 = var10000.e(var35); - float var10002 = var7 + var8; - float var34 = var6 + var5; - var10004 = ((java.lang.Float)lpL142_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var34; - var10007[1] = var10002; - var10007[0] = var4; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{var8, 0.0F}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var8, var5}, 118034685045795L}); - Object[] var37 = new Object[]{null, 106573078251021L}; - var37[0] = var24; - var10000 = var10000.e(var37); - var10002 = var7 + var8; - var10004 = ((java.lang.Float)lpL142_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var6; - var10007[1] = var10002; - var10007[0] = var4; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{var8, var5}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var8, var5}, 118034685045795L}); - Object[] var39 = new Object[]{null, 106573078251021L}; - var39[0] = var24; - var10000 = var10000.e(var39); - var10004 = ((java.lang.Float)lpL142_0); - var10007 = new Object[]{null, null, null, null, 116910503435476L}; - var10007[3] = var10004; - var10007[2] = var6; - var10007[1] = var7; - var10007[0] = var4; - var10000 = var10000.d(var10007) - .b_WorldContract(new Object[]{new float[]{0.0F, var5}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var8, var5}, 118034685045795L}); - Object[] var41 = new Object[]{null, 106573078251021L}; - var41[0] = var24; - var10000.e(var41).i_WorldContract(new Object[]{GlPrimitive.QUADS, 3098493320255L}).h(new Object[]{7414847813752L}); - } - ), - var15 - } - ); - } - - public DrawMode a(Object[] var1) { - Vector4f var2 = (Vector4f)var1[0]; - long var3 = (Long)var1[1]; - var3 = 122901707857854L ^ var3; - long var5 = var3 ^ 80943213351674L; - long var7 = var3 ^ 34000696763308L; - Vector4f var10 = MathUtil4.a_Vector4f(new Object[]{var2, var5}); - Event.b(); - DrawMode var11 = (DrawMode)b.get(var10); - if (var11 == null) { - VertexFormat var10002 = VertexAttribute.e; - Uniform[] var10005 = new Uniform[]{Uniform.a, Uniform.a_ShaderData(new Object[]{this.a_Shader(new Object[0])}), null, null, null, null}; - Object[] var10011 = new Object[]{null, true}; - var10011[0] = 2884; - var10005[2] = Uniform.a_IntBoolData2(var10011); - var10011 = new Object[]{null, true}; - var10011[0] = true; - var10005[3] = Uniform.a_BoolData2(var10011); - var10011 = new Object[]{null, 515}; - var10011[0] = 515; - var10005[4] = Uniform.a_IntData2(var10011); - var10005[5] = Uniform.a_Uniform(new Object[]{(Consumer)lpL141_0 -> GL20.glUniform4f(this.c, var10.x, var10.y, var10.z, var10.w)}); - var11 = new DrawMode(var10002, 4, false, var10005, var7); - b.put(var10, var11); - } - - return var11; - } - - static { - Object[] var10003 = new Object[]{null, 0L}; - var10003[0] = 128; - b = MathUtil4.a(var10003); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/RoundedRectShader.java b/src/main/java/dev/zprestige/prestige/render/RoundedRectShader.java new file mode 100644 index 0000000..b0a62b3 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/RoundedRectShader.java @@ -0,0 +1,70 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.math.RenderCacheUtil; +import dev.zprestige.prestige.type.GlPrimitive; +import dev.zprestige.prestige.world.MeshBuilder; +import java.awt.Color; +import java.util.Map; +import java.util.function.Consumer; +import org.joml.Matrix4f; +import org.joml.Vector4f; +import org.lwjgl.opengl.GL20; + +public class RoundedRectShader extends ShaderBase { + private static final RoundedRectShader INSTANCE = new RoundedRectShader(); + private static final Map DRAW_MODE_CACHE; + private final int roundnessUniform; + + private RoundedRectShader() { + super("shaders/rounded_pos_color.vert", "shaders/rounded_pos_color.frag"); + this.roundnessUniform = this.getShader().getUniformLocation("roundness"); + } + + public static void drawRoundedRect(BufferSource buffers, CameraMatrices context, Matrix4f matrix, float x, float y, float width, float height, Color color, float radius) { + INSTANCE.queueRoundedRect(buffers, context, matrix, x, y, width, height, color.getRGB(), new Vector4f(radius)); + } + + private void queueRoundedRect(BufferSource unusedBuffers, CameraMatrices unusedContext, Matrix4f matrix, float x, float y, float width, float height, int argb, Vector4f radii) { + DrawPipeline drawMode = this.getDrawMode(radii); + ShapeRenderer.getDrawQueue() + .enqueue( + new CallbackDrawCommand( + drawMode, + (depth, builder) -> { + int abgr = ShapeRenderer.argbToAbgr(argb); + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape().putTransformedVertex(matrix, x, y + height, ((java.lang.Float)depth)) + .putFloats(new float[]{0.0F, 0.0F}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x + width, y + height, ((java.lang.Float)depth)) + .putFloats(new float[]{width, 0.0F}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x + width, y, ((java.lang.Float)depth)) + .putFloats(new float[]{width, height}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x, y, ((java.lang.Float)depth)) + .putFloats(new float[]{0.0F, height}) + .putFloats(new float[]{width, height}).putColor(abgr).generateIndices(GlPrimitive.QUADS).resetBaseVertex(); + } + ) + ); + } + + public DrawPipeline getDrawMode(Vector4f radii) { + Vector4f roundedRadii = RenderCacheUtil.quantizeVector(radii); + DrawPipeline drawMode = (DrawPipeline)DRAW_MODE_CACHE.get(roundedRadii); + if (drawMode == null) { + VertexLayout format = VertexLayouts.POSITION_UV_SIZE_COLOR; + RenderStateElement[] states = new RenderStateElement[]{RenderStateElement.MAIN_TARGET, RenderStateElement.shader(this.getShader()), null, null, null, null}; + states[2] = RenderStateElement.capability(2884, true); + states[3] = RenderStateElement.blend(true, true); + states[4] = RenderStateElement.depthFunc(515, 515); + states[5] = RenderStateElement.onApply((Consumer)pass -> GL20.glUniform4f(this.roundnessUniform, roundedRadii.x, roundedRadii.y, roundedRadii.z, roundedRadii.w)); + drawMode = new DrawPipeline(format, 4, false, states); + DRAW_MODE_CACHE.put(roundedRadii, drawMode); + } + + return drawMode; + } + + static { + DRAW_MODE_CACHE = RenderCacheUtil.newLruCache(128); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/RoundedTextureShader.java b/src/main/java/dev/zprestige/prestige/render/RoundedTextureShader.java index f093fb6..3ac5a88 100644 --- a/src/main/java/dev/zprestige/prestige/render/RoundedTextureShader.java +++ b/src/main/java/dev/zprestige/prestige/render/RoundedTextureShader.java @@ -1,14 +1,12 @@ package dev.zprestige.prestige.render; -import dev.zprestige.prestige.data.BoolIntData; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.math.MathHelper6; +import dev.zprestige.prestige.data.BlendFuncState; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.math.TexturedDrawModeKey; import dev.zprestige.prestige.type.BlendMode; import dev.zprestige.prestige.type.GlPrimitive; -import dev.zprestige.prestige.world.WorldContract; +import dev.zprestige.prestige.world.MeshBuilder; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import java.util.function.Consumer; @@ -19,686 +17,150 @@ import org.lwjgl.opengl.GL13; import org.lwjgl.opengl.GL20; public class RoundedTextureShader extends ShaderBase { - private static final RoundedTextureShader a = new RoundedTextureShader(0L); - private static final Map b = new HashMap(); - private final int c; - private final int d; + private static final RoundedTextureShader INSTANCE = new RoundedTextureShader(); + private static final Map DRAW_MODE_CACHE = new HashMap(); + private final int tintModeUniform; + private final int roundnessUniform; - private RoundedTextureShader(long var1) { - super("shaders/rounded_texture.vert", "shaders/rounded_texture.frag", (23865181315070L)); - var1 = 0L; - var1 = 133747743752646L ^ var1; - long var3 = var1 ^ 60902806195698L; - long var5 = var1 ^ 118816401399352L; - long var7 = var1 ^ 67653529446872L; - this.c = this.a_Shader(new Object[0]).d(new Object[]{"tintMode", var3}); - this.d = this.a_Shader(new Object[0]).d(new Object[]{"roundness", var3}); - Shader var10000 = this.a_Shader(new Object[0]); - Object[] var10005 = new Object[]{null, null, var7}; - var10005[1] = 0; - var10005[0] = "texSampler"; - var10000.a_void_____________________________(var10005); + private RoundedTextureShader() { + super("shaders/rounded_texture.vert", "shaders/rounded_texture.frag"); + this.tintModeUniform = this.getShader().getUniformLocation("tintMode"); + this.roundnessUniform = this.getShader().getUniformLocation("roundness"); + this.getShader().setUniformInt("texSampler", 0); } - public static void c(Object[] var0) { - RenderHelper8 var8 = (RenderHelper8)var0[0]; - MatrixCameraData var3 = (MatrixCameraData)var0[1]; - Matrix4f var2 = (Matrix4f)var0[2]; - FontRenderer var1 = (FontRenderer)var0[3]; - float var4 = (Float)var0[4]; - float var11 = (Float)var0[5]; - float var9 = (Float)var0[6]; - float var5 = (Float)var0[7]; - Color var10 = (Color)var0[8]; - long var6 = (Long)var0[9]; - var6 = 133747743752646L ^ var6; - long var12 = var6 ^ 13819602248046L; - RoundedTextureShader var10000 = a; - Object[] var10014 = new Object[]{null, null, null, null, null, null, null, null, new Vector4f(0.0F), var10, BlendMode.MULTIPLY, var12}; - var10014[7] = var5; - var10014[6] = var9; - var10014[5] = var11; - var10014[4] = var4; - var10014[3] = var1; - var10014[2] = var2; - var10014[1] = var3; - var10014[0] = var8; - var10000.y(var10014); + public static void drawTexture(BufferSource buffers, CameraMatrices context, Matrix4f matrix, GlTextureHandle texture, float x, float y, float width, float height, Color color) { + INSTANCE.queueTexture(buffers, context, matrix, texture, x, y, width, height, new Vector4f(0.0F), color, BlendMode.MULTIPLY); } - public static void d(Object[] var0) { - RenderHelper8 var3 = (RenderHelper8)var0[0]; - MatrixCameraData var9 = (MatrixCameraData)var0[1]; - FontRenderer var11 = (FontRenderer)var0[2]; - float var7 = (Float)var0[3]; - float var10 = (Float)var0[4]; - float var8 = (Float)var0[5]; - float var5 = (Float)var0[6]; - Matrix4f var6 = (Matrix4f)var0[7]; - Color var4 = (Color)var0[8]; - long var1 = (Long)var0[9]; - var1 = 133747743752646L ^ var1; - long var12 = var1 ^ 36611569935087L; - RoundedTextureShader var10000 = a; - Object[] var10014 = new Object[]{null, null, null, null, null, null, null, null, new Vector4f(0.0F), var4, BlendMode.MULTIPLY, var12}; - var10014[7] = var5; - var10014[6] = var8; - var10014[5] = var10; - var10014[4] = var7; - var10014[3] = var11; - var10014[2] = var6; - var10014[1] = var9; - var10014[0] = var3; - var10000.y(var10014); + public static void drawTextureQuad(BufferSource buffers, CameraMatrices context, GlTextureHandle texture, float x, float y, float width, float height, Matrix4f matrix, Color color) { + INSTANCE.queueTexture(buffers, context, matrix, texture, x, y, width, height, new Vector4f(0.0F), color, BlendMode.MULTIPLY); } - public static void m(Object[] var0) { - RenderHelper8 var4 = (RenderHelper8)var0[0]; - MatrixCameraData var6 = (MatrixCameraData)var0[1]; - Matrix4f var1 = (Matrix4f)var0[2]; - FontRenderer var13 = (FontRenderer)var0[3]; - float var3 = (Float)var0[4]; - float var11 = (Float)var0[5]; - float var12 = (Float)var0[6]; - float var2 = (Float)var0[7]; - float var10 = (Float)var0[8]; - float var14 = (Float)var0[9]; - Color var5 = (Color)var0[10]; - float var9 = (Float)var0[11]; - long var7 = (Long)var0[12]; - var7 = 133747743752646L ^ var7; - long var15 = var7 ^ 94244386372130L; - RoundedTextureShader var10000 = a; - int var10011 = var5.getRGB(); - Object[] var10016 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, new Vector4f(var9), BlendMode.MULTIPLY, var15}; - var10016[10] = var10011; - var10016[9] = var14; - var10016[8] = var10; - var10016[7] = var2; - var10016[6] = var12; - var10016[5] = var11; - var10016[4] = var3; - var10016[3] = var13; - var10016[2] = var1; - var10016[1] = var6; - var10016[0] = var4; - var10000.G(var10016); + public static void drawWorldTexture(BufferSource buffers, CameraMatrices context, Matrix4f matrix, GlTextureHandle texture, float x1, float y1, float z1, float x2, float y2, float z2, Color color, float radius) { + INSTANCE.writeWorldTexture(buffers, context, matrix, texture, x1, y1, z1, x2, y2, z2, color.getRGB(), new Vector4f(radius), BlendMode.MULTIPLY); } - public static void o(Object[] var0) { - RenderHelper8 var12 = (RenderHelper8)var0[0]; - MatrixCameraData var11 = (MatrixCameraData)var0[1]; - Matrix4f var9 = (Matrix4f)var0[2]; - FontRenderer var16 = (FontRenderer)var0[3]; - float var7 = (Float)var0[4]; - float var13 = (Float)var0[5]; - float var4 = (Float)var0[6]; - float var3 = (Float)var0[7]; - float var17 = (Float)var0[8]; - float var10 = (Float)var0[9]; - Color var18 = (Color)var0[10]; - Color var15 = (Color)var0[11]; - Color var8 = (Color)var0[12]; - Color var2 = (Color)var0[13]; - float var1 = (Float)var0[14]; - boolean var14 = (Boolean)var0[15]; - long var5 = (Long)var0[16]; - var5 = 133747743752646L ^ var5; - long var19 = var5 ^ 46609086249295L; - RoundedTextureShader var10000 = a; - int var10011 = var18.getRGB(); - int var10012 = var15.getRGB(); - int var10013 = var8.getRGB(); - int var10014 = var2.getRGB(); - Vector4f var10015 = new Vector4f(var1); - Object[] var10020 = new Object[]{ - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, BlendMode.MULTIPLY, var19 - }; - var10020[15] = var14; - var10020[14] = var10015; - var10020[13] = var10014; - var10020[12] = var10013; - var10020[11] = var10012; - var10020[10] = var10011; - var10020[9] = var10; - var10020[8] = var17; - var10020[7] = var3; - var10020[6] = var4; - var10020[5] = var13; - var10020[4] = var7; - var10020[3] = var16; - var10020[2] = var9; - var10020[1] = var11; - var10020[0] = var12; - var10000.H(var10020); + public static void drawWorldTextureGradient(BufferSource buffers, CameraMatrices context, Matrix4f matrix, GlTextureHandle texture, float x1, float y1, float z1, float x2, float y2, float z2, Color bottomLeft, Color bottomRight, Color topRight, Color topLeft, float radius, boolean depthTest) { + INSTANCE.writeWorldTextureGradient(buffers, context, matrix, texture, x1, y1, z1, x2, y2, z2, bottomLeft.getRGB(), bottomRight.getRGB(), topRight.getRGB(), topLeft.getRGB(), new Vector4f(radius), depthTest, BlendMode.MULTIPLY); } - private void y(Object[] var1) { - Matrix4f var3 = (Matrix4f)var1[2]; - FontRenderer var2 = (FontRenderer)var1[3]; - float var12 = (Float)var1[4]; - float var11 = (Float)var1[5]; - float var14 = (Float)var1[6]; - float var10 = (Float)var1[7]; - Vector4f var6 = (Vector4f)var1[8]; - Color var9 = (Color)var1[9]; - BlendMode var7 = (BlendMode)var1[10]; - long var4 = (Long)var1[11]; - var4 = 133747743752646L ^ var4; - long var15 = var4 ^ 56610810757369L; - long var17 = var4 ^ 126483276391244L; - Object[] var10007 = new Object[]{null, null, null, null, var15}; - var10007[3] = true; - var10007[2] = var7; - var10007[1] = var6; - var10007[0] = var2; - DrawMode var19 = this.a(var10007); - ((RenderHelper30)RenderState.a.get()) - .b( - new Object[]{ - new RenderHelper13( - var19, - (lpL148_0, lpL148_1) -> { - int var22 = var9.getRGB(); - int var23 = var22 >> 24 & 0xFF; - int var24 = var22 >> 16 & 0xFF; - int var25 = var22 >> 8 & 0xFF; - int var26 = var22 & 0xFF; - int var27 = var23 << 24 | var26 << 16 | var25 << 8 | var24; - WorldContract var10000 = ((dev.zprestige.prestige.world.WorldContract)lpL148_1).k(new Object[]{111161505170643L}); - float var10003 = var11 + var10; - float var10004 = ((java.lang.Float)lpL148_0); - Object[] var10007x = new Object[]{null, null, null, null, 116910503435476L}; - var10007x[3] = var10004; - var10007x[2] = var10003; - var10007x[1] = var12; - var10007x[0] = var3; - var10000 = var10000.d(var10007x) - .b_WorldContract(new Object[]{new float[]{0.0F, 0.0F}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var14, var10}, 118034685045795L}); - Object[] var37 = new Object[]{null, 106573078251021L}; - var37[0] = var27; - var10000 = var10000.e(var37); - float var10002 = var12 + var14; - var10003 = var11 + var10; - var10004 = ((java.lang.Float)lpL148_0); - var10007x = new Object[]{null, null, null, null, 116910503435476L}; - var10007x[3] = var10004; - var10007x[2] = var10003; - var10007x[1] = var10002; - var10007x[0] = var3; - var10000 = var10000.d(var10007x) - .b_WorldContract(new Object[]{new float[]{var14, 0.0F}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var14, var10}, 118034685045795L}); - Object[] var39 = new Object[]{null, 106573078251021L}; - var39[0] = var27; - var10000 = var10000.e(var39); - var10002 = var12 + var14; - var10004 = ((java.lang.Float)lpL148_0); - var10007x = new Object[]{null, null, null, null, 116910503435476L}; - var10007x[3] = var10004; - var10007x[2] = var11; - var10007x[1] = var10002; - var10007x[0] = var3; - var10000 = var10000.d(var10007x) - .b_WorldContract(new Object[]{new float[]{var14, var10}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var14, var10}, 118034685045795L}); - Object[] var41 = new Object[]{null, 106573078251021L}; - var41[0] = var27; - var10000 = var10000.e(var41); - var10004 = ((java.lang.Float)lpL148_0); - var10007x = new Object[]{null, null, null, null, 116910503435476L}; - var10007x[3] = var10004; - var10007x[2] = var11; - var10007x[1] = var12; - var10007x[0] = var3; - var10000 = var10000.d(var10007x) - .b_WorldContract(new Object[]{new float[]{0.0F, var10}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var14, var10}, 118034685045795L}); - Object[] var43 = new Object[]{null, 106573078251021L}; - var43[0] = var27; - var10000.e(var43).i_WorldContract(new Object[]{GlPrimitive.QUADS, 3098493320255L}).h(new Object[]{7414847813752L}); + private void queueTexture(BufferSource unusedBuffers, CameraMatrices unusedContext, Matrix4f matrix, GlTextureHandle texture, float x, float y, float width, float height, Vector4f radii, Color color, BlendMode blendMode) { + DrawPipeline drawMode = this.getDrawMode(texture, radii, blendMode, true); + ((DrawCommandQueue)ShapeRenderer.drawQueue.get()) + .enqueue( + new CallbackDrawCommand( + drawMode, + (depth, builder) -> { + int argb = color.getRGB(); + int abgr = (argb >> 24 & 0xFF) << 24 | (argb & 0xFF) << 16 | (argb >> 8 & 0xFF) << 8 | (argb >> 16 & 0xFF); + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape().putTransformedVertex(matrix, x, y + height, ((java.lang.Float)depth)) + .putFloats(new float[]{0.0F, 0.0F}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x + width, y + height, ((java.lang.Float)depth)) + .putFloats(new float[]{width, 0.0F}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x + width, y, ((java.lang.Float)depth)) + .putFloats(new float[]{width, height}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x, y, ((java.lang.Float)depth)) + .putFloats(new float[]{0.0F, height}) + .putFloats(new float[]{width, height}).putColor(abgr).generateIndices(GlPrimitive.QUADS).resetBaseVertex(); } - ), - var17 - } + ) ); } - private void z(Object[] var1) { - Matrix4f var10 = (Matrix4f)var1[2]; - FontRenderer var5 = (FontRenderer)var1[3]; - float var11 = (Float)var1[4]; - float var2 = (Float)var1[5]; - float var13 = (Float)var1[6]; - float var8 = (Float)var1[7]; - float var4 = (Float)var1[8]; - float var7 = (Float)var1[9]; - float var3 = (Float)var1[10]; - float var14 = (Float)var1[11]; - Vector4f var9 = (Vector4f)var1[12]; - Color var18 = (Color)var1[13]; - BlendMode var15 = (BlendMode)var1[14]; - long var16 = (Long)var1[15]; - var16 = 133747743752646L ^ var16; - long var19 = var16 ^ 93978664291017L; - long var21 = var16 ^ 23143588604284L; - Object[] var10007 = new Object[]{null, null, null, null, var19}; - var10007[3] = true; - var10007[2] = var15; - var10007[1] = var9; - var10007[0] = var5; - DrawMode var23 = this.a(var10007); - ((RenderHelper30)RenderState.a.get()) - .b( - new Object[]{ - new RenderHelper13( - var23, - (lpL147_0, lpL147_1) -> { - int var26 = var18.getRGB(); - int var27 = var26 >> 24 & 0xFF; - int var28 = var26 >> 16 & 0xFF; - int var29 = var26 >> 8 & 0xFF; - int var30 = var26 & 0xFF; - int var31 = var27 << 24 | var30 << 16 | var29 << 8 | var28; - WorldContract var10000 = ((dev.zprestige.prestige.world.WorldContract)lpL147_1).k(new Object[]{111161505170643L}); - float var10003 = var2 + var8; - float var10004 = ((java.lang.Float)lpL147_0); - Object[] var10007x = new Object[]{null, null, null, null, 116910503435476L}; - var10007x[3] = var10004; - var10007x[2] = var10003; - var10007x[1] = var11; - var10007x[0] = var10; - var10000 = var10000.d(var10007x) - .b_WorldContract(new Object[]{new float[]{var4, var7}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var13, var8}, 118034685045795L}); - Object[] var41 = new Object[]{null, 106573078251021L}; - var41[0] = var31; - var10000 = var10000.e(var41); - float var10002 = var11 + var13; - var10003 = var2 + var8; - var10004 = ((java.lang.Float)lpL147_0); - var10007x = new Object[]{null, null, null, null, 116910503435476L}; - var10007x[3] = var10004; - var10007x[2] = var10003; - var10007x[1] = var10002; - var10007x[0] = var10; - var10000 = var10000.d(var10007x) - .b_WorldContract(new Object[]{new float[]{var4 + var3, var7}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var13, var8}, 118034685045795L}); - Object[] var43 = new Object[]{null, 106573078251021L}; - var43[0] = var31; - var10000 = var10000.e(var43); - var10002 = var11 + var13; - var10004 = ((java.lang.Float)lpL147_0); - var10007x = new Object[]{null, null, null, null, 116910503435476L}; - var10007x[3] = var10004; - var10007x[2] = var2; - var10007x[1] = var10002; - var10007x[0] = var10; - var10000 = var10000.d(var10007x) - .b_WorldContract(new Object[]{new float[]{var4 + var3, var7 + var14}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var13, var8}, 118034685045795L}); - Object[] var45 = new Object[]{null, 106573078251021L}; - var45[0] = var31; - var10000 = var10000.e(var45); - var10004 = ((java.lang.Float)lpL147_0); - var10007x = new Object[]{null, null, null, null, 116910503435476L}; - var10007x[3] = var10004; - var10007x[2] = var2; - var10007x[1] = var11; - var10007x[0] = var10; - var10000 = var10000.d(var10007x) - .b_WorldContract(new Object[]{new float[]{var4, var7 + var14}, 118034685045795L}) - .b_WorldContract(new Object[]{new float[]{var13, var8}, 118034685045795L}); - Object[] var47 = new Object[]{null, 106573078251021L}; - var47[0] = var31; - var10000.e(var47).i_WorldContract(new Object[]{GlPrimitive.QUADS, 3098493320255L}).h(new Object[]{7414847813752L}); + private void queueTextureRegion(BufferSource unusedBuffers, CameraMatrices unusedContext, Matrix4f matrix, GlTextureHandle texture, float x, float y, float width, float height, float u, float v, float regionWidth, float regionHeight, Vector4f radii, Color color, BlendMode blendMode) { + DrawPipeline drawMode = this.getDrawMode(texture, radii, blendMode, true); + ((DrawCommandQueue)ShapeRenderer.drawQueue.get()) + .enqueue( + new CallbackDrawCommand( + drawMode, + (depth, builder) -> { + int argb = color.getRGB(); + int abgr = (argb >> 24 & 0xFF) << 24 | (argb & 0xFF) << 16 | (argb >> 8 & 0xFF) << 8 | (argb >> 16 & 0xFF); + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape().putTransformedVertex(matrix, x, y + height, ((java.lang.Float)depth)) + .putFloats(new float[]{u, v}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x + width, y + height, ((java.lang.Float)depth)) + .putFloats(new float[]{u + regionWidth, v}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x + width, y, ((java.lang.Float)depth)) + .putFloats(new float[]{u + regionWidth, v + regionHeight}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x, y, ((java.lang.Float)depth)) + .putFloats(new float[]{u, v + regionHeight}) + .putFloats(new float[]{width, height}).putColor(abgr).generateIndices(GlPrimitive.QUADS).resetBaseVertex(); } - ), - var21 - } + ) ); } - public static void E(Object[] var0) { - RenderHelper8 var7 = (RenderHelper8)var0[0]; - MatrixCameraData var15 = (MatrixCameraData)var0[1]; - Matrix4f var6 = (Matrix4f)var0[2]; - FontRenderer var4 = (FontRenderer)var0[3]; - float var9 = (Float)var0[4]; - float var2 = (Float)var0[5]; - float var11 = (Float)var0[6]; - float var16 = (Float)var0[7]; - float var8 = (Float)var0[8]; - float var3 = (Float)var0[9]; - float var12 = (Float)var0[10]; - float var1 = (Float)var0[11]; - Vector4f var5 = (Vector4f)var0[12]; - Color var10 = (Color)var0[13]; - long var13 = (Long)var0[14]; - var13 = 133747743752646L ^ var13; - long var17 = var13 ^ 73228212321128L; - RoundedTextureShader var10000 = a; - Object[] var10018 = new Object[]{null, null, null, null, null, null, null, null, null, null, null, null, var5, var10, BlendMode.MULTIPLY, var17}; - var10018[11] = var1; - var10018[10] = var12; - var10018[9] = var3; - var10018[8] = var8; - var10018[7] = var16; - var10018[6] = var11; - var10018[5] = var2; - var10018[4] = var9; - var10018[3] = var4; - var10018[2] = var6; - var10018[1] = var15; - var10018[0] = var7; - var10000.z(var10018); + public static void drawTextureRegion(BufferSource buffers, CameraMatrices context, Matrix4f matrix, GlTextureHandle texture, float x, float y, float width, float height, float u, float v, float regionWidth, float regionHeight, Vector4f radii, Color color) { + INSTANCE.queueTextureRegion(buffers, context, matrix, texture, x, y, width, height, u, v, regionWidth, regionHeight, radii, color, BlendMode.MULTIPLY); } - private DrawMode a(Object[] var1) { - FontRenderer var4 = (FontRenderer)var1[0]; - Vector4f var3 = (Vector4f)var1[1]; - BlendMode var5 = (BlendMode)var1[2]; - boolean var2 = (Boolean)var1[3]; - MathHelper6 var8 = new MathHelper6(var4, var3, var5, var2); - return (DrawMode)b.computeIfAbsent(var8, lpL145_0 -> { - VertexFormat var10002 = VertexAttribute.e; - Uniform[] var10005 = new Uniform[]{Uniform.a, Uniform.a_ShaderData(new Object[]{this.a_Shader(new Object[0])}), null, null, null, null}; - Object[] var10011 = new Object[]{null, var2}; - var10011[0] = 2929; - var10005[2] = Uniform.a_IntBoolData2(var10011); - var10005[3] = Uniform.b(new Object[]{true}); - var10005[4] = new BoolIntData(true, true, 770, 771, 1, 771); - var10005[5] = Uniform.a_Uniform(new Object[]{(Consumer)lpL146_0 -> { + private DrawPipeline getDrawMode(GlTextureHandle texture, Vector4f radii, BlendMode blendMode, boolean depthTest) { + TexturedDrawModeKey cacheKey = new TexturedDrawModeKey(texture, radii, blendMode, depthTest); + return (DrawPipeline)DRAW_MODE_CACHE.computeIfAbsent(cacheKey, mapKey -> { + VertexLayout format = VertexLayouts.POSITION_UV_SIZE_COLOR; + RenderStateElement[] states = new RenderStateElement[]{RenderStateElement.MAIN_TARGET, RenderStateElement.shader(this.getShader()), null, null, null, null}; + states[2] = RenderStateElement.capability(2929, depthTest); + states[3] = RenderStateElement.depthMask(true); + states[4] = new BlendFuncState(true, true, 770, 771, 1, 771); + states[5] = RenderStateElement.onApply((Consumer)pass -> { GL13.glActiveTexture(33984); - GL11.glBindTexture(3553, var4.a); - GL20.glUniform1i(this.c, var5.ordinal()); - GL20.glUniform4f(this.d, var3.x, var3.y, var3.z, var3.w); - }}); - return new DrawMode(var10002, 4, false, var10005, 138006566364233L); + GL11.glBindTexture(3553, texture.glId); + GL20.glUniform1i(this.tintModeUniform, blendMode.ordinal()); + GL20.glUniform4f(this.roundnessUniform, radii.x, radii.y, radii.z, radii.w); + }); + return new DrawPipeline(format, 4, false, states); }); } - private void G(Object[] var1) { - RenderHelper8 var4 = (RenderHelper8)var1[0]; - Matrix4f var13 = (Matrix4f)var1[2]; - FontRenderer var11 = (FontRenderer)var1[3]; - float var2 = (Float)var1[4]; - float var3 = (Float)var1[5]; - float var7 = (Float)var1[6]; - float var10 = (Float)var1[7]; - float var12 = (Float)var1[8]; - float var8 = (Float)var1[9]; - int var15 = (Integer)var1[10]; - Vector4f var9 = (Vector4f)var1[11]; - BlendMode var16 = (BlendMode)var1[12]; - long var5 = (Long)var1[13]; - var5 = 133747743752646L ^ var5; - long var17 = var5 ^ 62422432068521L; - long var19 = var5 ^ 56497257084492L; - long var21 = var5 ^ 28305482178466L; - long var23 = var5 ^ 83541911797404L; - long var25 = var5 ^ 104511460019013L; - long var27 = var5 ^ 68141019647704L; - float var29 = Math.abs(var10 - var2); - float var30 = Math.abs(var12 - var3); - int var31 = var15 >> 24 & 0xFF; - int var32 = var15 >> 16 & 0xFF; - int var33 = var15 >> 8 & 0xFF; - int var34 = var15 & 0xFF; - int var35 = var31 << 24 | var34 << 16 | var33 << 8 | var32; - Object[] var10008 = new Object[]{null, null, null, null, null, var27}; - var10008[4] = true; - var10008[3] = var16; - var10008[2] = var9; - var10008[1] = var11; - var10008[0] = var4; - TextRenderer var10000 = (TextRenderer)this.a_TextRenderer_(var10008).k(new Object[]{var17}); - Object[] var10007 = new Object[]{null, null, null, null, var23}; - var10007[3] = var8; - var10007[2] = var12; - var10007[1] = var2; - var10007[0] = var13; - var10000 = var10000.d_TextRenderer(var10007) - .b_TextRenderer(new Object[]{new float[]{0.0F, 0.0F}, var19}) - .b_TextRenderer(new Object[]{new float[]{var29, var30}, var19}); - Object[] var10004 = new Object[]{null, var21}; - var10004[0] = var35; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var23}; - var10007[3] = var8; - var10007[2] = var12; - var10007[1] = var10; - var10007[0] = var13; - var10000 = var10000.d_TextRenderer(var10007) - .b_TextRenderer(new Object[]{new float[]{var29, 0.0F}, var19}) - .b_TextRenderer(new Object[]{new float[]{var29, var30}, var19}); - var10004 = new Object[]{null, var21}; - var10004[0] = var35; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var23}; - var10007[3] = var7; - var10007[2] = var3; - var10007[1] = var10; - var10007[0] = var13; - var10000 = var10000.d_TextRenderer(var10007) - .b_TextRenderer(new Object[]{new float[]{var29, var30}, var19}) - .b_TextRenderer(new Object[]{new float[]{var29, var30}, var19}); - var10004 = new Object[]{null, var21}; - var10004[0] = var35; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var23}; - var10007[3] = var7; - var10007[2] = var3; - var10007[1] = var2; - var10007[0] = var13; - var10000 = var10000.d_TextRenderer(var10007) - .b_TextRenderer(new Object[]{new float[]{0.0F, var30}, var19}) - .b_TextRenderer(new Object[]{new float[]{var29, var30}, var19}); - var10004 = new Object[]{null, var21}; - var10004[0] = var35; - ((TextRenderer)var10000.e_TextRenderer(var10004).i_WorldContract(new Object[]{GlPrimitive.QUADS, var25})).h_TextRenderer(new Object[0]); + private void writeWorldTexture(BufferSource buffers, CameraMatrices unusedContext, Matrix4f matrix, GlTextureHandle texture, float x1, float y1, float z1, float x2, float y2, float z2, int argb, Vector4f radii, BlendMode blendMode) { + float width = Math.abs(x2 - x1); + float height = Math.abs(y2 - y1); + int abgr = (argb >> 24 & 0xFF) << 24 | (argb & 0xFF) << 16 | (argb >> 8 & 0xFF) << 8 | (argb >> 16 & 0xFF); + ((MappedMeshBuilder)((MappedMeshBuilder)this.getWorldBuilder(buffers, texture, radii, blendMode, true).beginShape()).appendTransformedPosition(matrix, x1, y2, z2) + .appendFloats(new float[]{0.0F, 0.0F}) + .appendFloats(new float[]{width, height}).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z2) + .appendFloats(new float[]{width, 0.0F}) + .appendFloats(new float[]{width, height}).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z1) + .appendFloats(new float[]{width, height}) + .appendFloats(new float[]{width, height}).appendInt(abgr).appendTransformedPosition(matrix, x1, y1, z1) + .appendFloats(new float[]{0.0F, height}) + .appendFloats(new float[]{width, height}).appendInt(abgr).generateIndices(GlPrimitive.QUADS)).clearBaseVertex(); } - private void H(Object[] var1) { - RenderHelper8 var9 = (RenderHelper8)var1[0]; - Matrix4f var8 = (Matrix4f)var1[2]; - FontRenderer var11 = (FontRenderer)var1[3]; - float var6 = (Float)var1[4]; - float var12 = (Float)var1[5]; - float var4 = (Float)var1[6]; - float var13 = (Float)var1[7]; - float var2 = (Float)var1[8]; - float var18 = (Float)var1[9]; - int var17 = (Integer)var1[10]; - int var7 = (Integer)var1[11]; - int var20 = (Integer)var1[12]; - int var14 = (Integer)var1[13]; - Vector4f var5 = (Vector4f)var1[14]; - boolean var19 = (Boolean)var1[15]; - BlendMode var10 = (BlendMode)var1[16]; - long var15 = (Long)var1[17]; - var15 = 133747743752646L ^ var15; - long var21 = var15 ^ 129646513965262L; - long var23 = var15 ^ 138874520767787L; - long var25 = var15 ^ 92986423583941L; - long var27 = var15 ^ 7522256881147L; - long var29 = var15 ^ 19933160927266L; - long var31 = var15 ^ 72810458553650L; - long var33 = var15 ^ 124060764714431L; - float var35 = Math.abs(var13 - var6); - float var36 = Math.abs(var2 - var12); - Object[] var10003 = new Object[]{null, var31}; - var10003[0] = var17; - int var37 = RenderState.b_int_(var10003); - var10003 = new Object[]{null, var31}; - var10003[0] = var7; - int var38 = RenderState.b_int_(var10003); - var10003 = new Object[]{null, var31}; - var10003[0] = var20; - int var39 = RenderState.b_int_(var10003); - var10003 = new Object[]{null, var31}; - var10003[0] = var14; - int var40 = RenderState.b_int_(var10003); - Object[] var10008 = new Object[]{null, null, null, null, null, var33}; - var10008[4] = var19; - var10008[3] = var10; - var10008[2] = var5; - var10008[1] = var11; - var10008[0] = var9; - TextRenderer var10000 = (TextRenderer)this.a_TextRenderer_(var10008).k(new Object[]{var21}); - Object[] var10007 = new Object[]{null, null, null, null, var27}; - var10007[3] = var18; - var10007[2] = var2; - var10007[1] = var6; - var10007[0] = var8; - var10000 = var10000.d_TextRenderer(var10007) - .b_TextRenderer(new Object[]{new float[]{0.0F, 0.0F}, var23}) - .b_TextRenderer(new Object[]{new float[]{var35, var36}, var23}); - Object[] var10004 = new Object[]{null, var25}; - var10004[0] = var37; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var27}; - var10007[3] = var18; - var10007[2] = var2; - var10007[1] = var13; - var10007[0] = var8; - var10000 = var10000.d_TextRenderer(var10007) - .b_TextRenderer(new Object[]{new float[]{var35, 0.0F}, var23}) - .b_TextRenderer(new Object[]{new float[]{var35, var36}, var23}); - var10004 = new Object[]{null, var25}; - var10004[0] = var38; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var27}; - var10007[3] = var4; - var10007[2] = var12; - var10007[1] = var13; - var10007[0] = var8; - var10000 = var10000.d_TextRenderer(var10007) - .b_TextRenderer(new Object[]{new float[]{var35, var36}, var23}) - .b_TextRenderer(new Object[]{new float[]{var35, var36}, var23}); - var10004 = new Object[]{null, var25}; - var10004[0] = var39; - var10000 = var10000.e_TextRenderer(var10004); - var10007 = new Object[]{null, null, null, null, var27}; - var10007[3] = var4; - var10007[2] = var12; - var10007[1] = var6; - var10007[0] = var8; - var10000 = var10000.d_TextRenderer(var10007) - .b_TextRenderer(new Object[]{new float[]{0.0F, var36}, var23}) - .b_TextRenderer(new Object[]{new float[]{var35, var36}, var23}); - var10004 = new Object[]{null, var25}; - var10004[0] = var40; - ((TextRenderer)var10000.e_TextRenderer(var10004).i_WorldContract(new Object[]{GlPrimitive.QUADS, var29})).h_TextRenderer(new Object[0]); + private void writeWorldTextureGradient(BufferSource buffers, CameraMatrices unusedContext, Matrix4f matrix, GlTextureHandle texture, float x1, float y1, float z1, float x2, float y2, float z2, int bottomLeftArgb, int bottomRightArgb, int topRightArgb, int topLeftArgb, Vector4f radii, boolean depthTest, BlendMode blendMode) { + float width = Math.abs(x2 - x1); + float height = Math.abs(y2 - y1); + int bottomLeftAbgr = ShapeRenderer.argbToAbgr(bottomLeftArgb); + int bottomRightAbgr = ShapeRenderer.argbToAbgr(bottomRightArgb); + int topRightAbgr = ShapeRenderer.argbToAbgr(topRightArgb); + int topLeftAbgr = ShapeRenderer.argbToAbgr(topLeftArgb); + ((MappedMeshBuilder)((MappedMeshBuilder)this.getWorldBuilder(buffers, texture, radii, blendMode, depthTest).beginShape()).appendTransformedPosition(matrix, x1, y2, z2) + .appendFloats(new float[]{0.0F, 0.0F}) + .appendFloats(new float[]{width, height}).appendInt(bottomLeftAbgr).appendTransformedPosition(matrix, x2, y2, z2) + .appendFloats(new float[]{width, 0.0F}) + .appendFloats(new float[]{width, height}).appendInt(bottomRightAbgr).appendTransformedPosition(matrix, x2, y1, z1) + .appendFloats(new float[]{width, height}) + .appendFloats(new float[]{width, height}).appendInt(topRightAbgr).appendTransformedPosition(matrix, x1, y1, z1) + .appendFloats(new float[]{0.0F, height}) + .appendFloats(new float[]{width, height}).appendInt(topLeftAbgr).generateIndices(GlPrimitive.QUADS)).clearBaseVertex(); } - private static int a_int___________________________(Object[] var0) { - int var3 = (Integer)var0[0]; - int var4 = var3 >> 24 & 0xFF; - int var5 = var3 >> 16 & 0xFF; - int var6 = var3 >> 8 & 0xFF; - int var7 = var3 & 0xFF; - return var4 << 24 | var7 << 16 | var6 << 8 | var5; - } - - private TextRenderer a_TextRenderer_(Object[] var1) { - RenderHelper8 var7 = (RenderHelper8)var1[0]; - FontRenderer var6 = (FontRenderer)var1[1]; - Vector4f var4 = (Vector4f)var1[2]; - BlendMode var5 = (BlendMode)var1[3]; - boolean var8 = (Boolean)var1[4]; - long var2 = (Long)var1[5]; - var2 = 133747743752646L ^ var2; - long var9 = var2 ^ 41335267254465L; - MathHelper6 var11 = new MathHelper6(var6, var4, var5, var8); - DrawMode var12 = (DrawMode)b.computeIfAbsent(var11, lpL143_0 -> { - VertexFormat var10002 = VertexAttribute.e; - Uniform[] var10005 = new Uniform[]{Uniform.a, Uniform.a_ShaderData(new Object[]{this.a_Shader(new Object[0])}), null, null, null, null}; - Object[] var10011 = new Object[]{null, var8}; - var10011[0] = 2929; - var10005[2] = Uniform.a_IntBoolData2(var10011); - var10011 = new Object[]{null, true}; - var10011[0] = false; - var10005[3] = Uniform.a(var10011); - var10005[4] = new BoolIntData(true, true, 770, 771, 1, 771); - var10005[5] = Uniform.a_Uniform(new Object[]{(Consumer)lpL144_0 -> { + private MappedMeshBuilder getWorldBuilder(BufferSource buffers, GlTextureHandle texture, Vector4f radii, BlendMode blendMode, boolean depthTest) { + TexturedDrawModeKey cacheKey = new TexturedDrawModeKey(texture, radii, blendMode, depthTest); + return buffers.getBuffer((DrawPipeline)DRAW_MODE_CACHE.computeIfAbsent(cacheKey, mapKey -> { + VertexLayout format = VertexLayouts.POSITION_UV_SIZE_COLOR; + RenderStateElement[] states = new RenderStateElement[]{RenderStateElement.MAIN_TARGET, RenderStateElement.shader(this.getShader()), null, null, null, null}; + states[2] = RenderStateElement.capability(2929, depthTest); + states[3] = RenderStateElement.depthMask(false, true); + states[4] = new BlendFuncState(true, true, 770, 771, 1, 771); + states[5] = RenderStateElement.onApply((Consumer)pass -> { GL13.glActiveTexture(33984); - GL11.glBindTexture(3553, var6.a); - GL20.glUniform1i(this.c, var5.ordinal()); - GL20.glUniform4f(this.d, var4.x, var4.y, var4.z, var4.w); - }}); - return new DrawMode(var10002, 4, false, var10005, 138006566364233L); - }); - return var7.a(new Object[]{var12, var9}); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + GL11.glBindTexture(3553, texture.glId); + GL20.glUniform1i(this.tintModeUniform, blendMode.ordinal()); + GL20.glUniform4f(this.roundnessUniform, radii.x, radii.y, radii.z, radii.w); + }); + return new DrawPipeline(format, 4, false, states); + })); } } diff --git a/src/main/java/dev/zprestige/prestige/render/SafeAnchorHelper.java b/src/main/java/dev/zprestige/prestige/render/SafeAnchorHelper.java deleted file mode 100644 index 977b1c2..0000000 --- a/src/main/java/dev/zprestige/prestige/render/SafeAnchorHelper.java +++ /dev/null @@ -1,85 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public final class SafeAnchorHelper { - private long a = System.currentTimeMillis(); - private float b; - - public SafeAnchorHelper(float var1, long var2) { - this.b = var1; - } - - public boolean a(Object[] var1) { - return (float)(System.currentTimeMillis() - this.a) >= this.b; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/ScheduledClick.java b/src/main/java/dev/zprestige/prestige/render/ScheduledClick.java new file mode 100644 index 0000000..2df7b03 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/ScheduledClick.java @@ -0,0 +1,41 @@ +package dev.zprestige.prestige.render; + +public class ScheduledClick { + private final int button; + private final long scheduledAt; + private final float pressDelay; + private final float holdDuration; + private boolean pressed; + + public ScheduledClick(int mouseButton, long createdAt, float delayMs, float holdMs, boolean initiallyPressed) { + this.button = mouseButton; + this.scheduledAt = createdAt; + this.pressDelay = delayMs; + this.holdDuration = holdMs; + this.pressed = initiallyPressed; + } + + public int getButton() { + return this.button; + } + + public long getScheduledAt() { + return this.scheduledAt; + } + + public float getPressDelay() { + return this.pressDelay; + } + + public float getHoldDuration() { + return this.holdDuration; + } + + public boolean isPressed() { + return this.pressed; + } + + public void setPressed(boolean isDown) { + this.pressed = isDown; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/Shader.java b/src/main/java/dev/zprestige/prestige/render/Shader.java index eb11c3b..7639a6e 100644 --- a/src/main/java/dev/zprestige/prestige/render/Shader.java +++ b/src/main/java/dev/zprestige/prestige/render/Shader.java @@ -1,123 +1,47 @@ package dev.zprestige.prestige.render; import java.lang.ref.Cleaner.Cleanable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL20; public final class Shader implements AutoCloseable { - private final int a; - private final Cleanable b; - private final int c; - private final int d; + private final int programId; + private final Cleanable cleanable; + private final int projMatLocation; + private final int viewMatLocation; - public Shader(int var1, long var2) { - this.a = var1; - this.b = RenderUtil.a.register(this, () -> RenderUtil.f(new Object[]{(Runnable)() -> GL20.glDeleteProgram(var1), 31795785076293L})); - this.c = GL20.glGetUniformLocation(this.a(new Object[0]), "projMat"); - this.d = GL20.glGetUniformLocation(this.a(new Object[0]), "viewMat"); + public Shader(int program) { + this.programId = program; + this.cleanable = RenderCore.CLEANER.register(this, () -> RenderCore.runOnRenderThread((Runnable)() -> GL20.glDeleteProgram(program))); + this.projMatLocation = GL20.glGetUniformLocation(this.getProgramId(), "projMat"); + this.viewMatLocation = GL20.glGetUniformLocation(this.getProgramId(), "viewMat"); } - public int a(Object[] var1) { - return this.a; + public int getProgramId() { + return this.programId; } @Override public void close() { - this.b.clean(); + this.cleanable.clean(); } - public int b(Object[] var1) { - return this.c; + public int getProjMatLocation() { + return this.projMatLocation; } - public int c(Object[] var1) { - return this.d; + public int getViewMatLocation() { + return this.viewMatLocation; } - public int d(Object[] var1) { - String var2 = (String)var1[0]; - return GL20.glGetUniformLocation(this.a, var2); + public int getUniformLocation(String name) { + return GL20.glGetUniformLocation(this.programId, name); } - public void a_void_____________________________(Object[] var1) { - String var4 = (String)var1[0]; - int var5 = (Integer)var1[1]; - long var2 = (Long)var1[2]; - var2 = 87056892131211L ^ var2; - long var6 = var2 ^ 76752568669089L; - int var8 = GL11.glGetInteger(35725); - GL20.glUseProgram(this.a); - GL20.glUniform1i(this.d(new Object[]{var4, var6}), var5); - GL20.glUseProgram(var8); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public void setUniformInt(String name, int value) { + int previousProgram = GL11.glGetInteger(35725); + GL20.glUseProgram(this.programId); + GL20.glUniform1i(this.getUniformLocation(name), value); + GL20.glUseProgram(previousProgram); } } diff --git a/src/main/java/dev/zprestige/prestige/render/ShaderBase.java b/src/main/java/dev/zprestige/prestige/render/ShaderBase.java index f19615d..23d6bd7 100644 --- a/src/main/java/dev/zprestige/prestige/render/ShaderBase.java +++ b/src/main/java/dev/zprestige/prestige/render/ShaderBase.java @@ -1,102 +1,24 @@ package dev.zprestige.prestige.render; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import net.minecraft.client.MinecraftClient; public abstract class ShaderBase { - public static final MinecraftClient a = MinecraftClient.getInstance(); - public static final long b = System.currentTimeMillis(); - public final Shader c; + public static final MinecraftClient mc = MinecraftClient.getInstance(); + public static final long START_TIME_MS = System.currentTimeMillis(); + public final Shader shader; - public ShaderBase(String var1, String var2, boolean var3, long var4) { + public ShaderBase(String vertexPath, String fragmentPath, boolean spirv, long unusedKey) { super(); - var4 = 0L; - var4 = 50459426823510L ^ var4; - long var6 = var4 ^ 24988614648383L; - Object[] var10006 = new Object[]{null, null, null, var6}; - var10006[2] = var3; - var10006[1] = var2; - var10006[0] = var1; - this.c = (Shader)ShaderProgram.a(var10006); + unusedKey = 0L; + unusedKey = 50459426823510L ^ unusedKey; + this.shader = ShaderCompiler.loadProgram(vertexPath, fragmentPath, spirv); } - public ShaderBase(String var1, String var2, long var3) { - this(var1, var2, false, (12485776094193L)); - var3 = 0L; - var3 = 50459426823510L ^ var3; - long var5 = var3 ^ 42604230717095L; + public ShaderBase(String vertexPath, String fragmentPath) { + this(vertexPath, fragmentPath, false, (12485776094193L)); } - public Shader a_Shader(Object[] var1) { - return this.c; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public Shader getShader() { + return this.shader; } } diff --git a/src/main/java/dev/zprestige/prestige/render/ShaderCompiler.java b/src/main/java/dev/zprestige/prestige/render/ShaderCompiler.java new file mode 100644 index 0000000..9a93ffc --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/ShaderCompiler.java @@ -0,0 +1,57 @@ +package dev.zprestige.prestige.render; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import org.lwjgl.opengl.GL20; + +public class ShaderCompiler { + public static final boolean ASSERTIONS_DISABLED = !ShaderCompiler.class.desiredAssertionStatus(); + + public static Shader loadProgram(String vertexPath, String fragmentPath, boolean spirv) { + int vertexShader = compileShader(35633, vertexPath, spirv); + int fragmentShader = compileShader(35632, fragmentPath, spirv); + int program = GL20.glCreateProgram(); + GL20.glAttachShader(program, vertexShader); + GL20.glAttachShader(program, fragmentShader); + GL20.glLinkProgram(program); + if (GL20.glGetProgrami(program, 35714) == 0) { + String linkLog = GL20.glGetProgramInfoLog(program); + System.err.println(linkLog); + throw new RuntimeException("Program link failed. See error above"); + } else { + GL20.glDeleteShader(vertexShader); + GL20.glDeleteShader(fragmentShader); + return new Shader(program); + } + } + + private static int compileShader(int shaderType, String path, boolean spirv) { + if (spirv) { + throw new UnsupportedOperationException("SPIR-V shader loading was removed for GL 3.3 compatibility. Provide GLSL source instead: " + path); + } else { + int shader = GL20.glCreateShader(shaderType); + + String source; + try (InputStream stream = ShaderCompiler.class.getClassLoader().getResourceAsStream(path)) { + if (!ASSERTIONS_DISABLED && stream == null) { + throw new AssertionError(); + } + + source = new String(stream.readAllBytes(), StandardCharsets.UTF_8); + } catch (IOException exception) { + throw new RuntimeException(exception); + } + + GL20.glShaderSource(shader, source); + GL20.glCompileShader(shader); + if (GL20.glGetShaderi(shader, 35713) == 0) { + String compileLog = GL20.glGetShaderInfoLog(shader); + System.err.println(compileLog); + throw new RuntimeException("Shader compile failed. See logs above for error"); + } else { + return shader; + } + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/ShaderProgram.java b/src/main/java/dev/zprestige/prestige/render/ShaderProgram.java deleted file mode 100644 index 197c5fd..0000000 --- a/src/main/java/dev/zprestige/prestige/render/ShaderProgram.java +++ /dev/null @@ -1,149 +0,0 @@ -package dev.zprestige.prestige.render; - -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.nio.charset.StandardCharsets; -import org.lwjgl.opengl.GL20; - -public class ShaderProgram { - public static final boolean a = !ShaderProgram.class.desiredAssertionStatus(); - - public static Shader a(Object[] var0) { - String var1 = (String)var0[0]; - String var3 = (String)var0[1]; - boolean var2 = (Boolean)var0[2]; - long var4 = (Long)var0[3]; - var4 = 46786204162257L ^ var4; - long var6 = var4 ^ 134337004921602L; - long var8 = var4 ^ 86108710405506L; - Object[] var10005 = new Object[]{null, null, null, var6}; - var10005[2] = var2; - var10005[1] = var1; - var10005[0] = 35633; - int var10 = a_int____________________________(var10005); - var10005 = new Object[]{null, null, null, var6}; - var10005[2] = var2; - var10005[1] = var3; - var10005[0] = 35632; - int var11 = a_int____________________________(var10005); - int var12 = GL20.glCreateProgram(); - GL20.glAttachShader(var12, var10); - GL20.glAttachShader(var12, var11); - GL20.glLinkProgram(var12); - if (GL20.glGetProgrami(var12, 35714) == 0) { - String var13 = GL20.glGetProgramInfoLog(var12); - System.err.println(var13); - throw new RuntimeException("Program link failed. See error above"); - } else { - GL20.glDeleteShader(var10); - GL20.glDeleteShader(var11); - return new Shader(var12, var8); - } - } - - private static int a_int____________________________(Object[] var0) { - int var1 = (Integer)var0[0]; - String var5 = (String)var0[1]; - boolean var4 = (Boolean)var0[2]; - if (var4) { - throw new UnsupportedOperationException("SPIR-V shader loading was removed for GL 3.3 compatibility. Provide GLSL source instead: " + var5); - } else { - int var6 = GL20.glCreateShader(var1); - - String var7; - try (InputStream var8 = ShaderProgram.class.getClassLoader().getResourceAsStream(var5)) { - if (!a && var8 == null) { - throw new AssertionError(); - } - - var7 = new String(var8.readAllBytes(), StandardCharsets.UTF_8); - } catch (IOException var13) { - throw new RuntimeException(var13); - } - - GL20.glShaderSource(var6, var7); - GL20.glCompileShader(var6); - if (GL20.glGetShaderi(var6, 35713) == 0) { - String var14 = GL20.glGetShaderInfoLog(var6); - System.err.println(var14); - throw new RuntimeException("Shader compile failed. See logs above for error"); - } else { - return var6; - } - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/ShapeRenderer.java b/src/main/java/dev/zprestige/prestige/render/ShapeRenderer.java new file mode 100644 index 0000000..a9b861a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/ShapeRenderer.java @@ -0,0 +1,284 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.type.GlPrimitive; +import dev.zprestige.prestige.world.MeshBuilder; +import java.awt.Color; +import java.util.ArrayList; +import java.util.concurrent.atomic.AtomicReference; +import net.minecraft.util.math.Vec3d; +import org.joml.Matrix4f; +import org.joml.Vector3d; +import org.joml.Vector4f; + +public class ShapeRenderer { + public static AtomicReference drawQueue = new AtomicReference(); + private static final ThreadLocal SCRATCH_MATRIX = ThreadLocal.withInitial(Matrix4f::new); + private static final Matrix4f TEMP_MATRIX = new Matrix4f(); + private static final ThreadLocal SCRATCH_VECTOR = ThreadLocal.withInitial(Vector3d::new); + + public static void initDrawQueue() { + if (drawQueue.get() == null) { + drawQueue.compareAndSet(null, new DrawCommandQueue()); + } + } + + public static DrawCommandQueue getDrawQueue() { + DrawCommandQueue queue = (DrawCommandQueue)drawQueue.get(); + if (queue == null) { + initDrawQueue(); + queue = (DrawCommandQueue)drawQueue.get(); + } + + return queue; + } + + public static void flushDrawQueue() { + getDrawQueue().flush(Render2D.currentContext); + } + + public static void drawPath(CameraMatrices context, BufferSource buffers, ArrayList points, Color color) { + if (!points.isEmpty()) { + Matrix4f matrix = ((Matrix4f)SCRATCH_MATRIX.get()).identity(); + MappedMeshBuilder builder = buffers.getBuffer(DrawPipelines.LINES_NO_DEPTH); + int abgr = toAbgr(color); + builder.beginShape(); + Vector3d relative = (Vector3d)SCRATCH_VECTOR.get(); + + for (Vec3d point : (Iterable)(points)) { + RenderCore.toCameraRelative(context, point.x, point.y, point.z, relative); + builder.appendTransformedPosition(matrix, (float)relative.x, (float)relative.y, (float)relative.z).appendInt(abgr); + } + + ((MappedMeshBuilder)builder.generateIndices(GlPrimitive.DEBUG_LINE_STRIP)).clearBaseVertex(); + } + } + + public static void drawDisc(CameraMatrices context, BufferSource buffers, float x, float y, float z, float radius, Color centerColor, Color edgeColor) { + drawDisc(context, buffers, ((Matrix4f)SCRATCH_MATRIX.get()).identity(), x, y, z, radius, centerColor, edgeColor); + } + + public static void drawDisc(CameraMatrices context, BufferSource buffers, Matrix4f matrix, float x, float y, float z, float radius, Color centerColor, Color edgeColor) { + double coordX = x; + double coordY = y; + double coordZ = z; + Vector3d center = RenderCore.toCameraRelative(context, coordX, coordY, coordZ); + MappedMeshBuilder builder = buffers.getBuffer(DrawPipelines.TRIANGLES_NO_DEPTH); + float cx = (float)center.x; + float cy = (float)center.y; + float cz = (float)center.z; + int centerAbgr = toAbgr(centerColor); + int edgeAbgr = toAbgr(edgeColor); + builder.beginShape(); + builder.appendTransformedPosition(matrix, cx, cy, cz).appendInt(centerAbgr); + + for (int i = 0; i <= 100; i++) { + float angle = (float)((Math.PI * 2) * i / 100.0); + builder.appendTransformedPosition(matrix, cx + radius * ((float)Math.cos(angle)), cy, cz + radius * ((float)Math.sin(angle))).appendInt(edgeAbgr); + } + + ((MappedMeshBuilder)builder.generateIndices(GlPrimitive.TRIANGLES_FAN)).clearBaseVertex(); + } + + public static void drawGlowRing(CameraMatrices context, BufferSource buffers, float x, float y, float z, float radius, float thickness, float glowWidth, Color color, Color glowColor) { + double coordX = x; + double coordY = y; + double coordZ = z; + Vector3d center = RenderCore.toCameraRelative(context, coordX, coordY, coordZ); + Matrix4f matrix = ((Matrix4f)SCRATCH_MATRIX.get()).identity(); + MappedMeshBuilder builder = buffers.getBuffer(DrawPipelines.TRIANGLES_NO_DEPTH); + float cx = (float)center.x; + float cy = (float)center.y; + float cz = (float)center.z; + int abgr = toAbgr(color); + int glowAbgr = toAbgr(glowColor) & 16777215; + builder.beginShape(); + + for (int i = 0; i <= 100; i++) { + float angle = (float)((Math.PI * 2) * i / 100.0); + float cos = (float)Math.cos(angle); + float sin = (float)Math.sin(angle); + builder.appendTransformedPosition(matrix, cx + (radius + thickness / 2.0F + glowWidth) * cos, cy, cz + (radius + thickness / 2.0F + glowWidth) * sin).appendInt(glowAbgr); + builder.appendTransformedPosition(matrix, cx + (radius + thickness / 2.0F) * cos, cy, cz + (radius + thickness / 2.0F) * sin).appendInt(abgr); + builder.appendTransformedPosition(matrix, cx + (radius - thickness / 2.0F) * cos, cy, cz + (radius - thickness / 2.0F) * sin).appendInt(abgr); + builder.appendTransformedPosition(matrix, cx + (radius - thickness / 2.0F - glowWidth) * cos, cy, cz + (radius - thickness / 2.0F - glowWidth) * sin).appendInt(glowAbgr); + } + + builder.ensureIndexCapacity(7200); + + for (int segment = 0; segment < 100; segment++) { + int base = segment * 4; + int nextBase = (segment + 1) % 101 * 4; + builder.appendIndices(new int[]{base, base + 1, nextBase + 1, nextBase + 1, nextBase, base}); + builder.appendIndices(new int[]{base + 1, base + 2, nextBase + 2, nextBase + 2, nextBase + 1, base + 1}); + builder.appendIndices(new int[]{base + 2, base + 3, nextBase + 3, nextBase + 3, nextBase + 2, base + 2}); + } + + builder.clearBaseVertex(); + } + + public static void drawBoxOutline(CameraMatrices context, BufferSource buffers, float minX, float minY, float minZ, float maxX, float maxY, float maxZ, Color color) { + double coordX = minX; + double coordY = minY; + double coordZ = minZ; + Vector3d min = RenderCore.toCameraRelative(context, coordX, coordY, coordZ); + coordX = maxX; + coordY = maxY; + coordZ = maxZ; + Vector3d max = RenderCore.toCameraRelative(context, coordX, coordY, coordZ); + Matrix4f matrix = ((Matrix4f)SCRATCH_MATRIX.get()).identity(); + MappedMeshBuilder builder = buffers.getBuffer(DrawPipelines.LINES_NO_DEPTH); + int abgr = toAbgr(color); + float x1 = (float)min.x; + float y1 = (float)min.y; + float z1 = (float)min.z; + float x2 = (float)max.x; + float y2 = (float)max.y; + float z2 = (float)max.z; + ((MappedMeshBuilder)((MappedMeshBuilder)builder.beginShape()).appendTransformedPosition(matrix, x1, y1, z1).appendInt(abgr).appendTransformedPosition(matrix, x1, y1, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z1).appendInt(abgr).appendTransformedPosition(matrix, x1, y1, z1).appendInt(abgr).appendTransformedPosition(matrix, x1, y2, z1).appendInt(abgr).appendTransformedPosition(matrix, x1, y2, z2).appendInt(abgr).appendTransformedPosition(matrix, x1, y1, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z2).appendInt(abgr).appendTransformedPosition(matrix, x1, y2, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z1).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z1).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z1).appendInt(abgr).appendTransformedPosition(matrix, x1, y2, z1).appendInt(abgr).generateIndices(GlPrimitive.DEBUG_LINE_STRIP)).clearBaseVertex(); + } + + public static void drawFilledBox(CameraMatrices context, BufferSource buffers, float minX, float minY, float minZ, float maxX, float maxY, float maxZ, Color color) { + double coordX = minX; + double coordY = minY; + double coordZ = minZ; + Vector3d min = RenderCore.toCameraRelative(context, coordX, coordY, coordZ); + coordX = maxX; + coordY = maxY; + coordZ = maxZ; + Vector3d max = RenderCore.toCameraRelative(context, coordX, coordY, coordZ); + Matrix4f matrix = ((Matrix4f)SCRATCH_MATRIX.get()).identity(); + MappedMeshBuilder builder = buffers.getBuffer(DrawPipelines.TRIANGLES_NO_DEPTH); + int abgr = toAbgr(color); + float x1 = (float)min.x; + float y1 = (float)min.y; + float z1 = (float)min.z; + float x2 = (float)max.x; + float y2 = (float)max.y; + float z2 = (float)max.z; + ((MappedMeshBuilder)((MappedMeshBuilder)builder.beginShape()).appendTransformedPosition(matrix, x1, y2, z1).appendInt(abgr).appendTransformedPosition(matrix, x1, y2, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z1).appendInt(abgr).appendTransformedPosition(matrix, x1, y1, z1).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z1).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z2).appendInt(abgr).appendTransformedPosition(matrix, x1, y1, z2).appendInt(abgr).appendTransformedPosition(matrix, x1, y1, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z2).appendInt(abgr).appendTransformedPosition(matrix, x1, y2, z2).appendInt(abgr).appendTransformedPosition(matrix, x1, y1, z1).appendInt(abgr).appendTransformedPosition(matrix, x1, y2, z1).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z1).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z1).appendInt(abgr).appendTransformedPosition(matrix, x1, y1, z1).appendInt(abgr).appendTransformedPosition(matrix, x1, y1, z2).appendInt(abgr).appendTransformedPosition(matrix, x1, y2, z2).appendInt(abgr).appendTransformedPosition(matrix, x1, y2, z1).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z1).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z1).appendInt(abgr).appendTransformedPosition(matrix, x2, y2, z2).appendInt(abgr).appendTransformedPosition(matrix, x2, y1, z2).appendInt(abgr).generateIndices(GlPrimitive.QUADS)).clearBaseVertex(); + } + + public static void drawTriangle(Matrix4f matrix, float x1, float y1, float x2, float y2, float x3, float y3, int argb) { + getDrawQueue().enqueue(new CallbackDrawCommand(DrawPipelines.TRIANGLES_DEPTH_TESTED, (depth, builder) -> { + int abgr = argbToAbgr(argb); + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape().putTransformedVertex(matrix, x1, y1, ((java.lang.Float)depth)).putColor(abgr).putTransformedVertex(matrix, x2, y2, ((java.lang.Float)depth)).putColor(abgr).putTransformedVertex(matrix, x3, y3, ((java.lang.Float)depth)).putColor(abgr).generateIndices(GlPrimitive.TRIANGLES).resetBaseVertex(); + })); + } + + public static void drawRect(Matrix4f matrix, float x1, float y1, float x2, float y2, Color color) { + drawRectArgb(matrix, x1, y1, x2, y2, color.getRGB()); + } + + public static void drawRectArgb(Matrix4f matrix, float x1, float y1, float x2, float y2, int argb) { + getDrawQueue().enqueue(new CallbackDrawCommand(DrawPipelines.TRIANGLES_DEPTH_TESTED, (depth, builder) -> { + int abgr = argbToAbgr(argb); + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape().putTransformedVertex(matrix, x1, y2, ((java.lang.Float)depth)).putColor(abgr).putTransformedVertex(matrix, x2, y2, ((java.lang.Float)depth)).putColor(abgr).putTransformedVertex(matrix, x2, y1, ((java.lang.Float)depth)).putColor(abgr).putTransformedVertex(matrix, x1, y1, ((java.lang.Float)depth)).putColor(abgr).generateIndices(GlPrimitive.QUADS).resetBaseVertex(); + })); + } + + public static void drawRoundedRect(Matrix4f matrix, float x1, float y1, float x2, float y2, Color color, Vector4f radii) { + getDrawQueue() + .enqueue( + new CallbackDrawCommand( + DrawPipelines.getRoundedRect(radii), + (depth, builder) -> { + int abgr = argbToAbgr(color.getRGB()); + float width = x2 - x1; + float height = y2 - y1; + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape().putTransformedVertex(matrix, x1, y2, ((java.lang.Float)depth)) + .putFloats(new float[]{0.0F, 0.0F}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x2, y2, ((java.lang.Float)depth)) + .putFloats(new float[]{width, 0.0F}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x2, y1, ((java.lang.Float)depth)) + .putFloats(new float[]{width, height}) + .putFloats(new float[]{width, height}).putColor(abgr).putTransformedVertex(matrix, x1, y1, ((java.lang.Float)depth)) + .putFloats(new float[]{0.0F, height}) + .putFloats(new float[]{width, height}).putColor(abgr).generateIndices(GlPrimitive.QUADS).resetBaseVertex(); + } + ) + ); + } + + public static void drawGradientRoundedRect(Matrix4f matrix, float x1, float y1, float x2, float y2, Color bottomLeft, Color bottomRight, Color topRight, Color topLeft, Vector4f radii) { + getDrawQueue() + .enqueue( + new CallbackDrawCommand( + DrawPipelines.getRoundedRect(radii), + (depth, builder) -> { + int bottomLeftAbgr = toAbgr(bottomLeft); + int bottomRightAbgr = toAbgr(bottomRight); + int topRightAbgr = toAbgr(topRight); + int topLeftAbgr = toAbgr(topLeft); + float width = x2 - x1; + float height = y2 - y1; + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape().putTransformedVertex(matrix, x1, y2, ((java.lang.Float)depth)) + .putFloats(new float[]{0.0F, 0.0F}) + .putFloats(new float[]{width, height}).putColor(bottomLeftAbgr).putTransformedVertex(matrix, x2, y2, ((java.lang.Float)depth)) + .putFloats(new float[]{width, 0.0F}) + .putFloats(new float[]{width, height}).putColor(bottomRightAbgr).putTransformedVertex(matrix, x2, y1, ((java.lang.Float)depth)) + .putFloats(new float[]{width, height}) + .putFloats(new float[]{width, height}).putColor(topRightAbgr).putTransformedVertex(matrix, x1, y1, ((java.lang.Float)depth)) + .putFloats(new float[]{0.0F, height}) + .putFloats(new float[]{width, height}).putColor(topLeftAbgr).generateIndices(GlPrimitive.QUADS).resetBaseVertex(); + } + ) + ); + } + + public static void drawCircle(Matrix4f matrix, float centerX, float centerY, float radius, int argb) { + getDrawQueue().enqueue(new CallbackDrawCommand(DrawPipelines.TRIANGLES_DEPTH_TESTED, (depth, builder) -> { + int abgr = argbToAbgr(argb); + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape(); + ((dev.zprestige.prestige.world.MeshBuilder)builder).putTransformedVertex(matrix, centerX, centerY, ((java.lang.Float)depth)).putColor(abgr); + int segments = Math.max(12, (int)(radius * 2.0F)); + + for (int i = 0; i < segments; i++) { + float angle = (float)((Math.PI * 2) * i / segments); + ((dev.zprestige.prestige.world.MeshBuilder)builder).putTransformedVertex(matrix, (float)(centerX + Math.sin(angle) * radius), (float)(centerY + Math.cos(angle) * radius), ((java.lang.Float)depth)).putColor(abgr); + } + + ((dev.zprestige.prestige.world.MeshBuilder)builder).generateIndices(GlPrimitive.TRIANGLES_FAN).resetBaseVertex(); + })); + } + + public static void drawRing(Matrix4f matrix, float centerX, float centerY, float radius, float thickness, int argb) { + getDrawQueue().enqueue(new CallbackDrawCommand(DrawPipelines.TRIANGLES_DEPTH_TESTED, (depth, builder) -> { + int abgr = argbToAbgr(argb); + float halfThickness = thickness / 2.0F; + float outerRadius = radius + halfThickness; + float innerRadius = Math.max(0.0F, radius - halfThickness); + ((dev.zprestige.prestige.world.MeshBuilder)builder).beginShape(); + + for (int i = 0; i <= 100; i++) { + float angle = (float)((Math.PI * 2) * i / 100); + float cos = (float)Math.cos(angle); + float sin = (float)Math.sin(angle); + float outerX = centerX + outerRadius * cos; + float outerY = centerY + outerRadius * sin; + float innerX = centerX + innerRadius * cos; + float innerY = centerY + innerRadius * sin; + ((dev.zprestige.prestige.world.MeshBuilder)builder).putTransformedVertex(matrix, outerX, outerY, ((java.lang.Float)depth)).putColor(abgr); + ((dev.zprestige.prestige.world.MeshBuilder)builder).putTransformedVertex(matrix, innerX, innerY, ((java.lang.Float)depth)).putColor(abgr); + } + + ((dev.zprestige.prestige.world.MeshBuilder)builder).generateIndices(GlPrimitive.QUAD_STRIP).resetBaseVertex(); + })); + } + + public static void drawRoundedRectOutline(BufferSource buffers, CameraMatrices context, Matrix4f matrix, float x1, float y1, float x2, float y2, Color color, float radius, float thickness) { + RoundedOutlineShader.drawRoundedOutline(buffers, context, matrix, x1, y1, x2 - x1, y2 - y1, color, radius, thickness); + } + + public static Color withAlpha(Color color, float alpha) { + return new Color(color.getRed() / 255.0F, color.getGreen() / 255.0F, color.getBlue() / 255.0F, alpha); + } + + public static int toAbgr(Color color) { + return argbToAbgr(color.getRGB()); + } + + public static int argbToAbgr(int argb) { + return (argb >> 24 & 0xFF) << 24 | (argb & 0xFF) << 16 | (argb >> 8 & 0xFF) << 8 | (argb >> 16 & 0xFF); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/SilentRotationManager.java b/src/main/java/dev/zprestige/prestige/render/SilentRotationManager.java new file mode 100644 index 0000000..a547608 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/SilentRotationManager.java @@ -0,0 +1,285 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.Module; +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.TravelEvent; +import dev.zprestige.prestige.event.MovementYawEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.event.PreTickEvent; +import dev.zprestige.prestige.module.movement.Freecam; +import dev.zprestige.prestige.network.InteractItemPacketAccessor; +import dev.zprestige.prestige.world.RotationUtil; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket; +import net.minecraft.util.math.Vec3d; + +public class SilentRotationManager implements MinecraftAccess { + private final CopyOnWriteArrayList rotationProviders; + private Rotation activeRotation; + private Rotation serverRotation; + private Rotation lastSentRotation; + private static float yawWrapStep = 300.0F; + private static float maxRotationStep = 90.0F; + private Rotation resyncRotation; + boolean actedThisTick; + private Object lockOwner; + private Rotation lockedRotation; + private Object lockWorld; + final List scheduledTasks; + + @Subscribe + public void onClientTick(ClientTickEvent event) { + this.actedThisTick = false; + if (!this.scheduledTasks.isEmpty()) { + ArrayList tasks = new ArrayList(this.scheduledTasks); + this.scheduledTasks.clear(); + + for (Runnable task : (Iterable)(tasks)) { + try { + task.run(); + } catch (Throwable ignored) { + } + } + } + + if (this.rotationProviders.isEmpty() && this.activeRotation == null && this.resyncRotation == null) { + this.serverRotation = null; + this.lastSentRotation = null; + } else { + if (this.serverRotation == null) { + this.serverRotation = new Rotation(mc.player.getYaw(), mc.player.getPitch()); + } + + boolean requested = false; + boolean hadActiveRotation = this.activeRotation != null; + + for (RotationProvider provider : (Iterable)(this.rotationProviders)) { + Rotation requestedRotation = provider.provideRotation(); + if (requestedRotation != null) { + this.activeRotation = requestedRotation; + requested = true; + } + } + + if (!requested && this.activeRotation != null) { + if (Math.abs(this.activeRotation.getYaw() - mc.player.getYaw()) > yawWrapStep) { + this.activeRotation = new Rotation(this.activeRotation.getYaw() - yawWrapStep * Math.signum(this.activeRotation.getYaw() - mc.player.getYaw()), this.activeRotation.getPitch()); + } else { + this.activeRotation = null; + } + } + + if (hadActiveRotation && this.activeRotation == null) { + this.resyncRotation = new Rotation(mc.player.getYaw() + (float)(Math.random() * 0.06 - 0.03), mc.player.getPitch() + (float)(Math.random() * 0.06 - 0.03)); + } else if (this.activeRotation != null) { + this.resyncRotation = null; + } + + this.serverRotation = this.activeRotation != null ? this.activeRotation : (this.resyncRotation != null ? this.resyncRotation : null); + } + } + + @Subscribe + public void onSendMovementPackets(SendMovementPacketsEvent event) { + if (this.activeRotation != null) { + event.setYaw(this.activeRotation.getYaw()); + event.setPitch(this.activeRotation.getPitch()); + } else if (this.resyncRotation != null) { + event.setYaw(this.resyncRotation.getYaw()); + event.setPitch(this.resyncRotation.getPitch()); + this.resyncRotation = null; + } + + this.lastSentRotation = this.activeRotation; + event.cancel(); + } + + @Subscribe + public void onMovementYaw(MovementYawEvent event) { + if (this.activeRotation != null) { + event.setYaw(this.activeRotation.getYaw()); + } + + event.cancel(); + } + + @Subscribe + public void onTravel(TravelEvent event) { + if (this.activeRotation != null) { + event.yaw = this.activeRotation.getYaw(); + event.pitch = this.activeRotation.getPitch(); + } + + event.cancel(); + } + + @Subscribe + public void onPacketSend(PacketSendEvent event) { + if (event.getPacket() instanceof PlayerInteractItemC2SPacket packet) { + Rotation rotation = this.getLockedRotation(); + if (rotation == null) { + rotation = this.activeRotation != null ? this.activeRotation : this.resyncRotation; + } + + if (rotation != null) { + InteractItemPacketAccessor packetAccessor = new InteractItemPacketAccessor(packet); + packetAccessor.setYaw(rotation.getYaw()); + packetAccessor.setPitch(rotation.getPitch()); + } + } + } + + public void setActiveRotation(Rotation rotation) { + this.activeRotation = rotation; + } + + public void clearRotation() { + this.activeRotation = null; + this.resyncRotation = null; + } + + public Rotation getRotationTowards(Vec3d target) { + return RotationUtil.getLimitedRotationTo(this.serverRotation != null ? this.serverRotation : new Rotation(mc.player.getYaw(), mc.player.getPitch()), target, maxRotationStep); + } + + public Rotation getServerRotation() { + return this.serverRotation; + } + + public Rotation getActiveRotation() { + return this.activeRotation; + } + + public synchronized boolean tryLockRotation(Object owner, Rotation rotation) { + if (owner != null && rotation != null) { + if (!this.canRotate()) { + this.clearLock(); + return false; + } else { + if (this.lockWorld != mc.world) { + this.clearLock(); + } + + if (this.lockOwner != null && this.lockOwner != owner) { + return false; + } else { + this.lockOwner = owner; + this.lockedRotation = new Rotation(rotation.getYaw(), rotation.getPitch()); + this.lockWorld = mc.world; + return true; + } + } + } else { + return false; + } + } + + public synchronized boolean isLockHeldBy(Object owner) { + if (owner != null && this.lockedRotation != null) { + if (this.lockWorld != mc.world || !this.canRotate()) { + this.clearLock(); + } + + return this.lockOwner == owner && this.lockedRotation != null; + } else { + return false; + } + } + + public synchronized Rotation getLockedRotation() { + if (this.lockedRotation == null) { + return null; + } else { + if (this.lockWorld != mc.world || !this.canRotate()) { + this.clearLock(); + } + + return this.lockedRotation == null ? null : new Rotation(this.lockedRotation.getYaw(), this.lockedRotation.getPitch()); + } + } + + public synchronized void releaseLock(Object owner) { + if (owner != null && this.lockOwner == owner) { + this.clearLock(); + } + } + + public boolean canRotate() { + if (mc.player != null && mc.world != null && !mc.player.hasVehicle() && mc.getCameraEntity() == mc.player) { + if (Prestige.moduleManager != null && Prestige.moduleManager.getModules() != null) { + for (Module mod : (Iterable)(Prestige.moduleManager.getModules())) { + if (mod instanceof Freecam && mod.isEnabled()) { + return false; + } + } + + return true; + } else { + return true; + } + } else { + return false; + } + } + + @Subscribe + public synchronized void onGameJoin(GameJoinEvent event) { + this.clearLock(); + } + + @Subscribe + public synchronized void onPreTick(PreTickEvent event) { + if (this.lockWorld != null && this.lockWorld != mc.world) { + this.clearLock(); + } + } + + private void clearLock() { + this.lockOwner = null; + this.lockedRotation = null; + this.lockWorld = null; + } + + public SilentRotationManager() { + super(); + this.rotationProviders = new CopyOnWriteArrayList(); + this.resyncRotation = null; + this.scheduledTasks = new CopyOnWriteArrayList(); + Prestige.eventBus.register(this); + } + + public void addRotationProvider(RotationProvider provider) { + if (this.rotationProviders.addIfAbsent(provider)) { + this.rotationProviders.sort(Comparator.comparingInt(RotationProvider::getRotationPriority).reversed()); + } + } + + public void removeRotationProvider(RotationProvider provider) { + this.rotationProviders.remove(provider); + } + + public boolean hasActedThisTick() { + return this.actedThisTick; + } + + public void setActedThisTick(boolean acted) { + this.actedThisTick = acted; + } + + public void scheduleTask(Runnable task) { + if (task != null) { + this.scheduledTasks.add(task); + } + } + + public void scheduleSlotSwitch(int slot) { + this.scheduledTasks.add(new QueuedSlotSelect(this, slot)); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/SnapGuide.java b/src/main/java/dev/zprestige/prestige/render/SnapGuide.java new file mode 100644 index 0000000..93553bb --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/SnapGuide.java @@ -0,0 +1,21 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.type.GuideAxis; + +public class SnapGuide { + private final GuideAxis axis; + private final int position; + + public SnapGuide(GuideAxis guideAxis, int coordinate) { + this.axis = guideAxis; + this.position = coordinate; + } + + public GuideAxis getAxis() { + return this.axis; + } + + public int getPosition() { + return this.position; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/StopWatch.java b/src/main/java/dev/zprestige/prestige/render/StopWatch.java new file mode 100644 index 0000000..e8d5566 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/StopWatch.java @@ -0,0 +1,26 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.RangeSetting; + +public class StopWatch { + private long startTime = System.currentTimeMillis(); + + public StopWatch() { + } + + public boolean hasElapsed(float millis) { + return (float)(System.currentTimeMillis() - this.startTime) > millis; + } + + public float getElapsed() { + return (float)(System.currentTimeMillis() - this.startTime); + } + + public boolean hasElapsedRandom(RangeSetting delayRange) { + return this.hasElapsed(delayRange.getRolled()); + } + + public void reset() { + this.startTime = System.currentTimeMillis(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/StorageESPHelper.java b/src/main/java/dev/zprestige/prestige/render/StorageESPHelper.java deleted file mode 100644 index 773ab54..0000000 --- a/src/main/java/dev/zprestige/prestige/render/StorageESPHelper.java +++ /dev/null @@ -1,290 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.BoolData2; -import dev.zprestige.prestige.data.IntBoolData2; -import dev.zprestige.prestige.data.IntData; -import dev.zprestige.prestige.data.IntData2; -import dev.zprestige.prestige.data.IntSupplierData; -import dev.zprestige.prestige.data.ShaderData; -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.function.Consumer; -import org.lwjgl.opengl.GL13; -import org.lwjgl.opengl.GL30; - -public class StorageESPHelper implements RenderContract2 { - private static final Shader a; - private Framebuffer c; - private FontRenderer d; - private int e; - private int f; - private boolean g; - private DrawMode h; - private VertexBuffer i; - private int j; - private float k; - private float l; - - public StorageESPHelper(long var1) { - super(); - var1 = 0L; - var1 = 94496914895056L ^ var1; - long var3 = var1 ^ 113952482025887L; - long var5 = var1 ^ 140577391187380L; - this.c = Framebuffer.a(new Object[]{var3}); - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = 3553; - this.d = FontRenderer.a(var10004); - this.g = false; - this.j = 5; - this.k = 15.0F; - this.l = 0.3F; - } - - private void a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 94496914895056L ^ var2; - long var4 = var2 ^ 36892299146217L; - long var6 = var2 ^ 24349217315126L; - long var8 = var2 ^ 134777776117994L; - long var10 = var2 ^ 14284416467846L; - long var12 = var2 ^ 96460746655831L; - long var14 = var2 ^ 18540100490235L; - long var16 = var2 ^ 34971407994066L; - long var18 = var2 ^ 76849730449349L; - if (b.getWindow() != null) { - int var21 = b.getWindow().getFramebufferWidth(); - int var22 = b.getWindow().getFramebufferHeight(); - if (var21 > 0 && var22 > 0) { - if (!this.g) { - this.e = var21; - this.f = var22; - FontRenderer var10000 = this.d; - int var10002 = this.e; - int var10003 = this.f; - Object[] var10006 = new Object[]{null, null, null, var6}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = 32856; - var10000.c(var10006); - var10000 = this.d; - Object[] var10004 = new Object[]{null, var8}; - var10004[0] = 9729; - var10000.b_void_______(var10004); - var10000 = this.d; - var10004 = new Object[]{null, var16}; - var10004[0] = 33071; - var10000.e(var10004); - Framebuffer var26 = this.c; - Object[] var10005 = new Object[]{null, this.d, var4}; - var10005[0] = 36064; - var26.b(var10005); - Framebuffer var27 = this.c; - Object[] var10007 = new Object[]{null, null, null, null, var14}; - var10007[3] = 0.0F; - var10007[2] = 0.0F; - var10007[1] = 0.0F; - var10007[0] = 0.0F; - var27.e(var10007); - this.h = new DrawMode( - VertexAttribute.b, - 4, - false, - new Uniform[]{ - new IntSupplierData(this.c.a), - new ShaderData(RenderHelper22.a), - new IntBoolData2(2884, false), - new BoolData2(true, true), - new IntData2(519, 515), - new IntBoolData2(2929, false) - }, - var10 - ); - this.i = new VertexBuffer() - .b( - new Object[]{ - a, - (Consumer)lpL361_0 -> { - GL13.glActiveTexture(33984); - GL30.glBindTexture(3553, this.d.a); - GL30.glTexParameteri(3553, 33085, 4); - GL30.glTexParameteri(3553, 10241, 9985); - GL30.glGenerateMipmap(3553); - GL30.glTexParameteri(3553, 10242, 33071); - GL30.glTexParameteri(3553, 10243, 33071); - IntData.a(a.a(new Object[0])) - .a("texSampler", 0) - .a("quality", this.j) - .a("radius", this.k) - .a("fill", this.l) - .a("oneTexel", 1.0F / this.e, 1.0F / this.f); - }, - (java.util.function.IntSupplier)RenderUtil::a, - var18 - } - ); - this.g = true; - } else if (this.e != var21 || this.f != var22) { - this.e = var21; - this.f = var22; - FontRenderer var10001 = this.d; - int var32 = this.e; - int var33 = this.f; - Object[] var38 = new Object[]{null, null, var12}; - var38[1] = var33; - var38[0] = var32; - this.d = var10001.c_FontRenderer(var38); - FontRenderer var28 = this.d; - Object[] var35 = new Object[]{null, var8}; - var35[0] = 9729; - var28.b_void_______(var35); - var28 = this.d; - var35 = new Object[]{null, var16}; - var35[0] = 33071; - var28.e(var35); - Framebuffer var30 = this.c; - Object[] var37 = new Object[]{null, this.d, var4}; - var37[0] = 36064; - var30.b(var37); - Framebuffer var31 = this.c; - Object[] var39 = new Object[]{null, null, null, null, var14}; - var39[3] = 0.0F; - var39[2] = 0.0F; - var39[1] = 0.0F; - var39[0] = 0.0F; - var31.e(var39); - } - } - } - } - - public DrawMode a_DrawMode_(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 94496914895056L ^ var2; - long var4 = var2 ^ 40675518871174L; - this.a(new Object[]{var4}); - return this.h; - } - - public void b(Object[] var1) { - int var6 = (Integer)var1[0]; - float var5 = (Float)var1[1]; - float var2 = (Float)var1[2]; - long var3 = (Long)var1[3]; - var3 = 94496914895056L ^ var3; - long var7 = var3 ^ 97383328989331L; - long var9 = var3 ^ 43621117271708L; - long var11 = var3 ^ 32696003371960L; - Event.b(); - this.a(new Object[]{var7}); - if (this.i != null) { - this.j = var6; - this.k = var5; - this.l = var2; - boolean var14 = GL30.glGetBoolean(2884); - boolean var15 = GL30.glGetBoolean(3042); - boolean var16 = GL30.glGetBoolean(2929); - GL30.glDisable(2884); - GL30.glEnable(3042); - GL30.glBlendFunc(770, 771); - GL30.glDisable(2929); - this.i.a_void______________________________(new Object[]{var9}); - if (var16) { - GL30.glEnable(2929); - } - - if (var14) { - GL30.glEnable(2884); - } - - if (!var15) { - GL30.glDisable(3042); - } - - Framebuffer var10000 = this.c; - Object[] var10007 = new Object[]{null, null, null, null, var11}; - var10007[3] = 0.0F; - var10007[2] = 0.0F; - var10007[1] = 0.0F; - var10007[0] = 0.0F; - var10000.e(var10007); - } - } - - static { - Object[] var10005 = new Object[]{null, null, null, 0L}; - var10005[2] = false; - var10005[1] = "shaders/storage_outline.frag"; - var10005[0] = "shaders/post.vert"; - a = ShaderProgram.a(var10005); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/StorageOutlineRenderer.java b/src/main/java/dev/zprestige/prestige/render/StorageOutlineRenderer.java new file mode 100644 index 0000000..2106648 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/StorageOutlineRenderer.java @@ -0,0 +1,134 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.BlendToggleState; +import dev.zprestige.prestige.data.GlCapabilityState; +import dev.zprestige.prestige.data.ProgramUniforms; +import dev.zprestige.prestige.data.DepthFuncState; +import dev.zprestige.prestige.data.FramebufferBindState; +import dev.zprestige.prestige.data.ShaderBindState; +import java.util.function.Consumer; +import org.lwjgl.opengl.GL13; +import org.lwjgl.opengl.GL30; + +public class StorageOutlineRenderer implements MinecraftAccess { + private static final Shader OUTLINE_SHADER; + private GlFramebuffer framebuffer; + private GlTextureHandle colorTexture; + private int width; + private int height; + private boolean initialized; + private DrawPipeline maskDrawMode; + private FullscreenPassChain outlinePass; + private int quality; + private float radius; + private float fill; + + public StorageOutlineRenderer() { + super(); + this.framebuffer = GlFramebuffer.create(); + this.colorTexture = GlTextureHandle.create(3553); + this.initialized = false; + this.quality = 5; + this.radius = 15.0F; + this.fill = 0.3F; + } + + private void ensureInitialized() { + if (mc.getWindow() != null) { + int fbWidth = mc.getWindow().getFramebufferWidth(); + int fbHeight = mc.getWindow().getFramebufferHeight(); + if (fbWidth > 0 && fbHeight > 0) { + if (!this.initialized) { + this.width = fbWidth; + this.height = fbHeight; + this.colorTexture.allocate(32856, this.width, this.height); + this.colorTexture.setFilter(9729); + this.colorTexture.setWrapMode(33071); + this.framebuffer.attachTexture(36064, this.colorTexture); + this.framebuffer.clearColor(0.0F, 0.0F, 0.0F, 0.0F); + this.maskDrawMode = new DrawPipeline( + VertexLayouts.POSITION_COLOR, + 4, + false, + new RenderStateElement[]{ + new FramebufferBindState(this.framebuffer.glId), + new ShaderBindState(CoreShaders.POS_COLOR), + new GlCapabilityState(2884, false), + new BlendToggleState(true, true), + new DepthFuncState(519, 515), + new GlCapabilityState(2929, false) + } + ); + this.outlinePass = new FullscreenPassChain() + .addDynamicPass( + OUTLINE_SHADER, + (Consumer)pass -> { + GL13.glActiveTexture(33984); + GL30.glBindTexture(3553, this.colorTexture.glId); + GL30.glTexParameteri(3553, 33085, 4); + GL30.glTexParameteri(3553, 10241, 9985); + GL30.glGenerateMipmap(3553); + GL30.glTexParameteri(3553, 10242, 33071); + GL30.glTexParameteri(3553, 10243, 33071); + ProgramUniforms.of(OUTLINE_SHADER.getProgramId()) + .setInt("texSampler", 0) + .setInt("quality", this.quality) + .setFloat("radius", this.radius) + .setFloat("fill", this.fill) + .setVec2("oneTexel", 1.0F / this.width, 1.0F / this.height); + }, + (java.util.function.IntSupplier)RenderCore::getMainFramebufferId + ); + this.initialized = true; + } else if (this.width != fbWidth || this.height != fbHeight) { + this.width = fbWidth; + this.height = fbHeight; + this.colorTexture = this.colorTexture.resize(this.width, this.height); + this.colorTexture.setFilter(9729); + this.colorTexture.setWrapMode(33071); + this.framebuffer.attachTexture(36064, this.colorTexture); + this.framebuffer.clearColor(0.0F, 0.0F, 0.0F, 0.0F); + } + } + } + } + + public DrawPipeline getMaskDrawMode() { + this.ensureInitialized(); + return this.maskDrawMode; + } + + public void renderOutline(int newQuality, float newRadius, float newFill) { + this.ensureInitialized(); + if (this.outlinePass != null) { + this.quality = newQuality; + this.radius = newRadius; + this.fill = newFill; + boolean cullWasEnabled = GL30.glGetBoolean(2884); + boolean blendWasEnabled = GL30.glGetBoolean(3042); + boolean depthWasEnabled = GL30.glGetBoolean(2929); + GL30.glDisable(2884); + GL30.glEnable(3042); + GL30.glBlendFunc(770, 771); + GL30.glDisable(2929); + this.outlinePass.render(); + if (depthWasEnabled) { + GL30.glEnable(2929); + } + + if (cullWasEnabled) { + GL30.glEnable(2884); + } + + if (!blendWasEnabled) { + GL30.glDisable(3042); + } + + this.framebuffer.clearColor(0.0F, 0.0F, 0.0F, 0.0F); + } + } + + static { + OUTLINE_SHADER = ShaderCompiler.loadProgram("shaders/post.vert", "shaders/storage_outline.frag", false); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/SwapBackTracker.java b/src/main/java/dev/zprestige/prestige/render/SwapBackTracker.java new file mode 100644 index 0000000..d4ea54f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/SwapBackTracker.java @@ -0,0 +1,34 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.inventory.InventoryUtil; + +public final class SwapBackTracker implements MinecraftAccess { + private static Object owner; + private static int originalSlot = -1; + + public static int claim(Object caller) { + if (owner == null) { + owner = caller; + originalSlot = InventoryUtil.getSelectedSlot(); + } else if (owner != caller) { + owner = caller; + } + + return originalSlot; + } + + public static boolean isOwner(Object caller) { + return owner == caller; + } + + public static void release(Object caller) { + if (owner == caller) { + owner = null; + originalSlot = -1; + } + } + + public static int getOriginalSlot() { + return originalSlot; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/TextRenderer.java b/src/main/java/dev/zprestige/prestige/render/TextRenderer.java deleted file mode 100644 index 8f66418..0000000 --- a/src/main/java/dev/zprestige/prestige/render/TextRenderer.java +++ /dev/null @@ -1,386 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.world.WorldContract; -import java.lang.ref.Cleaner.Cleanable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.nio.ByteBuffer; -import org.joml.Matrix4f; -import org.joml.Vector4f; -import org.lwjgl.system.MemoryUtil; - -public class TextRenderer implements WorldContract, AutoCloseable { - public VertexFormat a; - private final GpuBuffer b; - private final GpuBuffer c; - private final Cleanable d; - private ByteBuffer e; - private ByteBuffer f; - private final Vector4f g; - private int h; - - public TextRenderer(VertexFormat var1, GpuBuffer var2, GpuBuffer var3, long var4) { - super(); - var4 = 0L; - var4 = 134641318060110L ^ var4; - long var6 = var4 ^ 59548942414325L; - this.g = new Vector4f(); - this.h = 0; - this.a = var1; - this.b = var2; - this.c = var3; - long var10003 = var2.a_AtomicLong(new Object[0]).get(); - Object[] var10007 = new Object[]{null, null, null, var6}; - var10007[2] = 10; - var10007[1] = var10003; - var10007[0] = 0L; - this.e = var2.a_ByteBuffer(var10007); - var10003 = var3.a_AtomicLong(new Object[0]).get(); - var10007 = new Object[]{null, null, null, var6}; - var10007[2] = 10; - var10007[1] = var10003; - var10007[0] = 0L; - this.f = var3.a_ByteBuffer(var10007); - this.d = RenderUtil.a.register(this, () -> RenderUtil.f(new Object[]{(Runnable)() -> { - var2.d(new Object[]{9738575996231L}); - var3.d(new Object[]{9738575996231L}); - }, 31795785076293L})); - } - - @Override - public int c(Object[] var1) { - return this.h; - } - - @Override - public void b(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - long var5 = var2 ^ 108363549350785L; - long var7 = var2 ^ 69987509623684L; - long var9 = var2 ^ 16701581658951L; - if (this.e.remaining() < var4) { - int var11 = this.e.limit(); - int var12 = Math.max(var11 << 1, var11 + (var4 - this.e.remaining())); - int var13 = this.e.position(); - ByteBuffer var14 = MemoryUtil.memAlloc(var13); - this.e.flip(); - MemoryUtil.memCopy(this.e, var14); - this.b.d(new Object[]{var9}); - GpuBuffer var10000 = this.b; - int var10001 = this.b.b(new Object[0]); - long var10002 = var12; - Object[] var10005 = new Object[]{null, null, var7}; - var10005[1] = var10002; - var10005[0] = var10001; - var10000.a(var10005); - GpuBuffer var15 = this.b; - long var10003 = var12; - Object[] var10007 = new Object[]{null, null, null, var5}; - var10007[2] = 10; - var10007[1] = var10003; - var10007[0] = 0L; - this.e = var15.a_ByteBuffer(var10007); - MemoryUtil.memCopy(var14, this.e); - this.e.position(var13); - MemoryUtil.memFree(var14); - } - } - - @Override - public void a(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - long var5 = var2 ^ 8860316669930L; - long var7 = var2 ^ 93628449740783L; - long var9 = var2 ^ 111806807607084L; - if (this.f.remaining() < var4) { - int var12 = this.f.limit(); - int var13 = Math.max(var12 << 1, var12 + (var4 - this.f.remaining())); - int var14 = this.f.position(); - ByteBuffer var15 = MemoryUtil.memAlloc(var14); - this.f.flip(); - MemoryUtil.memCopy(this.f, var15); - this.c.d(new Object[]{var9}); - GpuBuffer var10000 = this.c; - int var10001 = this.c.b(new Object[0]); - long var10002 = var13; - Object[] var10005 = new Object[]{null, null, var7}; - var10005[1] = var10002; - var10005[0] = var10001; - var10000.a(var10005); - GpuBuffer var16 = this.c; - long var10003 = var13; - Object[] var10007 = new Object[]{null, null, null, var5}; - var10007[2] = 10; - var10007[1] = var10003; - var10007[0] = 0L; - this.f = var16.a_ByteBuffer(var10007); - MemoryUtil.memCopy(var15, this.f); - this.f.position(var14); - MemoryUtil.memFree(var15); - } - } - - public TextRenderer b_TextRenderer(Object[] var1) { - float[] var2 = (float[])var1[0]; - long var3 = (Long)var1[1]; - var3 = 134641318060110L ^ var3; - long var5 = var3 ^ 21032764215160L; - int var10001 = 4 * var2.length; - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var10001; - this.b(var10004); - - for (float var10 : var2) { - this.e.putFloat(var10); - } - - return this; - } - - public TextRenderer c_TextRenderer(Object[] var1) { - float var4 = (Float)var1[0]; - float var2 = (Float)var1[1]; - float var3 = (Float)var1[2]; - long var5 = (Long)var1[3]; - var5 = 134641318060110L ^ var5; - long var7 = var5 ^ 87616543274028L; - Object[] var10004 = new Object[]{null, var7}; - var10004[0] = 12; - this.b(var10004); - this.e.putFloat(var4); - this.e.putFloat(var2); - this.e.putFloat(var3); - return this; - } - - public TextRenderer d_TextRenderer(Object[] var1) { - Matrix4f var2 = (Matrix4f)var1[0]; - float var7 = (Float)var1[1]; - float var4 = (Float)var1[2]; - float var3 = (Float)var1[3]; - long var5 = (Long)var1[4]; - var5 = 134641318060110L ^ var5; - long var8 = var5 ^ 118439183714216L; - var2.transform(var7, var4, var3, 1.0F, this.g); - Object[] var10004 = new Object[]{null, var8}; - var10004[0] = 12; - this.b(var10004); - this.e.putFloat(this.g.x); - this.e.putFloat(this.g.y); - this.e.putFloat(this.g.z); - return this; - } - - public TextRenderer e_TextRenderer(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - var2 = 134641318060110L ^ var2; - long var5 = var2 ^ 63759774459542L; - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = 4; - this.b(var10004); - this.e.putInt(var4); - return this; - } - - public TextRenderer g_TextRenderer(Object[] var1) { - int[] var4 = (int[])var1[0]; - long var2 = (Long)var1[1]; - var2 = 134641318060110L ^ var2; - long var5 = var2 ^ 77264373819354L; - Event.b(); - int var10002 = 4 * var4.length; - Object[] var10005 = new Object[]{null, var5}; - var10005[0] = var10002; - this.a(var10005); - - for (int var11 : var4) { - this.f.putInt(this.h + var11); - } - - return this; - } - - @Override - public int a_int_____________________________(Object[] var1) { - return this.e.position() / this.a.b; - } - - @Override - public int b_int__(Object[] var1) { - return this.f.position() / 4; - } - - public TextRenderer h_TextRenderer(Object[] var1) { - this.h = 0; - return this; - } - - public TextRenderer i(Object[] var1) { - int var2 = (Integer)var1[0]; - this.h = var2; - return this; - } - - @Override - public void close() { - this.d.clean(); - } - - public void d_void__(Object[] var1) { - VertexFormat var2 = (VertexFormat)var1[0]; - this.a = var2; - } - - @Override - public WorldContract a_WorldContract(Object[] var1) { - throw new UnsupportedOperationException("removed by Strip (unresolved ZKM reference)"); - } - - @Override - public WorldContract f(Object[] var1) { - throw new UnsupportedOperationException("removed by Strip (unresolved ZKM reference)"); - } - - @Override - public WorldContract j(Object[] var1) { - int var4 = (Integer)var1[0]; - return this.i(new Object[]{var4}); - } - - @Override - public WorldContract h(Object[] var1) { - return this.h_TextRenderer(new Object[0]); - } - - @Override - public WorldContract g(Object[] var1) { - int[] var4 = (int[])var1[0]; - long var2 = (Long)var1[1]; - long var5 = var2 ^ 2722474518840L; - return this.g_TextRenderer(new Object[]{var4, var5}); - } - - @Override - public WorldContract e(Object[] var1) { - int var2 = (Integer)var1[0]; - long var3 = (Long)var1[1]; - long var5 = var3 ^ 40196811386581L; - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var2; - return this.e_TextRenderer(var10004); - } - - @Override - public WorldContract d(Object[] var1) { - Matrix4f var5 = (Matrix4f)var1[0]; - float var2 = (Float)var1[1]; - float var3 = (Float)var1[2]; - float var4 = (Float)var1[3]; - long var6 = (Long)var1[4]; - long var8 = var6 ^ 136834706969906L; - Object[] var10007 = new Object[]{null, null, null, null, var8}; - var10007[3] = var4; - var10007[2] = var3; - var10007[1] = var2; - var10007[0] = var5; - return this.d_TextRenderer(var10007); - } - - @Override - public WorldContract c_WorldContract(Object[] var1) { - float var4 = (Float)var1[0]; - float var6 = (Float)var1[1]; - float var5 = (Float)var1[2]; - long var2 = (Long)var1[3]; - long var7 = var2 ^ 10713143091605L; - Object[] var10006 = new Object[]{null, null, null, var7}; - var10006[2] = var5; - var10006[1] = var6; - var10006[0] = var4; - return this.c_TextRenderer(var10006); - } - - @Override - public WorldContract b_WorldContract(Object[] var1) { - float[] var4 = (float[])var1[0]; - long var2 = (Long)var1[1]; - long var5 = var2 ^ 6478042606869L; - return this.b_TextRenderer(new Object[]{var4, var5}); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static MatchException b(MatchException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/TextureLoader.java b/src/main/java/dev/zprestige/prestige/render/TextureLoader.java new file mode 100644 index 0000000..d90ffa8 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/TextureLoader.java @@ -0,0 +1,113 @@ +package dev.zprestige.prestige.render; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.nio.IntBuffer; +import org.lwjgl.opengl.GL; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL15; +import org.lwjgl.opengl.GL30; +import org.lwjgl.stb.STBImage; +import org.lwjgl.system.MemoryStack; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TextureLoader { + private static final Logger LOGGER = LoggerFactory.getLogger(TextureLoader.class); + private static final boolean ANISOTROPY_SUPPORTED = GL.getCapabilities().GL_EXT_texture_filter_anisotropic; + private static final float MAX_ANISOTROPY; + + public static GlTextureHandle loadTexture(String path) { + try { + return loadTexture(path, 9729, 33071, true); + } catch (IOException exception) { + throw new RuntimeException(exception); + } + } + + public static GlTextureHandle loadTexture(String path, int filter, int wrapMode, boolean mipmaps) throws IOException { + ByteBuffer fileData = readResource(path); + + GlTextureHandle result; + try (MemoryStack stack = MemoryStack.stackPush()) { + IntBuffer widthBuffer = stack.mallocInt(1); + IntBuffer heightBuffer = stack.mallocInt(1); + ByteBuffer pixels = STBImage.stbi_load_from_memory(fileData, widthBuffer, heightBuffer, stack.mallocInt(1), 4); + if (pixels == null) { + throw new IOException("Failed to load image: " + STBImage.stbi_failure_reason()); + } + + try { + int width = widthBuffer.get(0); + int height = heightBuffer.get(0); + int expectedSize = width * height * 4; + if (pixels.remaining() < expectedSize) { + throw new IOException("Image buffer too small: " + pixels.remaining() + " bytes, expected " + expectedSize); + } + + GlTextureHandle texture = GlTextureHandle.create(3553); + texture.allocate(32856, width, height); + GL15.glBindBuffer(35052, 0); + GL11.glPixelStorei(3314, 0); + GL11.glPixelStorei(3316, 0); + GL11.glPixelStorei(3315, 0); + GL11.glPixelStorei(3317, 4); + GL11.glBindTexture(3553, texture.glId); + texture.uploadRegion(0, 0, width, height, 6408, 5121, pixels); + if (mipmaps) { + GL30.glGenerateMipmap(3553); + if (filter == 9729) { + GL11.glTexParameteri(3553, 10241, 9987); + GL11.glTexParameteri(3553, 10240, 9729); + } else { + texture.setFilter(filter); + } + } else { + texture.setFilter(filter); + } + + texture.setWrapMode(wrapMode); + if (ANISOTROPY_SUPPORTED && mipmaps) { + GL11.glTexParameterf(3553, 34046, Math.min(64.0F, MAX_ANISOTROPY)); + } + + GL11.glBindTexture(3553, 0); + result = texture; + } finally { + STBImage.stbi_image_free(pixels); + } + } + + return result; + } + + private static ByteBuffer readResource(String path) throws IOException { + String resourcePath = path.startsWith("/") ? path.substring(1) : path; + + ByteBuffer result; + try (InputStream stream = TextureLoader.class.getClassLoader().getResourceAsStream(resourcePath)) { + if (stream == null) { + throw new IOException("Resource not found: " + resourcePath); + } + + byte[] bytes = stream.readAllBytes(); + ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.length); + buffer.put(bytes); + buffer.flip(); + result = buffer; + } + + return result; + } + + static { + if (ANISOTROPY_SUPPORTED) { + MAX_ANISOTROPY = GL11.glGetFloat(34047); + LOGGER.info("Anisotropic filtering supported: Max {}x", MAX_ANISOTROPY); + } else { + MAX_ANISOTROPY = 1.0F; + LOGGER.info("Anisotropic filtering not supported"); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/TextureUtil.java b/src/main/java/dev/zprestige/prestige/render/TextureUtil.java deleted file mode 100644 index 81e79cb..0000000 --- a/src/main/java/dev/zprestige/prestige/render/TextureUtil.java +++ /dev/null @@ -1,233 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.event.Event; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.nio.ByteBuffer; -import java.nio.IntBuffer; -import org.lwjgl.opengl.GL; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL15; -import org.lwjgl.opengl.GL30; -import org.lwjgl.stb.STBImage; -import org.lwjgl.system.MemoryStack; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class TextureUtil { - private static final Logger a = LoggerFactory.getLogger(TextureUtil.class); - private static final boolean b = GL.getCapabilities().GL_EXT_texture_filter_anisotropic; - private static final float c; - - public static FontRenderer a(Object[] var0) { - String var1 = (String)var0[0]; - long var2 = (Long)var0[1]; - var2 = 115330956396883L ^ var2; - long var4 = var2 ^ 39631506551911L; - - try { - Object[] var10006 = new Object[]{null, null, null, null, var4}; - var10006[3] = true; - var10006[2] = 33071; - var10006[1] = 9729; - var10006[0] = var1; - return c(var10006); - } catch (IOException var7) { - throw new RuntimeException(var7); - } - } - - public static FontRenderer c(Object[] var0) throws IOException { - String var2 = (String)var0[0]; - int var1 = (Integer)var0[1]; - int var5 = (Integer)var0[2]; - boolean var6 = (Boolean)var0[3]; - long var3 = (Long)var0[4]; - var3 = 115330956396883L ^ var3; - long var7 = var3 ^ 6885571309737L; - long var9 = var3 ^ 61797235049706L; - long var11 = var3 ^ 46579528746624L; - long var13 = var3 ^ 117589611311477L; - long var15 = var3 ^ 107380155499117L; - long var17 = var3 ^ 17216244491597L; - ByteBuffer var20 = a_ByteBuffer_(new Object[]{var2, var9}); - Event.b(); - - FontRenderer var39; - try (MemoryStack var21 = MemoryStack.stackPush()) { - IntBuffer var22 = var21.mallocInt(1); - IntBuffer var23 = var21.mallocInt(1); - IntBuffer var24 = var21.mallocInt(1); - ByteBuffer var25 = STBImage.stbi_load_from_memory(var20, var22, var23, var24, 4); - if (var25 == null) { - throw new IOException("Failed to load image: " + STBImage.stbi_failure_reason()); - } - - try { - int var26 = var22.get(0); - int var27 = var23.get(0); - int var28 = var26 * var27 * 4; - if (var25.remaining() < var28) { - throw new IOException("Image buffer too small: " + var25.remaining() + " bytes, expected " + var28); - } - - Object[] var10003 = new Object[]{null, var15}; - var10003[0] = 3553; - FontRenderer var29 = FontRenderer.a(var10003); - Object[] var10006 = new Object[]{null, null, null, var7}; - var10006[2] = var27; - var10006[1] = var26; - var10006[0] = 32856; - var29.c(var10006); - GL15.glBindBuffer(35052, 0); - GL11.glPixelStorei(3314, 0); - GL11.glPixelStorei(3316, 0); - GL11.glPixelStorei(3315, 0); - GL11.glPixelStorei(3317, 4); - GL11.glBindTexture(3553, var29.a); - Object[] var10010 = new Object[]{null, null, null, null, null, null, var25, var11}; - var10010[5] = 5121; - var10010[4] = 6408; - var10010[3] = var27; - var10010[2] = var26; - var10010[1] = 0; - var10010[0] = 0; - var29.d(var10010); - if (var6) { - GL30.glGenerateMipmap(3553); - if (var1 == 9729) { - GL11.glTexParameteri(3553, 10241, 9987); - GL11.glTexParameteri(3553, 10240, 9729); - } else { - Object[] var10004 = new Object[]{null, var13}; - var10004[0] = var1; - var29.b_void_______(var10004); - } - } else { - Object[] var40 = new Object[]{null, var13}; - var40[0] = var1; - var29.b_void_______(var40); - } - - Object[] var41 = new Object[]{null, var17}; - var41[0] = var5; - var29.e(var41); - if (b && var6) { - float var30 = Math.min(64.0F, c); - GL11.glTexParameterf(3553, 34046, var30); - } - - GL11.glBindTexture(3553, 0); - var39 = var29; - } finally { - STBImage.stbi_image_free(var25); - } - } - - return var39; - } - - private static ByteBuffer a_ByteBuffer_(Object[] var0) throws IOException { - String var1 = (String)var0[0]; - String var5 = var1.startsWith("/") ? var1.substring(1) : var1; - - ByteBuffer var9; - try (InputStream var6 = TextureUtil.class.getClassLoader().getResourceAsStream(var5)) { - if (var6 == null) { - throw new IOException("Resource not found: " + var5); - } - - byte[] var7 = var6.readAllBytes(); - ByteBuffer var8 = ByteBuffer.allocateDirect(var7.length); - var8.put(var7); - var8.flip(); - var9 = var8; - } - - return var9; - } - - static { - if (b) { - c = GL11.glGetFloat(34047); - a.info("Anisotropic filtering supported: Max {}x", c); - } else { - c = 1.0F; - a.info("Anisotropic filtering not supported"); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static Throwable a(Throwable var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/ThreatAssessment.java b/src/main/java/dev/zprestige/prestige/render/ThreatAssessment.java new file mode 100644 index 0000000..8131e92 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/ThreatAssessment.java @@ -0,0 +1,27 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.type.ThreatType; + +public final class ThreatAssessment { + public final ThreatType source; + public final float rawDamage; + public final float weightedDamage; + + public ThreatAssessment(ThreatType threatType, float damage, float weighted) { + this.source = threatType; + this.rawDamage = damage; + this.weightedDamage = weighted; + } + + public boolean hasThreat() { + return this.source != null; + } + + public boolean isLethal(float health) { + return health - this.weightedDamage <= 0.0F; + } + + public float getHealthAfter(float health) { + return Math.max(0.0F, health - this.weightedDamage); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/ToggleAnimation.java b/src/main/java/dev/zprestige/prestige/render/ToggleAnimation.java new file mode 100644 index 0000000..9e1cf7f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/ToggleAnimation.java @@ -0,0 +1,70 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.type.Easing; +import java.util.function.Supplier; + +public class ToggleAnimation { + private final Supplier duration; + private final boolean initialState; + private final Supplier easing; + private long startTime; + private boolean state; + private static final long UNSET_START_TIME = 0L; + + public ToggleAnimation(Supplier durationSupplier, boolean startOn, Supplier easingSupplier) { + this.startTime = UNSET_START_TIME; + this.duration = durationSupplier; + this.initialState = startOn; + this.easing = easingSupplier; + this.state = startOn; + } + + public ToggleAnimation(float durationMs, boolean startOn, Easing easingType) { + this(() -> durationMs, startOn, () -> easingType); + } + + public ToggleAnimation(Supplier durationSupplier, boolean startOn, Easing easingType) { + this(durationSupplier, startOn, () -> easingType); + } + + public ToggleAnimation(float durationMs, boolean startOn, Supplier easingSupplier) { + this(() -> durationMs, startOn, easingSupplier); + } + + public boolean getState() { + return this.state; + } + + public void setState(boolean newState) { + if (!newState) { + this.startTime = System.currentTimeMillis() - (long)((1.0 - this.getLinearProgress()) * ((Float)this.duration.get()).floatValue()); + } else { + this.startTime = System.currentTimeMillis() - (long)(this.getLinearProgress() * ((Float)this.duration.get()).floatValue()); + } + + this.state = newState; + } + + public float getProgress() { + if (this.state) { + return (float)((Easing)this.easing.get()).apply(Math.min(1.0, Math.max(0.0, (double)(System.currentTimeMillis() - this.startTime) / ((Float)this.duration.get()).floatValue()))); + } else { + return (float)((Easing)this.easing.get()).apply(Math.min(1.0, Math.max(0.0, 1.0 - (double)(System.currentTimeMillis() - this.startTime) / ((Float)this.duration.get()).floatValue()))); + } + } + + public void reset() { + this.state = this.initialState; + if (this.initialState) { + this.startTime = System.currentTimeMillis() - (long)((1.0 - this.getLinearProgress()) * ((Float)this.duration.get()).floatValue()); + } else { + this.startTime = System.currentTimeMillis() - (long)(this.getLinearProgress() * ((Float)this.duration.get()).floatValue()); + } + } + + private double getLinearProgress() { + return !this.state + ? Math.min(1.0, Math.max(0.0, 1.0 - (double)(System.currentTimeMillis() - this.startTime) / ((Float)this.duration.get()).floatValue())) + : Math.min(1.0, Math.max(0.0, (double)(System.currentTimeMillis() - this.startTime) / ((Float)this.duration.get()).floatValue())); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/Uniform.java b/src/main/java/dev/zprestige/prestige/render/Uniform.java deleted file mode 100644 index 9699601..0000000 --- a/src/main/java/dev/zprestige/prestige/render/Uniform.java +++ /dev/null @@ -1,110 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.BoolData; -import dev.zprestige.prestige.data.BoolData2; -import dev.zprestige.prestige.data.BoolIntData; -import dev.zprestige.prestige.data.BoolIntData2; -import dev.zprestige.prestige.data.ConsumerData2; -import dev.zprestige.prestige.data.IntBoolData2; -import dev.zprestige.prestige.data.IntData2; -import dev.zprestige.prestige.data.IntSupplierData; -import dev.zprestige.prestige.data.ShaderData; -import java.util.function.Consumer; - -public interface Uniform { - IntSupplierData a = new IntSupplierData(RenderUtil::a); - - default void a(DrawContext var1) { - } - - default void a(RenderPass var1) { - } - - default void a() { - } - - default boolean a_boolean() { - return false; - } - - static BoolData a(Object[] var0) { - boolean var1 = (Boolean)var0[0]; - boolean var2 = (Boolean)var0[1]; - return new BoolData(var1, var2); - } - - static BoolData b(Object[] var0) { - boolean var1 = (Boolean)var0[0]; - return new BoolData(var1, var1); - } - - static IntBoolData2 a_IntBoolData2(Object[] var0) { - int var1 = (Integer)var0[0]; - boolean var2 = (Boolean)var0[1]; - return new IntBoolData2(var1, var2); - } - - static IntBoolData2 b_IntBoolData2(Object[] var0) { - int var1 = (Integer)var0[0]; - boolean var2 = (Boolean)var0[1]; - boolean var3 = (Boolean)var0[2]; - return new IntBoolData2(var1, var2, var3); - } - - static ShaderData a_ShaderData(Object[] var0) { - Shader var1 = (Shader)var0[0]; - return new ShaderData(var1); - } - - static IntSupplierData a_IntSupplierData(Object[] var0) { - int var1 = (Integer)var0[0]; - return new IntSupplierData(var1); - } - - static IntData2 a_IntData2(Object[] var0) { - int var2 = (Integer)var0[0]; - int var1 = (Integer)var0[1]; - return new IntData2(var2, var1); - } - - static BoolData2 a_BoolData2(Object[] var0) { - boolean var1 = (Boolean)var0[0]; - boolean var2 = (Boolean)var0[1]; - return new BoolData2(var1, var2); - } - - static BoolIntData a_BoolIntData(Object[] var0) { - boolean var3 = (Boolean)var0[0]; - boolean var6 = (Boolean)var0[1]; - int var1 = (Integer)var0[2]; - int var4 = (Integer)var0[3]; - int var5 = (Integer)var0[4]; - int var2 = (Integer)var0[5]; - return new BoolIntData(var3, var6, var1, var4, var5, var2); - } - - static BoolIntData2 a_BoolIntData2(Object[] var0) { - boolean var1 = (Boolean)var0[0]; - boolean var2 = (Boolean)var0[1]; - int var5 = (Integer)var0[2]; - int var3 = (Integer)var0[3]; - int var6 = (Integer)var0[4]; - int var4 = (Integer)var0[5]; - return new BoolIntData2(var1, var2, var5, var3, var6, var4); - } - - static ConsumerData2 a_ConsumerData2(Object[] var0) { - Consumer var1 = (Consumer)var0[0]; - return new ConsumerData2(var1); - } - - static Uniform a_Uniform(Object[] var0) { - Consumer var1 = (Consumer)var0[0]; - return new RenderHelper28(var1); - } - - static Uniform b_Uniform(Object[] var0) { - Consumer var1 = (Consumer)var0[0]; - return new RenderHelper29(var1); - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/UniformCache.java b/src/main/java/dev/zprestige/prestige/render/UniformCache.java deleted file mode 100644 index 577c7d0..0000000 --- a/src/main/java/dev/zprestige/prestige/render/UniformCache.java +++ /dev/null @@ -1,180 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.BoolData2; -import dev.zprestige.prestige.data.IntBoolData2; -import dev.zprestige.prestige.data.IntData2; -import dev.zprestige.prestige.data.ShaderData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.math.MathUtil4; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Map; -import org.joml.Vector4f; - -public class UniformCache { - public static final DrawMode a = new DrawMode( - VertexAttribute.b, - 4, - false, - new Uniform[]{Uniform.a, new ShaderData(RenderHelper22.a), new IntBoolData2(2884, false), new BoolData2(true, true), new IntData2(515, 515)}, - 0L - ); - public static final DrawMode b = new DrawMode( - VertexAttribute.b, - 4, - false, - new Uniform[]{ - Uniform.a, - new ShaderData(RenderHelper22.a), - new IntBoolData2(2884, false), - new BoolData2(true, true), - new IntData2(515, 515), - new IntBoolData2(2929, false) - }, - 0L - ); - public static final DrawMode c = new DrawMode( - VertexAttribute.b, - 4, - false, - new Uniform[]{ - Uniform.a, - new ShaderData(RenderHelper22.a), - new IntBoolData2(2884, true), - new BoolData2(true, true), - new IntData2(515, 515), - new IntBoolData2(2929, true) - }, - 0L - ); - public static final DrawMode d = new DrawMode( - VertexAttribute.b, - 1, - false, - new Uniform[]{Uniform.a, new ShaderData(RenderHelper22.a), new IntBoolData2(2884, true), new BoolData2(true, true), new IntData2(515, 515)}, - 0L - ); - public static final DrawMode e = new DrawMode( - VertexAttribute.b, - 1, - false, - new Uniform[]{ - Uniform.a, - new ShaderData(RenderHelper22.a), - new IntBoolData2(2884, true), - new BoolData2(true, true), - new IntData2(515, 515), - new IntBoolData2(2929, false) - }, - 0L - ); - private static final Map f; - static final int g; - - public static DrawMode a(Object[] var0) { - Vector4f var1 = (Vector4f)var0[0]; - long var2 = (Long)var0[1]; - var2 = 35742708978647L ^ var2; - long var4 = var2 ^ 21954929016625L; - long var6 = var2 ^ 5585743699746L; - Event.b(); - ColorValue var9 = new ColorValue(var1, var6); - DrawMode var10 = (DrawMode)f.get(var9); - if (var10 == null) { - var10 = new DrawMode( - VertexAttribute.e, - 4, - false, - new Uniform[]{ - Uniform.a, - new ShaderData(RenderHelper22.c), - new IntBoolData2(2884, true), - new BoolData2(true, true), - new IntData2(515, 515), - new IntBoolData2(2929, false), - new ColorUniform(var9) - }, - var4 - ); - f.put(var9, var10); - } - - return var10; - } - - static { - Object var11 = "roundness"; - Object[] var10003 = new Object[]{null, 0L}; - var10003[0] = 128; - f = MathUtil4.a(var10003); - g = RenderHelper22.c.d(new Object[]{var11, 0L}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/VertexArray.java b/src/main/java/dev/zprestige/prestige/render/VertexArray.java new file mode 100644 index 0000000..2bbe939 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/VertexArray.java @@ -0,0 +1,97 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.VertexAttributeBinding; +import dev.zprestige.prestige.data.VertexElement; +import java.lang.ref.Cleaner.Cleanable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.jetbrains.annotations.NotNull; +import org.lwjgl.opengl.GL30; + +public final class VertexArray implements AutoCloseable { + private final int glId; + private final VertexAttributeBinding[] bindings; + private final Cleanable cleanable; + private int bindingCount; + public static final boolean ASSERTIONS_DISABLED = !VertexArray.class.desiredAssertionStatus(); + private static final String TOO_MANY_BINDINGS_PREFIX = "too many bindings ("; + + private VertexArray(int arrayId, VertexAttributeBinding[] initialBindings) { + this.glId = arrayId; + this.bindings = new VertexAttributeBinding[16]; + if (initialBindings != null) { + System.arraycopy(initialBindings, 0, this.bindings, 0, initialBindings.length); + } + + this.bindingCount = initialBindings == null ? 0 : initialBindings.length; + this.cleanable = RenderCore.CLEANER.register(this, () -> RenderCore.runOnRenderThread((Runnable)() -> GL30.glDeleteVertexArrays(arrayId))); + } + + public static VertexArray forBuffer(GlBuffer buffer, VertexLayout format) { + return create(createBindings(buffer, format)); + } + + @NotNull + public static List createBindings(GlBuffer buffer, VertexLayout format) { + ArrayList result = new ArrayList(format.elements.length); + + for (int index = 0; index < format.elements.length; index++) { + result.add(format.createBinding(buffer, index)); + } + + return result; + } + + public static VertexArray create(List initial) { + VertexArray vertexArray = new VertexArray(GL30.glGenVertexArrays(), null); + if (initial != null) { + vertexArray.setBindings(initial); + } + + return vertexArray; + } + + @Override + public void close() { + this.cleanable.clean(); + } + + public void setBindings(List newBindings) { + int count = newBindings.size(); + if (!ASSERTIONS_DISABLED && count > 16) { + throw new AssertionError(TOO_MANY_BINDINGS_PREFIX + count + ")"); + } else { + VertexAttributeBinding[] bindingArray = (VertexAttributeBinding[])newBindings.toArray(new VertexAttributeBinding[0]); + if (this.bindingCount != count || !Arrays.equals(this.bindings, 0, this.bindingCount, bindingArray, 0, bindingArray.length)) { + int maxCount = Math.max(this.bindingCount, count); + int minCount = Math.min(this.bindingCount, count); + GL30.glBindVertexArray(this.glId); + + for (int attribIndex = minCount; attribIndex < maxCount; attribIndex++) { + if (attribIndex >= this.bindingCount) { + GL30.glEnableVertexAttribArray(attribIndex); + } else { + GL30.glDisableVertexAttribArray(attribIndex); + } + } + + for (int bindingIndex = 0; bindingIndex < count; bindingIndex++) { + VertexAttributeBinding binding = (VertexAttributeBinding)newBindings.get(bindingIndex); + GL30.glBindBuffer(34962, binding.buffer().getGlId()); + VertexElement attribute = binding.element(); + GL30.glVertexAttribPointer(bindingIndex, attribute.componentCount(), attribute.glType(), attribute.normalized(), binding.stride(), binding.offset()); + } + + GL30.glBindVertexArray(0); + Arrays.fill(this.bindings, null); + System.arraycopy(bindingArray, 0, this.bindings, 0, count); + this.bindingCount = count; + } + } + } + + public int getGlId() { + return this.glId; + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/VertexAttribute.java b/src/main/java/dev/zprestige/prestige/render/VertexAttribute.java deleted file mode 100644 index c75798a..0000000 --- a/src/main/java/dev/zprestige/prestige/render/VertexAttribute.java +++ /dev/null @@ -1,58 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.IntBoolData; - -public class VertexAttribute { - public static final VertexFormat a; - public static final VertexFormat b; - public static final VertexFormat c; - public static final VertexFormat d; - public static final VertexFormat e; - public static final VertexFormat f; - public static final VertexFormat g; - - static { - long[] var0 = new long[]{5126L, 5126L, 5121L, 5121L}; - a = new VertexFormat(new IntBoolData[]{new IntBoolData(3, (int)var0[0], 4, false)}, 0L); - b = new VertexFormat( - new IntBoolData[]{new IntBoolData(3, (int)var0[1], 4, false), new IntBoolData(4, (int)var0[3], 1, true)}, 0L - ); - c = new VertexFormat( - new IntBoolData[]{ - new IntBoolData(3, (int)var0[1], 4, false), - new IntBoolData(4, (int)var0[2], 1, true), - new IntBoolData(2, (int)var0[1], 4, false) - }, - 0L - ); - d = new VertexFormat( - new IntBoolData[]{ - new IntBoolData(3, (int)var0[1], 4, false), - new IntBoolData(3, (int)var0[1], 4, false), - new IntBoolData(4, (int)var0[2], 1, true), - new IntBoolData(2, (int)var0[1], 4, false) - }, - 0L - ); - e = new VertexFormat( - new IntBoolData[]{ - new IntBoolData(3, (int)var0[1], 4, false), - new IntBoolData(2, (int)var0[1], 4, false), - new IntBoolData(2, (int)var0[1], 4, false), - new IntBoolData(4, (int)var0[2], 1, true) - }, - 0L - ); - f = new VertexFormat( - new IntBoolData[]{new IntBoolData(3, (int)var0[1], 4, false), new IntBoolData(2, (int)var0[1], 4, false)}, 0L - ); - g = new VertexFormat( - new IntBoolData[]{ - new IntBoolData(3, (int)var0[1], 4, false), - new IntBoolData(2, (int)var0[1], 4, false), - new IntBoolData(2, (int)var0[1], 4, false) - }, - 0L - ); - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/VertexBuffer.java b/src/main/java/dev/zprestige/prestige/render/VertexBuffer.java deleted file mode 100644 index 57bbca8..0000000 --- a/src/main/java/dev/zprestige/prestige/render/VertexBuffer.java +++ /dev/null @@ -1,170 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.PassConsumerData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.type.GlPrimitive; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; -import java.util.function.IntSupplier; - -public class VertexBuffer { - private static final GpuBuffer a = (GpuBuffer)RenderUtil.a_Object___(new Object[]{(java.util.function.Supplier)GpuBuffer::a, 0L}); - private static final GpuBuffer b = (GpuBuffer)RenderUtil.a_Object___(new Object[]{(java.util.function.Supplier)GpuBuffer::a, 0L}); - private static final RenderHelper31 c = RenderHelper31.a(new Object[]{a, VertexAttribute.f, 0L}); - private final List d = new ArrayList(); - - public VertexBuffer a(Object[] var1) { - Shader var6 = (Shader)var1[0]; - Consumer var5 = (Consumer)var1[1]; - int var4 = (Integer)var1[2]; - long var2 = (Long)var1[3]; - var2 = 85728054144674L ^ var2; - long var7 = var2 ^ 22580024169075L; - return this.b(new Object[]{var6, var5, (IntSupplier)() -> var4, var7}); - } - - public VertexBuffer b(Object[] var1) { - Shader var6 = (Shader)var1[0]; - Consumer var3 = (Consumer)var1[1]; - IntSupplier var2 = (IntSupplier)var1[2]; - long var4 = (Long)var1[3]; - var4 = 85728054144674L ^ var4; - long var7 = var4 ^ 94493743747280L; - long var9 = var4 ^ 66384678072345L; - this.d.add(new PassConsumerData(RenderPass.a(new Object[]{var7}).b(new Object[]{var2}).e(new Object[]{var6}).a_RenderPass(new Object[]{var9}), var3)); - return this; - } - - public void a_void______________________________(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 85728054144674L ^ var2; - long var4 = var2 ^ 124205971407095L; - long var6 = var2 ^ 138790927232772L; - Event.b(); - - for (PassConsumerData var10 : (Iterable)(this.d)) { - RenderPass var11 = var10.bx(); - var11.a_void__________________________(new Object[]{var6}); - var10.by().accept(var11); - RenderHelper31 var10001 = c; - GpuBuffer var10002 = b; - Object[] var10007 = new Object[]{null, null, null, null, var4}; - var10007[3] = 6; - var10007[2] = 4; - var10007[1] = var10002; - var10007[0] = var10001; - var11.d(var10007); - } - } - - static { - long[] var0 = new long[]{4L, 24L}; - GpuBuffer var10000 = a; - long var10002 = var0[0] * VertexAttribute.f.b; - Object[] var10005 = new Object[]{null, null, 0L}; - var10005[1] = var10002; - var10005[0] = 35044; - var10000.a(var10005); - var10000 = b; - var10002 = var0[1]; - var10005 = new Object[]{null, null, 0L}; - var10005[1] = var10002; - var10005[0] = 35044; - var10000.a(var10005); - - try (TextRenderer var38 = new TextRenderer(VertexAttribute.f, a, b, 0L)) { - Object[] var10006 = new Object[]{null, null, null, 0L}; - var10006[2] = 1.0F; - var10006[1] = 1.0F; - var10006[0] = -1.0F; - TextRenderer var44 = var38.c_TextRenderer(var10006).b_TextRenderer(new Object[]{new float[]{0.0F, 1.0F}, 0L}); - var10006 = new Object[]{null, null, null, 0L}; - var10006[2] = 1.0F; - var10006[1] = -1.0F; - var10006[0] = -1.0F; - TextRenderer var45 = var44.c_TextRenderer(var10006).b_TextRenderer(new Object[]{new float[]{0.0F, 0.0F}, 0L}); - var10006 = new Object[]{null, null, null, 0L}; - var10006[2] = 1.0F; - var10006[1] = -1.0F; - var10006[0] = 1.0F; - TextRenderer var46 = var45.c_TextRenderer(var10006).b_TextRenderer(new Object[]{new float[]{1.0F, 0.0F}, 0L}); - var10006 = new Object[]{null, null, null, 0L}; - var10006[2] = 1.0F; - var10006[1] = 1.0F; - var10006[0] = 1.0F; - var46.c_TextRenderer(var10006).b_TextRenderer(new Object[]{new float[]{1.0F, 1.0F}, 0L}); - var38.i_WorldContract(new Object[]{GlPrimitive.QUADS, 0L}); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/VertexBufferProvider.java b/src/main/java/dev/zprestige/prestige/render/VertexBufferProvider.java deleted file mode 100644 index e2cbd78..0000000 --- a/src/main/java/dev/zprestige/prestige/render/VertexBufferProvider.java +++ /dev/null @@ -1,103 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Optional; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.VertexConsumerProvider; - -public class VertexBufferProvider implements VertexConsumerProvider { - private final VertexConsumerProvider a; - - public VertexBufferProvider(VertexConsumerProvider var1) { - this.a = var1; - } - - @Override - public VertexConsumer getBuffer(RenderLayer layer) { - Event.b(); - VertexConsumer var7 = this.a.getBuffer(layer); - if (!layer.isOutline() && layer.getAffectedOutline().isEmpty()) { - return var7; - } else { - Optional var8 = RenderLayerUtil.a(new Object[]{layer, 48751301194998L}); - return (VertexConsumer)var8.map(lpL28_0 -> { - int var10001 = ((java.lang.Integer)lpL28_0); - Object[] var10004 = new Object[]{null, null, 50226393134120L}; - var10004[1] = var10001; - var10004[0] = var7; - return RenderLayerUtil.a_class_4588(var10004); - }).orElse(var7); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/VertexFormat.java b/src/main/java/dev/zprestige/prestige/render/VertexFormat.java deleted file mode 100644 index 277ccd8..0000000 --- a/src/main/java/dev/zprestige/prestige/render/VertexFormat.java +++ /dev/null @@ -1,134 +0,0 @@ -package dev.zprestige.prestige.render; - -import dev.zprestige.prestige.data.BufferQuadIntData; -import dev.zprestige.prestige.data.IntBoolData; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.Objects; - -public class VertexFormat { - public final IntBoolData[] a; - public final int b; - private final int[] c; - private static final String e = "Invalid element index: "; - - public VertexFormat(IntBoolData[] var1, long var2) { - this.a = var1; - this.c = new int[var1.length]; - if (0 < var1.length) { - int var4 = 0; - for (int var5 = 0; var5 < var1.length; var5++) { - this.c[var5] = var4; - var4 += var1[var5].cg() * var1[var5].ci(); - } - - this.b = var4; - } else { - this.b = 0; - } - } - - public BufferQuadIntData a(Object[] var1) { - GpuBuffer var2 = (GpuBuffer)var1[0]; - int var5 = (Integer)var1[1]; - if (var5 >= 0 && var5 < this.a.length) { - IntBoolData var6 = this.a[var5]; - int var7 = this.c[var5]; - return new BufferQuadIntData(var2, var6, this.b, var7); - } else { - throw new IllegalArgumentException(e + var5); - } - } - - @Override - public boolean equals(Object var1) { - if (this == var1) { - return true; - } else if (var1 != null && this.getClass() == var1.getClass()) { - VertexFormat var5 = (VertexFormat)var1; - return this.b == var5.b && Arrays.equals((Object[])this.a, (Object[])var5.a) && Arrays.equals(this.c, var5.c); - } else { - return false; - } - } - - @Override - public int hashCode() { - int var3 = Objects.hash(this.b); - var3 = 31 * var3 + Arrays.hashCode((Object[])this.a); - return 31 * var3 + Arrays.hashCode(this.c); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static IllegalArgumentException a(IllegalArgumentException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/render/VertexLayout.java b/src/main/java/dev/zprestige/prestige/render/VertexLayout.java new file mode 100644 index 0000000..0714648 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/VertexLayout.java @@ -0,0 +1,56 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.VertexAttributeBinding; +import dev.zprestige.prestige.data.VertexElement; +import java.util.Arrays; +import java.util.Objects; + +public class VertexLayout { + public final VertexElement[] elements; + public final int stride; + private final int[] offsets; + private static final String INVALID_INDEX_MESSAGE = "Invalid element index: "; + + public VertexLayout(VertexElement[] layoutElements) { + this.elements = layoutElements; + this.offsets = new int[layoutElements.length]; + if (0 < layoutElements.length) { + int offset = 0; + for (int i = 0; i < layoutElements.length; i++) { + this.offsets[i] = offset; + offset += layoutElements[i].componentCount() * layoutElements[i].componentSize(); + } + + this.stride = offset; + } else { + this.stride = 0; + } + } + + public VertexAttributeBinding createBinding(GlBuffer buffer, int index) { + if (index >= 0 && index < this.elements.length) { + VertexElement element = this.elements[index]; + int offset = this.offsets[index]; + return new VertexAttributeBinding(buffer, element, this.stride, offset); + } else { + throw new IllegalArgumentException(INVALID_INDEX_MESSAGE + index); + } + } + + @Override + public boolean equals(Object other) { + if (this == other) { + return true; + } else if (other != null && this.getClass() == other.getClass()) { + VertexLayout that = (VertexLayout)other; + return this.stride == that.stride && Arrays.equals((Object[])this.elements, (Object[])that.elements) && Arrays.equals(this.offsets, that.offsets); + } else { + return false; + } + } + + @Override + public int hashCode() { + return 31 * (31 * Objects.hash(this.stride) + Arrays.hashCode((Object[])this.elements)) + Arrays.hashCode(this.offsets); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/VertexLayouts.java b/src/main/java/dev/zprestige/prestige/render/VertexLayouts.java new file mode 100644 index 0000000..b09c4bf --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/VertexLayouts.java @@ -0,0 +1,54 @@ +package dev.zprestige.prestige.render; + +import dev.zprestige.prestige.data.VertexElement; + +public class VertexLayouts { + public static final VertexLayout POSITION; + public static final VertexLayout POSITION_COLOR; + public static final VertexLayout POSITION_COLOR_UV; + public static final VertexLayout POSITION_NORMAL_COLOR_UV; + public static final VertexLayout POSITION_UV_SIZE_COLOR; + public static final VertexLayout POSITION_UV; + public static final VertexLayout POSITION_UV_SIZE; + + static { + long[] glTypes = new long[]{5126L, 5126L, 5121L, 5121L}; + POSITION = new VertexLayout(new VertexElement[]{new VertexElement(3, (int)glTypes[0], 4, false)}); + POSITION_COLOR = new VertexLayout( + new VertexElement[]{new VertexElement(3, (int)glTypes[1], 4, false), new VertexElement(4, (int)glTypes[3], 1, true)} + ); + POSITION_COLOR_UV = new VertexLayout( + new VertexElement[]{ + new VertexElement(3, (int)glTypes[1], 4, false), + new VertexElement(4, (int)glTypes[2], 1, true), + new VertexElement(2, (int)glTypes[1], 4, false) + } + ); + POSITION_NORMAL_COLOR_UV = new VertexLayout( + new VertexElement[]{ + new VertexElement(3, (int)glTypes[1], 4, false), + new VertexElement(3, (int)glTypes[1], 4, false), + new VertexElement(4, (int)glTypes[2], 1, true), + new VertexElement(2, (int)glTypes[1], 4, false) + } + ); + POSITION_UV_SIZE_COLOR = new VertexLayout( + new VertexElement[]{ + new VertexElement(3, (int)glTypes[1], 4, false), + new VertexElement(2, (int)glTypes[1], 4, false), + new VertexElement(2, (int)glTypes[1], 4, false), + new VertexElement(4, (int)glTypes[2], 1, true) + } + ); + POSITION_UV = new VertexLayout( + new VertexElement[]{new VertexElement(3, (int)glTypes[1], 4, false), new VertexElement(2, (int)glTypes[1], 4, false)} + ); + POSITION_UV_SIZE = new VertexLayout( + new VertexElement[]{ + new VertexElement(3, (int)glTypes[1], 4, false), + new VertexElement(2, (int)glTypes[1], 4, false), + new VertexElement(2, (int)glTypes[1], 4, false) + } + ); + } +} diff --git a/src/main/java/dev/zprestige/prestige/render/VertexSink.java b/src/main/java/dev/zprestige/prestige/render/VertexSink.java deleted file mode 100644 index 191a906..0000000 --- a/src/main/java/dev/zprestige/prestige/render/VertexSink.java +++ /dev/null @@ -1,13 +0,0 @@ -package dev.zprestige.prestige.render; - -public interface VertexSink { - void a(VertexSink var1); - - int[] b(); - - long a(long var1); - - void b(long var1); - - boolean b(VertexSink var1); -} diff --git a/src/main/java/dev/zprestige/prestige/render/VirtualKeyMapper.java b/src/main/java/dev/zprestige/prestige/render/VirtualKeyMapper.java new file mode 100644 index 0000000..6477a37 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/render/VirtualKeyMapper.java @@ -0,0 +1,84 @@ +package dev.zprestige.prestige.render; + +import java.util.HashMap; +import java.util.Map; + +public class VirtualKeyMapper { + private static final Map VK_TO_GLFW = new HashMap(); + + private VirtualKeyMapper() { + } + + public static int toGlfwKey(int virtualKey) { + return !VK_TO_GLFW.containsKey(virtualKey) ? virtualKey : (Integer)VK_TO_GLFW.getOrDefault(virtualKey, virtualKey); + } + + static { + for (int letter = 0; letter < 26; letter++) { + VK_TO_GLFW.put(65 + letter, 65 + letter); + } + + for (int digit = 0; digit < 10; digit++) { + VK_TO_GLFW.put(48 + digit, 48 + digit); + } + + VK_TO_GLFW.put(188, 44); + VK_TO_GLFW.put(190, 46); + VK_TO_GLFW.put(191, 47); + VK_TO_GLFW.put(186, 59); + VK_TO_GLFW.put(222, 39); + VK_TO_GLFW.put(219, 91); + VK_TO_GLFW.put(221, 93); + VK_TO_GLFW.put(220, 92); + VK_TO_GLFW.put(189, 45); + VK_TO_GLFW.put(187, 61); + VK_TO_GLFW.put(192, 96); + VK_TO_GLFW.put(32, 32); + VK_TO_GLFW.put(13, 257); + VK_TO_GLFW.put(9, 258); + VK_TO_GLFW.put(8, 259); + VK_TO_GLFW.put(46, 261); + VK_TO_GLFW.put(45, 260); + VK_TO_GLFW.put(39, 262); + VK_TO_GLFW.put(37, 263); + VK_TO_GLFW.put(40, 264); + VK_TO_GLFW.put(38, 265); + VK_TO_GLFW.put(33, 266); + VK_TO_GLFW.put(34, 267); + VK_TO_GLFW.put(36, 268); + VK_TO_GLFW.put(35, 269); + VK_TO_GLFW.put(27, 256); + VK_TO_GLFW.put(44, 283); + VK_TO_GLFW.put(145, 281); + VK_TO_GLFW.put(19, 284); + VK_TO_GLFW.put(20, 280); + VK_TO_GLFW.put(144, 282); + VK_TO_GLFW.put(93, 348); + + for (int functionKey = 0; functionKey < 24; functionKey++) { + VK_TO_GLFW.put(112 + functionKey, 290 + functionKey); + } + + VK_TO_GLFW.put(160, 340); + VK_TO_GLFW.put(161, 344); + VK_TO_GLFW.put(162, 341); + VK_TO_GLFW.put(163, 345); + VK_TO_GLFW.put(164, 342); + VK_TO_GLFW.put(165, 346); + VK_TO_GLFW.put(91, 343); + VK_TO_GLFW.put(92, 347); + VK_TO_GLFW.put(16, 340); + VK_TO_GLFW.put(17, 341); + VK_TO_GLFW.put(18, 342); + + for (int numpadKey = 0; numpadKey < 10; numpadKey++) { + VK_TO_GLFW.put(96 + numpadKey, 320 + numpadKey); + } + + VK_TO_GLFW.put(106, 332); + VK_TO_GLFW.put(107, 334); + VK_TO_GLFW.put(109, 333); + VK_TO_GLFW.put(110, 330); + VK_TO_GLFW.put(111, 331); + } +} diff --git a/src/main/java/dev/zprestige/prestige/social/AltManager.java b/src/main/java/dev/zprestige/prestige/social/AltManager.java deleted file mode 100644 index 8b4125f..0000000 --- a/src/main/java/dev/zprestige/prestige/social/AltManager.java +++ /dev/null @@ -1,146 +0,0 @@ -package dev.zprestige.prestige.social; - -import com.google.common.collect.HashMultimap; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.mojang.authlib.GameProfile; -import com.mojang.authlib.properties.Property; -import com.mojang.authlib.properties.PropertyMap; -import dev.zprestige.prestige.event.Event; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.UUID; - -public class AltManager { - public static UUID a(Object[] var0) { - String var1 = (String)var0[0]; - - try { - HttpURLConnection var4 = (HttpURLConnection)new URL("https://api.mojang.com/users/profiles/minecraft/" + var1).openConnection(); - var4.setRequestMethod("GET"); - if (var4.getResponseCode() != 200) { - return null; - } else { - UUID var8; - try (BufferedReader var5 = new BufferedReader(new InputStreamReader(var4.getInputStream()))) { - JsonObject var6 = JsonParser.parseReader(var5).getAsJsonObject(); - String var7 = var6.get("id").getAsString(); - var8 = UUID.fromString(var7.replaceFirst("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", "$1-$2-$3-$4-$5")); - } - - return var8; - } - } catch (Exception var11) { - var11.printStackTrace(); - return null; - } - } - - public static GameProfile a_GameProfile(Object[] var0) { - UUID var1 = (UUID)var0[0]; - - try { - HttpURLConnection var4 = (HttpURLConnection)new URL( - "https://sessionserver.mojang.com/session/minecraft/profile/" + var1.toString() + "?unsigned=false" - ) - .openConnection(); - var4.setRequestMethod("GET"); - if (var4.getResponseCode() != 200) { - return null; - } else { - GameProfile var9; - try (BufferedReader var5 = new BufferedReader(new InputStreamReader(var4.getInputStream()))) { - JsonObject var6 = JsonParser.parseReader(var5).getAsJsonObject(); - HashMultimap var7 = HashMultimap.create(); - var6.getAsJsonArray("properties").forEach(lpL2_0 -> { - Event.b(); - JsonObject var5x = ((com.google.gson.JsonElement)lpL2_0).getAsJsonObject(); - String var6x = var5x.get("name").getAsString(); - String var7x = var5x.get("value").getAsString(); - String var8x = var5x.has("signature") ? var5x.get("signature").getAsString() : null; - var7.put(var6x, new Property(var6x, var7x, var8x)); - }); - GameProfile var8 = new GameProfile(var1, var6.get("name").getAsString(), new PropertyMap(var7)); - var9 = var8; - } - - return var9; - } - } catch (Exception var12) { - var12.printStackTrace(); - return null; - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/social/FriendManager.java b/src/main/java/dev/zprestige/prestige/social/FriendManager.java index dd16452..08f28bf 100644 --- a/src/main/java/dev/zprestige/prestige/social/FriendManager.java +++ b/src/main/java/dev/zprestige/prestige/social/FriendManager.java @@ -3,8 +3,6 @@ package dev.zprestige.prestige.social; import dev.zprestige.prestige.annotation.Chainable; import dev.zprestige.prestige.module.misc.Teams; import dev.zprestige.prestige.world.PositionUtil; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; @@ -14,125 +12,53 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.PlayerListEntry; public class FriendManager { - private final Set a = new LinkedHashSet(); - private final Set b = new LinkedHashSet(); + private final Set friends = new LinkedHashSet(); + private final Set enemies = new LinkedHashSet(); @Chainable - public void a(String var1) { - this.a.add(var1); + public void addFriend(String name) { + this.friends.add(name); } @Chainable - public void b(String var1) { - this.a.remove(var1); + public void removeFriend(String name) { + this.friends.remove(name); } - public boolean a(Object[] var1) { - String var4 = (String)var1[0]; - long var2 = (Long)var1[1]; - var2 = 102810091184591L ^ var2; - long var5 = var2 ^ 110880351489726L; - return Teams.a(new Object[]{var4, var5}) ? true : this.a.contains(var4); + public boolean isFriend(String name) { + return Teams.isTeammate(name) ? true : this.friends.contains(name); } @Chainable - public List a() { - return new ArrayList(this.a); + public List getFriends() { + return new ArrayList(this.friends); } - public List b(Object[] var1) { - return new ArrayList(this.b); + public List getEnemies() { + return new ArrayList(this.enemies); } @Chainable - public List c() { + public List getNonFriendPlayerNames() { if (MinecraftClient.getInstance().getNetworkHandler() == null) { return new ArrayList(); } else { - ArrayList var8 = new ArrayList(); + ArrayList names = new ArrayList(); - for (PlayerListEntry var10 : Objects.requireNonNull(MinecraftClient.getInstance().getNetworkHandler()).getPlayerList()) { - if (var10.getProfile() != null - && PositionUtil.a_String________(new Object[]{var10.getProfile(), 3044946865408L}) != null + for (PlayerListEntry entry : Objects.requireNonNull(MinecraftClient.getInstance().getNetworkHandler()).getPlayerList()) { + if (entry.getProfile() != null + && PositionUtil.getProfileName(entry.getProfile()) != null && MinecraftClient.getInstance().player != null && MinecraftClient.getInstance().player.getUuid() != null - && !var10.getProfile().id().equals(MinecraftClient.getInstance().player.getUuid())) { - String var11 = PositionUtil.a_String________(new Object[]{var10.getProfile(), 3044946865408L}); - if (!this.a(new Object[]{var11, 24848952222090L})) { - var8.add(var11); + && !entry.getProfile().id().equals(MinecraftClient.getInstance().player.getUuid())) { + String playerName = PositionUtil.getProfileName(entry.getProfile()); + if (!this.isFriend(playerName)) { + names.add(playerName); } } } - return var8; - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; + return names; } } } diff --git a/src/main/java/dev/zprestige/prestige/social/MojangApi.java b/src/main/java/dev/zprestige/prestige/social/MojangApi.java new file mode 100644 index 0000000..2367d11 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/social/MojangApi.java @@ -0,0 +1,67 @@ +package dev.zprestige.prestige.social; + +import com.google.common.collect.HashMultimap; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import com.mojang.authlib.properties.PropertyMap; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.UUID; + +public class MojangApi { + public static UUID fetchUuid(String username) { + try { + HttpURLConnection connection = (HttpURLConnection)new URL("https://api.mojang.com/users/profiles/minecraft/" + username).openConnection(); + connection.setRequestMethod("GET"); + if (connection.getResponseCode() != 200) { + return null; + } else { + UUID uuid; + try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { + uuid = UUID.fromString(JsonParser.parseReader(reader).getAsJsonObject().get("id").getAsString().replaceFirst("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", "$1-$2-$3-$4-$5")); + } + + return uuid; + } + } catch (Exception exception) { + exception.printStackTrace(); + return null; + } + } + + public static GameProfile fetchProfile(UUID uuid) { + try { + HttpURLConnection connection = (HttpURLConnection)new URL( + "https://sessionserver.mojang.com/session/minecraft/profile/" + uuid.toString() + "?unsigned=false" + ) + .openConnection(); + connection.setRequestMethod("GET"); + if (connection.getResponseCode() != 200) { + return null; + } else { + GameProfile profile; + try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) { + JsonObject json = JsonParser.parseReader(reader).getAsJsonObject(); + HashMultimap properties = HashMultimap.create(); + json.getAsJsonArray("properties").forEach(element -> { + JsonObject property = element.getAsJsonObject(); + String propertyName = property.get("name").getAsString(); + String propertyValue = property.get("value").getAsString(); + String signature = property.has("signature") ? property.get("signature").getAsString() : null; + properties.put(propertyName, new Property(propertyName, propertyValue, signature)); + }); + profile = new GameProfile(uuid, json.get("name").getAsString(), new PropertyMap(properties)); + } + + return profile; + } + } catch (Exception exception) { + exception.printStackTrace(); + return null; + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/type/AnchorCatchState.java b/src/main/java/dev/zprestige/prestige/type/AnchorCatchState.java new file mode 100644 index 0000000..94af008 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/AnchorCatchState.java @@ -0,0 +1,10 @@ +package dev.zprestige.prestige.type; + +public enum AnchorCatchState { + IDLE, + WAIT, + PLACE_ANCHOR, + SAFE_COVER, + CHARGE_ANCHOR, + DETONATE; +} diff --git a/src/main/java/dev/zprestige/prestige/type/AnchorState.java b/src/main/java/dev/zprestige/prestige/type/AnchorState.java deleted file mode 100644 index dcd9202..0000000 --- a/src/main/java/dev/zprestige/prestige/type/AnchorState.java +++ /dev/null @@ -1,85 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum AnchorState { - IDLE, - WAIT, - PLACE_ANCHOR, - SAFE_COVER, - CHARGE_ANCHOR, - DETONATE; - - static { - Object[] var10001 = new Object[]{0L}; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/AnimationMode.java b/src/main/java/dev/zprestige/prestige/type/AnimationMode.java index 26b3577..8d92125 100644 --- a/src/main/java/dev/zprestige/prestige/type/AnimationMode.java +++ b/src/main/java/dev/zprestige/prestige/type/AnimationMode.java @@ -1,77 +1,6 @@ package dev.zprestige.prestige.type; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - public enum AnimationMode { LEGACY, POP; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/type/ArmorState.java b/src/main/java/dev/zprestige/prestige/type/ArmorState.java index 153f109..13aeb76 100644 --- a/src/main/java/dev/zprestige/prestige/type/ArmorState.java +++ b/src/main/java/dev/zprestige/prestige/type/ArmorState.java @@ -1,78 +1,7 @@ package dev.zprestige.prestige.type; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - public enum ArmorState { NONE, EQUIP, RESTORE; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/type/AutoAnchorState.java b/src/main/java/dev/zprestige/prestige/type/AutoAnchorState.java index 39d3beb..9a605b2 100644 --- a/src/main/java/dev/zprestige/prestige/type/AutoAnchorState.java +++ b/src/main/java/dev/zprestige/prestige/type/AutoAnchorState.java @@ -1,80 +1,9 @@ package dev.zprestige.prestige.type; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - public enum AutoAnchorState { IDLE, PLACE_ANCHOR, SAFE_COVER, CHARGE_ANCHOR, DETONATE; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/type/AutoCartState.java b/src/main/java/dev/zprestige/prestige/type/AutoCartState.java new file mode 100644 index 0000000..ae4cbe9 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/AutoCartState.java @@ -0,0 +1,13 @@ +package dev.zprestige.prestige.type; + +public enum AutoCartState { + IDLE, + SWITCH_RAIL, + SWITCH_CART, + SWITCH_SAFE, + WAIT_BACK, + SWITCH_WEAPON, + USE_WEAPON, + CHARGE_BOW, + RELEASE_BOW; +} diff --git a/src/main/java/dev/zprestige/prestige/type/Axis.java b/src/main/java/dev/zprestige/prestige/type/Axis.java deleted file mode 100644 index e96aed2..0000000 --- a/src/main/java/dev/zprestige/prestige/type/Axis.java +++ /dev/null @@ -1,77 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum Axis { - X, - Y; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/BlendMode.java b/src/main/java/dev/zprestige/prestige/type/BlendMode.java index 3e83991..86f4245 100644 --- a/src/main/java/dev/zprestige/prestige/type/BlendMode.java +++ b/src/main/java/dev/zprestige/prestige/type/BlendMode.java @@ -1,80 +1,9 @@ package dev.zprestige.prestige.type; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - public enum BlendMode { MULTIPLY, OVERLAY, REPLACE, ADD, SCREEN; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/type/BlockBreakType.java b/src/main/java/dev/zprestige/prestige/type/BlockBreakType.java deleted file mode 100644 index 0194d8e..0000000 --- a/src/main/java/dev/zprestige/prestige/type/BlockBreakType.java +++ /dev/null @@ -1,85 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum BlockBreakType { - CRYSTAL(1.0F), - ANCHOR(1.0F), - OBSIDIAN(0.5F), - MACE(1.0F); - - public final float confidence; - - private BlockBreakType(float var3) { - this.confidence = var3; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/BowMode.java b/src/main/java/dev/zprestige/prestige/type/BowMode.java deleted file mode 100644 index 70ed08c..0000000 --- a/src/main/java/dev/zprestige/prestige/type/BowMode.java +++ /dev/null @@ -1,77 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum BowMode { - PASSIVE, - BOW; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/CartCatchState.java b/src/main/java/dev/zprestige/prestige/type/CartCatchState.java new file mode 100644 index 0000000..aab71b1 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/CartCatchState.java @@ -0,0 +1,15 @@ +package dev.zprestige.prestige.type; + +public enum CartCatchState { + IDLE, + ARMED, + SWITCH_RAIL, + SWITCH_CART, + SWITCH_FIRE, + SWITCH_XBOW, + FIRE, + SWITCH_BOW, + USE_BOW, + CHARGE_WAIT, + RELEASE; +} diff --git a/src/main/java/dev/zprestige/prestige/type/CartIgnitionMode.java b/src/main/java/dev/zprestige/prestige/type/CartIgnitionMode.java new file mode 100644 index 0000000..f26d2e1 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/CartIgnitionMode.java @@ -0,0 +1,6 @@ +package dev.zprestige.prestige.type; + +public enum CartIgnitionMode { + PASSIVE, + BOW; +} diff --git a/src/main/java/dev/zprestige/prestige/type/CartState.java b/src/main/java/dev/zprestige/prestige/type/CartState.java deleted file mode 100644 index 3ea4994..0000000 --- a/src/main/java/dev/zprestige/prestige/type/CartState.java +++ /dev/null @@ -1,85 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum CartState { - IDLE, - SWITCH_RAIL, - SWITCH_CART, - SWITCH_FIRE, - SWITCH_XBOW, - FIRE; - - static { - Object[] var10001 = new Object[]{0L}; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/CobwebPlaceState.java b/src/main/java/dev/zprestige/prestige/type/CobwebPlaceState.java new file mode 100644 index 0000000..97b0636 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/CobwebPlaceState.java @@ -0,0 +1,8 @@ +package dev.zprestige.prestige.type; + +public enum CobwebPlaceState { + NONE, + HOTBAR_SWAPPED, + INVENTORY_QUEUED, + PLACE_SENT; +} diff --git a/src/main/java/dev/zprestige/prestige/type/CrystalState.java b/src/main/java/dev/zprestige/prestige/type/CrystalState.java deleted file mode 100644 index 3d87c06..0000000 --- a/src/main/java/dev/zprestige/prestige/type/CrystalState.java +++ /dev/null @@ -1,79 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum CrystalState { - IDLE, - PLACE_OBSIDIAN, - PLACE_CRYSTAL, - BREAK_CRYSTAL; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/DiagonalPearlState.java b/src/main/java/dev/zprestige/prestige/type/DiagonalPearlState.java new file mode 100644 index 0000000..528559d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/DiagonalPearlState.java @@ -0,0 +1,8 @@ +package dev.zprestige.prestige.type; + +public enum DiagonalPearlState { + IDLE, + THROW_PEARL, + WAIT_FOR_LAUNCH, + THROW_WIND_CHARGE; +} diff --git a/src/main/java/dev/zprestige/prestige/type/DoubleAnchorState.java b/src/main/java/dev/zprestige/prestige/type/DoubleAnchorState.java index f4ddb01..b55bc81 100644 --- a/src/main/java/dev/zprestige/prestige/type/DoubleAnchorState.java +++ b/src/main/java/dev/zprestige/prestige/type/DoubleAnchorState.java @@ -1,8 +1,5 @@ package dev.zprestige.prestige.type; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - public enum DoubleAnchorState { IDLE, PLACE_1, @@ -11,76 +8,4 @@ public enum DoubleAnchorState { GLOW_2, EXPLODE_2, RESTORE; - - static { - Object[] var10001 = new Object[]{0L}; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/type/Easing.java b/src/main/java/dev/zprestige/prestige/type/Easing.java index f957b0c..e826ba2 100644 --- a/src/main/java/dev/zprestige/prestige/type/Easing.java +++ b/src/main/java/dev/zprestige/prestige/type/Easing.java @@ -1,151 +1,76 @@ package dev.zprestige.prestige.type; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.function.DoubleUnaryOperator; public enum Easing { - LINEAR(lpL433_0 -> lpL433_0), - SINE_IN(lpL432_0 -> 1.0 - Math.cos(lpL432_0 * Math.PI / 2.0)), - SINE_OUT(lpL431_0 -> Math.sin(lpL431_0 * Math.PI / 2.0)), - SINE_IN_OUT(lpL430_0 -> -(Math.cos(Math.PI * lpL430_0) - 1.0) / 2.0), - CUBIC_IN(lpL429_0 -> lpL429_0 * lpL429_0 * lpL429_0), - CUBIC_OUT(lpL428_0 -> 1.0 - Math.pow(1.0 - lpL428_0, 3.0)), - CUBIC_IN_OUT(lpL427_0 -> lpL427_0 < 0.5 ? 4.0 * lpL427_0 * lpL427_0 * lpL427_0 : 1.0 - Math.pow(-2.0 * lpL427_0 + 2.0, 3.0) / 2.0), - QUAD_IN(lpL426_0 -> lpL426_0 * lpL426_0), - QUAD_OUT(lpL425_0 -> 1.0 - (1.0 - lpL425_0) * (1.0 - lpL425_0)), - QUAD_IN_OUT(lpL424_0 -> lpL424_0 < 0.5 ? 2.0 * lpL424_0 * lpL424_0 : 1.0 - Math.pow(-2.0 * lpL424_0 + 2.0, 2.0) / 2.0), - QUART_IN(lpL423_0 -> lpL423_0 * lpL423_0 * lpL423_0 * lpL423_0), - QUART_OUT(lpL422_0 -> 1.0 - Math.pow(1.0 - lpL422_0, 4.0)), - QUART_IN_OUT(lpL421_0 -> lpL421_0 < 0.5 ? 8.0 * lpL421_0 * lpL421_0 * lpL421_0 * lpL421_0 : 1.0 - Math.pow(-2.0 * lpL421_0 + 2.0, 4.0) / 2.0), - QUINT_IN(lpL420_0 -> lpL420_0 * lpL420_0 * lpL420_0 * lpL420_0 * lpL420_0), - QUINT_OUT(lpL419_0 -> 1.0 - Math.pow(1.0 - lpL419_0, 5.0)), - QUINT_IN_OUT(lpL418_0 -> lpL418_0 < 0.5 ? 16.0 * lpL418_0 * lpL418_0 * lpL418_0 * lpL418_0 * lpL418_0 : 1.0 - Math.pow(-2.0 * lpL418_0 + 2.0, 5.0) / 2.0), - CIRC_IN(lpL417_0 -> 1.0 - Math.sqrt(1.0 - Math.pow(lpL417_0, 2.0))), - CIRC_OUT(lpL416_0 -> Math.sqrt(1.0 - Math.pow(lpL416_0 - 1.0, 2.0))), + LINEAR(progress -> progress), + SINE_IN(progress -> 1.0 - Math.cos(progress * Math.PI / 2.0)), + SINE_OUT(progress -> Math.sin(progress * Math.PI / 2.0)), + SINE_IN_OUT(progress -> -(Math.cos(Math.PI * progress) - 1.0) / 2.0), + CUBIC_IN(progress -> progress * progress * progress), + CUBIC_OUT(progress -> 1.0 - Math.pow(1.0 - progress, 3.0)), + CUBIC_IN_OUT(progress -> progress < 0.5 ? 4.0 * progress * progress * progress : 1.0 - Math.pow(-2.0 * progress + 2.0, 3.0) / 2.0), + QUAD_IN(progress -> progress * progress), + QUAD_OUT(progress -> 1.0 - (1.0 - progress) * (1.0 - progress)), + QUAD_IN_OUT(progress -> progress < 0.5 ? 2.0 * progress * progress : 1.0 - Math.pow(-2.0 * progress + 2.0, 2.0) / 2.0), + QUART_IN(progress -> progress * progress * progress * progress), + QUART_OUT(progress -> 1.0 - Math.pow(1.0 - progress, 4.0)), + QUART_IN_OUT(progress -> progress < 0.5 ? 8.0 * progress * progress * progress * progress : 1.0 - Math.pow(-2.0 * progress + 2.0, 4.0) / 2.0), + QUINT_IN(progress -> progress * progress * progress * progress * progress), + QUINT_OUT(progress -> 1.0 - Math.pow(1.0 - progress, 5.0)), + QUINT_IN_OUT(progress -> progress < 0.5 ? 16.0 * progress * progress * progress * progress * progress : 1.0 - Math.pow(-2.0 * progress + 2.0, 5.0) / 2.0), + CIRC_IN(progress -> 1.0 - Math.sqrt(1.0 - Math.pow(progress, 2.0))), + CIRC_OUT(progress -> Math.sqrt(1.0 - Math.pow(progress - 1.0, 2.0))), CIRC_IN_OUT( - lpL415_0 -> lpL415_0 < 0.5 - ? (1.0 - Math.sqrt(1.0 - Math.pow(2.0 * lpL415_0, 2.0))) / 2.0 - : (Math.sqrt(1.0 - Math.pow(-2.0 * lpL415_0 + 2.0, 2.0)) + 1.0) / 2.0 + progress -> progress < 0.5 + ? (1.0 - Math.sqrt(1.0 - Math.pow(2.0 * progress, 2.0))) / 2.0 + : (Math.sqrt(1.0 - Math.pow(-2.0 * progress + 2.0, 2.0)) + 1.0) / 2.0 ), - EXPO_IN(lpL414_0 -> lpL414_0 == 0.0 ? 0.0 : Math.pow(2.0, 10.0 * lpL414_0 - 10.0)), - EXPO_OUT(lpL413_0 -> lpL413_0 == 1.0 ? 1.0 : 1.0 - Math.pow(2.0, -10.0 * lpL413_0)), + EXPO_IN(progress -> progress == 0.0 ? 0.0 : Math.pow(2.0, 10.0 * progress - 10.0)), + EXPO_OUT(progress -> progress == 1.0 ? 1.0 : 1.0 - Math.pow(2.0, -10.0 * progress)), EXPO_IN_OUT( - lpL412_0 -> lpL412_0 == 0.0 + progress -> progress == 0.0 ? 0.0 - : (lpL412_0 == 1.0 ? 1.0 : (lpL412_0 < 0.5 ? Math.pow(2.0, 20.0 * lpL412_0 - 10.0) / 2.0 : (2.0 - Math.pow(2.0, -20.0 * lpL412_0 + 10.0)) / 2.0)) + : (progress == 1.0 ? 1.0 : (progress < 0.5 ? Math.pow(2.0, 20.0 * progress - 10.0) / 2.0 : (2.0 - Math.pow(2.0, -20.0 * progress + 10.0)) / 2.0)) ), ELASTIC_IN( - lpL411_0 -> lpL411_0 == 0.0 + progress -> progress == 0.0 ? 0.0 - : (lpL411_0 == 1.0 ? 1.0 : -Math.pow(2.0, 10.0 * lpL411_0 - 10.0) * Math.sin((lpL411_0 * 10.0 - 10.75) * (Math.PI * 2.0 / 3.0))) + : (progress == 1.0 ? 1.0 : -Math.pow(2.0, 10.0 * progress - 10.0) * Math.sin((progress * 10.0 - 10.75) * (Math.PI * 2.0 / 3.0))) ), ELASTIC_OUT( - lpL410_0 -> lpL410_0 == 0.0 + progress -> progress == 0.0 ? 0.0 - : (lpL410_0 == 1.0 ? 1.0 : Math.pow(2.0, -10.0 * lpL410_0) * Math.sin((lpL410_0 * 10.0 - 0.75) * (Math.PI * 2.0 / 3.0)) + 1.0) + : (progress == 1.0 ? 1.0 : Math.pow(2.0, -10.0 * progress) * Math.sin((progress * 10.0 - 0.75) * (Math.PI * 2.0 / 3.0)) + 1.0) ), ELASTIC_IN_OUT( - lpL409_0 -> lpL409_0 == 0.0 + progress -> progress == 0.0 ? 0.0 : ( - lpL409_0 == 1.0 + progress == 1.0 ? 1.0 : ( - lpL409_0 < 0.5 - ? -(Math.pow(2.0, 20.0 * lpL409_0 - 10.0) * Math.sin((20.0 * lpL409_0 - 11.125) * (Math.PI * 4.0 / 9.0))) / 2.0 - : Math.pow(2.0, -20.0 * lpL409_0 + 10.0) * Math.sin((20.0 * lpL409_0 - 11.125) * (Math.PI * 4.0 / 9.0)) / 2.0 + 1.0 + progress < 0.5 + ? -(Math.pow(2.0, 20.0 * progress - 10.0) * Math.sin((20.0 * progress - 11.125) * (Math.PI * 4.0 / 9.0))) / 2.0 + : Math.pow(2.0, -20.0 * progress + 10.0) * Math.sin((20.0 * progress - 11.125) * (Math.PI * 4.0 / 9.0)) / 2.0 + 1.0 ) ) ), - BACK_IN(lpL408_0 -> 2.70158 * lpL408_0 * lpL408_0 * lpL408_0 - 1.70158 * lpL408_0 * lpL408_0), - BACK_OUT(lpL407_0 -> 1.0 + 2.70158 * Math.pow(lpL407_0 - 1.0, 3.0) + 1.70158 * Math.pow(lpL407_0 - 1.0, 2.0)), + BACK_IN(progress -> 2.70158 * progress * progress * progress - 1.70158 * progress * progress), + BACK_OUT(progress -> 1.0 + 2.70158 * Math.pow(progress - 1.0, 3.0) + 1.70158 * Math.pow(progress - 1.0, 2.0)), BACK_IN_OUT( - lpL406_0 -> lpL406_0 < 0.5 - ? Math.pow(2.0 * lpL406_0, 2.0) * (7.189819 * lpL406_0 - 2.5949095) / 2.0 - : (Math.pow(2.0 * lpL406_0 - 2.0, 2.0) * (3.5949095 * (lpL406_0 * 2.0 - 2.0) + 2.5949095) + 2.0) / 2.0 + progress -> progress < 0.5 + ? Math.pow(2.0 * progress, 2.0) * (7.189819 * progress - 2.5949095) / 2.0 + : (Math.pow(2.0 * progress - 2.0, 2.0) * (3.5949095 * (progress * 2.0 - 2.0) + 2.5949095) + 2.0) / 2.0 ); - private final DoubleUnaryOperator a; + private final DoubleUnaryOperator function; - private Easing(DoubleUnaryOperator var3) { - this.a = var3; + private Easing(DoubleUnaryOperator operator) { + this.function = operator; } - public double a(Object[] var1) { - double var2 = (Double)var1[0]; - return this.a.applyAsDouble(var2); - } - - static { - Object[] var10001 = new Object[]{0L}; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public double apply(double progress) { + return this.function.applyAsDouble(progress); } } diff --git a/src/main/java/dev/zprestige/prestige/type/EventPhase.java b/src/main/java/dev/zprestige/prestige/type/EventPhase.java index 88616b9..8896376 100644 --- a/src/main/java/dev/zprestige/prestige/type/EventPhase.java +++ b/src/main/java/dev/zprestige/prestige/type/EventPhase.java @@ -1,78 +1,7 @@ package dev.zprestige.prestige.type; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - public enum EventPhase { PRE, NONE, POST; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/type/FastPearlCatchStage.java b/src/main/java/dev/zprestige/prestige/type/FastPearlCatchStage.java new file mode 100644 index 0000000..bdef75b --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/FastPearlCatchStage.java @@ -0,0 +1,8 @@ +package dev.zprestige.prestige.type; + +public enum FastPearlCatchStage { + PREP, + PEARL, + WIND, + RESTORE; +} diff --git a/src/main/java/dev/zprestige/prestige/type/FireState.java b/src/main/java/dev/zprestige/prestige/type/FireState.java deleted file mode 100644 index 476d272..0000000 --- a/src/main/java/dev/zprestige/prestige/type/FireState.java +++ /dev/null @@ -1,90 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum FireState { - IDLE, - ARMED, - SWITCH_RAIL, - SWITCH_CART, - SWITCH_FIRE, - SWITCH_XBOW, - FIRE, - SWITCH_BOW, - USE_BOW, - CHARGE_WAIT, - RELEASE; - - static { - Object[] var10001 = new Object[]{0L}; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/GlPrimitive.java b/src/main/java/dev/zprestige/prestige/type/GlPrimitive.java index a6fee23..662e997 100644 --- a/src/main/java/dev/zprestige/prestige/type/GlPrimitive.java +++ b/src/main/java/dev/zprestige/prestige/type/GlPrimitive.java @@ -1,8 +1,5 @@ package dev.zprestige.prestige.type; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - public enum GlPrimitive { QUADS, TRIANGLES, @@ -10,76 +7,4 @@ public enum GlPrimitive { DEBUG_LINE_STRIP, QUAD_STRIP, LINES; - - static { - Object[] var10001 = new Object[]{0L}; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/type/GuideAxis.java b/src/main/java/dev/zprestige/prestige/type/GuideAxis.java new file mode 100644 index 0000000..202f826 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/GuideAxis.java @@ -0,0 +1,6 @@ +package dev.zprestige.prestige.type; + +public enum GuideAxis { + X, + Y; +} diff --git a/src/main/java/dev/zprestige/prestige/type/HitFlickState.java b/src/main/java/dev/zprestige/prestige/type/HitFlickState.java new file mode 100644 index 0000000..789d5ce --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/HitFlickState.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.type; + +public enum HitFlickState { + IDLE, + FLICK, + ATTACK; +} diff --git a/src/main/java/dev/zprestige/prestige/type/HudAlignment.java b/src/main/java/dev/zprestige/prestige/type/HudAlignment.java new file mode 100644 index 0000000..ed64073 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/HudAlignment.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.type; + +public enum HudAlignment { + Start, + Center, + End; +} diff --git a/src/main/java/dev/zprestige/prestige/type/HudAnchor.java b/src/main/java/dev/zprestige/prestige/type/HudAnchor.java new file mode 100644 index 0000000..c3d1ec4 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/HudAnchor.java @@ -0,0 +1,8 @@ +package dev.zprestige.prestige.type; + +public enum HudAnchor { + TopLeft, + TopRight, + BottomLeft, + BottomRight; +} diff --git a/src/main/java/dev/zprestige/prestige/type/KillAuraState.java b/src/main/java/dev/zprestige/prestige/type/KillAuraState.java deleted file mode 100644 index 6687d8f..0000000 --- a/src/main/java/dev/zprestige/prestige/type/KillAuraState.java +++ /dev/null @@ -1,78 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum KillAuraState { - IDLE, - FLICK, - ATTACK; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/NotificationType.java b/src/main/java/dev/zprestige/prestige/type/NotificationType.java index 792a6f9..8c44f91 100644 --- a/src/main/java/dev/zprestige/prestige/type/NotificationType.java +++ b/src/main/java/dev/zprestige/prestige/type/NotificationType.java @@ -1,8 +1,6 @@ package dev.zprestige.prestige.type; import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; public enum NotificationType { ERROR(new Color(244, 67, 54)), @@ -11,77 +9,9 @@ public enum NotificationType { SUCCESS(new Color(76, 175, 80)), NEUTRAL(new Color(128, 128, 128)); - public final Color a; + public final Color color; - private NotificationType(Color var3) { - this.a = var3; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private NotificationType(Color displayColor) { + this.color = displayColor; } } diff --git a/src/main/java/dev/zprestige/prestige/type/ObbyCrystalState.java b/src/main/java/dev/zprestige/prestige/type/ObbyCrystalState.java new file mode 100644 index 0000000..eddcdb4 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/ObbyCrystalState.java @@ -0,0 +1,8 @@ +package dev.zprestige.prestige.type; + +public enum ObbyCrystalState { + IDLE, + PLACE_OBSIDIAN, + PLACE_CRYSTAL, + BREAK_CRYSTAL; +} diff --git a/src/main/java/dev/zprestige/prestige/type/PacketResult.java b/src/main/java/dev/zprestige/prestige/type/PacketResult.java deleted file mode 100644 index 1d9d1ea..0000000 --- a/src/main/java/dev/zprestige/prestige/type/PacketResult.java +++ /dev/null @@ -1,78 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum PacketResult { - IMMEDIATE, - QUEUED, - REJECTED; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/PearlStage.java b/src/main/java/dev/zprestige/prestige/type/PearlStage.java deleted file mode 100644 index e203d61..0000000 --- a/src/main/java/dev/zprestige/prestige/type/PearlStage.java +++ /dev/null @@ -1,79 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum PearlStage { - PREP, - PEARL, - WIND, - RESTORE; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/PearlState.java b/src/main/java/dev/zprestige/prestige/type/PearlState.java deleted file mode 100644 index c6cf770..0000000 --- a/src/main/java/dev/zprestige/prestige/type/PearlState.java +++ /dev/null @@ -1,79 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum PearlState { - IDLE, - THROW_PEARL, - WAIT_FOR_LAUNCH, - THROW_WIND_CHARGE; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/PlaceState.java b/src/main/java/dev/zprestige/prestige/type/PlaceState.java deleted file mode 100644 index f93da8a..0000000 --- a/src/main/java/dev/zprestige/prestige/type/PlaceState.java +++ /dev/null @@ -1,79 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum PlaceState { - NONE, - HOTBAR_SWAPPED, - INVENTORY_QUEUED, - PLACE_SENT; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/RailState.java b/src/main/java/dev/zprestige/prestige/type/RailState.java deleted file mode 100644 index dfe8dda..0000000 --- a/src/main/java/dev/zprestige/prestige/type/RailState.java +++ /dev/null @@ -1,88 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum RailState { - IDLE, - SWITCH_RAIL, - SWITCH_CART, - SWITCH_SAFE, - WAIT_BACK, - SWITCH_WEAPON, - USE_WEAPON, - CHARGE_BOW, - RELEASE_BOW; - - static { - Object[] var10001 = new Object[]{0L}; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/ScoopState.java b/src/main/java/dev/zprestige/prestige/type/ScoopState.java index 8d6014b..04d4386 100644 --- a/src/main/java/dev/zprestige/prestige/type/ScoopState.java +++ b/src/main/java/dev/zprestige/prestige/type/ScoopState.java @@ -1,80 +1,9 @@ package dev.zprestige.prestige.type; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - public enum ScoopState { IDLE, PLACE, WAIT, SCOOP, BACK; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } } diff --git a/src/main/java/dev/zprestige/prestige/type/SettingFlag.java b/src/main/java/dev/zprestige/prestige/type/SettingFlag.java deleted file mode 100644 index 82bcc30..0000000 --- a/src/main/java/dev/zprestige/prestige/type/SettingFlag.java +++ /dev/null @@ -1,78 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum SettingFlag { - Start, - Center, - End; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/ShaderMode.java b/src/main/java/dev/zprestige/prestige/type/ShaderMode.java index 13a814e..218ccfd 100644 --- a/src/main/java/dev/zprestige/prestige/type/ShaderMode.java +++ b/src/main/java/dev/zprestige/prestige/type/ShaderMode.java @@ -5,92 +5,21 @@ import dev.zprestige.prestige.render.ChamsOutlineShader; import dev.zprestige.prestige.render.OutlineShader; import dev.zprestige.prestige.render.PostShader; import dev.zprestige.prestige.render.RainbowOutlineShader; -import java.lang.reflect.Field; -import java.lang.reflect.Method; public enum ShaderMode { NONE(null), - NORMAL(new OutlineShader(0L)), - CHAMS(new ChamsOutlineShader(0L)), - AURA(new AuraOutlineShader(0L)), - RAINBOW(new RainbowOutlineShader(0L)); + NORMAL(new OutlineShader()), + CHAMS(new ChamsOutlineShader()), + AURA(new AuraOutlineShader()), + RAINBOW(new RainbowOutlineShader()); - private final PostShader a; + private final PostShader shader; - private ShaderMode(PostShader var3) { - this.a = var3; + private ShaderMode(PostShader postShader) { + this.shader = postShader; } - public PostShader a(Object[] var1) { - return this.a; - } - - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public PostShader getShader() { + return this.shader; } } diff --git a/src/main/java/dev/zprestige/prestige/type/SwapQueueResult.java b/src/main/java/dev/zprestige/prestige/type/SwapQueueResult.java new file mode 100644 index 0000000..85bc10a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/SwapQueueResult.java @@ -0,0 +1,7 @@ +package dev.zprestige.prestige.type; + +public enum SwapQueueResult { + IMMEDIATE, + QUEUED, + REJECTED; +} diff --git a/src/main/java/dev/zprestige/prestige/type/ThreatType.java b/src/main/java/dev/zprestige/prestige/type/ThreatType.java new file mode 100644 index 0000000..91fe7b4 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/ThreatType.java @@ -0,0 +1,14 @@ +package dev.zprestige.prestige.type; + +public enum ThreatType { + CRYSTAL(1.0F), + ANCHOR(1.0F), + OBSIDIAN(0.5F), + MACE(1.0F); + + public final float confidence; + + private ThreatType(float weight) { + this.confidence = weight; + } +} diff --git a/src/main/java/dev/zprestige/prestige/type/TrajectoryType.java b/src/main/java/dev/zprestige/prestige/type/TrajectoryType.java deleted file mode 100644 index 9bffef1..0000000 --- a/src/main/java/dev/zprestige/prestige/type/TrajectoryType.java +++ /dev/null @@ -1,79 +0,0 @@ -package dev.zprestige.prestige.type; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public enum TrajectoryType { - TopLeft, - TopRight, - BottomLeft, - BottomRight; - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/type/XbowCartState.java b/src/main/java/dev/zprestige/prestige/type/XbowCartState.java new file mode 100644 index 0000000..da7741f --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/type/XbowCartState.java @@ -0,0 +1,10 @@ +package dev.zprestige.prestige.type; + +public enum XbowCartState { + IDLE, + SWITCH_RAIL, + SWITCH_CART, + SWITCH_FIRE, + SWITCH_XBOW, + FIRE; +} diff --git a/src/main/java/dev/zprestige/prestige/ui/DevCmd.java b/src/main/java/dev/zprestige/prestige/ui/DevCmd.java index bf81445..fe2f28b 100644 --- a/src/main/java/dev/zprestige/prestige/ui/DevCmd.java +++ b/src/main/java/dev/zprestige/prestige/ui/DevCmd.java @@ -45,10 +45,7 @@ public final class DevCmd { /** Event types that currently have listeners on the client EventBus (module lifecycle check): type -> listener owner classes. */ public static String listeners() { try { - Object bus = Class.forName("dev.zprestige.prestige.client.Prestige").getField("eventBus").get(null); - java.lang.reflect.Field f = bus.getClass().getDeclaredField("listeners"); - f.setAccessible(true); - java.util.Map map = (java.util.Map) f.get(bus); + java.util.Map map = (java.util.Map) fieldOfType(dev.zprestige.prestige.EventBus.class, java.util.Map.class).get(dev.zprestige.prestige.client.Prestige.eventBus); int total = 0; StringBuilder sb = new StringBuilder(); java.util.TreeMap sorted = new java.util.TreeMap<>(); @@ -56,11 +53,7 @@ public final class DevCmd { Object[] arr = (Object[]) e.getValue(); total += arr.length; java.util.TreeSet owners = new java.util.TreeSet<>(); - for (Object le : arr) { - java.lang.reflect.Method m = le.getClass().getDeclaredMethod("a_Object", Object[].class); - m.setAccessible(true); - owners.add(m.invoke(le, (Object) new Object[0]).getClass().getSimpleName()); - } + for (Object le : arr) owners.add(((dev.zprestige.prestige.ListenerEntry) le).getTarget().getClass().getSimpleName()); sorted.put(((Class) e.getKey()).getSimpleName(), owners.toString()); } sb.append("LISTENERS types=").append(map.size()).append(" entries=").append(total); @@ -72,48 +65,48 @@ public final class DevCmd { } } - /** Dev smoke test (command "state hudsmoke"): runs the HUD q() render hooks and the two recovered Runnables of the client through reflection. */ + /** Dev smoke test (command "state hudsmoke"): draws every HUD element's editor outline and runs the two recovered Runnables of the client. */ private static String hudSmoke() { StringBuilder sb = new StringBuilder("HUDSMOKE"); try { - Class pc = Class.forName("dev.zprestige.prestige.client.Prestige"); - Object editor = pc.getField("l").get(null); - java.lang.reflect.Field fa = editor.getClass().getDeclaredField("a"); - fa.setAccessible(true); - List els = (List) fa.get(editor); - sb.append(" elements=").append(els.size()); + dev.zprestige.prestige.hud.HudElement[] els = (dev.zprestige.prestige.hud.HudElement[]) + fieldOfType(dev.zprestige.prestige.gui.HudEditorScreen.class, dev.zprestige.prestige.hud.HudElement[].class).get(dev.zprestige.prestige.client.Prestige.hudEditorScreen); + sb.append(" elements=").append(els.length); org.joml.Matrix4f mat = new org.joml.Matrix4f(); - for (Object el : els) { + for (dev.zprestige.prestige.hud.HudElement el : els) { String n = el.getClass().getSimpleName(); try { - Class hc = Class.forName("dev.zprestige.prestige.hud.HudElement"); - for (String f : new String[]{"e", "f", "g", "h"}) { java.lang.reflect.Field ff = hc.getDeclaredField(f); ff.setAccessible(true); ff.setFloat(el, f.equals("g") ? 80f : f.equals("h") ? 24f : 20f); } - java.lang.reflect.Method q = hc.getDeclaredMethod("q", Object[].class); - q.setAccessible(true); - q.invoke(el, (Object) new Object[]{mat, 0L}); - sb.append(" [").append(n).append(".q ok]"); + el.x = 20f; + el.y = 20f; + el.width = 80f; + el.height = 24f; + el.renderEditorOutline(mat); + sb.append(" [").append(n).append(".renderEditorOutline ok]"); } catch (Throwable t) { Throwable r = t; while (r.getCause() != null) r = r.getCause(); - sb.append(" [").append(n).append(".q FAIL ").append(r).append("]"); + sb.append(" [").append(n).append(".renderEditorOutline FAIL ").append(r).append("]"); } } - // RenderHelper24 (dE.run): with the player present it selects a hotbar slot, otherwise returns - Object rot = pc.getField("o").get(null); - Class rc = Class.forName("dev.zprestige.prestige.render.RenderHelper24"); - Object r24 = rc.getConstructors()[0].newInstance(rot, 0); - ((Runnable) r24).run(); - sb.append(" [RenderHelper24.run ok]"); - // CobwebPlacerHelper (av.run) on the live CobwebPlacer module + // QueuedSlotSelect: with the player present it selects a hotbar slot, otherwise returns + new dev.zprestige.prestige.render.QueuedSlotSelect(dev.zprestige.prestige.client.Prestige.silentRotationManager, 0).run(); + sb.append(" [QueuedSlotSelect.run ok]"); + // CobwebSwitchBackTask on the live CobwebPlacer module Bridge.LiveModule cw = Bridge.byName("Cobweb Placer"); if (cw != null) { - Object r = Class.forName("dev.zprestige.prestige.world.CobwebPlacerHelper").getConstructors()[0].newInstance(cw.handle); - ((Runnable) r).run(); - sb.append(" [CobwebPlacerHelper.run ok]"); - } else sb.append(" [CobwebPlacerHelper: module not found]"); + new dev.zprestige.prestige.world.CobwebSwitchBackTask((dev.zprestige.prestige.module.combat.CobwebPlacer) cw.handle).run(); + sb.append(" [CobwebSwitchBackTask.run ok]"); + } else sb.append(" [CobwebSwitchBackTask: module not found]"); } catch (Throwable t) { Throwable r = t; while (r.getCause() != null) r = r.getCause(); sb.append(" ABORT ").append(r); } return sb.toString(); } + + /** First instance field of the given type (looked up by type so renaming the field cannot break it). */ + private static java.lang.reflect.Field fieldOfType(Class owner, Class type) throws NoSuchFieldException { + for (java.lang.reflect.Field f : owner.getDeclaredFields()) + if (!java.lang.reflect.Modifier.isStatic(f.getModifiers()) && type.isAssignableFrom(f.getType())) { f.setAccessible(true); return f; } + throw new NoSuchFieldException(type.getSimpleName() + " in " + owner.getSimpleName()); + } } diff --git a/src/main/java/dev/zprestige/prestige/ui/Input.java b/src/main/java/dev/zprestige/prestige/ui/Input.java index c0e9e99..f02a868 100644 --- a/src/main/java/dev/zprestige/prestige/ui/Input.java +++ b/src/main/java/dev/zprestige/prestige/ui/Input.java @@ -1184,7 +1184,7 @@ public final class Input { if (!active) return; syncMouse(); if (WidgetsPage.scroll(dy)) return; - Ui.State s = Ui.S; ModulesPage.St p = ModulesPage.P; + Ui.State s = Ui.S; float notch = (float) dy; // SWORD1/120: one wheel notch = 1 if (searchAlpha > 0.2f && !results.isEmpty()) { float h = searchPopupH; @@ -1328,7 +1328,7 @@ public final class Input { /** WM_CHAR part of sub_180145320. */ static void onChar(int c) { - Ui.State s = Ui.S; ModulesPage.St p = ModulesPage.P; + Ui.State s = Ui.S; if (c != 8 && textEdit && textSetting != null) { if (c >= 32 && c <= 126) { textBuf.append((char) c); commitText(); snd("pop"); } return; diff --git a/src/main/java/dev/zprestige/prestige/ui/LocalConfigs.java b/src/main/java/dev/zprestige/prestige/ui/LocalConfigs.java index c554ee3..0b50ee6 100644 --- a/src/main/java/dev/zprestige/prestige/ui/LocalConfigs.java +++ b/src/main/java/dev/zprestige/prestige/ui/LocalConfigs.java @@ -18,8 +18,8 @@ import java.util.stream.Stream; /** * Local (offline) backend of the Configs page. Every config is one JSON file in {@code /prestige/configs/}: - * the card metadata plus the client's own snapshot ({@code ConfigManager.a()}), which is applied again with - * {@code ConfigManager.a(String)}. "Public configs" lists the configs saved with Public visibility, "Personal configs" + * the card metadata plus the client's own snapshot ({@code ConfigManager.saveToJson()}), which is applied again with + * {@code ConfigManager.loadFromJson(String)}. "Public configs" lists the configs saved with Public visibility, "Personal configs" * lists all of them; Create saves the current module/HUD state, Update overwrites it, Delete removes the file. */ public final class LocalConfigs { @@ -36,7 +36,7 @@ public final class LocalConfigs { List tags = new ArrayList<>(); int visibility; // 0 personal, 1 public int downloads; - JsonObject data; // snapshot produced by ConfigManager.a() + JsonObject data; // snapshot produced by ConfigManager.saveToJson() } private static boolean ready; @@ -151,8 +151,8 @@ public final class LocalConfigs { // ------------------------------------------------------------------ actions private static String snapshot() { - if (Prestige.e == null) return null; - try { return Prestige.e.a(); } catch (Throwable t) { System.out.println("[prestige-ui] snapshot: " + t); return null; } + if (Prestige.configManager == null) return null; + try { return Prestige.configManager.saveToJson(); } catch (Throwable t) { System.out.println("[prestige-ui] snapshot: " + t); return null; } } static void create() { @@ -190,10 +190,10 @@ public final class LocalConfigs { static void download(ConfigsPage.Cfg c) { Entry e = find(c); if (e == null || e.data == null) { WidgetsPage.toast("Config is empty"); return; } - if (Prestige.e == null) { WidgetsPage.toast("Client is not ready"); return; } + if (Prestige.configManager == null) { WidgetsPage.toast("Client is not ready"); return; } try { - Prestige.e.a(e.data.toString()); - String report = Prestige.e.b(); + Prestige.configManager.loadFromJson(e.data.toString()); + String report = Prestige.configManager.consumeLoadReport(); e.downloads++; c.downloads = e.downloads; write(e); diff --git a/src/main/java/dev/zprestige/prestige/ui/Ui.java b/src/main/java/dev/zprestige/prestige/ui/Ui.java index 72feb3b..ec68b6a 100644 --- a/src/main/java/dev/zprestige/prestige/ui/Ui.java +++ b/src/main/java/dev/zprestige/prestige/ui/Ui.java @@ -148,20 +148,6 @@ public final class Ui { return y + step; } - private static void searchBox(float textA) { - State s = S; - rect(760f, 42f, 310f, 36f, 8f, true, Theme.e31C0()); - float v98 = s.searchFocus * 0.6f; - rect(760f, 42f, 310f, 36f, 8f, false, lerp(Theme.border(), Theme.accent(), v98)); - float v99 = s.searchFocus; - searchIcon(774f, 51f, 18f, lerp(Theme.muted(), Theme.accent(), v99 * 0.8f)); - if (s.search.isEmpty()) { - textBox("Search modules", 800f, 51f, 250f, 18f, 3, Theme.muted(), false, false); - } else { - textBoxEllipsis(s.search, 800f, 51f, 250f, 18f, 3, Theme.text(), false, false); - } - } - /** sub_18011E540 (steady, no focus pulse). */ static void searchIcon(float x, float y, float size, float[] c) { float v10 = size * 0.35f; diff --git a/src/main/java/dev/zprestige/prestige/ui/WidgetsPage.java b/src/main/java/dev/zprestige/prestige/ui/WidgetsPage.java index ebf3349..61bd28d 100644 --- a/src/main/java/dev/zprestige/prestige/ui/WidgetsPage.java +++ b/src/main/java/dev/zprestige/prestige/ui/WidgetsPage.java @@ -2,7 +2,6 @@ package dev.zprestige.prestige.ui; import static dev.zprestige.prestige.ui.Lib.*; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/src/main/java/dev/zprestige/prestige/ui/bridge/Bootstrap.java b/src/main/java/dev/zprestige/prestige/ui/bridge/Bootstrap.java index eccd8aa..de56078 100644 --- a/src/main/java/dev/zprestige/prestige/ui/bridge/Bootstrap.java +++ b/src/main/java/dev/zprestige/prestige/ui/bridge/Bootstrap.java @@ -1,7 +1,6 @@ package dev.zprestige.prestige.ui.bridge; import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; import java.awt.Color; import java.io.InputStream; import java.lang.reflect.*; diff --git a/src/main/java/dev/zprestige/prestige/ui/bridge/Bridge.java b/src/main/java/dev/zprestige/prestige/ui/bridge/Bridge.java index 7b0e016..1bd3530 100644 --- a/src/main/java/dev/zprestige/prestige/ui/bridge/Bridge.java +++ b/src/main/java/dev/zprestige/prestige/ui/bridge/Bridge.java @@ -198,9 +198,9 @@ public final class Bridge { */ public void setEnabled(boolean value) { if (value == enabled()) return; - Method toggle = method(handle.getClass(), "toggle", 1, void.class); + Method toggle = method(handle.getClass(), "toggle", 0, void.class); if (toggle != null) { - try { toggle.setAccessible(true); toggle.invoke(handle, (Object) new Object[]{0L}); return; } + try { toggle.setAccessible(true); toggle.invoke(handle); return; } catch (Throwable t) { System.out.println("[prestige-ui] toggle failed for " + name + ": " + (t.getCause() != null ? t.getCause() : t)); } } if (enabledSetting != null) LiveSetting.of(enabledSetting).set(value); @@ -276,8 +276,11 @@ public final class Bridge { public float rangeLow() { Object v = call(handle, method(handle.getClass(), "getLow", 0, float.class)); return v instanceof Float f ? f : 0f; } public float rangeHigh() { Object v = call(handle, method(handle.getClass(), "getHigh", 0, float.class)); return v instanceof Float f ? f : 0f; } - public boolean toggleMode() { Boolean b = (Boolean) call(handle, method(handle.getClass(), "isToggleMode", 0, boolean.class)); return b != null && b; } - public void setToggleMode(boolean v) { call(handle, method(handle.getClass(), "setToggleMode", 1, void.class), v); } + // The UI models "Toggle" (true) vs "Hold" (false); the client's KeybindSetting stores the opposite flag, holdMode + // (KeybindManager: active only while the key is down, switched off when a screen opens). Passing the UI flag + // straight through made every key bound in the menu a hold bind, so modules turned off when the menu closed. + public boolean toggleMode() { Boolean hold = (Boolean) call(handle, method(handle.getClass(), "isHoldMode", 0, boolean.class)); return hold == null || !hold; } + public void setToggleMode(boolean toggle) { call(handle, method(handle.getClass(), "setHoldMode", 1, void.class), !toggle); } } private static String str(Object o) { return o == null ? "" : String.valueOf(o); } diff --git a/src/main/java/dev/zprestige/prestige/ui/bridge/OldNames.java b/src/main/java/dev/zprestige/prestige/ui/bridge/OldNames.java deleted file mode 100644 index 281daf9..0000000 --- a/src/main/java/dev/zprestige/prestige/ui/bridge/OldNames.java +++ /dev/null @@ -1,56 +0,0 @@ -package dev.zprestige.prestige.ui.bridge; - -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.util.HashMap; -import java.util.Map; - -/** - * Jar route only (client/work/client-runtime.jar): the ZKM reference tables of the client classes that Strip/IndyResolve could not fold still contain the - * OBFUSCATED class names (dev.zprestige.prestige.fT ...), looked up with Class.forName at run time. tools/RecoverBodies.java redirects every - * Class.forName call of the client jar to this class, which maps the old name to the renamed one (docs/mapping.tsv + docs/classmap.tsv, resource - * prestige_ui/old_names.tsv written by client/tools/rename.sh). Unknown names pass through unchanged. - */ -public final class OldNames { - private static final Map MAP = new HashMap<>(); - - static { - try (InputStream in = OldNames.class.getResourceAsStream("/prestige_ui/old_names.tsv")) { - if (in != null) { - BufferedReader r = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)); - for (String l; (l = r.readLine()) != null; ) { - int t = l.indexOf('\t'); - if (t > 0) MAP.put(l.substring(0, t), l.substring(t + 1)); - } - } - } catch (Exception e) { - System.out.println("[prestige-ui] OldNames: " + e); - } - } - - private OldNames() {} - - public static String map(String name) { - if (name == null) return null; - String n = MAP.get(name); - if (n != null) return n; - if (name.startsWith("[")) { // array descriptor form accepted by Class.forName: [Ldev.zprestige.prestige.X; - int l = name.indexOf('L'); - if (l > 0 && name.endsWith(";")) { - String e = MAP.get(name.substring(l + 1, name.length() - 1)); - if (e != null) return name.substring(0, l + 1) + e + ";"; - } - } - return name; - } - - public static Class forName(String name) throws ClassNotFoundException { - return Class.forName(map(name)); - } - - public static Class forName(String name, boolean init, ClassLoader cl) throws ClassNotFoundException { - return Class.forName(map(name), init, cl); - } -} diff --git a/src/main/java/dev/zprestige/prestige/ui/mc/Overlay.java b/src/main/java/dev/zprestige/prestige/ui/mc/Overlay.java index d74c41d..8095f3c 100644 --- a/src/main/java/dev/zprestige/prestige/ui/mc/Overlay.java +++ b/src/main/java/dev/zprestige/prestige/ui/mc/Overlay.java @@ -1,6 +1,5 @@ package dev.zprestige.prestige.ui.mc; -import imgui.ImFont; import imgui.ImFontAtlas; import imgui.ImFontConfig; import imgui.ImGui; diff --git a/src/main/java/dev/zprestige/prestige/ui/mixin/EventBusStatsMixin.java b/src/main/java/dev/zprestige/prestige/ui/mixin/EventBusStatsMixin.java index ee07270..66bd4cd 100644 --- a/src/main/java/dev/zprestige/prestige/ui/mixin/EventBusStatsMixin.java +++ b/src/main/java/dev/zprestige/prestige/ui/mixin/EventBusStatsMixin.java @@ -1,6 +1,7 @@ package dev.zprestige.prestige.ui.mixin; import dev.zprestige.prestige.engine.EngineState; +import dev.zprestige.prestige.event.Event; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -9,8 +10,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; /** Counts the events posted on the client EventBus per event type (EngineState.events); read with the "state engine" dev command. */ @Mixin(targets = "dev.zprestige.prestige.EventBus", remap = false) public abstract class EventBusStatsMixin { - @Inject(method = "post([Ljava/lang/Object;)Z", at = @At("HEAD"), remap = false, require = 1) - private void engine$count(Object[] args, CallbackInfoReturnable cir) { - if (args != null && args.length > 0 && args[0] != null) EngineState.onEvent(args[0].getClass()); + // the descriptor must match EventBus.post(Event) exactly: Mixin resolves it by string, not through the compiler + @Inject(method = "post(Ldev/zprestige/prestige/event/Event;)Z", at = @At("HEAD"), remap = false, require = 1) + private void engine$count(Event event, CallbackInfoReturnable cir) { + if (event != null) EngineState.onEvent(event.getClass()); } } diff --git a/src/main/java/dev/zprestige/prestige/util/BindManager.java b/src/main/java/dev/zprestige/prestige/util/BindManager.java deleted file mode 100644 index b523fa4..0000000 --- a/src/main/java/dev/zprestige/prestige/util/BindManager.java +++ /dev/null @@ -1,252 +0,0 @@ -package dev.zprestige.prestige.util; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.TickEvent10; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.event.TickEvent7; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderHelper35; -import dev.zprestige.prestige.render.RenderHelper36; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashMap; -import org.lwjgl.glfw.GLFW; - -public class BindManager implements RenderContract2 { - private final HashMap a; - private boolean c; - private boolean d; - public static int e = 0; - public static int f = 1; - private static final long h = -954273915637596152L; - - public BindManager(long var1) { - super(); - var1 = 0L; - var1 = 12009258263935L ^ var1; - long var3 = var1 ^ 20580107122753L; - this.a = new HashMap(); - Prestige.eventBus.register(new Object[]{this, var3}); - } - - public boolean a(Object[] var1) { - int var2 = (Integer)var1[0]; - return this.a.containsKey(var2); - } - - private void b(Object[] var1) { - int var2 = (Integer)var1[0]; - long var3 = (Long)var1[1]; - var3 = 12009258263935L ^ var3; - long var5 = var3 ^ 130502617724988L; - long var7 = var3 ^ 107793809825388L; - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var2; - if (this.a(var10004)) { - RenderHelper36 var10000 = new RenderHelper36(b.mouse); - long var10001 = b.getWindow().getHandle(); - Object[] var10007 = new Object[]{null, null, null, null, var7}; - var10007[3] = 0; - var10007[2] = 0; - var10007[1] = var2; - var10007[0] = var10001; - var10000.a(var10007); - this.a.remove(var2); - } - - if (var2 == e) { - this.c = false; - } - - if (var2 == f) { - this.d = false; - } - } - - private void c(Object[] var1) { - int var2 = (Integer)var1[0]; - long var3 = (Long)var1[1]; - var3 = 12009258263935L ^ var3; - long var5 = var3 ^ 89669795328449L; - long var7 = var3 ^ 50375637167234L; - Object[] var10004 = new Object[]{null, var7}; - var10004[0] = var2; - if (this.a(var10004)) { - int var10 = (Integer)this.a.get(var2); - if (var10 > 0) { - this.a.replace(var2, var10 - 1); - } else { - var10004 = new Object[]{null, var5}; - var10004[0] = var2; - this.b(var10004); - } - } - } - - @Subscribe - public void a(TickEvent24 var1) { - if (!b.isWindowFocused()) { - int var3 = e; - Object[] var6 = new Object[]{null, 9764117872379L}; - var6[0] = var3; - this.b(var6); - var3 = f; - var6 = new Object[]{null, 9764117872379L}; - var6[0] = var3; - this.b(var6); - this.c = false; - this.d = false; - } else { - int var10001 = e; - Object[] var10004 = new Object[]{null, 91811856542277L}; - var10004[0] = var10001; - this.c(var10004); - var10001 = f; - var10004 = new Object[]{null, 91811856542277L}; - var10004[0] = var10001; - this.c(var10004); - } - } - - @Subscribe - public void a(TickEvent5 var1) { - if (this.d) { - int var11 = new RenderHelper35(b.options.useKey).a(new Object[]{138149021417492L}).getCode(); - Object[] var10004 = new Object[]{null, 136421046046674L}; - var10004[0] = var11; - if (!this.b_boolean________(var10004)) { - this.d = false; - return; - } - - var1.a_void_____(new Object[0]); - int var10001 = f; - var10004 = new Object[]{null, 128352941745080L}; - var10004[0] = var10001; - if (!this.a(var10004)) { - this.d = false; - } - } - } - - @Subscribe - public void a(TickEvent7 var1) { - if (this.c) { - int var11 = new RenderHelper35(b.options.attackKey).a(new Object[]{138149021417492L}).getCode(); - Object[] var10004 = new Object[]{null, 136421046046674L}; - var10004[0] = var11; - if (!this.b_boolean________(var10004)) { - this.c = false; - return; - } - - var1.a_void_____(new Object[0]); - int var10001 = e; - var10004 = new Object[]{null, 128352941745080L}; - var10004[0] = var10001; - if (!this.a(var10004)) { - this.c = false; - } - } - } - - @Subscribe - public void a(TickEvent10 var1) { - if (this.c) { - int var11 = new RenderHelper35(b.options.attackKey).a(new Object[]{138149021417492L}).getCode(); - Object[] var10004 = new Object[]{null, 136421046046674L}; - var10004[0] = var11; - if (!this.b_boolean________(var10004)) { - this.c = false; - return; - } - - var1.a_void_____(new Object[0]); - int var10001 = e; - var10004 = new Object[]{null, 128352941745080L}; - var10004[0] = var10001; - if (!this.a(var10004)) { - this.c = false; - } - } - } - - private boolean b_boolean________(Object[] var1) { - int var2 = (Integer)var1[0]; - if (var2 < 0) { - return true; - } else { - return var2 <= (int)h ? GLFW.glfwGetMouseButton(b.getWindow().getHandle(), var2) != 1 : GLFW.glfwGetKey(b.getWindow().getHandle(), var2) != 1; - } - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/util/ClientUtil.java b/src/main/java/dev/zprestige/prestige/util/ClientUtil.java deleted file mode 100644 index 6cb9234..0000000 --- a/src/main/java/dev/zprestige/prestige/util/ClientUtil.java +++ /dev/null @@ -1,1418 +0,0 @@ -package dev.zprestige.prestige.util; - -import com.mojang.authlib.GameProfile; -import dev.zprestige.prestige.EventBus; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.combat.RotationManager; -import dev.zprestige.prestige.config.ConfigUtil; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.BlockBoolEvent; -import dev.zprestige.prestige.event.BlockPosBlockEvent; -import dev.zprestige.prestige.event.BoolEvent; -import dev.zprestige.prestige.event.ColorEvent; -import dev.zprestige.prestige.event.DoubleEvent; -import dev.zprestige.prestige.event.DoubleEvent2; -import dev.zprestige.prestige.event.DoubleEvent3; -import dev.zprestige.prestige.event.EntityEvent; -import dev.zprestige.prestige.event.EntityEvent2; -import dev.zprestige.prestige.event.EntityEvent3; -import dev.zprestige.prestige.event.EntityEvent4; -import dev.zprestige.prestige.event.EntityEvent5; -import dev.zprestige.prestige.event.EntityEvent6; -import dev.zprestige.prestige.event.FloatColorEvent; -import dev.zprestige.prestige.event.FloatDoubleEvent; -import dev.zprestige.prestige.event.FloatEvent; -import dev.zprestige.prestige.event.FloatEvent2; -import dev.zprestige.prestige.event.FloatEvent3; -import dev.zprestige.prestige.event.FloatEvent4; -import dev.zprestige.prestige.event.FloatEvent5; -import dev.zprestige.prestige.event.FloatPositionEvent; -import dev.zprestige.prestige.event.IntEvent; -import dev.zprestige.prestige.event.IntEvent2; -import dev.zprestige.prestige.event.IntEvent3; -import dev.zprestige.prestige.event.IntEvent4; -import dev.zprestige.prestige.event.LivingEvent; -import dev.zprestige.prestige.event.LongEvent; -import dev.zprestige.prestige.event.PacketEvent; -import dev.zprestige.prestige.event.PacketEvent2; -import dev.zprestige.prestige.event.PlayerStringEvent; -import dev.zprestige.prestige.event.StringEvent; -import dev.zprestige.prestige.event.StringEvent2; -import dev.zprestige.prestige.event.TickEvent; -import dev.zprestige.prestige.event.TickEvent10; -import dev.zprestige.prestige.event.TickEvent11; -import dev.zprestige.prestige.event.TickEvent13; -import dev.zprestige.prestige.event.TickEvent14; -import dev.zprestige.prestige.event.TickEvent16; -import dev.zprestige.prestige.event.TickEvent17; -import dev.zprestige.prestige.event.TickEvent19; -import dev.zprestige.prestige.event.TickEvent2; -import dev.zprestige.prestige.event.TickEvent20; -import dev.zprestige.prestige.event.TickEvent21; -import dev.zprestige.prestige.event.TickEvent22; -import dev.zprestige.prestige.event.TickEvent23; -import dev.zprestige.prestige.event.TickEvent26; -import dev.zprestige.prestige.event.TickEvent28; -import dev.zprestige.prestige.event.TickEvent29; -import dev.zprestige.prestige.event.TickEvent3; -import dev.zprestige.prestige.event.TickEvent30; -import dev.zprestige.prestige.event.TickEvent31; -import dev.zprestige.prestige.event.TickEvent4; -import dev.zprestige.prestige.event.TickEvent5; -import dev.zprestige.prestige.event.TickEvent7; -import dev.zprestige.prestige.event.TickEvent8; -import dev.zprestige.prestige.inventory.InventoryUtil2; -import dev.zprestige.prestige.network.PacketQueue; -import dev.zprestige.prestige.reflect.MethodHandleCache; -import dev.zprestige.prestige.render.ESPUtil; -import dev.zprestige.prestige.render.GlState; -import dev.zprestige.prestige.render.PostShader; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderHelper32; -import dev.zprestige.prestige.render.RenderHelper34; -import dev.zprestige.prestige.render.RenderHelper40; -import dev.zprestige.prestige.render.RenderLayerUtil; -import dev.zprestige.prestige.render.RenderUtil; -import dev.zprestige.prestige.render.Renderer2D; -import dev.zprestige.prestige.type.EventPhase; -import dev.zprestige.prestige.world.PositionUtil; -import dev.zprestige.prestige.world.WorldHelper7; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.List; -import java.util.Optional; -import java.util.function.Predicate; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.gui.hud.InGameOverlayRenderer; -import net.minecraft.client.gui.render.GuiRenderer; -import net.minecraft.client.render.Camera; -import net.minecraft.client.render.Frustum; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.ProjectionMatrix2; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.entity.model.EntityModel; -import net.minecraft.client.util.Window; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.SkinTextures; -import net.minecraft.network.packet.Packet; -import net.minecraft.resource.Resource; -import net.minecraft.text.Text; -import net.minecraft.util.Arm; -import net.minecraft.util.Identifier; -import net.minecraft.util.PlayerInput; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.chunk.WorldChunk; -import org.joml.Matrix4f; -import org.joml.Matrix4fc; -import org.joml.Vector4f; - -public class ClientUtil { - public static Resource dK(String var0) { - return ConfigUtil.b(new Object[]{var0}); - } - - public static boolean ds(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static GlState eE() { - return GlState.a(); - } - - public static InGameOverlayRenderer bR(RenderHelper32 var0) { - return var0.a(new Object[]{107543254571096L}); - } - - public static Color m(FloatColorEvent var0) { - return var0.a(new Object[0]); - } - - public static boolean T(BlockBoolEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean cf(TickEvent17 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean bq() { - return Prestige.b(new Object[]{79259704761476L}); - } - - public static RenderBatch cV(Renderer2D var0) { - return var0.c(new Object[0]); - } - - public static void bZ(WorldHelper7 var0, int var1) { - Object[] var10004 = new Object[]{null, 50435661383866L}; - var10004[0] = var1; - var0.a(var10004); - } - - public static boolean dd(TickEvent19 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static DoubleEvent E(double var0, double var2, double var4) { - return new DoubleEvent(var0, var2, var4); - } - - public static boolean dn(TickEvent10 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static void K(MethodHandleCache var0, double var1, double var3, double var5) { - Object[] var10006 = new Object[]{null, null, null, 2473080249125L}; - var10006[2] = var5; - var10006[1] = var3; - var10006[0] = var1; - var0.a(var10006); - } - - public static boolean dX(FloatDoubleEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static TickEvent28 dB() { - return new TickEvent28(); - } - - public static boolean es(TickEvent23 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static BlockBoolEvent S(Block var0) { - return new BlockBoolEvent(var0); - } - - public static boolean cA(TickEvent16 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean dy(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static Vec3d aE(FloatPositionEvent var0) { - return var0.a_class_243(new Object[0]); - } - - public static boolean dl(TickEvent7 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static Predicate bX() { - return FloatEvent4.a_Predicate(new Object[0]); - } - - public static boolean cm(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static TickEvent19 da() { - return new TickEvent19(); - } - - public static BoolEvent aj(EventPhase var0) { - return new BoolEvent(var0); - } - - public static boolean bi(EntityEvent5 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean dw(IntEvent4 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static TickEvent29 dg(Window var0) { - return new TickEvent29(var0); - } - - public static boolean ax(EntityEvent3 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static Optional dq(RenderLayer var0) { - return RenderLayerUtil.a(new Object[]{var0, 48751301194998L}); - } - - public static Color dZ(int var0, int var1, int var2) { - return new Color(var0, var1, var2); - } - - public static TickEvent11 cv() { - return new TickEvent11(); - } - - public static BoolEvent ag(EventPhase var0) { - return new BoolEvent(var0); - } - - public static Vec3d aF(FloatPositionEvent var0) { - return var0.a_class_243(new Object[0]); - } - - public static TickEvent22 eN(Frustum var0) { - return new TickEvent22(var0); - } - - public static boolean dY(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean bg(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static Resource dI(Identifier var0) { - return ConfigUtil.a(new Object[]{var0}); - } - - public static float ar(FloatEvent2 var0) { - return var0.b_float__(new Object[0]); - } - - public static boolean R(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static FloatColorEvent v(float var0, float var1, Color var2) { - return new FloatColorEvent(var0, var1, var2); - } - - public static RenderHelper34 by(GuiRenderer var0) { - return new RenderHelper34(var0); - } - - public static EntityEvent au(Entity var0) { - return new EntityEvent(var0); - } - - public static float t(FloatColorEvent var0) { - return var0.b_float(new Object[0]); - } - - public static boolean en(StringEvent2 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static TickEvent21 dz() { - return new TickEvent21(); - } - - public static MatrixStack bI() { - return new MatrixStack(); - } - - public static boolean ci(TickEvent14 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static TickEvent5 di() { - return new TickEvent5(); - } - - public static boolean aC(FloatPositionEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean cd(FloatEvent5 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean dh(TickEvent29 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean aJ(EntityEvent2 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean bl(PlayerStringEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static double aO(DoubleEvent3 var0) { - return var0.b_double_(new Object[0]); - } - - public static DoubleEvent3 aL(double var0, double var2, double var4) { - return new DoubleEvent3(var0, var2, var4); - } - - public static boolean du(DoubleEvent2 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static RenderBatch aA(Renderer2D var0) { - return var0.c(new Object[0]); - } - - public static boolean F(DoubleEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean bH() { - return Prestige.b(new Object[]{79259704761476L}); - } - - public static SkinTextures g(StringEvent var0) { - return var0.a(new Object[0]); - } - - public static TickEvent17 ce() { - return new TickEvent17(); - } - - public static IntEvent4 dv(int var0, int var1) { - return new IntEvent4(var0, var1); - } - - public static boolean cb(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean cG(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static FloatEvent3 cN(EventPhase var0, float var1, float var2) { - return new FloatEvent3(var0, var1, var2); - } - - public static EntityEvent6 bn(Text var0, Text var1, Entity var2) { - return new EntityEvent6(var0, var1, var2); - } - - public static TickEvent31 ck() { - return new TickEvent31(); - } - - public static void bw() { - Prestige.a_void(new Object[]{132410135119224L}); - } - - public static WorldHelper7 bY(Object var0) { - return new WorldHelper7(var0); - } - - public static FloatDoubleEvent dW(float var0, double var1, double var3, double var5) { - return new FloatDoubleEvent(var0, var1, var3, var5); - } - - public static Color l(FloatColorEvent var0) { - return var0.a(new Object[0]); - } - - public static void eF(List var0) { - RenderUtil.c_void__(new Object[]{var0, 10065397776691L}); - } - - public static RenderBatch aT(Renderer2D var0) { - return var0.b_RenderBatch____________(new Object[0]); - } - - public static Resource dL(String var0) { - return ConfigUtil.b(new Object[]{var0}); - } - - public static float aR(RenderBatch var0) { - return var0.b(new Object[0]); - } - - public static boolean c(BlockBoolEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean cU(LivingEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean cP(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static TickEvent10 dm() { - return new TickEvent10(); - } - - public static TickEvent30 eQ() { - return new TickEvent30(); - } - - public static boolean U(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static String dE(GameProfile var0) { - return PositionUtil.a_String________(new Object[]{var0, 3044946865408L}); - } - - public static boolean M(FloatEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static TickEvent7 dk() { - return new TickEvent7(); - } - - public static Vec3d aG(double var0, double var2, double var4) { - return new Vec3d(var0, var2, var4); - } - - public static String eo(StringEvent2 var0) { - return var0.a(new Object[0]); - } - - public static boolean cI(TickEvent2 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean df(TickEvent4 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean aX(RotationManager var0) { - return var0.a(new Object[0]); - } - - public static Resource dx(Identifier var0) { - return ConfigUtil.a(new Object[]{var0}); - } - - public static double I(DoubleEvent var0) { - return var0.b_double(new Object[0]); - } - - public static boolean ct(TickEvent11 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean cy(IntEvent2 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static TickEvent16 cz(EventPhase var0) { - return new TickEvent16(var0); - } - - public static ColorEvent eb(Color var0, Color var1) { - return new ColorEvent(var0, var1); - } - - public static boolean cL(FloatEvent3 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static float cY(FloatPositionEvent var0) { - return var0.a(new Object[0]); - } - - public static TickEvent11 cs() { - return new TickEvent11(); - } - - public static List eA() { - return RenderUtil.a_List__(new Object[]{118978392460632L}); - } - - public static boolean dj(TickEvent5 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean eM(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static void eL(GlState var0) { - var0.a_void(); - } - - public static boolean at(FloatEvent2 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean f(StringEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static GlState bt() { - return GlState.a(); - } - - public static boolean et(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static TickEvent2 bc() { - return new TickEvent2(); - } - - public static boolean af(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static MatrixCameraData eI(Matrix4f var0, Matrix4f var1, Camera var2) { - return new MatrixCameraData(var0, var1, var2); - } - - public static TickEvent13 ad(WorldChunk var0) { - return new TickEvent13(var0); - } - - public static PlayerInput cE(boolean var0, boolean var1, boolean var2, boolean var3, boolean var4, boolean var5, boolean var6) { - return new PlayerInput(var0, var1, var2, var3, var4, var5, var6); - } - - public static boolean bS(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static TickEvent14 ch() { - return new TickEvent14(); - } - - public static EntityEvent4 aZ(Entity var0, EventPhase var1) { - return new EntityEvent4(var0, var1); - } - - public static void bF(GlState var0) { - var0.a_void(); - } - - public static int bP(IntEvent var0) { - return var0.a(new Object[0]); - } - - public static Resource dN(String var0) { - return ConfigUtil.b(new Object[]{var0}); - } - - public static FloatEvent2 al(EventPhase var0, float var1, float var2) { - return new FloatEvent2(var0, var1, var2); - } - - public static TickEvent4 de() { - return new TickEvent4(); - } - - public static boolean eq(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean cu(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean eC() { - return Prestige.b(new Object[]{79259704761476L}); - } - - public static FloatPositionEvent cW(float var0) { - return new FloatPositionEvent(var0); - } - - public static boolean aU(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean d(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static StringEvent2 em(String var0, String var1) { - return new StringEvent2(var0, var1); - } - - public static Color k(FloatColorEvent var0) { - return var0.a(new Object[0]); - } - - public static boolean eh(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean dA(TickEvent21 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static Resource dP(String var0) { - return ConfigUtil.b(new Object[]{var0}); - } - - public static TickEvent20 bK() { - return new TickEvent20(); - } - - public static Resource dJ(String var0) { - return ConfigUtil.b(new Object[]{var0}); - } - - public static boolean u(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean ej(EntityEvent5 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean bM(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static IntEvent3 cQ(int var0) { - return new IntEvent3(var0); - } - - public static EntityEvent4 aV(Entity var0, EventPhase var1) { - return new EntityEvent4(var0, var1); - } - - public static String ep(StringEvent2 var0) { - return var0.b_String_(new Object[0]); - } - - public static boolean cl(TickEvent31 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static VertexConsumer dr(VertexConsumer var0, int var1) { - Object[] var10004 = new Object[]{null, null, 50226393134120L}; - var10004[1] = var1; - var10004[0] = var0; - return RenderLayerUtil.a_class_4588(var10004); - } - - public static boolean bb(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static float ap(RenderBatch var0) { - return var0.b(new Object[0]); - } - - public static EntityEvent5 bh(Entity var0, Text var1) { - return new EntityEvent5(var0, var1); - } - - public static TickEvent23 er() { - return new TickEvent23(); - } - - public static boolean be(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean ah(BoolEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static PlayerStringEvent bk(PlayerEntity var0, String var1) { - return new PlayerStringEvent(var0, var1); - } - - public static Vector4f o(float var0, float var1, float var2, float var3) { - return new Vector4f(var0, var1, var2, var3); - } - - public static boolean eP(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static RenderHelper32 bQ(GameRenderer var0) { - return new RenderHelper32(var0); - } - - public static BlockPosBlockEvent ey(BlockPos var0, BlockState var1) { - return new BlockPosBlockEvent(var0, var1); - } - - public static void bx(GlState var0) { - var0.a_void(); - } - - public static void eK(GlState var0) { - var0.a_void(); - } - - public static float O(FloatEvent var0) { - return var0.a(new Object[0]); - } - - public static FloatEvent3 cK(EventPhase var0, float var1, float var2) { - return new FloatEvent3(var0, var1, var2); - } - - public static TickEvent2 cH() { - return new TickEvent2(); - } - - public static Text ek(EntityEvent5 var0) { - return var0.a_class_2561(new Object[0]); - } - - public static String bm(PlayerStringEvent var0) { - return var0.a_String__(new Object[0]); - } - - public static FloatEvent4 bU(float var0) { - return new FloatEvent4(var0); - } - - public static boolean B(BlockBoolEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean cq(TickEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean ez(BlockPosBlockEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean aY(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean C(BlockBoolEvent var0) { - return var0.c(new Object[0]); - } - - public static MatrixCameraData bD(Matrix4f var0, Matrix4f var1, Camera var2) { - return new MatrixCameraData(var0, var1, var2); - } - - public static boolean cX(FloatPositionEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean cw(TickEvent11 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static Color ea(int var0, int var1, int var2) { - return new Color(var0, var1, var2); - } - - public static TickEvent26 cn() { - return new TickEvent26(); - } - - public static double H(DoubleEvent var0) { - return var0.a(new Object[0]); - } - - public static double J(DoubleEvent var0) { - return var0.c_double(new Object[0]); - } - - public static RenderHelper40 bA(ProjectionMatrix2 var0) { - return new RenderHelper40(var0); - } - - public static Matrix4f eH(Matrix4fc var0) { - return new Matrix4f(var0); - } - - public static boolean dT(TickEvent8 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static PostShader do_() { - return ESPUtil.a_PostShader(new Object[0]); - } - - public static Resource dR(String var0) { - return ConfigUtil.b(new Object[]{var0}); - } - - public static boolean cC(TickEvent16 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static FloatColorEvent i(float var0, float var1, Color var2) { - return new FloatColorEvent(var0, var1, var2); - } - - public static BlockBoolEvent A(Block var0) { - return new BlockBoolEvent(var0); - } - - public static boolean db(TickEvent19 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static RenderBatch aQ(Renderer2D var0) { - return var0.c(new Object[0]); - } - - public static float aD(FloatPositionEvent var0) { - return var0.a(new Object[0]); - } - - public static boolean aH(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static TickEvent cp() { - return new TickEvent(); - } - - public static boolean ec(ColorEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static void br() { - RenderUtil.h(new Object[]{13441578023978L}); - } - - public static float r(FloatColorEvent var0) { - return var0.b_float(new Object[0]); - } - - public static void aa(PacketQueue var0, Packet var1) { - var0.a_void___________(new Object[]{var1, 42438847979216L}); - } - - public static boolean am(FloatEvent2 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static float bW(FloatEvent4 var0) { - return var0.a(new Object[0]); - } - - public static Vector4f y(float var0, float var1, float var2, float var3) { - return new Vector4f(var0, var1, var2, var3); - } - - public static boolean cF(PacketQueue var0) { - return var0.c_boolean___(new Object[]{46693235234696L}); - } - - public static void ca(WorldHelper7 var0, int var1) { - Object[] var10004 = new Object[]{null, 113610767558335L}; - var10004[0] = var1; - var0.b(var10004); - } - - public static boolean aW(EntityEvent4 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean cr(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean W(PacketEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static LongEvent eu(long var0) { - return new LongEvent(var0); - } - - public static boolean w(FloatColorEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static void eJ(MatrixCameraData var0) { - RenderUtil.d(new Object[]{var0, 65713249368887L}); - } - - public static void eG(GlState var0) { - var0.a_void(); - } - - public static EntityEvent2 aI(Entity var0, Box var1) { - return new EntityEvent2(var0, var1); - } - - public static FloatEvent L(float var0, float var1) { - return new FloatEvent(var0, var1); - } - - public static boolean h(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static Text bj(EntityEvent5 var0) { - return var0.a_class_2561(new Object[0]); - } - - public static PacketEvent2 Y(Packet var0) { - return new PacketEvent2(var0); - } - - public static boolean dD(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static FloatEvent5 cc(MatrixStack var0, Arm var1, float var2, float var3) { - return new FloatEvent5(var0, var1, var2, var3); - } - - public static ProjectionMatrix2 bz(RenderHelper34 var0) { - return var0.a(new Object[]{54366425469524L}); - } - - public static TickEvent19 dc() { - return new TickEvent19(); - } - - public static boolean ae(TickEvent13 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean ev(LongEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static Matrix4f bC() { - return new Matrix4f(); - } - - public static boolean bf(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static MethodHandleCache N(Camera var0) { - return new MethodHandleCache(var0); - } - - public static Color ed(ColorEvent var0) { - return var0.a(new Object[0]); - } - - public static DoubleEvent2 dt(double var0, double var2) { - return new DoubleEvent2(var0, var2); - } - - public static Color eg(ColorEvent var0) { - return var0.b_Color(new Object[0]); - } - - public static EntityEvent5 ei(Entity var0, Text var1) { - return new EntityEvent5(var0, var1); - } - - public static Color ee(ColorEvent var0) { - return var0.a(new Object[0]); - } - - public static void eD() { - dev.zprestige.prestige.render.MatrixStack.a(new Object[]{14373979246969L}); - } - - public static boolean az(EntityEvent3 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static PacketEvent V(Packet var0) { - return new PacketEvent(var0); - } - - public static boolean ac(TickEvent3 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static LivingEvent cT(LivingEntity var0) { - return new LivingEvent(var0); - } - - public static boolean bJ(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static IntEvent2 cx(int var0, int var1) { - return new IntEvent2(var0, var1); - } - - public static Color x(FloatColorEvent var0) { - return var0.a(new Object[0]); - } - - public static boolean bO(IntEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static Matrix4f bB(RenderHelper40 var0, float var1, float var2) { - Object[] var10005 = new Object[]{null, null, 4953355148731L}; - var10005[1] = var2; - var10005[0] = var1; - return var0.a(var10005); - } - - public static boolean cD(PacketQueue var0) { - return var0.b_boolean______(new Object[]{57447699507603L}); - } - - public static Float p(FloatColorEvent var0) { - return var0.a_Float(new Object[0]); - } - - public static boolean dp(EntityModel var0) { - return ESPUtil.c(new Object[]{var0, 4971385859609L}); - } - - public static boolean Z(PacketEvent2 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static MethodHandleCache G(Camera var0) { - return new MethodHandleCache(var0); - } - - public static boolean cR(IntEvent3 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static TickEvent16 cB(EventPhase var0) { - return new TickEvent16(var0); - } - - public static BlockBoolEvent b(Block var0) { - return new BlockBoolEvent(var0); - } - - public static boolean cS(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static float aS(RenderBatch var0) { - return var0.a(new Object[0]); - } - - public static boolean aM(DoubleEvent3 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean ai(BoolEvent var0) { - return var0.c(new Object[0]); - } - - public static void bv() { - RenderUtil.h(new Object[]{13441578023978L}); - } - - public static boolean D(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static Resource dO(String var0) { - return ConfigUtil.b(new Object[]{var0}); - } - - public static SkinTextures dH(StringEvent var0) { - return var0.a(new Object[0]); - } - - public static boolean ex(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean cO(FloatEvent3 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static void bs() { - Prestige.a_void(new Object[]{132410135119224L}); - } - - public static void bu(List var0) { - RenderUtil.c_void__(new Object[]{var0, 10065397776691L}); - } - - public static boolean dV(TickEvent8 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static TickEvent8 dU() { - return new TickEvent8(); - } - - public static IntEvent bN(int var0) { - return new IntEvent(var0); - } - - public static boolean ba(EntityEvent4 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean co(TickEvent26 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static EntityEvent3 ay(Entity var0, EventPhase var1) { - return new EntityEvent3(var0, var1); - } - - public static boolean eO(TickEvent22 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static float bT() { - return InventoryUtil2.b_float_____(new Object[]{18814856656518L}); - } - - public static boolean cg(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean a(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static Resource dM(String var0) { - return ConfigUtil.b(new Object[]{var0}); - } - - public static void bG(GlState var0) { - var0.a_void(); - } - - public static TickEvent3 ab() { - return new TickEvent3(); - } - - public static double aP(DoubleEvent3 var0) { - return var0.c_double_(new Object[0]); - } - - public static RenderBatch cJ(Renderer2D var0) { - return var0.c(new Object[0]); - } - - public static List bp() { - return RenderUtil.a_List__(new Object[]{118978392460632L}); - } - - public static float s(FloatColorEvent var0) { - return var0.a_float____(new Object[0]); - } - - public static Color ef(ColorEvent var0) { - return var0.b_Color(new Object[0]); - } - - public static StringEvent dF(SkinTextures var0, String var1) { - return new StringEvent(var0, var1); - } - - public static float aq(FloatEvent2 var0) { - return var0.a(new Object[0]); - } - - public static boolean bL(TickEvent20 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static StringEvent e(SkinTextures var0, String var1) { - return new StringEvent(var0, var1); - } - - public static void Q(MethodHandleCache var0, float var1, float var2) { - Object[] var10005 = new Object[]{null, null, 32803728178790L}; - var10005[1] = var2; - var10005[0] = var1; - var0.b(var10005); - } - - public static EntityEvent3 aw(Entity var0, EventPhase var1) { - return new EntityEvent3(var0, var1); - } - - public static boolean dG(StringEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean bd(TickEvent2 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static float q(FloatColorEvent var0) { - return var0.a_float____(new Object[0]); - } - - public static boolean bo(EntityEvent6 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static float ao(RenderBatch var0) { - return var0.a(new Object[0]); - } - - public static long ew(LongEvent var0) { - return var0.a(new Object[0]); - } - - public static boolean cZ(EntityModel var0) { - return ESPUtil.b(new Object[]{var0, 112928708948977L}); - } - - public static boolean dC(TickEvent28 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static RenderBatch an(Renderer2D var0) { - return var0.d(new Object[]{74534716520795L}); - } - - public static boolean X(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean j(FloatColorEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static void bE(MatrixCameraData var0) { - RenderUtil.e(new Object[]{var0, 130867719496852L}); - } - - public static boolean cj(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean eB() { - return Prestige.a(new Object[]{109396286056715L}); - } - - public static boolean bV(FloatEvent4 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static Resource dQ(String var0) { - return ConfigUtil.b(new Object[]{var0}); - } - - public static Color n(FloatColorEvent var0) { - return var0.a(new Object[0]); - } - - public static FloatPositionEvent aB(float var0, Vec3d var1) { - return new FloatPositionEvent(var0, var1); - } - - public static boolean el(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static boolean av(EntityEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static boolean ak(BoolEvent var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static double aN(DoubleEvent3 var0) { - return var0.a(new Object[0]); - } - - public static TickEvent8 dS() { - return new TickEvent8(); - } - - public static FloatEvent2 as(EventPhase var0, float var1, float var2) { - return new FloatEvent2(var0, var1, var2); - } - - public static boolean eR(TickEvent30 var0) { - return var0.b_boolean__(new Object[]{122499962143880L}); - } - - public static float P(FloatEvent var0) { - return var0.b_float_(new Object[0]); - } - - public static boolean z(EventBus var0, Class var1) { - return var0.hasListeners(new Object[]{var1, 135978089436075L}); - } - - public static Box aK(EntityEvent2 var0) { - return var0.a_class_238(new Object[0]); - } - - public static RenderBatch cM(Renderer2D var0) { - return var0.c(new Object[0]); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/util/FrameDeltaTimer.java b/src/main/java/dev/zprestige/prestige/util/FrameDeltaTimer.java new file mode 100644 index 0000000..dc576a5 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/util/FrameDeltaTimer.java @@ -0,0 +1,30 @@ +package dev.zprestige.prestige.util; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.event.FrameEvent; + +public class FrameDeltaTimer { + private long lastFrameTime; + private long frameTimeMs; + + public FrameDeltaTimer() { + super(); + this.lastFrameTime = 0L; + this.frameTimeMs = 0L; + Prestige.eventBus.register(this); + } + + @Subscribe + public void onFrame(FrameEvent event) { + this.frameTimeMs = System.currentTimeMillis() - this.lastFrameTime; + this.lastFrameTime = System.currentTimeMillis(); + if ((float)this.frameTimeMs > 30.0F) { + this.frameTimeMs = 0L; + } + } + + public float getAnimationDelta() { + return (float)this.frameTimeMs * 0.005F; + } +} diff --git a/src/main/java/dev/zprestige/prestige/util/HookBridge.java b/src/main/java/dev/zprestige/prestige/util/HookBridge.java new file mode 100644 index 0000000..6611fff --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/util/HookBridge.java @@ -0,0 +1,1331 @@ +package dev.zprestige.prestige.util; + +import com.mojang.authlib.GameProfile; +import dev.zprestige.prestige.EventBus; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.combat.VisualRotationManager; +import dev.zprestige.prestige.config.ClasspathResourcePack; +import dev.zprestige.prestige.data.CameraMatrices; +import dev.zprestige.prestige.event.BlockVisibilityEvent; +import dev.zprestige.prestige.event.BlockStateUpdateEvent; +import dev.zprestige.prestige.event.SwingHandEvent; +import dev.zprestige.prestige.event.SkyColorEvent; +import dev.zprestige.prestige.event.CameraPositionEvent; +import dev.zprestige.prestige.event.MouseUpdateEvent; +import dev.zprestige.prestige.event.VelocityUpdateEvent; +import dev.zprestige.prestige.event.AttackEntityEvent; +import dev.zprestige.prestige.event.BoundingBoxEvent; +import dev.zprestige.prestige.event.EntityAddRemoveEvent; +import dev.zprestige.prestige.event.PlayerRenderStateEvent; +import dev.zprestige.prestige.event.LabelTextEvent; +import dev.zprestige.prestige.event.RenderLabelEvent; +import dev.zprestige.prestige.event.FogEvent; +import dev.zprestige.prestige.event.ExplosionEvent; +import dev.zprestige.prestige.event.CameraRotationEvent; +import dev.zprestige.prestige.event.SendMovementPacketsEvent; +import dev.zprestige.prestige.event.TravelEvent; +import dev.zprestige.prestige.event.ReachEvent; +import dev.zprestige.prestige.event.SwingArmEvent; +import dev.zprestige.prestige.event.MovementYawEvent; +import dev.zprestige.prestige.event.FloatingItemTickEvent; +import dev.zprestige.prestige.event.KeyEvent; +import dev.zprestige.prestige.event.HandSwingDurationEvent; +import dev.zprestige.prestige.event.MouseButtonEvent; +import dev.zprestige.prestige.event.ShieldBreakEvent; +import dev.zprestige.prestige.event.TimeOfDayEvent; +import dev.zprestige.prestige.event.PacketReceiveEvent; +import dev.zprestige.prestige.event.PacketSendEvent; +import dev.zprestige.prestige.event.HealthIndicatorEvent; +import dev.zprestige.prestige.event.SkinTexturesEvent; +import dev.zprestige.prestige.event.TextReplaceEvent; +import dev.zprestige.prestige.event.FireOverlayEvent; +import dev.zprestige.prestige.event.HandleBlockBreakingEvent; +import dev.zprestige.prestige.event.ItemBobbingEvent; +import dev.zprestige.prestige.event.ChunkDataEvent; +import dev.zprestige.prestige.event.RenderCrosshairEvent; +import dev.zprestige.prestige.event.KeyboardInputTickEvent; +import dev.zprestige.prestige.event.RenderStatusEffectsEvent; +import dev.zprestige.prestige.event.ClientTickEvent; +import dev.zprestige.prestige.event.FullBrightEvent; +import dev.zprestige.prestige.event.HurtCamEvent; +import dev.zprestige.prestige.event.AddParticleEvent; +import dev.zprestige.prestige.event.FrustumSetupEvent; +import dev.zprestige.prestige.event.RainGradientEvent; +import dev.zprestige.prestige.event.OverlayMessageEvent; +import dev.zprestige.prestige.event.ResetAttackCooldownEvent; +import dev.zprestige.prestige.event.ResolutionChangedEvent; +import dev.zprestige.prestige.event.GameJoinEvent; +import dev.zprestige.prestige.event.WorldRendererReloadEvent; +import dev.zprestige.prestige.event.RenderScoreboardEvent; +import dev.zprestige.prestige.event.PreTickEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.event.DoAttackEvent; +import dev.zprestige.prestige.event.ScreenBackgroundEvent; +import dev.zprestige.prestige.inventory.PlayerInteractions; +import dev.zprestige.prestige.network.InventorySwapQueue; +import dev.zprestige.prestige.reflect.CameraAccessor; +import dev.zprestige.prestige.render.EspShaderManager; +import dev.zprestige.prestige.render.GlStateSnapshot; +import dev.zprestige.prestige.render.PostShader; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.GameRendererAccessor; +import dev.zprestige.prestige.render.GuiRendererAccessor; +import dev.zprestige.prestige.render.ProjectionMatrixAccessor; +import dev.zprestige.prestige.render.RenderLayerUtil; +import dev.zprestige.prestige.render.RenderCore; +import dev.zprestige.prestige.render.SilentRotationManager; +import dev.zprestige.prestige.type.EventPhase; +import dev.zprestige.prestige.world.PositionUtil; +import dev.zprestige.prestige.world.HeightContextAccessor; +import java.awt.Color; +import java.util.List; +import java.util.Optional; +import java.util.function.Predicate; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.client.gui.hud.InGameOverlayRenderer; +import net.minecraft.client.gui.render.GuiRenderer; +import net.minecraft.client.render.Camera; +import net.minecraft.client.render.Frustum; +import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.ProjectionMatrix2; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.entity.model.EntityModel; +import net.minecraft.client.util.Window; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.SkinTextures; +import net.minecraft.network.packet.Packet; +import net.minecraft.resource.Resource; +import net.minecraft.text.Text; +import net.minecraft.util.Arm; +import net.minecraft.util.Identifier; +import net.minecraft.util.PlayerInput; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.chunk.WorldChunk; +import org.joml.Matrix4f; +import org.joml.Matrix4fc; +import org.joml.Vector4f; + +public class HookBridge { + public static Resource loadGlowProgramJson(String path) { + return ClasspathResourcePack.createResource(path); + } + + public static boolean hasMouseMoveListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static GlStateSnapshot captureWorldGlState() { + return GlStateSnapshot.capture(); + } + + public static InGameOverlayRenderer getOverlayRenderer(GameRendererAccessor accessor) { + return accessor.getOverlayRenderer(); + } + + public static Color getFogColorForBlue(FogEvent event) { + return event.getColor(); + } + + public static boolean postChunkOcclusionEvent(BlockVisibilityEvent event) { + return event.post(); + } + + public static boolean postStatusEffectOverlayEvent(RenderStatusEffectsEvent event) { + return event.post(); + } + + public static boolean hasHudRenderWork() { + return Prestige.needsHudRender(); + } + + public static Rotation getJumpRotation(SilentRotationManager silentRotationManager) { + return silentRotationManager.getActiveRotation(); + } + + public static void setHeightContextMinY(HeightContextAccessor accessor, int minY) { + accessor.setMinY(minY); + } + + public static boolean postFallbackClientTickEvent(ClientTickEvent event) { + return event.post(); + } + + public static CameraPositionEvent createCameraPosEvent(double x, double y, double z) { + return new CameraPositionEvent(x, y, z); + } + + public static boolean postBlockBreakingEvent(HandleBlockBreakingEvent event) { + return event.post(); + } + + public static void setCameraPos(CameraAccessor accessor, double x, double y, double z) { + accessor.setPos(x, y, z); + } + + public static boolean postExplosionEvent(ExplosionEvent event) { + return event.post(); + } + + public static ResetAttackCooldownEvent createAttackCooldownResetEvent() { + return new ResetAttackCooldownEvent(); + } + + public static boolean postRainGradientEvent(RainGradientEvent event) { + return event.post(); + } + + public static BlockVisibilityEvent createChunkOcclusionEvent(Block block) { + return new BlockVisibilityEvent(block); + } + + public static boolean postInputTickPreEvent(KeyboardInputTickEvent event) { + return event.post(); + } + + public static boolean hasAddParticleListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static Vec3d getUpdateVelocityInputOrNull(MovementYawEvent event) { + return event.getMovementInput(); + } + + public static boolean postDoAttackEvent(DoAttackEvent event) { + return event.post(); + } + + public static Predicate getTargetableEntityPredicate() { + return ReachEvent.getHittableFilter(); + } + + public static boolean hasOverlayMessageListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static ClientTickEvent createClientTickEvent() { + return new ClientTickEvent(); + } + + public static SwingHandEvent createSwingHandPostEvent(EventPhase phase) { + return new SwingHandEvent(phase); + } + + public static boolean postLabelTextEvent(LabelTextEvent event) { + return event.post(); + } + + public static boolean postMouseButtonEvent(MouseButtonEvent event) { + return event.post(); + } + + public static ResolutionChangedEvent createResolutionChangedEvent(Window window) { + return new ResolutionChangedEvent(window); + } + + public static boolean postEntityAddedEvent(EntityAddRemoveEvent event) { + return event.post(); + } + + public static Optional getRenderLayerTextureId(RenderLayer renderLayer) { + return RenderLayerUtil.getTextureId(renderLayer); + } + + public static Color createSkyColor(int red, int green, int blue) { + return new Color(red, green, blue); + } + + public static ItemBobbingEvent createSetBobbingTimeEvent() { + return new ItemBobbingEvent(); + } + + public static SwingHandEvent createSwingHandPreEvent(EventPhase phase) { + return new SwingHandEvent(phase); + } + + public static Vec3d getUpdateVelocityInput(MovementYawEvent event) { + return event.getMovementInput(); + } + + public static FrustumSetupEvent createFrustumEvent(Frustum frustum) { + return new FrustumSetupEvent(frustum); + } + + public static boolean hasSkyColorListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean hasRenderLabelListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static Resource loadPrestigeResource(Identifier identifier) { + return ClasspathResourcePack.createAssetResource(identifier); + } + + public static float getMovementPacketsPitch(SendMovementPacketsEvent event) { + return event.getPitch(); + } + + public static boolean hasChunkOcclusionListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static FogEvent createFogColorEvent(float fogStart, float fogEnd, Color fogColor) { + return new FogEvent(fogStart, fogEnd, fogColor); + } + + public static GuiRendererAccessor createGuiRendererAccessor(GuiRenderer guiRenderer) { + return new GuiRendererAccessor(guiRenderer); + } + + public static AttackEntityEvent createAttackEntityEvent(Entity target) { + return new AttackEntityEvent(target); + } + + public static float getFogRenderDistanceEnd(FogEvent event) { + return event.getEnd(); + } + + public static boolean postTextReplaceEvent(TextReplaceEvent event) { + return event.post(); + } + + public static AddParticleEvent createAddParticleEvent() { + return new AddParticleEvent(); + } + + public static MatrixStack createCameraMatrixStack() { + return new MatrixStack(); + } + + public static boolean postCrosshairRenderEvent(RenderCrosshairEvent event) { + return event.post(); + } + + public static DoItemUseEvent createItemUseEvent() { + return new DoItemUseEvent(); + } + + public static boolean postUpdateVelocityEvent(MovementYawEvent event) { + return event.post(); + } + + public static boolean postSwingArmEvent(SwingArmEvent event) { + return event.post(); + } + + public static boolean postResolutionChangedEvent(ResolutionChangedEvent event) { + return event.post(); + } + + public static boolean postBoundingBoxEvent(BoundingBoxEvent event) { + return event.post(); + } + + public static boolean postHealthIndicatorEvent(HealthIndicatorEvent event) { + return event.post(); + } + + public static double getSetVelocityY(VelocityUpdateEvent event) { + return event.getVelocityY(); + } + + public static VelocityUpdateEvent createSetVelocityEvent(double x, double y, double z) { + return new VelocityUpdateEvent(x, y, z); + } + + public static boolean postMouseMoveEvent(MouseUpdateEvent event) { + return event.post(); + } + + public static Rotation getUpdateVelocityRotation(SilentRotationManager silentRotationManager) { + return silentRotationManager.getActiveRotation(); + } + + public static boolean postCameraPosEvent(CameraPositionEvent event) { + return event.post(); + } + + public static boolean shouldCaptureCameraMatrices() { + return Prestige.needsHudRender(); + } + + public static SkinTextures getPlayerSkinTextures(SkinTexturesEvent event) { + return event.getSkinTextures(); + } + + public static RenderStatusEffectsEvent createStatusEffectOverlayEvent() { + return new RenderStatusEffectsEvent(); + } + + public static MouseButtonEvent createMouseButtonEvent(int button, int action) { + return new MouseButtonEvent(button, action); + } + + public static boolean hasSwingArmListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean hasLightmapListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static TravelEvent createTravelPostEvent(EventPhase phase, float yaw, float pitch) { + return new TravelEvent(phase, yaw, pitch); + } + + public static RenderLabelEvent createRenderLabelEvent(Text originalName, Text displayName, Entity entity) { + return new RenderLabelEvent(originalName, displayName, entity); + } + + public static RenderScoreboardEvent createScoreboardRenderEvent() { + return new RenderScoreboardEvent(); + } + + public static void fireIdleFrameEventAfterTasks() { + Prestige.postFrameEvent(); + } + + public static HeightContextAccessor createHeightContextAccessor(Object heightContext) { + return new HeightContextAccessor(heightContext); + } + + public static ExplosionEvent createExplosionEvent(float power, double x, double y, double z) { + return new ExplosionEvent(power, x, y, z); + } + + public static Color getFogColorForGreen(FogEvent event) { + return event.getColor(); + } + + public static void runWorldRenderTasks(List tasks) { + RenderCore.runTasks(tasks); + } + + public static Rotation getRenderStateRotation(SilentRotationManager silentRotationManager) { + return silentRotationManager.getServerRotation(); + } + + public static Resource loadGlowFragmentShader(String path) { + return ClasspathResourcePack.createResource(path); + } + + public static float getRotationVecPitch(Rotation rotation) { + return rotation.getPitch(); + } + + public static boolean postAmbientOcclusionEvent(BlockVisibilityEvent event) { + return event.post(); + } + + public static boolean postShieldBreakEvent(ShieldBreakEvent event) { + return event.post(); + } + + public static boolean hasHandSwingDurationListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static HandleBlockBreakingEvent createBlockBreakingEvent() { + return new HandleBlockBreakingEvent(); + } + + public static WorldRendererReloadEvent createWorldRendererReloadEvent() { + return new WorldRendererReloadEvent(); + } + + public static boolean hasPacketReceiveListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static String getProfileName(GameProfile profile) { + return PositionUtil.getProfileName(profile); + } + + public static boolean postCameraRotationEvent(CameraRotationEvent event) { + return event.post(); + } + + public static DoAttackEvent createDoAttackEvent() { + return new DoAttackEvent(); + } + + public static Vec3d createVelocityVector(double x, double y, double z) { + return new Vec3d(x, y, z); + } + + public static String getTextReplaceTarget(TextReplaceEvent event) { + return event.getTarget(); + } + + public static boolean postLightmapEvent(FullBrightEvent event) { + return event.post(); + } + + public static boolean postPreTickEvent(PreTickEvent event) { + return event.post(); + } + + public static boolean isRenderRotationApplied(VisualRotationManager visualRotationManager) { + return visualRotationManager.isRotationApplied(); + } + + public static Resource loadNamespaceResource(Identifier identifier) { + return ClasspathResourcePack.createAssetResource(identifier); + } + + public static double getCameraPosY(CameraPositionEvent event) { + return event.getY(); + } + + public static boolean postGetBobbingTimeEvent(ItemBobbingEvent event) { + return event.post(); + } + + public static boolean postKeyEvent(KeyEvent event) { + return event.post(); + } + + public static KeyboardInputTickEvent createInputTickPreEvent(EventPhase phase) { + return new KeyboardInputTickEvent(phase); + } + + public static SkyColorEvent createSkyColorEvent(Color skyColor, Color horizonColor) { + return new SkyColorEvent(skyColor, horizonColor); + } + + public static boolean postTravelPreEvent(TravelEvent event) { + return event.post(); + } + + public static float getJumpYaw(MovementYawEvent event) { + return event.getYaw(); + } + + public static ItemBobbingEvent createGetBobbingTimeEvent() { + return new ItemBobbingEvent(); + } + + public static List drainWorldRenderTasks() { + return RenderCore.drainTasks(); + } + + public static boolean postItemUseEvent(DoItemUseEvent event) { + return event.post(); + } + + public static boolean hasFrustumListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static void restoreWorldGlStateOnError(GlStateSnapshot glState) { + glState.restore(); + } + + public static boolean postMovementPacketsPostEvent(SendMovementPacketsEvent event) { + return event.post(); + } + + public static boolean postPlayerSkinEvent(SkinTexturesEvent event) { + return event.post(); + } + + public static GlStateSnapshot captureHudGlState() { + return GlStateSnapshot.capture(); + } + + public static boolean hasTimeOfDayListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static FullBrightEvent createEntitySkyLightEvent() { + return new FullBrightEvent(); + } + + public static boolean hasSwingHandListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static CameraMatrices createWorldRenderContext(Matrix4f projection, Matrix4f modelView, Camera camera) { + return new CameraMatrices(projection, modelView, camera); + } + + public static ChunkDataEvent createChunkDataEvent(WorldChunk chunk) { + return new ChunkDataEvent(chunk); + } + + public static PlayerInput createPlayerInput(boolean forward, boolean backward, boolean left, boolean right, boolean jump, boolean sneak, boolean sprint) { + return new PlayerInput(forward, backward, left, right, jump, sneak, sprint); + } + + public static boolean hasReachListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static RenderCrosshairEvent createCrosshairRenderEvent() { + return new RenderCrosshairEvent(); + } + + public static PlayerRenderStateEvent createRenderStatePostEvent(Entity entity, EventPhase phase) { + return new PlayerRenderStateEvent(entity, phase); + } + + public static void restoreHudGlState(GlStateSnapshot glState) { + glState.restore(); + } + + public static int getExtraFloatingItemTicks(FloatingItemTickEvent event) { + return event.getExtraTicks(); + } + + public static Resource loadBlurFragmentShader(String path) { + return ClasspathResourcePack.createResource(path); + } + + public static SendMovementPacketsEvent createMovementPacketsPreEvent(EventPhase phase, float yaw, float pitch) { + return new SendMovementPacketsEvent(phase, yaw, pitch); + } + + public static PreTickEvent createPreTickEvent() { + return new PreTickEvent(); + } + + public static boolean hasRainGradientListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean hasSetBobbingTimeListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean hasHudRenderWorkInWorldPass() { + return Prestige.needsHudRender(); + } + + public static MovementYawEvent createJumpYawEvent(float yaw) { + return new MovementYawEvent(yaw); + } + + public static boolean hasRenderStatePreListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean hasPlayerSkinListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static TextReplaceEvent createTextReplaceEvent(String search, String text) { + return new TextReplaceEvent(search, text); + } + + public static Color getFogColorForRed(FogEvent event) { + return event.getColor(); + } + + public static boolean hasTextDisplayLabelListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean postAddParticleEvent(AddParticleEvent event) { + return event.post(); + } + + public static Resource loadRoundedRectFragmentShader(String path) { + return ClasspathResourcePack.createResource(path); + } + + public static HurtCamEvent createHurtCamEvent() { + return new HurtCamEvent(); + } + + public static Resource loadGlowPostJson(String path) { + return ClasspathResourcePack.createResource(path); + } + + public static boolean hasFogColorListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean postTextDisplayLabelEvent(LabelTextEvent event) { + return event.post(); + } + + public static boolean hasFloatingItemTickListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static HandSwingDurationEvent createHandSwingDurationEvent(int duration) { + return new HandSwingDurationEvent(duration); + } + + public static PlayerRenderStateEvent createRenderStatePreEvent(Entity entity, EventPhase phase) { + return new PlayerRenderStateEvent(entity, phase); + } + + public static String getTextReplacement(TextReplaceEvent event) { + return event.getText(); + } + + public static boolean postScoreboardRenderEvent(RenderScoreboardEvent event) { + return event.post(); + } + + public static VertexConsumer wrapWithOutlineConsumer(VertexConsumer consumer, int textureId) { + return RenderLayerUtil.withOutlineBuffer(consumer, textureId); + } + + public static boolean hasEntitySkyLightListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static float getLockedRotationPitch(Rotation rotation) { + return rotation.getPitch(); + } + + public static LabelTextEvent createLabelTextEvent(Entity entity, Text displayName) { + return new LabelTextEvent(entity, displayName); + } + + public static RainGradientEvent createRainGradientEvent() { + return new RainGradientEvent(); + } + + public static boolean hasLabelTextListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean postSwingHandPreEvent(SwingHandEvent event) { + return event.post(); + } + + public static HealthIndicatorEvent createHealthIndicatorEvent(PlayerEntity player, String suffix) { + return new HealthIndicatorEvent(player, suffix); + } + + public static Vector4f createFogBufferColor(float red, float green, float blue, float alpha) { + return new Vector4f(red, green, blue, alpha); + } + + public static boolean hasWorldRendererReloadListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static GameRendererAccessor createGameRendererAccessor(GameRenderer gameRenderer) { + return new GameRendererAccessor(gameRenderer); + } + + public static BlockStateUpdateEvent createBlockUpdateEvent(BlockPos pos, BlockState state) { + return new BlockStateUpdateEvent(pos, state); + } + + public static void restoreHudGlStateAfterTasks(GlStateSnapshot glState) { + glState.restore(); + } + + public static void restoreWorldGlState(GlStateSnapshot glState) { + glState.restore(); + } + + public static float getCameraYaw(CameraRotationEvent event) { + return event.getYaw(); + } + + public static TravelEvent createTravelPreEvent(EventPhase phase, float yaw, float pitch) { + return new TravelEvent(phase, yaw, pitch); + } + + public static FullBrightEvent createLightmapEvent() { + return new FullBrightEvent(); + } + + public static Text getTextDisplayLabelText(LabelTextEvent event) { + return event.getText(); + } + + public static String getHealthIndicatorSuffix(HealthIndicatorEvent event) { + return event.getSuffix(); + } + + public static ReachEvent createReachEvent(float extraReach) { + return new ReachEvent(extraReach); + } + + public static boolean postDrawSideEvent(BlockVisibilityEvent event) { + return event.post(); + } + + public static boolean postFireOverlayEvent(FireOverlayEvent event) { + return event.post(); + } + + public static boolean postBlockUpdateEvent(BlockStateUpdateEvent event) { + return event.post(); + } + + public static boolean hasRenderStatePostListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean shouldDrawSide(BlockVisibilityEvent event) { + return event.isVisible(); + } + + public static CameraMatrices createHudRenderContext(Matrix4f projection, Matrix4f modelView, Camera camera) { + return new CameraMatrices(projection, modelView, camera); + } + + public static boolean postJumpYawEvent(MovementYawEvent event) { + return event.post(); + } + + public static boolean postSetBobbingTimeEvent(ItemBobbingEvent event) { + return event.post(); + } + + public static Color createHorizonColor(int red, int green, int blue) { + return new Color(red, green, blue); + } + + public static OverlayMessageEvent createOverlayMessageEvent() { + return new OverlayMessageEvent(); + } + + public static double getCameraPosX(CameraPositionEvent event) { + return event.getX(); + } + + public static double getCameraPosZ(CameraPositionEvent event) { + return event.getZ(); + } + + public static ProjectionMatrixAccessor createProjectionMatrixAccessor(ProjectionMatrix2 projectionMatrix) { + return new ProjectionMatrixAccessor(projectionMatrix); + } + + public static Matrix4f copyModelViewMatrix(Matrix4fc modelView) { + return new Matrix4f(modelView); + } + + public static boolean postScreenBackgroundEvent(ScreenBackgroundEvent event) { + return event.post(); + } + + public static PostShader getEspPostShader() { + return EspShaderManager.getActiveShader(); + } + + public static Resource loadRoundedRectGlowFragmentShader(String path) { + return ClasspathResourcePack.createResource(path); + } + + public static boolean postInputTickPostEvent(KeyboardInputTickEvent event) { + return event.post(); + } + + public static FogEvent createFogBufferEvent(float fogStart, float fogEnd, Color fogColor) { + return new FogEvent(fogStart, fogEnd, fogColor); + } + + public static BlockVisibilityEvent createDrawSideEvent(Block block) { + return new BlockVisibilityEvent(block); + } + + public static boolean postClientTickEvent(ClientTickEvent event) { + return event.post(); + } + + public static Rotation getRotationVecOverride(SilentRotationManager silentRotationManager) { + return silentRotationManager.getActiveRotation(); + } + + public static float getUpdateVelocityYaw(MovementYawEvent event) { + return event.getYaw(); + } + + public static boolean hasBoundingBoxListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static FireOverlayEvent createFireOverlayEvent() { + return new FireOverlayEvent(); + } + + public static boolean postSkyColorEvent(SkyColorEvent event) { + return event.post(); + } + + public static void advanceFrameCounter() { + RenderCore.nextFrame(); + } + + public static float getFogEnvironmentalEnd(FogEvent event) { + return event.getEnd(); + } + + public static void trackOutgoingPacket(InventorySwapQueue swapQueue, Packet packet) { + swapQueue.onPacketSent(packet); + } + + public static boolean postMovementPacketsPreEvent(SendMovementPacketsEvent event) { + return event.post(); + } + + public static float getExtraReach(ReachEvent event) { + return event.getExtraReach(); + } + + public static Vector4f createFogColorVector(float red, float green, float blue, float alpha) { + return new Vector4f(red, green, blue, alpha); + } + + public static boolean shouldRestoreSprint(InventorySwapQueue swapQueue) { + return swapQueue.consumeResumeSprint(); + } + + public static void setHeightContextHeight(HeightContextAccessor accessor, int height) { + accessor.setHeight(height); + } + + public static boolean postRenderStatePreEvent(PlayerRenderStateEvent event) { + return event.post(); + } + + public static boolean hasGetBobbingTimeListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean postPacketReceiveEvent(PacketReceiveEvent event) { + return event.post(); + } + + public static TimeOfDayEvent createTimeOfDayEvent(long timeOfDay) { + return new TimeOfDayEvent(timeOfDay); + } + + public static boolean postFogColorEvent(FogEvent event) { + return event.post(); + } + + public static void renderWorldPass(CameraMatrices context) { + RenderCore.renderWorld(context); + } + + public static void restoreWorldGlStateAfterTasks(GlStateSnapshot glState) { + glState.restore(); + } + + public static BoundingBoxEvent createBoundingBoxEvent(Entity entity, Box box) { + return new BoundingBoxEvent(entity, box); + } + + public static CameraRotationEvent createCameraRotationEvent(float yaw, float pitch) { + return new CameraRotationEvent(yaw, pitch); + } + + public static boolean hasFogBufferListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static Text getLabelText(LabelTextEvent event) { + return event.getText(); + } + + public static PacketSendEvent createPacketSendEvent(Packet packet) { + return new PacketSendEvent(packet); + } + + public static boolean hasListEntrySkinListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static SwingArmEvent createSwingArmEvent(MatrixStack matrices, Arm arm, float swingProgress, float equipProgress) { + return new SwingArmEvent(matrices, arm, swingProgress, equipProgress); + } + + public static ProjectionMatrix2 getGuiProjectionMatrix(GuiRendererAccessor accessor) { + return accessor.getProjectionMatrix(); + } + + public static ClientTickEvent createFallbackClientTickEvent() { + return new ClientTickEvent(); + } + + public static boolean postChunkDataEvent(ChunkDataEvent event) { + return event.post(); + } + + public static boolean postTimeOfDayEvent(TimeOfDayEvent event) { + return event.post(); + } + + public static Matrix4f createHudModelViewMatrix() { + return new Matrix4f(); + } + + public static boolean hasHealthIndicatorListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static CameraAccessor createCameraRotationAccessor(Camera camera) { + return new CameraAccessor(camera); + } + + public static Color getSkyColorOrNull(SkyColorEvent event) { + return event.getSkyColor(); + } + + public static MouseUpdateEvent createMouseMoveEvent(double cursorDeltaX, double cursorDeltaY) { + return new MouseUpdateEvent(cursorDeltaX, cursorDeltaY); + } + + public static Color getHorizonColor(SkyColorEvent event) { + return event.getHorizonColor(); + } + + public static LabelTextEvent createTextDisplayLabelEvent(Entity entity, Text text) { + return new LabelTextEvent(entity, text); + } + + public static Color getSkyColor(SkyColorEvent event) { + return event.getSkyColor(); + } + + public static void captureViewport() { + dev.zprestige.prestige.render.Render2D.captureViewport(); + } + + public static boolean postEntityRemovedEvent(EntityAddRemoveEvent event) { + return event.post(); + } + + public static PacketReceiveEvent createPacketReceiveEvent(Packet packet) { + return new PacketReceiveEvent(packet); + } + + public static boolean postGameJoinEvent(GameJoinEvent event) { + return event.post(); + } + + public static ShieldBreakEvent createShieldBreakEvent(LivingEntity entity) { + return new ShieldBreakEvent(entity); + } + + public static boolean hasHurtCamListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static KeyEvent createKeyEvent(int key, int action) { + return new KeyEvent(key, action); + } + + public static Color getFogColor(FogEvent event) { + return event.getColor(); + } + + public static boolean postFloatingItemTickEvent(FloatingItemTickEvent event) { + return event.post(); + } + + public static Matrix4f getProjectionMatrix(ProjectionMatrixAccessor accessor, float width, float height) { + return accessor.getMatrix(width, height); + } + + public static boolean shouldBlockMovementInput(InventorySwapQueue swapQueue) { + return swapQueue.shouldHoldInput(); + } + + public static Float getFogSkyEndOverride(FogEvent event) { + return event.getSkyEnd(); + } + + public static boolean isEspModelForGlow(EntityModel model) { + return EspShaderManager.matchesTargetTypes(model); + } + + public static boolean postPacketSendEvent(PacketSendEvent event) { + return event.post(); + } + + public static CameraAccessor createCameraPosAccessor(Camera camera) { + return new CameraAccessor(camera); + } + + public static boolean postHandSwingDurationEvent(HandSwingDurationEvent event) { + return event.post(); + } + + public static KeyboardInputTickEvent createInputTickPostEvent(EventPhase phase) { + return new KeyboardInputTickEvent(phase); + } + + public static BlockVisibilityEvent createAmbientOcclusionEvent(Block block) { + return new BlockVisibilityEvent(block); + } + + public static boolean hasShieldBreakListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static float getRotationVecYaw(Rotation rotation) { + return rotation.getYaw(); + } + + public static boolean postSetVelocityEvent(VelocityUpdateEvent event) { + return event.post(); + } + + public static boolean shouldSkipSwingHandPost(SwingHandEvent event) { + return event.isSkipPost(); + } + + public static void advanceFrameCounterAfterTasks() { + RenderCore.nextFrame(); + } + + public static boolean hasCameraPosListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static Resource loadRoundedRectShaderJson(String path) { + return ClasspathResourcePack.createResource(path); + } + + public static SkinTextures getListEntrySkinTextures(SkinTexturesEvent event) { + return event.getSkinTextures(); + } + + public static boolean hasBlockUpdateListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean postTravelPostEvent(TravelEvent event) { + return event.post(); + } + + public static void fireIdleFrameEvent() { + Prestige.postFrameEvent(); + } + + public static void runHudRenderTasks(List tasks) { + RenderCore.runTasks(tasks); + } + + public static boolean postBackgroundTextureEvent(ScreenBackgroundEvent event) { + return event.post(); + } + + public static ScreenBackgroundEvent createBackgroundTextureEvent() { + return new ScreenBackgroundEvent(); + } + + public static FloatingItemTickEvent createFloatingItemTickEvent(int extraTicks) { + return new FloatingItemTickEvent(extraTicks); + } + + public static boolean postRenderStatePostEvent(PlayerRenderStateEvent event) { + return event.post(); + } + + public static boolean postOverlayMessageEvent(OverlayMessageEvent event) { + return event.post(); + } + + public static EntityAddRemoveEvent createEntityRemovedEvent(Entity entity, EventPhase phase) { + return new EntityAddRemoveEvent(entity, phase); + } + + public static boolean postFrustumEvent(FrustumSetupEvent event) { + return event.post(); + } + + public static float getBaseReachDistance() { + return PlayerInteractions.getReachDistance(); + } + + public static boolean hasCrosshairRenderListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean hasAmbientOcclusionListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static Resource loadBlurShaderJson(String path) { + return ClasspathResourcePack.createResource(path); + } + + public static void restoreHudGlStateOnError(GlStateSnapshot glState) { + glState.restore(); + } + + public static GameJoinEvent createGameJoinEvent() { + return new GameJoinEvent(); + } + + public static double getSetVelocityZ(VelocityUpdateEvent event) { + return event.getVelocityZ(); + } + + public static Rotation getTravelPreRotation(SilentRotationManager silentRotationManager) { + return silentRotationManager.getActiveRotation(); + } + + public static List drainHudRenderTasks() { + return RenderCore.drainTasks(); + } + + public static float getFogRenderDistanceStart(FogEvent event) { + return event.getStart(); + } + + public static Color getHorizonColorOrNull(SkyColorEvent event) { + return event.getHorizonColor(); + } + + public static SkinTexturesEvent createListEntrySkinEvent(SkinTextures skinTextures, String playerName) { + return new SkinTexturesEvent(skinTextures, playerName); + } + + public static float getMovementPacketsYaw(SendMovementPacketsEvent event) { + return event.getYaw(); + } + + public static boolean postHurtCamEvent(HurtCamEvent event) { + return event.post(); + } + + public static SkinTexturesEvent createPlayerSkinEvent(SkinTextures skinTextures, String playerName) { + return new SkinTexturesEvent(skinTextures, playerName); + } + + public static void setCameraRotation(CameraAccessor accessor, float yaw, float pitch) { + accessor.setRotation(yaw, pitch); + } + + public static EntityAddRemoveEvent createEntityAddedEvent(Entity entity, EventPhase phase) { + return new EntityAddRemoveEvent(entity, phase); + } + + public static boolean postListEntrySkinEvent(SkinTexturesEvent event) { + return event.post(); + } + + public static boolean postEntitySkyLightEvent(FullBrightEvent event) { + return event.post(); + } + + public static float getFogEnvironmentalStart(FogEvent event) { + return event.getStart(); + } + + public static boolean postRenderLabelEvent(RenderLabelEvent event) { + return event.post(); + } + + public static float getLockedRotationYaw(Rotation rotation) { + return rotation.getYaw(); + } + + public static long getTimeOfDay(TimeOfDayEvent event) { + return event.getTime(); + } + + public static boolean isEspModelForVisibility(EntityModel model) { + return EspShaderManager.isTargetModel(model); + } + + public static boolean postAttackCooldownResetEvent(ResetAttackCooldownEvent event) { + return event.post(); + } + + public static Rotation getLockedMovementRotation(SilentRotationManager silentRotationManager) { + return silentRotationManager.getLockedRotation(); + } + + public static boolean hasPacketSendListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean postFogBufferEvent(FogEvent event) { + return event.post(); + } + + public static void renderHudPass(CameraMatrices context) { + RenderCore.renderHud(context); + } + + public static boolean hasScoreboardRenderListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean hasWorldRenderWork() { + return Prestige.needsWorldRender(); + } + + public static boolean postReachEvent(ReachEvent event) { + return event.post(); + } + + public static Resource loadRoundedRectGlowShaderJson(String path) { + return ClasspathResourcePack.createResource(path); + } + + public static Color getFogColorForAlpha(FogEvent event) { + return event.getColor(); + } + + public static MovementYawEvent createUpdateVelocityEvent(float yaw, Vec3d movementInput) { + return new MovementYawEvent(yaw, movementInput); + } + + public static boolean hasTextReplaceListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static boolean postAttackEntityEvent(AttackEntityEvent event) { + return event.post(); + } + + public static boolean postSwingHandPostEvent(SwingHandEvent event) { + return event.post(); + } + + public static double getSetVelocityX(VelocityUpdateEvent event) { + return event.getVelocityX(); + } + + public static ScreenBackgroundEvent createScreenBackgroundEvent() { + return new ScreenBackgroundEvent(); + } + + public static SendMovementPacketsEvent createMovementPacketsPostEvent(EventPhase phase, float yaw, float pitch) { + return new SendMovementPacketsEvent(phase, yaw, pitch); + } + + public static boolean postWorldRendererReloadEvent(WorldRendererReloadEvent event) { + return event.post(); + } + + public static float getCameraPitch(CameraRotationEvent event) { + return event.getPitch(); + } + + public static boolean hasDrawSideListeners(EventBus eventBus, Class eventClass) { + return eventBus.hasListeners(eventClass); + } + + public static Box getModifiedBoundingBox(BoundingBoxEvent event) { + return event.getBox(); + } + + public static Rotation getTravelPostRotation(SilentRotationManager silentRotationManager) { + return silentRotationManager.getActiveRotation(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/util/LruCache.java b/src/main/java/dev/zprestige/prestige/util/LruCache.java index d683589..5b68942 100644 --- a/src/main/java/dev/zprestige/prestige/util/LruCache.java +++ b/src/main/java/dev/zprestige/prestige/util/LruCache.java @@ -1,88 +1,18 @@ package dev.zprestige.prestige.util; -import java.lang.reflect.Field; -import java.lang.reflect.Method; import java.util.LinkedHashMap; import java.util.Map.Entry; public class LruCache extends LinkedHashMap { - public final int a; + public final int maxSize; - public LruCache(int var1, float var2, boolean var3, int var4) { - super(var1, var2, var3); - this.a = var4; + public LruCache(int initialCapacity, float initialLoadFactor, boolean orderByAccess, int maxEntries) { + super(initialCapacity, initialLoadFactor, orderByAccess); + this.maxSize = maxEntries; } @Override - public boolean removeEldestEntry(Entry var1) { - return this.size() > this.a; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public boolean removeEldestEntry(Entry eldest) { + return this.size() > this.maxSize; } } diff --git a/src/main/java/dev/zprestige/prestige/util/NotificationManager.java b/src/main/java/dev/zprestige/prestige/util/NotificationManager.java new file mode 100644 index 0000000..eb3e20a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/util/NotificationManager.java @@ -0,0 +1,65 @@ +package dev.zprestige.prestige.util; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.Notification; +import dev.zprestige.prestige.type.NotificationType; +import java.util.ArrayList; +import java.util.Iterator; +import org.joml.Matrix4f; + +public class NotificationManager implements MinecraftAccess { + private final ArrayList notifications; + public static float animationDelta = 0.0F; + + public NotificationManager() { + super(); + this.notifications = new ArrayList(); + Prestige.eventBus.register(this); + } + + @Subscribe + public void onFrame(FrameEvent event) { + animationDelta = (float)(System.currentTimeMillis() - 0L) * 0.005F; + System.currentTimeMillis(); + if (!this.notifications.isEmpty()) { + float scaleFactor = mc.getWindow().getScaleFactor(); + float scale = 2.0F / scaleFactor; + Matrix4f matrix = new Matrix4f().scale(scale, scale, 1.0F); + float screenWidth = mc.getWindow().getFramebufferWidth() / 2.0F; + float screenHeight = mc.getWindow().getFramebufferHeight() / 2.0F; + float width = 150.0F; + float height = 30.0F; + float x = screenWidth - width - 10.0F; + float y = screenHeight - 50.0F; + Iterator iterator = this.notifications.iterator(); + + while (iterator.hasNext()) { + Notification notification = (Notification)iterator.next(); + if (notification.finished) { + iterator.remove(); + } else { + boolean visible = y > screenHeight / 4.0F; + y -= notification.render(matrix, event.renderer, event.context, x, y, width, height, visible); + } + } + } + } + + public void addNotification(String title, String message, long duration, NotificationType type) { + for (Notification existing : (Iterable)(new ArrayList(this.notifications))) { + if (existing.title.equals(title) && existing.message.equals(message)) { + existing.dismissing = true; + existing.appearing = false; + } + } + + this.notifications.add(new Notification(title, message, duration, type)); + } + + public boolean hasNotifications() { + return !this.notifications.isEmpty(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/util/SimulatedClickManager.java b/src/main/java/dev/zprestige/prestige/util/SimulatedClickManager.java new file mode 100644 index 0000000..5fe8e94 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/util/SimulatedClickManager.java @@ -0,0 +1,124 @@ +package dev.zprestige.prestige.util; + +import dev.zprestige.prestige.Subscribe; +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.event.HandleBlockBreakingEvent; +import dev.zprestige.prestige.event.FrameEvent; +import dev.zprestige.prestige.event.DoItemUseEvent; +import dev.zprestige.prestige.event.DoAttackEvent; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.KeyBindingAccessor; +import dev.zprestige.prestige.render.MouseAccessor; +import java.util.HashMap; +import org.lwjgl.glfw.GLFW; + +public class SimulatedClickManager implements MinecraftAccess { + private final HashMap heldButtons; + private boolean suppressAttack; + private boolean suppressUse; + public static int attackButton = 0; + public static int useButton = 1; + private static final long MOUSE_BUTTON_LIMIT = -954273915637596152L; + + public SimulatedClickManager() { + super(); + this.heldButtons = new HashMap(); + Prestige.eventBus.register(this); + } + + public boolean isSimulated(int button) { + return this.heldButtons.containsKey(button); + } + + private void releaseButton(int button) { + if (this.isSimulated(button)) { + new MouseAccessor(mc.mouse).invokeMouseButton(mc.getWindow().getHandle(), button, 0, 0); + this.heldButtons.remove(button); + } + + if (button == attackButton) { + this.suppressAttack = false; + } + + if (button == useButton) { + this.suppressUse = false; + } + } + + private void tickButton(int button) { + if (this.isSimulated(button)) { + int remainingTicks = (Integer)this.heldButtons.get(button); + if (remainingTicks > 0) { + this.heldButtons.replace(button, remainingTicks - 1); + } else { + this.releaseButton(button); + } + } + } + + @Subscribe + public void onFrame(FrameEvent event) { + if (!mc.isWindowFocused()) { + this.releaseButton(attackButton); + this.releaseButton(useButton); + this.suppressAttack = false; + this.suppressUse = false; + } else { + this.tickButton(attackButton); + this.tickButton(useButton); + } + } + + @Subscribe + public void onDoItemUse(DoItemUseEvent event) { + if (this.suppressUse) { + if (!this.isKeyUp(new KeyBindingAccessor(mc.options.useKey).getBoundKey().getCode())) { + this.suppressUse = false; + return; + } + + event.cancel(); + if (!this.isSimulated(useButton)) { + this.suppressUse = false; + } + } + } + + @Subscribe + public void onDoAttack(DoAttackEvent event) { + if (this.suppressAttack) { + if (!this.isKeyUp(new KeyBindingAccessor(mc.options.attackKey).getBoundKey().getCode())) { + this.suppressAttack = false; + return; + } + + event.cancel(); + if (!this.isSimulated(attackButton)) { + this.suppressAttack = false; + } + } + } + + @Subscribe + public void onHandleBlockBreaking(HandleBlockBreakingEvent event) { + if (this.suppressAttack) { + if (!this.isKeyUp(new KeyBindingAccessor(mc.options.attackKey).getBoundKey().getCode())) { + this.suppressAttack = false; + return; + } + + event.cancel(); + if (!this.isSimulated(attackButton)) { + this.suppressAttack = false; + } + } + } + + private boolean isKeyUp(int keyCode) { + if (keyCode < 0) { + return true; + } else { + return keyCode <= (int)MOUSE_BUTTON_LIMIT ? GLFW.glfwGetMouseButton(mc.getWindow().getHandle(), keyCode) != 1 : GLFW.glfwGetKey(mc.getWindow().getHandle(), keyCode) != 1; + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/util/Timer.java b/src/main/java/dev/zprestige/prestige/util/Timer.java deleted file mode 100644 index e3a5aaf..0000000 --- a/src/main/java/dev/zprestige/prestige/util/Timer.java +++ /dev/null @@ -1,105 +0,0 @@ -package dev.zprestige.prestige.util; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent24; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class Timer { - private long a; - private long b; - - public Timer(long var1) { - super(); - var1 = 0L; - var1 = 110795213458092L ^ var1; - long var3 = var1 ^ 113819009246214L; - this.a = 0L; - this.b = 0L; - Prestige.eventBus.register(new Object[]{this, var3}); - } - - @Subscribe - public void a(TickEvent24 var1) { - Event.b(); - this.b = System.currentTimeMillis() - this.a; - this.a = System.currentTimeMillis(); - if ((float)this.b > 30.0F) { - this.b = 0L; - } - } - - public float a(Object[] var1) { - return (float)this.b * 0.005F; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/util/TpsTimer.java b/src/main/java/dev/zprestige/prestige/util/TpsTimer.java deleted file mode 100644 index 62740ea..0000000 --- a/src/main/java/dev/zprestige/prestige/util/TpsTimer.java +++ /dev/null @@ -1,162 +0,0 @@ -package dev.zprestige.prestige.util; - -import dev.zprestige.prestige.Subscribe; -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.data.MatrixCameraData; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.event.TickEvent24; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderHelper23; -import dev.zprestige.prestige.render.RenderHelper8; -import dev.zprestige.prestige.type.NotificationType; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Iterator; -import org.joml.Matrix4f; - -public class TpsTimer implements RenderContract2 { - private final ArrayList a; - public static float d = 0.0F; - - public TpsTimer(long var1) { - super(); - var1 = 0L; - var1 = 10332698973130L ^ var1; - long var3 = var1 ^ 102853721104670L; - this.a = new ArrayList(); - Prestige.eventBus.register(new Object[]{this, var3}); - } - - @Subscribe - public void a(TickEvent24 var1) { - Event.b(); - d = (float)(System.currentTimeMillis() - 0L) * 0.005F; - System.currentTimeMillis(); - if (!this.a.isEmpty()) { - float var7 = b.getWindow().getScaleFactor(); - float var8 = 2.0F / var7; - Matrix4f var9 = new Matrix4f().scale(var8, var8, 1.0F); - float var10 = b.getWindow().getFramebufferWidth() / 2.0F; - float var11 = b.getWindow().getFramebufferHeight() / 2.0F; - float var12 = 150.0F; - float var13 = 30.0F; - float var14 = var10 - var12 - 10.0F; - float var15 = var11 - 50.0F; - Iterator var16 = this.a.iterator(); - - while (var16.hasNext()) { - RenderHelper23 var17 = (RenderHelper23)var16.next(); - if (var17.h) { - var16.remove(); - } else { - boolean var18 = var15 > var11 / 4.0F; - RenderHelper8 var10003 = var1.a; - MatrixCameraData var10004 = var1.b; - Object[] var10012 = new Object[]{null, null, null, null, null, null, null, null, 79831589046473L}; - var10012[7] = var18; - var10012[6] = var13; - var10012[5] = var12; - var10012[4] = var15; - var10012[3] = var14; - var10012[2] = var10004; - var10012[1] = var10003; - var10012[0] = var9; - var15 -= var17.a(var10012); - } - } - } - } - - public void a(Object[] var1) { - String var3 = (String)var1[0]; - String var2 = (String)var1[1]; - long var4 = (Long)var1[2]; - NotificationType var8 = (NotificationType)var1[3]; - long var6 = (Long)var1[4]; - var6 = 10332698973130L ^ var6; - long var9 = var6 ^ 125851865862184L; - Event.b(); - - for (RenderHelper23 var13 : (Iterable)(new ArrayList(this.a))) { - if (var13.a.equals(var3) && var13.b.equals(var2)) { - var13.g = true; - var13.f = false; - } - } - - this.a.add(new RenderHelper23(var3, var2, var4, var8, var9)); - } - - public boolean a_boolean______________________________________________(Object[] var1) { - return !this.a.isEmpty(); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/BlockUtil.java b/src/main/java/dev/zprestige/prestige/world/BlockUtil.java new file mode 100644 index 0000000..362baed --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/BlockUtil.java @@ -0,0 +1,117 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.render.MinecraftAccess; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Predicate; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.client.MinecraftClient; +import net.minecraft.entity.Entity; +import net.minecraft.entity.ItemEntity; +import net.minecraft.state.property.Properties; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.BlockPos.Mutable; + +public class BlockUtil implements MinecraftAccess { + private static final MinecraftClient CLIENT = MinecraftClient.getInstance(); + + public static boolean isCobwebInLineOfSight(Entity target) { + Vec3d eyePos = CLIENT.player.getEyePos(); + Vec3d targetEyePos = target.getEyePos(); + Box targetBox = target.getBoundingBox(); + Vec3d direction = targetEyePos.subtract(eyePos).normalize(); + double distance = eyePos.distanceTo(targetEyePos); + + for (double traveled = 0.0; traveled < distance; traveled += 0.1) { + Vec3d point = eyePos.add(direction.multiply(traveled)); + if (targetBox != null && targetBox.contains(point)) { + return false; + } + + BlockPos blockPos = BlockPos.ofFloored(point.x, point.y, point.z); + if (CLIENT.world.getBlockState(blockPos).getBlock() == Blocks.COBWEB) { + return true; + } + } + + return false; + } + + public static BlockPos getPlacePos(BlockHitResult hitResult) { + return hitResult.getBlockPos().add(hitResult.getSide().getOffsetX(), hitResult.getSide().getOffsetY(), hitResult.getSide().getOffsetZ()); + } + + public static boolean isOf(BlockPos pos, Block block) { + return getState(pos).isOf(block); + } + + public static boolean isClickableHit(HitResult hitResult) { + return isClickableBlock(((BlockHitResult)hitResult).getBlockPos()); + } + + public static boolean isClickableBlockHit(BlockHitResult hitResult) { + return isClickableBlock(hitResult.getBlockPos()); + } + + public static boolean isClickableBlock(BlockPos pos) { + return !CLIENT.world.getBlockState(pos).isReplaceable() + || CLIENT.world.getBlockState(pos).isOf(Blocks.FIRE) + || CLIENT.world.getBlockState(pos).isOf(getShortGrass()) + || CLIENT.world.getBlockState(pos).isOf(Blocks.SNOW) && CLIENT.world.getBlockState(pos).get(Properties.LAYERS) == 1; + } + + public static Block getShortGrass() { + return Blocks.SHORT_GRASS; + } + + public static boolean canPlaceCrystal(BlockPos pos) { + return (isOf(pos, Blocks.OBSIDIAN) || isOf(pos, Blocks.BEDROCK)) + && isOf(pos.up(), Blocks.AIR) + && !hasEntityAt(pos.up()); + } + + public static boolean hasEntityAt(BlockPos pos) { + Box box = new Box(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1.0, pos.getY() + 1.0, pos.getZ() + 1.0); + return !CLIENT.world.getOtherEntities(null, box, entity -> !(entity instanceof ItemEntity)).isEmpty(); + } + + public static List getBlocksInRadius(int radius, Predicate filter) { + ArrayList result = new ArrayList(); + BlockPos center = CLIENT.player.getBlockPos(); + int centerX = center.getX(); + int centerY = center.getY(); + int centerZ = center.getZ(); + Mutable mutable = new Mutable(); + + for (int dx = -radius; dx <= radius; dx++) { + for (int dy = -radius; dy <= radius; dy++) { + for (int dz = -radius; dz <= radius; dz++) { + mutable.set(centerX + dx, centerY + dy, centerZ + dz); + if (filter.test(mutable)) { + result.add(mutable.toImmutable()); + } + } + } + } + + return result; + } + + public static boolean isBlock(BlockPos pos, Block block) { + return CLIENT.world.getBlockState(pos).getBlock() == block; + } + + public static BlockState getState(BlockPos pos) { + return CLIENT.world.getBlockState(pos); + } + + public static int getAnchorCharges(BlockPos pos) { + return getState(pos).get(Properties.CHARGES); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/ClientChunkManagerAccessor.java b/src/main/java/dev/zprestige/prestige/world/ClientChunkManagerAccessor.java new file mode 100644 index 0000000..35f799b --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/ClientChunkManagerAccessor.java @@ -0,0 +1,18 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.client.world.ClientChunkManager; +import net.minecraft.client.world.ClientChunkManager.ClientChunkMap; + +public class ClientChunkManagerAccessor { + private final ClientChunkManager chunkManager; + private static final String CHUNKS_FIELD = "chunks"; + + public ClientChunkManagerAccessor(ClientChunkManager manager) { + this.chunkManager = manager; + } + + public ClientChunkMap getChunkMap() { + return (ClientChunkMap)FieldAccessor.bindMapped(this.chunkManager, CHUNKS_FIELD, ClientChunkManager.class, ClientChunkMap.class).get(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/ClientChunkMapAccessor.java b/src/main/java/dev/zprestige/prestige/world/ClientChunkMapAccessor.java new file mode 100644 index 0000000..1b5582a --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/ClientChunkMapAccessor.java @@ -0,0 +1,18 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import java.util.concurrent.atomic.AtomicReferenceArray; +import net.minecraft.client.world.ClientChunkManager.ClientChunkMap; + +public class ClientChunkMapAccessor { + private final ClientChunkMap chunkMap; + private static final String CHUNKS_FIELD = "chunks"; + + public ClientChunkMapAccessor(ClientChunkMap map) { + this.chunkMap = map; + } + + public AtomicReferenceArray getChunks() { + return (AtomicReferenceArray)FieldAccessor.bindMapped(this.chunkMap, CHUNKS_FIELD, ClientChunkMap.class, AtomicReferenceArray.class).get(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/CobwebPlacerHelper.java b/src/main/java/dev/zprestige/prestige/world/CobwebPlacerHelper.java deleted file mode 100644 index b478072..0000000 --- a/src/main/java/dev/zprestige/prestige/world/CobwebPlacerHelper.java +++ /dev/null @@ -1,92 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.module.combat.CobwebPlacer; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public class CobwebPlacerHelper implements Runnable { - public CobwebPlacer a; - - public CobwebPlacerHelper(CobwebPlacer var1) { - this.a = var1; - } - - @Override - public void run() { - this.a.F = false; - if (this.a.E) { - this.a.d(new Object[]{46197681794975L ^ 2497390811011L}); - if (this.a.E) { - this.a.o(new Object[]{46197681794975L ^ 44564245139765L}); - } - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/CobwebSwitchBackTask.java b/src/main/java/dev/zprestige/prestige/world/CobwebSwitchBackTask.java new file mode 100644 index 0000000..e3ec3cb --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/CobwebSwitchBackTask.java @@ -0,0 +1,22 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.module.combat.CobwebPlacer; + +public class CobwebSwitchBackTask implements Runnable { + public CobwebPlacer placer; + + public CobwebSwitchBackTask(CobwebPlacer cobwebPlacer) { + this.placer = cobwebPlacer; + } + + @Override + public void run() { + this.placer.switchBackScheduled = false; + if (this.placer.switchBackPending) { + this.placer.processSwitchBack(); + if (this.placer.switchBackPending) { + this.placer.scheduleSwitchBack(); + } + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/CountPlacementModifierAccessor.java b/src/main/java/dev/zprestige/prestige/world/CountPlacementModifierAccessor.java new file mode 100644 index 0000000..ab1ad4d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/CountPlacementModifierAccessor.java @@ -0,0 +1,18 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.util.math.intprovider.IntProvider; +import net.minecraft.world.gen.placementmodifier.CountPlacementModifier; + +public class CountPlacementModifierAccessor { + private final CountPlacementModifier modifier; + private static final String COUNT_FIELD = "count"; + + public CountPlacementModifierAccessor(CountPlacementModifier countModifier) { + this.modifier = countModifier; + } + + public IntProvider getCount() { + return (IntProvider)FieldAccessor.bindMapped(this.modifier, COUNT_FIELD, CountPlacementModifier.class, IntProvider.class).get(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/DifficultySwitchMap.java b/src/main/java/dev/zprestige/prestige/world/DifficultySwitchMap.java new file mode 100644 index 0000000..c8c2d67 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/DifficultySwitchMap.java @@ -0,0 +1,25 @@ +package dev.zprestige.prestige.world; + +import net.minecraft.world.Difficulty; + +// $VF: synthetic class +public class DifficultySwitchMap { + public static final int[] CASE_BY_ORDINAL = new int[Difficulty.values().length]; + + static { + try { + CASE_BY_ORDINAL[Difficulty.PEACEFUL.ordinal()] = 1; + } catch (NoSuchFieldError ignoredPeaceful) { + } + + try { + CASE_BY_ORDINAL[Difficulty.EASY.ordinal()] = 2; + } catch (NoSuchFieldError ignoredEasy) { + } + + try { + CASE_BY_ORDINAL[Difficulty.HARD.ordinal()] = 3; + } catch (NoSuchFieldError ignoredHard) { + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/HeightContextAccessor.java b/src/main/java/dev/zprestige/prestige/world/HeightContextAccessor.java new file mode 100644 index 0000000..70f8fc1 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/HeightContextAccessor.java @@ -0,0 +1,20 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.world.gen.HeightContext; + +public class HeightContextAccessor { + private final Object heightContext; + + public HeightContextAccessor(Object context) { + this.heightContext = context; + } + + public void setMinY(int minY) { + FieldAccessor.bindMapped(this.heightContext, "minY", HeightContext.class, int.class).set(minY); + } + + public void setHeight(int height) { + FieldAccessor.bindMapped(this.heightContext, "height", HeightContext.class, int.class).set(height); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/HeightRangePlacementModifierAccessor.java b/src/main/java/dev/zprestige/prestige/world/HeightRangePlacementModifierAccessor.java new file mode 100644 index 0000000..47fb034 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/HeightRangePlacementModifierAccessor.java @@ -0,0 +1,18 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.world.gen.heightprovider.HeightProvider; +import net.minecraft.world.gen.placementmodifier.HeightRangePlacementModifier; + +public class HeightRangePlacementModifierAccessor { + private final HeightRangePlacementModifier modifier; + private static final String HEIGHT_FIELD = "height"; + + public HeightRangePlacementModifierAccessor(HeightRangePlacementModifier heightModifier) { + this.modifier = heightModifier; + } + + public HeightProvider getHeight() { + return (HeightProvider)FieldAccessor.bindMapped(this.modifier, HEIGHT_FIELD, HeightRangePlacementModifier.class, HeightProvider.class).get(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/HitParticlePhysics.java b/src/main/java/dev/zprestige/prestige/world/HitParticlePhysics.java new file mode 100644 index 0000000..f267425 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/HitParticlePhysics.java @@ -0,0 +1,12 @@ +package dev.zprestige.prestige.world; + +import net.minecraft.block.BlockState; + +public abstract class HitParticlePhysics { + public void updateMotion(dev.zprestige.prestige.math.HitParticle particle, boolean physics) { + } + + public boolean isPassable(BlockState state) { + return state.isAir() || state.isReplaceable() || !state.getFluidState().isEmpty(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/LoadedChunkIterator.java b/src/main/java/dev/zprestige/prestige/world/LoadedChunkIterator.java new file mode 100644 index 0000000..a5db5e1 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/LoadedChunkIterator.java @@ -0,0 +1,57 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.render.MinecraftAccess; +import java.util.Iterator; +import net.minecraft.world.chunk.Chunk; + +public class LoadedChunkIterator implements Iterator, MinecraftAccess { + private final ClientChunkMapAccessor chunkMapAccessor; + private final boolean requireLoadedNeighbours; + private int nextIndex; + private Chunk pendingChunk; + + public LoadedChunkIterator(boolean onlyWithLoadedNeighbours) { + super(); + this.chunkMapAccessor = new ClientChunkMapAccessor(new ClientChunkManagerAccessor(mc.world.getChunkManager()).getChunkMap()); + this.nextIndex = 0; + this.requireLoadedNeighbours = onlyWithLoadedNeighbours; + this.advance(); + } + + private Chunk advance() { + Chunk current = this.pendingChunk; + this.pendingChunk = null; + + while (this.nextIndex < this.chunkMapAccessor.getChunks().length()) { + this.pendingChunk = (Chunk)this.chunkMapAccessor.getChunks().get(this.nextIndex++); + if (this.pendingChunk != null && (!this.requireLoadedNeighbours || this.hasLoadedNeighbours(this.pendingChunk))) { + break; + } + } + + return current; + } + + private boolean hasLoadedNeighbours(Chunk chunk) { + int chunkX = chunk.getPos().x; + int chunkZ = chunk.getPos().z; + return mc.world.getChunkManager().isChunkLoaded(chunkX + 1, chunkZ) + && mc.world.getChunkManager().isChunkLoaded(chunkX - 1, chunkZ) + && mc.world.getChunkManager().isChunkLoaded(chunkX, chunkZ + 1) + && mc.world.getChunkManager().isChunkLoaded(chunkX, chunkZ - 1); + } + + @Override + public boolean hasNext() { + return this.pendingChunk != null; + } + + public Chunk nextChunk() { + return this.advance(); + } + + @Override + public Object next() { + return this.nextChunk(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/MeshBuilder.java b/src/main/java/dev/zprestige/prestige/world/MeshBuilder.java new file mode 100644 index 0000000..424cd7d --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/MeshBuilder.java @@ -0,0 +1,104 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.render.GlPrimitiveSwitchMap; +import dev.zprestige.prestige.type.GlPrimitive; + +public interface MeshBuilder { + String NO_OFFSET_MESSAGE = "generateIndices called with no offset being present and indices in this buffer : don't know where to begin generating..?"; + + MeshBuilder begin(); + + MeshBuilder putFloats(float[] attributeValues); + + MeshBuilder putVertex(float x, float y, float z); + + MeshBuilder putTransformedVertex(org.joml.Matrix4f transform, float x, float y, float z); + + MeshBuilder putColor(int argbColor); + + MeshBuilder end(); + + MeshBuilder putIndices(int[] indexValues); + + int getVertexCount(); + + int getIndexCount(); + + MeshBuilder resetBaseVertex(); + + void ensureIndexCapacity(int byteCount); + + void ensureVertexCapacity(int byteCount); + + int getBaseVertex(); + + default MeshBuilder generateIndices(GlPrimitive primitive) { + if (!GlPrimitiveSwitchMap.ASSERTIONS_DISABLED && this.getBaseVertex() == 0 && this.getIndexCount() != 0) { + throw new AssertionError(NO_OFFSET_MESSAGE); + } else { + int shapeVertexCount = this.getVertexCount() - this.getBaseVertex(); + switch (GlPrimitiveSwitchMap.SWITCH_MAP[primitive.ordinal()]) { + case 1: + this.ensureIndexCapacity(shapeVertexCount / 3 * 3 * 4); + + for (int triangleStart = 0; triangleStart < shapeVertexCount; triangleStart += 3) { + this.putIndices(new int[]{triangleStart, triangleStart + 1, triangleStart + 2}); + } + + break; + case 2: + this.ensureIndexCapacity(shapeVertexCount / 4 * 6 * 4); + + for (int quadStart = 0; quadStart < shapeVertexCount; quadStart += 4) { + this.putIndices(new int[]{quadStart, quadStart + 1, quadStart + 2, quadStart + 2, quadStart + 3, quadStart}); + } + + break; + case 3: + this.ensureIndexCapacity((shapeVertexCount - 2) * 3 * 4); + + for (int fanVertex = 1; fanVertex < shapeVertexCount - 1; fanVertex++) { + this.putIndices(new int[]{0, fanVertex, fanVertex + 1}); + } + + break; + case 4: + this.ensureIndexCapacity((shapeVertexCount - 1) * 2 * 4); + + for (int lineStripVertex = 0; lineStripVertex < shapeVertexCount - 1; lineStripVertex++) { + this.putIndices(new int[]{lineStripVertex, lineStripVertex + 1}); + } + + break; + case 5: + int stripQuadCount = shapeVertexCount / 2 - 1; + this.ensureIndexCapacity(stripQuadCount * 6 * 4); + + for (int stripQuad = 0; stripQuad < stripQuadCount; stripQuad++) { + int stripVertex = stripQuad * 2; + this.putIndices(new int[]{stripVertex, stripVertex + 1, stripVertex + 3, stripVertex + 3, stripVertex + 2, stripVertex}); + } + + break; + case 6: + this.ensureIndexCapacity(shapeVertexCount / 2 * 2 * 4); + + for (int lineStart = 0; lineStart < shapeVertexCount; lineStart += 2) { + this.putIndices(new int[]{lineStart, lineStart + 1}); + } + + break; + default: + throw new MatchException(null, null); + } + + return this; + } + } + + MeshBuilder setBaseVertex(int firstVertex); + + default MeshBuilder beginShape() { + return this.setBaseVertex(this.getVertexCount()); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/OreColorUtil.java b/src/main/java/dev/zprestige/prestige/world/OreColorUtil.java deleted file mode 100644 index f7fc487..0000000 --- a/src/main/java/dev/zprestige/prestige/world/OreColorUtil.java +++ /dev/null @@ -1,418 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.event.Event; -import java.awt.Color; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import net.minecraft.client.MinecraftClient; -import net.minecraft.registry.BuiltinRegistries; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryWrapper.Impl; -import net.minecraft.registry.RegistryWrapper.WrapperLookup; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.entry.RegistryEntryList; -import net.minecraft.util.math.intprovider.ConstantIntProvider; -import net.minecraft.util.math.intprovider.IntProvider; -import net.minecraft.world.HeightLimitView; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.dimension.DimensionOptions; -import net.minecraft.world.gen.HeightContext; -import net.minecraft.world.gen.WorldPresets; -import net.minecraft.world.gen.feature.OreFeatureConfig; -import net.minecraft.world.gen.feature.OrePlacedFeatures; -import net.minecraft.world.gen.feature.PlacedFeature; -import net.minecraft.world.gen.feature.ScatteredOreFeature; -import net.minecraft.world.gen.feature.util.PlacedFeatureIndexer; -import net.minecraft.world.gen.feature.util.PlacedFeatureIndexer.IndexedFeatures; -import net.minecraft.world.gen.heightprovider.HeightProvider; -import net.minecraft.world.gen.placementmodifier.CountPlacementModifier; -import net.minecraft.world.gen.placementmodifier.HeightRangePlacementModifier; -import net.minecraft.world.gen.placementmodifier.PlacementModifier; -import net.minecraft.world.gen.placementmodifier.RarityFilterPlacementModifier; - -public class OreColorUtil { - public int a; - public int b; - public String c; - public IntProvider d; - public HeightProvider e; - public HeightContext f; - public float g; - public float h; - public int i; - public List j; - public Color k; - public boolean l; - - public static Map a(Object[] var0) { - String var1 = (String)var0[0]; - long var2 = (Long)var0[1]; - var2 = 6510610185200L ^ var2; - long var4 = var2 ^ 130665062014404L; - WrapperLookup var7 = BuiltinRegistries.createWrapperLookup(); - Impl var8 = var7.getOrThrow(RegistryKeys.PLACED_FEATURE); - Map var9 = var7.getOrThrow(RegistryKeys.WORLD_PRESET).getOrThrow(WorldPresets.DEFAULT).value().createDimensionsRegistryHolder().dimensions(); - Event.b(); - - DimensionOptions var10 = switch (var1) { - case "the_nether" -> (DimensionOptions)var9.get(DimensionOptions.NETHER); - case "the_end" -> (DimensionOptions)var9.get(DimensionOptions.END); - default -> (DimensionOptions)var9.get(DimensionOptions.OVERWORLD); - }; - Set var11 = var10.chunkGenerator().getBiomeSource().getBiomes(); - List var17 = var11.stream().toList(); - List var13 = PlacedFeatureIndexer.collectIndexedFeatures(var17, lpL27_0 -> ((Biome)((net.minecraft.registry.entry.RegistryEntry)lpL27_0).value()).getGenerationSettings().getFeatures(), true); - HashMap var14 = new HashMap(); - RegistryKey var10003 = OrePlacedFeatures.ORE_COAL_LOWER; - Object[] var10009 = new Object[]{null, null, null, null, null, "Coal", new Color(15, 15, 15), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_COAL_UPPER; - var10009 = new Object[]{null, null, null, null, null, "Coal", new Color(15, 15, 15), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_IRON_MIDDLE; - var10009 = new Object[]{null, null, null, null, null, "Iron", new Color(255, 255, 255), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_IRON_SMALL; - var10009 = new Object[]{null, null, null, null, null, "Iron", new Color(255, 255, 255), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_IRON_UPPER; - var10009 = new Object[]{null, null, null, null, null, "Iron", new Color(255, 255, 255), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_GOLD; - var10009 = new Object[]{null, null, null, null, null, "Gold", new Color(255, 255, 0), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_GOLD_LOWER; - var10009 = new Object[]{null, null, null, null, null, "Gold", new Color(255, 255, 0), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_GOLD_EXTRA; - var10009 = new Object[]{null, null, null, null, null, "Gold", new Color(255, 255, 0), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_GOLD_NETHER; - var10009 = new Object[]{null, null, null, null, null, "Gold", new Color(255, 255, 0), var4}; - var10009[4] = 7; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_GOLD_DELTAS; - var10009 = new Object[]{null, null, null, null, null, "Gold", new Color(255, 255, 0), var4}; - var10009[4] = 7; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_REDSTONE; - var10009 = new Object[]{null, null, null, null, null, "Redstone", new Color(255, 0, 0), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_REDSTONE_LOWER; - var10009 = new Object[]{null, null, null, null, null, "Redstone", new Color(255, 0, 0), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_DIAMOND; - var10009 = new Object[]{null, null, null, null, null, "Diamond", new Color(0, 255, 255), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_DIAMOND_BURIED; - var10009 = new Object[]{null, null, null, null, null, "Diamond", new Color(0, 255, 255), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_DIAMOND_LARGE; - var10009 = new Object[]{null, null, null, null, null, "Diamond", new Color(0, 255, 255), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_DIAMOND_MEDIUM; - var10009 = new Object[]{null, null, null, null, null, "Diamond", new Color(0, 255, 255), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_LAPIS; - var10009 = new Object[]{null, null, null, null, null, "Lapis", new Color(0, 0, 200), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_LAPIS_BURIED; - var10009 = new Object[]{null, null, null, null, null, "Lapis", new Color(0, 0, 200), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_COPPER; - var10009 = new Object[]{null, null, null, null, null, "Copper", new Color(255, 120, 0), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_COPPER_LARGE; - var10009 = new Object[]{null, null, null, null, null, "Copper", new Color(255, 120, 0), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_EMERALD; - var10009 = new Object[]{null, null, null, null, null, "Emerald", new Color(0, 255, 0), var4}; - var10009[4] = 6; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_QUARTZ_NETHER; - var10009 = new Object[]{null, null, null, null, null, "Quartz", new Color(200, 200, 200), var4}; - var10009[4] = 7; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_QUARTZ_DELTAS; - var10009 = new Object[]{null, null, null, null, null, "Quartz", new Color(200, 200, 200), var4}; - var10009[4] = 7; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_DEBRIS_SMALL; - var10009 = new Object[]{null, null, null, null, null, "Ancient Debris", new Color(200, 30, 255), var4}; - var10009[4] = 7; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - var10003 = OrePlacedFeatures.ORE_ANCIENT_DEBRIS_LARGE; - var10009 = new Object[]{null, null, null, null, null, "Ancient Debris", new Color(200, 30, 255), var4}; - var10009[4] = 7; - var10009[3] = var10003; - var10009[2] = var8; - var10009[1] = var13; - var10009[0] = var14; - a_void_______________________________(var10009); - HashMap var15 = new HashMap(); - var17.forEach( - lpL25_0 -> { - var15.put((RegistryKey)((net.minecraft.registry.entry.RegistryEntry)lpL25_0).getKey().get(), new ArrayList()); - ((Biome)((net.minecraft.registry.entry.RegistryEntry)lpL25_0).value()) - .getGenerationSettings() - .getFeatures() - .stream() - .flatMap(RegistryEntryList::stream) - .map(RegistryEntry::value) - .filter(var14::containsKey) - .forEach(lpL26_0 -> ((List)var15.get(((net.minecraft.registry.entry.RegistryEntry)lpL25_0).getKey().get())).add((OreColorUtil)var14.get(((net.minecraft.world.gen.feature.PlacedFeature)lpL26_0)))); - } - ); - return var15; - } - - private static void a_void_______________________________(Object[] var0) { - Map var4 = (Map)var0[0]; - List var7 = (List)var0[1]; - Impl var8 = (Impl)var0[2]; - RegistryKey var2 = (RegistryKey)var0[3]; - int var1 = (Integer)var0[4]; - String var9 = (String)var0[5]; - Color var3 = (Color)var0[6]; - long var5 = (Long)var0[7]; - var5 = 6510610185200L ^ var5; - long var10 = var5 ^ 5231273712340L; - PlacedFeature var12 = (PlacedFeature)var8.getOrThrow(var2).value(); - int var13 = ((IndexedFeatures)var7.get(var1)).indexMapping().applyAsInt(var12); - OreColorUtil var14 = new OreColorUtil(var12, var1, var13, var9, var3, var10); - var4.put(var12, var14); - } - - private OreColorUtil(PlacedFeature var1, int var2, int var3, String var4, Color var5, long var6) { - super(); - var6 = 0L; - var6 = 6510610185200L ^ var6; - long var8 = var6 ^ 8468932554198L; - long var10 = var6 ^ 109308055008521L; - long var12 = var6 ^ 37975217773429L; - Event.b(); - this.d = ConstantIntProvider.create(1); - this.g = 1.0F; - this.j = List.of(); - this.a = var2; - this.b = var3; - this.c = var4; - this.k = var5; - int var15 = MinecraftClient.getInstance().world.getBottomY(); - int var16 = MinecraftClient.getInstance().world.getDimension().logicalHeight(); - this.f = new HeightContext(null, HeightLimitView.create(var15, var16)); - - for (PlacementModifier var18 : var1.placementModifiers()) { - if (var18 instanceof CountPlacementModifier) { - this.d = new WorldHelper5((CountPlacementModifier)var18).a(new Object[]{var10}); - } else if (var18 instanceof HeightRangePlacementModifier) { - this.e = new WorldHelper8((HeightRangePlacementModifier)var18).a(new Object[]{var12}); - } else if (var18 instanceof RarityFilterPlacementModifier) { - this.g = new WorldHelper9((RarityFilterPlacementModifier)var18).a(new Object[]{var8}); - } - } - - if (var1.feature().value().config() instanceof OreFeatureConfig var22) { - this.h = var22.discardOnAirChance; - this.i = var22.size; - this.j = List.copyOf(var22.targets); - if (var1.feature().value().feature() instanceof ScatteredOreFeature) { - this.l = true; - } - } else { - throw new IllegalStateException("config for " + var1 + "is not OreFeatureConfig.class"); - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } - - private static IllegalStateException a(IllegalStateException var0) { - return var0; - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/OreDefinition.java b/src/main/java/dev/zprestige/prestige/world/OreDefinition.java new file mode 100644 index 0000000..d14dd73 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/OreDefinition.java @@ -0,0 +1,167 @@ +package dev.zprestige.prestige.world; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import net.minecraft.client.MinecraftClient; +import net.minecraft.registry.BuiltinRegistries; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper.Impl; +import net.minecraft.registry.RegistryWrapper.WrapperLookup; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.entry.RegistryEntryList; +import net.minecraft.util.math.intprovider.ConstantIntProvider; +import net.minecraft.util.math.intprovider.IntProvider; +import net.minecraft.world.HeightLimitView; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.dimension.DimensionOptions; +import net.minecraft.world.gen.HeightContext; +import net.minecraft.world.gen.WorldPresets; +import net.minecraft.world.gen.feature.OreFeatureConfig; +import net.minecraft.world.gen.feature.OrePlacedFeatures; +import net.minecraft.world.gen.feature.PlacedFeature; +import net.minecraft.world.gen.feature.ScatteredOreFeature; +import net.minecraft.world.gen.feature.util.PlacedFeatureIndexer; +import net.minecraft.world.gen.feature.util.PlacedFeatureIndexer.IndexedFeatures; +import net.minecraft.world.gen.heightprovider.HeightProvider; +import net.minecraft.world.gen.placementmodifier.CountPlacementModifier; +import net.minecraft.world.gen.placementmodifier.HeightRangePlacementModifier; +import net.minecraft.world.gen.placementmodifier.PlacementModifier; +import net.minecraft.world.gen.placementmodifier.RarityFilterPlacementModifier; + +public class OreDefinition { + public int step; + public int index; + public String name; + public IntProvider count; + public HeightProvider heightProvider; + public HeightContext heightContext; + public float rarity; + public float discardOnAirChance; + public int size; + public List targets; + public Color color; + public boolean scattered; + + public static Map getOresByBiome(String dimension) { + WrapperLookup registries = BuiltinRegistries.createWrapperLookup(); + Impl placedFeatures = registries.getOrThrow(RegistryKeys.PLACED_FEATURE); + Map dimensions = registries.getOrThrow(RegistryKeys.WORLD_PRESET).getOrThrow(WorldPresets.DEFAULT).value().createDimensionsRegistryHolder().dimensions(); + + Set biomes = (switch (dimension) { + case "the_nether" -> (DimensionOptions)dimensions.get(DimensionOptions.NETHER); + case "the_end" -> (DimensionOptions)dimensions.get(DimensionOptions.END); + default -> (DimensionOptions)dimensions.get(DimensionOptions.OVERWORLD); + }).chunkGenerator().getBiomeSource().getBiomes(); + List biomeList = biomes.stream().toList(); + List indexedFeatures = PlacedFeatureIndexer.collectIndexedFeatures(biomeList, biomeEntry -> ((Biome)((net.minecraft.registry.entry.RegistryEntry)biomeEntry).value()).getGenerationSettings().getFeatures(), true); + HashMap oresByFeature = new HashMap(); + RegistryKey featureKey = OrePlacedFeatures.ORE_COAL_LOWER; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Coal", new Color(15, 15, 15)); + featureKey = OrePlacedFeatures.ORE_COAL_UPPER; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Coal", new Color(15, 15, 15)); + featureKey = OrePlacedFeatures.ORE_IRON_MIDDLE; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Iron", new Color(255, 255, 255)); + featureKey = OrePlacedFeatures.ORE_IRON_SMALL; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Iron", new Color(255, 255, 255)); + featureKey = OrePlacedFeatures.ORE_IRON_UPPER; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Iron", new Color(255, 255, 255)); + featureKey = OrePlacedFeatures.ORE_GOLD; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Gold", new Color(255, 255, 0)); + featureKey = OrePlacedFeatures.ORE_GOLD_LOWER; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Gold", new Color(255, 255, 0)); + featureKey = OrePlacedFeatures.ORE_GOLD_EXTRA; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Gold", new Color(255, 255, 0)); + featureKey = OrePlacedFeatures.ORE_GOLD_NETHER; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 7, "Gold", new Color(255, 255, 0)); + featureKey = OrePlacedFeatures.ORE_GOLD_DELTAS; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 7, "Gold", new Color(255, 255, 0)); + featureKey = OrePlacedFeatures.ORE_REDSTONE; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Redstone", new Color(255, 0, 0)); + featureKey = OrePlacedFeatures.ORE_REDSTONE_LOWER; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Redstone", new Color(255, 0, 0)); + featureKey = OrePlacedFeatures.ORE_DIAMOND; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Diamond", new Color(0, 255, 255)); + featureKey = OrePlacedFeatures.ORE_DIAMOND_BURIED; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Diamond", new Color(0, 255, 255)); + featureKey = OrePlacedFeatures.ORE_DIAMOND_LARGE; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Diamond", new Color(0, 255, 255)); + featureKey = OrePlacedFeatures.ORE_DIAMOND_MEDIUM; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Diamond", new Color(0, 255, 255)); + featureKey = OrePlacedFeatures.ORE_LAPIS; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Lapis", new Color(0, 0, 200)); + featureKey = OrePlacedFeatures.ORE_LAPIS_BURIED; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Lapis", new Color(0, 0, 200)); + featureKey = OrePlacedFeatures.ORE_COPPER; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Copper", new Color(255, 120, 0)); + featureKey = OrePlacedFeatures.ORE_COPPER_LARGE; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Copper", new Color(255, 120, 0)); + featureKey = OrePlacedFeatures.ORE_EMERALD; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 6, "Emerald", new Color(0, 255, 0)); + featureKey = OrePlacedFeatures.ORE_QUARTZ_NETHER; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 7, "Quartz", new Color(200, 200, 200)); + featureKey = OrePlacedFeatures.ORE_QUARTZ_DELTAS; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 7, "Quartz", new Color(200, 200, 200)); + featureKey = OrePlacedFeatures.ORE_DEBRIS_SMALL; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 7, "Ancient Debris", new Color(200, 30, 255)); + featureKey = OrePlacedFeatures.ORE_ANCIENT_DEBRIS_LARGE; + registerOre(oresByFeature, indexedFeatures, placedFeatures, featureKey, 7, "Ancient Debris", new Color(200, 30, 255)); + HashMap oresByBiome = new HashMap(); + biomeList.forEach( + biome -> { + oresByBiome.put((RegistryKey)((net.minecraft.registry.entry.RegistryEntry)biome).getKey().get(), new ArrayList()); + ((Biome)((net.minecraft.registry.entry.RegistryEntry)biome).value()) + .getGenerationSettings() + .getFeatures() + .stream() + .flatMap(RegistryEntryList::stream) + .map(RegistryEntry::value) + .filter(oresByFeature::containsKey) + .forEach(placedFeature -> ((List)oresByBiome.get(((net.minecraft.registry.entry.RegistryEntry)biome).getKey().get())).add((OreDefinition)oresByFeature.get(placedFeature))); + } + ); + return oresByBiome; + } + + private static void registerOre(Map oresByFeature, List indexedFeatures, Impl placedFeatures, RegistryKey featureKey, int generationStep, String oreName, Color oreColor) { + PlacedFeature placedFeature = (PlacedFeature)placedFeatures.getOrThrow(featureKey).value(); + oresByFeature.put(placedFeature, new OreDefinition(placedFeature, generationStep, ((IndexedFeatures)indexedFeatures.get(generationStep)).indexMapping().applyAsInt(placedFeature), oreName, oreColor)); + } + + private OreDefinition(PlacedFeature placedFeature, int generationStep, int featureIndex, String oreName, Color oreColor) { + super(); + this.count = ConstantIntProvider.create(1); + this.rarity = 1.0F; + this.targets = List.of(); + this.step = generationStep; + this.index = featureIndex; + this.name = oreName; + this.color = oreColor; + this.heightContext = new HeightContext(null, HeightLimitView.create(MinecraftClient.getInstance().world.getBottomY(), MinecraftClient.getInstance().world.getDimension().logicalHeight())); + + for (PlacementModifier modifier : placedFeature.placementModifiers()) { + if (modifier instanceof CountPlacementModifier) { + this.count = new CountPlacementModifierAccessor((CountPlacementModifier)modifier).getCount(); + } else if (modifier instanceof HeightRangePlacementModifier) { + this.heightProvider = new HeightRangePlacementModifierAccessor((HeightRangePlacementModifier)modifier).getHeight(); + } else if (modifier instanceof RarityFilterPlacementModifier) { + this.rarity = new RarityFilterPlacementModifierAccessor((RarityFilterPlacementModifier)modifier).getChance(); + } + } + + if (placedFeature.feature().value().config() instanceof OreFeatureConfig oreConfig) { + this.discardOnAirChance = oreConfig.discardOnAirChance; + this.size = oreConfig.size; + this.targets = List.copyOf(oreConfig.targets); + if (placedFeature.feature().value().feature() instanceof ScatteredOreFeature) { + this.scattered = true; + } + } else { + throw new IllegalStateException("config for " + placedFeature + "is not OreFeatureConfig.class"); + } + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/OreSimulationHelper.java b/src/main/java/dev/zprestige/prestige/world/OreSimulationHelper.java deleted file mode 100644 index f81d1bf..0000000 --- a/src/main/java/dev/zprestige/prestige/world/OreSimulationHelper.java +++ /dev/null @@ -1,142 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.Iterator; -import net.minecraft.world.chunk.Chunk; - -public class OreSimulationHelper implements Iterator, RenderContract2 { - private final WorldHelper4 a; - private final boolean c; - private int d; - private Chunk e; - - public OreSimulationHelper(boolean var1, long var2) { - super(); - var2 = 0L; - var2 = 115329937482544L ^ var2; - long var4 = var2 ^ 118726270478236L; - long var6 = var2 ^ 106313485447367L; - this.a = new WorldHelper4(new WorldHelper3(b.world.getChunkManager()).a(new Object[]{var6})); - this.d = 0; - this.c = var1; - this.a(new Object[]{var4}); - } - - private Chunk a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 115329937482544L ^ var2; - long var4 = var2 ^ 92299072971527L; - long var6 = var2 ^ 110664725166101L; - Chunk var9 = this.e; - Event.b(); - this.e = null; - - while (this.d < this.a.a(new Object[]{var4}).length()) { - this.e = (Chunk)this.a.a(new Object[]{var4}).get(this.d++); - if (this.e != null && (!this.c || this.a_boolean_______________________________________________(new Object[]{this.e, var6}))) { - break; - } - } - - return var9; - } - - private boolean a_boolean_______________________________________________(Object[] var1) { - Chunk var4 = (Chunk)var1[0]; - int var6 = var4.getPos().x; - Event.b(); - int var7 = var4.getPos().z; - return b.world.getChunkManager().isChunkLoaded(var6 + 1, var7) - && b.world.getChunkManager().isChunkLoaded(var6 - 1, var7) - && b.world.getChunkManager().isChunkLoaded(var6, var7 + 1) - && b.world.getChunkManager().isChunkLoaded(var6, var7 - 1); - } - - @Override - public boolean hasNext() { - return this.e != null; - } - - public Chunk b(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 115329937482544L ^ var2; - long var4 = var2 ^ 61144889762510L; - return this.a(new Object[]{var4}); - } - - @Override - public Object next() { - return this.b(new Object[]{79290930077513L}); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/PlacementCheck.java b/src/main/java/dev/zprestige/prestige/world/PlacementCheck.java deleted file mode 100644 index 41a9b04..0000000 --- a/src/main/java/dev/zprestige/prestige/world/PlacementCheck.java +++ /dev/null @@ -1,83 +0,0 @@ -package dev.zprestige.prestige.world; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.block.BlockState; - -public abstract class PlacementCheck { - public void a(Object[] var1) { - } - - public boolean a_boolean______(Object[] var1) { - BlockState var4 = (BlockState)var1[0]; - return var4.isAir() || var4.isReplaceable() || !var4.getFluidState().isEmpty(); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/PositionUtil.java b/src/main/java/dev/zprestige/prestige/world/PositionUtil.java index 551cd77..c2f643d 100644 --- a/src/main/java/dev/zprestige/prestige/world/PositionUtil.java +++ b/src/main/java/dev/zprestige/prestige/world/PositionUtil.java @@ -1,9 +1,7 @@ package dev.zprestige.prestige.world; import com.mojang.authlib.GameProfile; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.MinecraftAccess; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.hit.BlockHitResult; @@ -13,117 +11,35 @@ import net.minecraft.world.RaycastContext; import net.minecraft.world.RaycastContext.FluidHandling; import net.minecraft.world.RaycastContext.ShapeType; -public class PositionUtil implements RenderContract2 { - public static Vec3d a(Object[] var0) { - Entity var3 = (Entity)var0[0]; - return var3.getEntityPos(); +public class PositionUtil implements MinecraftAccess { + public static Vec3d getEntityPos(Entity entity) { + return entity.getEntityPos(); } - public static Vec3d b(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 135654198816533L ^ var1; - long var3 = var1 ^ 49962382593028L; - return a(new Object[]{b.player, var3}); + public static Vec3d getPlayerPos() { + return getEntityPos(mc.player); } - public static String a_String________(Object[] var0) { - GameProfile var3 = (GameProfile)var0[0]; - return var3.name(); + public static String getProfileName(GameProfile profile) { + return profile.name(); } - public static Vec3d c(Object[] var0) { - Entity var1 = (Entity)var0[0]; - return new Vec3d(var1.lastX, var1.lastY, var1.lastZ); + public static Vec3d getLastPos(Entity entity) { + return new Vec3d(entity.lastX, entity.lastY, entity.lastZ); } - public static boolean a_boolean________________________________________________(Object[] var0) { - long var1 = (Long)var0[0]; - var1 = 135654198816533L ^ var1; - long var3 = var1 ^ 121904208108296L; - return b_boolean_________(new Object[]{b.player, var3}); + public static boolean isPlayerGliding() { + return isGliding(mc.player); } - public static boolean b_boolean_________(Object[] var0) { - PlayerEntity var1 = (PlayerEntity)var0[0]; - return var1.isGliding(); + public static boolean isGliding(PlayerEntity player) { + return player.isGliding(); } - public static double a_double___________(Object[] var0) { - PlayerEntity var1 = (PlayerEntity)var0[0]; - long var2 = (Long)var0[1]; - var2 = 135654198816533L ^ var2; - long var4 = var2 ^ 39318658454649L; - Vec3d var6 = a(new Object[]{var1, var4}); - Vec3d var7 = var6.add(0.0, -256.0, 0.0); - BlockHitResult var8 = b.world.raycast(new RaycastContext(var6, var7, ShapeType.OUTLINE, FluidHandling.NONE, var1)); - return var8.getType() == Type.BLOCK ? var1.getY() - var8.getPos().y : 256.0; - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + public static double getHeightAboveGround(PlayerEntity player) { + Vec3d pos = getEntityPos(player); + Vec3d below = pos.add(0.0, -256.0, 0.0); + BlockHitResult hitResult = mc.world.raycast(new RaycastContext(pos, below, ShapeType.OUTLINE, FluidHandling.NONE, player)); + return hitResult.getType() == Type.BLOCK ? player.getY() - hitResult.getPos().y : 256.0; } } diff --git a/src/main/java/dev/zprestige/prestige/world/RarityFilterPlacementModifierAccessor.java b/src/main/java/dev/zprestige/prestige/world/RarityFilterPlacementModifierAccessor.java new file mode 100644 index 0000000..33bbd75 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/RarityFilterPlacementModifierAccessor.java @@ -0,0 +1,17 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import net.minecraft.world.gen.placementmodifier.RarityFilterPlacementModifier; + +public class RarityFilterPlacementModifierAccessor { + private final RarityFilterPlacementModifier modifier; + private static final String CHANCE_FIELD = "chance"; + + public RarityFilterPlacementModifierAccessor(RarityFilterPlacementModifier rarityModifier) { + this.modifier = rarityModifier; + } + + public int getChance() { + return (Integer)FieldAccessor.bindMapped(this.modifier, CHANCE_FIELD, RarityFilterPlacementModifier.class, int.class).get(); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/RaycastContextAccessor.java b/src/main/java/dev/zprestige/prestige/world/RaycastContextAccessor.java new file mode 100644 index 0000000..68fe60e --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/RaycastContextAccessor.java @@ -0,0 +1,51 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.reflect.FieldAccessor; +import dev.zprestige.prestige.reflect.MappedField; +import net.minecraft.block.ShapeContext; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.RaycastContext; +import net.minecraft.world.RaycastContext.FluidHandling; +import net.minecraft.world.RaycastContext.ShapeType; + +public class RaycastContextAccessor { + private static final MappedField START_FIELD = FieldAccessor.mappedField(RaycastContext.class, "start", Vec3d.class); + private static final MappedField END_FIELD = FieldAccessor.mappedField(RaycastContext.class, "end", Vec3d.class); + private static final MappedField SHAPE_TYPE_FIELD = FieldAccessor.mappedField(RaycastContext.class, "shapeType", ShapeType.class); + private static final MappedField FLUID_FIELD = FieldAccessor.mappedField(RaycastContext.class, "fluid", FluidHandling.class); + private static final MappedField SHAPE_CONTEXT_FIELD = FieldAccessor.mappedField(RaycastContext.class, "shapeContext", ShapeContext.class); + private final RaycastContext context; + + public RaycastContextAccessor(RaycastContext raycastContext) { + this.context = raycastContext; + } + + public void setStart(Vec3d start) { + START_FIELD.set(this.context, start); + } + + public void setEnd(Vec3d end) { + END_FIELD.set(this.context, end); + } + + public void setShapeType(ShapeType shapeType) { + SHAPE_TYPE_FIELD.set(this.context, shapeType); + } + + public void setFluidHandling(FluidHandling fluidHandling) { + FLUID_FIELD.set(this.context, fluidHandling); + } + + public void setShapeContext(ShapeContext shapeContext) { + SHAPE_CONTEXT_FIELD.set(this.context, shapeContext); + } + + public void setAll(Vec3d start, Vec3d end, ShapeType shapeType, FluidHandling fluidHandling, Entity entity) { + this.setStart(start); + this.setEnd(end); + this.setShapeType(shapeType); + this.setFluidHandling(fluidHandling); + this.setShapeContext(ShapeContext.of(entity)); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/RaycastUtil.java b/src/main/java/dev/zprestige/prestige/world/RaycastUtil.java index 26dbc67..e0e6dec 100644 --- a/src/main/java/dev/zprestige/prestige/world/RaycastUtil.java +++ b/src/main/java/dev/zprestige/prestige/world/RaycastUtil.java @@ -1,11 +1,7 @@ package dev.zprestige.prestige.world; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; +import dev.zprestige.prestige.render.MinecraftAccess; import net.minecraft.entity.projectile.ProjectileUtil; -import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; @@ -13,18 +9,9 @@ import net.minecraft.world.RaycastContext; import net.minecraft.world.RaycastContext.FluidHandling; import net.minecraft.world.RaycastContext.ShapeType; -public class RaycastUtil implements RenderContract2 { - private static final double a = 4.25; - private static final double c = 8.0; - - public static Vec3d a(Object[] var0) { - BlockPos var1 = (BlockPos)var0[0]; - long var2 = (Long)var0[1]; - var2 = 52575387219545L ^ var2; - long var4 = var2 ^ 61195202805394L; - long var6 = var2 ^ 35956316691861L; - Event.b(); - Vec3d[] var9 = new Vec3d[]{ +public class RaycastUtil implements MinecraftAccess { + public static Vec3d getVisiblePoint(BlockPos pos) { + Vec3d[] offsets = new Vec3d[]{ new Vec3d(0.5, 1.0, 0.5), new Vec3d(0.5, 0.5, 0.0), new Vec3d(0.0, 0.5, 0.5), @@ -39,179 +26,102 @@ public class RaycastUtil implements RenderContract2 { new Vec3d(1.0, 1.0, 0.0), new Vec3d(0.0, 1.0, 0.0) }; - Vec3d var10 = null; + Vec3d bestPoint = null; - for (int var11 = 0; var11 < var9.length; var11++) { - Vec3d var12 = var9[var11]; - if (var11 > 4) { + for (int i = 0; i < offsets.length; i++) { + Vec3d offset = offsets[i]; + if (i > 4) { break; } - Vec3d var13 = new Vec3d(var1.getX() + var12.x, var1.getY() + var12.y, var1.getZ() + var12.z); - if (!(Math.sqrt(b.player.getEyePos().squaredDistanceTo(var13)) > 4.25)) { - HitResult var14 = a_class_239(new Object[]{var13, var4}); - if (var14 != null && var14.getPos().distanceTo(var13) < 0.1F) { - EntityHitResult var15 = ProjectileUtil.raycast( - b.player, - b.player.getCameraPosVec(1.0F), - var13, - b.player.getBoundingBox().stretch(var13.subtract(PositionUtil.b(new Object[]{var6}))).expand(1.0, 1.0, 1.0), - lpL35_0 -> !((net.minecraft.entity.Entity)lpL35_0).isSpectator() && ((net.minecraft.entity.Entity)lpL35_0).canHit(), - var13.distanceTo(b.player.getCameraPosVec(1.0F)) - ); - if (var15 == null && (var10 == null || b.player.getEyePos().distanceTo(var13) < b.player.getEyePos().distanceTo(var10))) { - if (var11 == 0) { - return var13; + Vec3d point = new Vec3d(pos.getX() + offset.x, pos.getY() + offset.y, pos.getZ() + offset.z); + if (!(Math.sqrt(mc.player.getEyePos().squaredDistanceTo(point)) > 4.25)) { + HitResult hitResult = raycastFromEyes(point); + if (hitResult != null && hitResult.getPos().distanceTo(point) < 0.1F) { + if (ProjectileUtil.raycast( + mc.player, + mc.player.getCameraPosVec(1.0F), + point, + mc.player.getBoundingBox().stretch(point.subtract(PositionUtil.getPlayerPos())).expand(1.0, 1.0, 1.0), + entity -> !entity.isSpectator() && entity.canHit(), + point.distanceTo(mc.player.getCameraPosVec(1.0F)) + ) == null && (bestPoint == null || mc.player.getEyePos().distanceTo(point) < mc.player.getEyePos().distanceTo(bestPoint))) { + if (i == 0) { + return point; } - var10 = var13; + bestPoint = point; } } } } - if (var10 != null) { - return var10; + if (bestPoint != null) { + return bestPoint; } else { - for (Vec3d var22 : var9) { - Vec3d var23 = new Vec3d(var1.getX() + var22.x, var1.getY() + var22.y, var1.getZ() + var22.z); - if (!(Math.sqrt(b.player.getEyePos().squaredDistanceTo(var23)) > 4.25)) { - HitResult var16 = a_class_239(new Object[]{var23, var4}); - if (var16 != null && var16.getPos().distanceTo(var23) < 0.1F) { - EntityHitResult var17 = ProjectileUtil.raycast( - b.player, - b.player.getCameraPosVec(1.0F), - var23, - b.player.getBoundingBox().stretch(var23.subtract(PositionUtil.b(new Object[]{var6}))).expand(1.0, 1.0, 1.0), - lpL34_0 -> !((net.minecraft.entity.Entity)lpL34_0).isSpectator() && ((net.minecraft.entity.Entity)lpL34_0).canHit(), - var23.distanceTo(b.player.getCameraPosVec(1.0F)) - ); - if (var17 == null && (var10 == null || b.player.getEyePos().distanceTo(var23) < b.player.getEyePos().distanceTo(var10))) { - var10 = var23; + for (Vec3d fallbackOffset : offsets) { + Vec3d fallbackPoint = new Vec3d(pos.getX() + fallbackOffset.x, pos.getY() + fallbackOffset.y, pos.getZ() + fallbackOffset.z); + if (!(Math.sqrt(mc.player.getEyePos().squaredDistanceTo(fallbackPoint)) > 4.25)) { + HitResult fallbackHit = raycastFromEyes(fallbackPoint); + if (fallbackHit != null && fallbackHit.getPos().distanceTo(fallbackPoint) < 0.1F) { + if (ProjectileUtil.raycast( + mc.player, + mc.player.getCameraPosVec(1.0F), + fallbackPoint, + mc.player.getBoundingBox().stretch(fallbackPoint.subtract(PositionUtil.getPlayerPos())).expand(1.0, 1.0, 1.0), + fallbackEntity -> !fallbackEntity.isSpectator() && fallbackEntity.canHit(), + fallbackPoint.distanceTo(mc.player.getCameraPosVec(1.0F)) + ) == null && (bestPoint == null || mc.player.getEyePos().distanceTo(fallbackPoint) < mc.player.getEyePos().distanceTo(bestPoint))) { + bestPoint = fallbackPoint; } } } } - return var10; + return bestPoint; } } - public static Vec3d b(Object[] var0) { - BlockPos var1 = (BlockPos)var0[0]; - long var2 = (Long)var0[1]; - var2 = 52575387219545L ^ var2; - long var4 = var2 ^ 89751123006146L; - long var6 = var2 ^ 77770766348741L; - if (b.player.getEyePos().getY() < var1.getY() + 1.0) { + public static Vec3d getVisibleTopPoint(BlockPos pos) { + if (mc.player.getEyePos().getY() < pos.getY() + 1.0) { return null; } else { - Vec3d[] var9 = new Vec3d[]{ + Vec3d[] offsets = new Vec3d[]{ new Vec3d(0.5, 1.0, 0.5), new Vec3d(0.1, 1.0, 0.1), new Vec3d(0.9, 1.0, 0.1), new Vec3d(0.1, 1.0, 0.9), new Vec3d(0.9, 1.0, 0.9) }; - Vec3d var10 = null; + Vec3d bestPoint = null; - for (int var11 = 0; var11 < var9.length; var11++) { - Vec3d var12 = var9[var11]; - Vec3d var13 = new Vec3d(var1.getX() + var12.x, var1.getY() + var12.y, var1.getZ() + var12.z); - if (!(b.player.getEyePos().distanceTo(var13) > 4.25)) { - HitResult var14 = a_class_239(new Object[]{var13, var4}); - if (var14 != null && var14.getPos().distanceTo(var13) < 0.1F) { - EntityHitResult var15 = ProjectileUtil.raycast( - b.player, - b.player.getCameraPosVec(1.0F), - var13, - b.player.getBoundingBox().stretch(var13.subtract(PositionUtil.b(new Object[]{var6}))).expand(1.0, 1.0, 1.0), - lpL33_0 -> !((net.minecraft.entity.Entity)lpL33_0).isSpectator() && ((net.minecraft.entity.Entity)lpL33_0).canHit(), - var13.distanceTo(b.player.getCameraPosVec(1.0F)) - ); - if (var15 == null) { - if (var11 == 0) { - return var13; + for (int i = 0; i < offsets.length; i++) { + Vec3d offset = offsets[i]; + Vec3d point = new Vec3d(pos.getX() + offset.x, pos.getY() + offset.y, pos.getZ() + offset.z); + if (!(mc.player.getEyePos().distanceTo(point) > 4.25)) { + HitResult hitResult = raycastFromEyes(point); + if (hitResult != null && hitResult.getPos().distanceTo(point) < 0.1F) { + if (ProjectileUtil.raycast( + mc.player, + mc.player.getCameraPosVec(1.0F), + point, + mc.player.getBoundingBox().stretch(point.subtract(PositionUtil.getPlayerPos())).expand(1.0, 1.0, 1.0), + entity -> !entity.isSpectator() && entity.canHit(), + point.distanceTo(mc.player.getCameraPosVec(1.0F)) + ) == null) { + if (i == 0) { + return point; } - if (var10 == null || b.player.getEyePos().distanceTo(var13) < b.player.getEyePos().distanceTo(var10)) { - var10 = var13; + if (bestPoint == null || mc.player.getEyePos().distanceTo(point) < mc.player.getEyePos().distanceTo(bestPoint)) { + bestPoint = point; } } } } } - return var10; + return bestPoint; } } - private static HitResult a_class_239(Object[] var0) { - Vec3d var3 = (Vec3d)var0[0]; - return b.world.raycast(new RaycastContext(b.player.getEyePos(), var3, ShapeType.COLLIDER, FluidHandling.NONE, b.player)); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } + private static HitResult raycastFromEyes(Vec3d target) { + return mc.world.raycast(new RaycastContext(mc.player.getEyePos(), target, ShapeType.COLLIDER, FluidHandling.NONE, mc.player)); } } diff --git a/src/main/java/dev/zprestige/prestige/world/RotationUtil.java b/src/main/java/dev/zprestige/prestige/world/RotationUtil.java new file mode 100644 index 0000000..e766b12 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/RotationUtil.java @@ -0,0 +1,181 @@ +package dev.zprestige.prestige.world; + +import dev.zprestige.prestige.client.Prestige; +import dev.zprestige.prestige.render.Rotation; +import dev.zprestige.prestige.render.MinecraftAccess; +import dev.zprestige.prestige.render.RandomUtil; +import net.minecraft.entity.Entity; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.RaycastContext; +import net.minecraft.world.RaycastContext.FluidHandling; +import net.minecraft.world.RaycastContext.ShapeType; + +public class RotationUtil implements MinecraftAccess { + public static boolean smoothRotate(Rotation target, float smoothing, float offset, float duration) { + float currentYaw = mc.player.getYaw(); + float angle = target.getYaw() + offset; + float amount = Prestige.frameDeltaTimer.getAnimationDelta() * (1.1F - smoothing) * 7.0F / duration; + amount *= RandomUtil.randomFloat(0.5F, 1.0F); + float newYaw = interpolate(currentYaw, angle, amount); + angle = mc.player.getPitch(); + amount = target.getPitch() + offset / 2.0F; + float pitchStep = Prestige.frameDeltaTimer.getAnimationDelta() * (1.1F - smoothing) * 7.0F / duration; + pitchStep *= RandomUtil.randomFloat(0.5F, 1.0F); + applyRotation(new Rotation(newYaw, interpolate(angle, amount, pitchStep))); + return mc.player.getYaw() - 5.0F < target.getYaw() + && mc.player.getYaw() + 5.0F > target.getYaw() + && mc.player.getPitch() - 5.0F < target.getPitch() + && mc.player.getPitch() + 5.0F > target.getPitch(); + } + + public static boolean smoothRotatePitch(Rotation target, float smoothing, float offset, float duration) { + float currentPitch = mc.player.getPitch(); + float targetPitch = target.getPitch() + offset / 2.0F; + float step = Prestige.frameDeltaTimer.getAnimationDelta() * (1.1F - smoothing) * 7.0F / duration; + step *= RandomUtil.randomFloat(0.5F, 1.0F); + float newPitch = interpolate(currentPitch, targetPitch, step); + applyRotation(new Rotation(mc.player.getYaw(), newPitch)); + return mc.player.getPitch() - 1.0F < target.getPitch() && mc.player.getPitch() + 1.0F > target.getPitch(); + } + + public static boolean isWithinAngle(Rotation from, Rotation to, float maxAngle) { + float yawDiff = Math.abs(Math.abs(to.getYaw()) - Math.abs(from.getYaw())); + float pitchDiff = Math.abs(to.getPitch() - Math.abs(from.getPitch())); + return ((float)Math.sqrt(yawDiff * yawDiff + pitchDiff * pitchDiff)) <= maxAngle; + } + + public static float getAngleFromPlayerRotation(Rotation rotation) { + float yawDiff = Math.abs(Math.abs(rotation.getYaw()) - Math.abs(mc.player.getYaw())); + float pitchDiff = Math.abs(rotation.getPitch() - Math.abs(mc.player.getPitch())); + return (float)Math.sqrt(yawDiff * yawDiff + pitchDiff * pitchDiff); + } + + public static HitResult raycastRotation(Rotation rotation) { + return mc.world + .raycast( + new RaycastContext( + mc.player.getEyePos(), + getDirectionVector(rotation).multiply(6.0).add(mc.player.getEyePos()), + ShapeType.OUTLINE, + FluidHandling.NONE, + mc.player + ) + ); + } + + public static HitResult raycastRotationWithRange(Rotation rotation, float range) { + return mc.world + .raycast( + new RaycastContext( + mc.player.getEyePos(), + getDirectionVector(rotation).multiply(range).add(mc.player.getEyePos()), + ShapeType.OUTLINE, + FluidHandling.NONE, + mc.player + ) + ); + } + + public static Vec3d getDirectionVector(Rotation rotation) { + float degToRad = (float) (Math.PI / 180.0); + float pi = (float) Math.PI; + float yawCos = MathHelper.cos(-rotation.getYaw() * degToRad - pi); + float yawSin = MathHelper.sin(-rotation.getYaw() * degToRad - pi); + float horizontalScale = -MathHelper.cos(-rotation.getPitch() * degToRad); + return new Vec3d(yawSin * horizontalScale, MathHelper.sin(-rotation.getPitch() * degToRad), yawCos * horizontalScale).normalize(); + } + + public static void applyRotation(Rotation rotation) { + mc.player.setYaw(rotation.getYaw()); + mc.player.setPitch(rotation.getPitch()); + } + + public static Rotation getRotationTo(Vec3d target) { + return getRotationToPoint((float)target.x, (float)target.y, (float)target.z); + } + + public static Rotation getRotationToPoint(float x, float y, float z) { + Vec3d eyePos = mc.player.getEyePos(); + double diffX = x - eyePos.x; + double diffY = y - eyePos.y; + double diffZ = z - eyePos.z; + double horizontalDistance = Math.sqrt(diffX * diffX + diffZ * diffZ); + float targetYaw = (float)Math.toDegrees(Math.atan2(diffZ, diffX)) - 90.0F; + float targetPitch = (float)(-Math.toDegrees(Math.atan2(diffY, horizontalDistance))); + float[] current = new float[]{mc.player.getYaw(), mc.player.getPitch()}; + float newYaw = current[0]; + newYaw += wrapDegrees(targetYaw - current[0]); + return new Rotation(newYaw, current[1] + wrapDegrees(targetPitch - current[1])); + } + + public static Rotation getLimitedRotationTo(Rotation from, Vec3d target, float maxYawStep) { + return getLimitedRotationToPoint(from.getYaw(), from.getPitch(), (float)target.x, (float)target.y, (float)target.z, maxYawStep); + } + + public static Rotation addRandomJitter(Rotation rotation, Vec3d target) { + float maxJitter = (float)MathHelper.clamp(0.18 / Math.max(mc.player.getEyePos().distanceTo(target), 1.0), 0.005, 0.15); + float yawJitter = RandomUtil.randomFloat(-maxJitter, maxJitter); + float pitchJitter = RandomUtil.randomFloat(-maxJitter, maxJitter); + float newPitch = MathHelper.clamp(rotation.getPitch() + pitchJitter, -89.9F, 89.9F); + Rotation jittered = new Rotation(rotation.getYaw() + yawJitter, newPitch); + jittered.setClamped(rotation.isClamped()); + return jittered; + } + + public static Rotation getLimitedRotationToPoint(float fromYaw, float fromPitch, float x, float y, float z, float maxYawStep) { + Vec3d eyePos = mc.player.getEyePos(); + double diffX = x - eyePos.x; + double diffY = y - eyePos.y; + double diffZ = z - eyePos.z; + double horizontalDistance = Math.sqrt(diffX * diffX + diffZ * diffZ); + float targetYaw = (float)Math.toDegrees(Math.atan2(diffZ, diffX)) - 90.0F; + float targetPitch = (float)(-Math.toDegrees(Math.atan2(diffY, horizontalDistance))); + float yawDelta = wrapDegrees(targetYaw - fromYaw); + boolean limited = Math.abs(yawDelta) > maxYawStep; + yawDelta = MathHelper.clamp(yawDelta, -maxYawStep, maxYawStep); + Rotation result = new Rotation(fromYaw + yawDelta, fromPitch + wrapDegrees(targetPitch - fromPitch)); + result.setClamped(limited); + return result; + } + + public static Rotation getEntityRotationTo(Entity entity, Vec3d target) { + return getEntityRotationToPoint(entity, (float)target.x, (float)target.y, (float)target.z); + } + + public static Rotation getEntityRotationToPoint(Entity entity, float x, float y, float z) { + Vec3d eyePos = entity.getEyePos(); + double diffX = x - eyePos.x; + double diffY = y - eyePos.y; + double diffZ = z - eyePos.z; + double horizontalDistance = Math.sqrt(diffX * diffX + diffZ * diffZ); + float targetYaw = (float)Math.toDegrees(Math.atan2(diffZ, diffX)) - 90.0F; + float targetPitch = (float)(-Math.toDegrees(Math.atan2(diffY, horizontalDistance))); + float[] current = new float[]{entity.getYaw(), entity.getPitch()}; + float newYaw = current[0]; + newYaw += wrapDegrees(targetYaw - current[0]); + return new Rotation(newYaw, current[1] + wrapDegrees(targetPitch - current[1])); + } + + public static float wrapDegrees(float angle) { + float wrapped = angle % 360.0F; + if (wrapped >= 180.0F) { + wrapped -= 360.0F; + } + + if (wrapped < -180.0F) { + wrapped += 360.0F; + } + + return wrapped; + } + + public static float interpolate(float from, float to, float delta) { + return from - (from - to) * clamp(delta, 0.0F, 1.0F); + } + + private static float clamp(float value, float min, float max) { + return value < min ? min : Math.min(value, max); + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/SimulatedBowArrow.java b/src/main/java/dev/zprestige/prestige/world/SimulatedBowArrow.java new file mode 100644 index 0000000..a4a51f9 --- /dev/null +++ b/src/main/java/dev/zprestige/prestige/world/SimulatedBowArrow.java @@ -0,0 +1,138 @@ +package dev.zprestige.prestige.world; + +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.projectile.PersistentProjectileEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.EntityHitResult; +import net.minecraft.util.hit.HitResult.Type; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.RaycastContext; +import net.minecraft.world.World; +import net.minecraft.world.RaycastContext.FluidHandling; +import net.minecraft.world.RaycastContext.ShapeType; + +public final class SimulatedBowArrow extends PersistentProjectileEntity { + public boolean hitEntity = false; + public boolean inFlight = false; + + public SimulatedBowArrow(EntityType arrowType, LivingEntity shooter, World simulationWorld, ItemStack arrowStack) { + super(arrowType, shooter, simulationWorld, arrowStack, arrowStack); + } + + @Override + public void tick() { + Vec3d motion = this.getVelocity(); + if (this.lastPitch == 0.0F && this.lastYaw == 0.0F) { + this.setYaw((float)(MathHelper.atan2(motion.x, motion.z) * 180.0F / (float)Math.PI)); + this.setPitch((float)(MathHelper.atan2(motion.y, motion.horizontalLength()) * 180.0F / (float)Math.PI)); + this.lastYaw = this.getYaw(); + this.lastPitch = this.getPitch(); + } + + BlockPos currentBlockPos = this.getBlockPos(); + World currentWorld = this.getEntityWorld(); + BlockState currentState = currentWorld.getBlockState(currentBlockPos); + if (!currentState.isAir()) { + VoxelShape collisionShape = currentState.getCollisionShape(currentWorld, currentBlockPos); + if (!collisionShape.isEmpty()) { + for (Box shapeBox : collisionShape.getBoundingBoxes()) { + if (shapeBox.offset(currentBlockPos).contains(PositionUtil.getEntityPos(this))) { + this.setOnGround(true); + break; + } + } + } + } + + if (this.shake > 0) { + this.shake--; + } + + if (this.isTouchingWaterOrRain() || currentState.isOf(Blocks.POWDER_SNOW)) { + this.extinguish(); + } + + if (this.isOnGround()) { + this.inFlight = false; + } else { + this.inGroundTime = 0; + Vec3d startPos = PositionUtil.getEntityPos(this); + Vec3d endPos = startPos.add(motion); + BlockHitResult blockHit = currentWorld.raycast(new RaycastContext(startPos, endPos, ShapeType.COLLIDER, FluidHandling.NONE, this)); + if (blockHit.getType() != Type.MISS) { + endPos = blockHit.getPos(); + } + + EntityHitResult entityHit = this.getEntityCollision(startPos, endPos); + if (entityHit != null) { + this.onCollision(entityHit); + this.velocityDirty = true; + } + } + + motion = this.getVelocity(); + double motionX = motion.x; + double motionY = motion.y; + double motionZ = motion.z; + double nextX = this.getX() + motionX; + double nextY = this.getY() + motionY; + double nextZ = this.getZ() + motionZ; + double horizontalMotion = motion.horizontalLength(); + this.setYaw((float)(MathHelper.atan2(motionX, motionZ) * 180.0F / (float)Math.PI)); + this.setPitch((float)(MathHelper.atan2(motionY, horizontalMotion) * 180.0F / (float)Math.PI)); + this.setPitch(updateRotation(this.lastPitch, this.getPitch())); + this.setYaw(updateRotation(this.lastYaw, this.getYaw())); + float drag = 0.99F; + if (this.isTouchingWater()) { + drag = this.getDragInWater(); + } + + this.setVelocity(motion.multiply(drag)); + if (!this.hasNoGravity()) { + Vec3d currentMotion = this.getVelocity(); + this.setVelocity(currentMotion.x, currentMotion.y - 0.05F, currentMotion.z); + } + + this.setPosition(nextX, nextY, nextZ); + this.tickBlockCollision(); + } + + @Override + public void setVelocity(double x, double y, double z, float power, float uncertainty) { + Vec3d launchVelocity = new Vec3d(x, y, z).normalize().multiply(power); + this.setVelocity(launchVelocity); + this.setYaw((float)(MathHelper.atan2(launchVelocity.x, launchVelocity.z) * 180.0F / (float)Math.PI)); + this.setPitch((float)(MathHelper.atan2(launchVelocity.y, launchVelocity.horizontalLength()) * 180.0F / (float)Math.PI)); + this.lastYaw = this.getYaw(); + this.lastPitch = this.getPitch(); + } + + @Override + public void onEntityHit(EntityHitResult entityHitResult) { + this.inFlight = false; + this.hitEntity = true; + } + + @Override + public void onBlockHit(BlockHitResult blockHitResult) { + this.inFlight = false; + } + + @Override + public ItemStack asItemStack() { + return null; + } + + @Override + public ItemStack getDefaultItemStack() { + return null; + } +} diff --git a/src/main/java/dev/zprestige/prestige/world/TrajectoriesHelper.java b/src/main/java/dev/zprestige/prestige/world/TrajectoriesHelper.java deleted file mode 100644 index d9cba82..0000000 --- a/src/main/java/dev/zprestige/prestige/world/TrajectoriesHelper.java +++ /dev/null @@ -1,210 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.event.Event; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.projectile.PersistentProjectileEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.EntityHitResult; -import net.minecraft.util.hit.HitResult.Type; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.shape.VoxelShape; -import net.minecraft.world.RaycastContext; -import net.minecraft.world.World; -import net.minecraft.world.RaycastContext.FluidHandling; -import net.minecraft.world.RaycastContext.ShapeType; - -public final class TrajectoriesHelper extends PersistentProjectileEntity { - public boolean a = false; - public boolean b = false; - - public TrajectoriesHelper(EntityType var1, LivingEntity var2, World var3, ItemStack var4) { - super(var1, var2, var3, var4, var4); - } - - @Override - public void tick() { - Event.b(); - Vec3d var6 = this.getVelocity(); - if (this.lastPitch == 0.0F && this.lastYaw == 0.0F) { - this.setYaw((float)(MathHelper.atan2(var6.x, var6.z) * 180.0F / (float)Math.PI)); - this.setPitch((float)(MathHelper.atan2(var6.y, var6.horizontalLength()) * 180.0F / (float)Math.PI)); - this.lastYaw = this.getYaw(); - this.lastPitch = this.getPitch(); - } - - BlockPos var7 = this.getBlockPos(); - World var8 = this.getEntityWorld(); - BlockState var9 = var8.getBlockState(var7); - if (!var9.isAir()) { - VoxelShape var10 = var9.getCollisionShape(var8, var7); - if (!var10.isEmpty()) { - for (Box var12 : var10.getBoundingBoxes()) { - if (var12.offset(var7).contains(PositionUtil.a(new Object[]{this, 67736483458412L}))) { - this.setOnGround(true); - break; - } - } - } - } - - if (this.shake > 0) { - this.shake--; - } - - if (this.isTouchingWaterOrRain() || var9.isOf(Blocks.POWDER_SNOW)) { - this.extinguish(); - } - - if (this.isOnGround()) { - this.b = false; - } else { - this.inGroundTime = 0; - Vec3d var28 = PositionUtil.a(new Object[]{this, 67736483458412L}); - Vec3d var30 = var28.add(var6); - BlockHitResult var31 = var8.raycast(new RaycastContext(var28, var30, ShapeType.COLLIDER, FluidHandling.NONE, this)); - if (var31.getType() != Type.MISS) { - var30 = var31.getPos(); - } - - EntityHitResult var13 = this.getEntityCollision(var28, var30); - if (var13 != null) { - this.onCollision(var13); - this.velocityDirty = true; - } - } - - var6 = this.getVelocity(); - double var29 = var6.x; - double var32 = var6.y; - double var14 = var6.z; - double var16 = this.getX() + var29; - double var18 = this.getY() + var32; - double var20 = this.getZ() + var14; - double var22 = var6.horizontalLength(); - this.setYaw((float)(MathHelper.atan2(var29, var14) * 180.0F / (float)Math.PI)); - this.setPitch((float)(MathHelper.atan2(var32, var22) * 180.0F / (float)Math.PI)); - this.setPitch(updateRotation(this.lastPitch, this.getPitch())); - this.setYaw(updateRotation(this.lastYaw, this.getYaw())); - float var24 = 0.99F; - if (this.isTouchingWater()) { - var24 = this.getDragInWater(); - } - - this.setVelocity(var6.multiply(var24)); - if (!this.hasNoGravity()) { - Vec3d var26 = this.getVelocity(); - this.setVelocity(var26.x, var26.y - 0.05F, var26.z); - } - - this.setPosition(var16, var18, var20); - this.tickBlockCollision(); - } - - @Override - public void setVelocity(double x, double y, double z, float power, float uncertainty) { - Vec3d var11 = new Vec3d(x, y, z).normalize().multiply(power); - this.setVelocity(var11); - this.setYaw((float)(MathHelper.atan2(var11.x, var11.z) * 180.0F / (float)Math.PI)); - this.setPitch((float)(MathHelper.atan2(var11.y, var11.horizontalLength()) * 180.0F / (float)Math.PI)); - this.lastYaw = this.getYaw(); - this.lastPitch = this.getPitch(); - } - - @Override - public void onEntityHit(EntityHitResult entityHitResult) { - this.b = false; - this.a = true; - } - - @Override - public void onBlockHit(BlockHitResult blockHitResult) { - this.b = false; - } - - @Override - public ItemStack asItemStack() { - return null; - } - - @Override - public ItemStack getDefaultItemStack() { - return null; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldContract.java b/src/main/java/dev/zprestige/prestige/world/WorldContract.java deleted file mode 100644 index 4b58853..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldContract.java +++ /dev/null @@ -1,212 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.render.GlPrimitiveTable; -import dev.zprestige.prestige.type.GlPrimitive; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -public interface WorldContract { - String k = "generateIndices called with no offset being present and indices in this buffer : don't know where to begin generating..?"; - - WorldContract a_WorldContract(Object[] var1); - - WorldContract b_WorldContract(Object[] var1); - - WorldContract c_WorldContract(Object[] var1); - - WorldContract d(Object[] var1); - - WorldContract e(Object[] var1); - - WorldContract f(Object[] var1); - - WorldContract g(Object[] var1); - - int a_int_____________________________(Object[] var1); - - int b_int__(Object[] var1); - - WorldContract h(Object[] var1); - - void a(Object[] var1); - - void b(Object[] var1); - - int c(Object[] var1); - - default WorldContract i_WorldContract(Object[] var1) { - GlPrimitive var2 = (GlPrimitive)var1[0]; - long var3 = (Long)var1[1]; - var3 = 52947842122458L ^ var3; - long var5 = var3 ^ 105131950759054L; - long var7 = var3 ^ 107567671243298L; - long var9 = var3 ^ 115719617908232L; - long var11 = var3 ^ 112736010691983L; - if (!GlPrimitiveTable.a && this.c(new Object[0]) == 0 && this.b_int__(new Object[]{var11}) != 0) { - throw new AssertionError(k); - } else { - int var13 = this.a_int_____________________________(new Object[]{var9}) - this.c(new Object[0]); - switch (GlPrimitiveTable.b[var2.ordinal()]) { - case 1: - int var33 = var13 / 3 * 3 * 4; - Object[] var38 = new Object[]{null, var5}; - var38[0] = var33; - this.a(var38); - - for (int var23 = 0; var23 < var13; var23 += 3) { - this.g(new Object[]{new int[]{var23, var23 + 1, var23 + 2}, var7}); - } - - boolean var28 = false; - break; - case 2: - int var32 = var13 / 4 * 6 * 4; - Object[] var37 = new Object[]{null, var5}; - var37[0] = var32; - this.a(var37); - - for (int var22 = 0; var22 < var13; var22 += 4) { - this.g(new Object[]{new int[]{var22, var22 + 1, var22 + 2, var22 + 2, var22 + 3, var22}, var7}); - } - - boolean var27 = false; - break; - case 3: - int var31 = (var13 - 2) * 3 * 4; - Object[] var36 = new Object[]{null, var5}; - var36[0] = var31; - this.a(var36); - - for (int var21 = 1; var21 < var13 - 1; var21++) { - this.g(new Object[]{new int[]{0, var21, var21 + 1}, var7}); - } - - boolean var26 = false; - break; - case 4: - int var30 = (var13 - 1) * 2 * 4; - Object[] var35 = new Object[]{null, var5}; - var35[0] = var30; - this.a(var35); - - for (int var20 = 0; var20 < var13 - 1; var20++) { - this.g(new Object[]{new int[]{var20, var20 + 1}, var7}); - } - - boolean var25 = false; - break; - case 5: - int var19 = var13 / 2 - 1; - int var29 = var19 * 6 * 4; - Object[] var34 = new Object[]{null, var5}; - var34[0] = var29; - this.a(var34); - - for (int var16 = 0; var16 < var19; var16++) { - int var17 = var16 * 2; - this.g(new Object[]{new int[]{var17, var17 + 1, var17 + 3, var17 + 3, var17 + 2, var17}, var7}); - } - - boolean var24 = false; - break; - case 6: - int var10001 = var13 / 2 * 2 * 4; - Object[] var10004 = new Object[]{null, var5}; - var10004[0] = var10001; - this.a(var10004); - - for (int var15 = 0; var15 < var13; var15 += 2) { - this.g(new Object[]{new int[]{var15, var15 + 1}, var7}); - } - - boolean var10000 = false; - break; - default: - throw new MatchException(null, null); - } - - return this; - } - } - - WorldContract j(Object[] var1); - - default WorldContract k(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 52947842122458L ^ var2; - long var4 = var2 ^ 16456975169252L; - long var6 = var2 ^ 132732316017325L; - int var10001 = this.a_int_____________________________(new Object[]{var4}); - Object[] var10004 = new Object[]{null, var6}; - var10004[0] = var10001; - return this.j(var10004); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldHelper.java b/src/main/java/dev/zprestige/prestige/world/WorldHelper.java deleted file mode 100644 index 78c55dc..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldHelper.java +++ /dev/null @@ -1,95 +0,0 @@ -package dev.zprestige.prestige.world; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.world.Difficulty; - -// $VF: synthetic class -public class WorldHelper { - public static final int[] a = new int[Difficulty.values().length]; - - static { - try { - a[Difficulty.PEACEFUL.ordinal()] = 1; - } catch (NoSuchFieldError var2) { - } - - try { - a[Difficulty.EASY.ordinal()] = 2; - } catch (NoSuchFieldError var1) { - } - - try { - a[Difficulty.HARD.ordinal()] = 3; - } catch (NoSuchFieldError var0) { - } - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldHelper10.java b/src/main/java/dev/zprestige/prestige/world/WorldHelper10.java deleted file mode 100644 index 7bf2293..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldHelper10.java +++ /dev/null @@ -1,153 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.MethodValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.block.ShapeContext; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.RaycastContext; -import net.minecraft.world.RaycastContext.FluidHandling; -import net.minecraft.world.RaycastContext.ShapeType; - -public class WorldHelper10 { - private static final MethodValue a = FieldAccessor.a_MethodValue(new Object[]{RaycastContext.class, "start", Vec3d.class, 0L}); - private static final MethodValue b = FieldAccessor.a_MethodValue(new Object[]{RaycastContext.class, "end", Vec3d.class, 0L}); - private static final MethodValue c = FieldAccessor.a_MethodValue(new Object[]{RaycastContext.class, "shapeType", ShapeType.class, 0L}); - private static final MethodValue d = FieldAccessor.a_MethodValue(new Object[]{RaycastContext.class, "fluid", FluidHandling.class, 0L}); - private static final MethodValue e = FieldAccessor.a_MethodValue(new Object[]{RaycastContext.class, "shapeContext", ShapeContext.class, 0L}); - private final RaycastContext f; - - public WorldHelper10(RaycastContext var1) { - this.f = var1; - } - - public void a(Object[] var1) { - Vec3d var2 = (Vec3d)var1[0]; - long var3 = (Long)var1[1]; - var3 = 21268067725915L ^ var3; - long var5 = var3 ^ 58182339569528L; - a.f(new Object[]{this.f, var2, var5}); - } - - public void b(Object[] var1) { - Vec3d var4 = (Vec3d)var1[0]; - long var2 = (Long)var1[1]; - var2 = 21268067725915L ^ var2; - long var5 = var2 ^ 110818825862992L; - b.f(new Object[]{this.f, var4, var5}); - } - - public void c(Object[] var1) { - ShapeType var4 = (ShapeType)var1[0]; - long var2 = (Long)var1[1]; - var2 = 21268067725915L ^ var2; - long var5 = var2 ^ 126506247994672L; - c.f(new Object[]{this.f, var4, var5}); - } - - public void d(Object[] var1) { - FluidHandling var2 = (FluidHandling)var1[0]; - long var3 = (Long)var1[1]; - var3 = 21268067725915L ^ var3; - long var5 = var3 ^ 139014231716211L; - d.f(new Object[]{this.f, var2, var5}); - } - - public void e(Object[] var1) { - ShapeContext var2 = (ShapeContext)var1[0]; - long var3 = (Long)var1[1]; - var3 = 21268067725915L ^ var3; - long var5 = var3 ^ 44372707042920L; - e.f(new Object[]{this.f, var2, var5}); - } - - public void f(Object[] var1) { - Vec3d var3 = (Vec3d)var1[0]; - Vec3d var2 = (Vec3d)var1[1]; - ShapeType var8 = (ShapeType)var1[2]; - FluidHandling var4 = (FluidHandling)var1[3]; - Entity var5 = (Entity)var1[4]; - long var6 = (Long)var1[5]; - var6 = 21268067725915L ^ var6; - long var9 = var6 ^ 24220807918370L; - long var11 = var6 ^ 11779660362290L; - long var13 = var6 ^ 101718732711209L; - long var15 = var6 ^ 90037529176426L; - long var17 = var6 ^ 77137574341386L; - this.a(new Object[]{var3, var9}); - this.b(new Object[]{var2, var17}); - this.c(new Object[]{var8, var15}); - this.d(new Object[]{var4, var13}); - this.e(new Object[]{ShapeContext.of(var5), var11}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldHelper2.java b/src/main/java/dev/zprestige/prestige/world/WorldHelper2.java deleted file mode 100644 index 2a36ce9..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldHelper2.java +++ /dev/null @@ -1,82 +0,0 @@ -package dev.zprestige.prestige.world; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.world.World; - -public class WorldHelper2 { - private final World a; - private static final String c = "blockEntityTickers"; - - public WorldHelper2(World var1) { - this.a = var1; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldHelper3.java b/src/main/java/dev/zprestige/prestige/world/WorldHelper3.java deleted file mode 100644 index a40d659..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldHelper3.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.client.world.ClientChunkManager; -import net.minecraft.client.world.ClientChunkManager.ClientChunkMap; - -public class WorldHelper3 { - private final ClientChunkManager a; - private static final String c = "chunks"; - - public WorldHelper3(ClientChunkManager var1) { - this.a = var1; - } - - public ClientChunkMap a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 37935648102280L ^ var2; - long var4 = var2 ^ 87064959093559L; - long var6 = var2 ^ 64491753465537L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, c, ClientChunkManager.class, ClientChunkMap.class, var6}); - return (ClientChunkMap)var8.a(new Object[]{var4}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldHelper4.java b/src/main/java/dev/zprestige/prestige/world/WorldHelper4.java deleted file mode 100644 index 4a8d8eb..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldHelper4.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.concurrent.atomic.AtomicReferenceArray; -import net.minecraft.client.world.ClientChunkManager.ClientChunkMap; - -public class WorldHelper4 { - private final ClientChunkMap a; - private static final String c = "chunks"; - - public WorldHelper4(ClientChunkMap var1) { - this.a = var1; - } - - public AtomicReferenceArray a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 121339122925282L ^ var2; - long var4 = var2 ^ 56800109163825L; - long var6 = var2 ^ 77103348291783L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, c, ClientChunkMap.class, AtomicReferenceArray.class, var6}); - return (AtomicReferenceArray)var8.a(new Object[]{var4}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldHelper5.java b/src/main/java/dev/zprestige/prestige/world/WorldHelper5.java deleted file mode 100644 index 0b3d0b6..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldHelper5.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.util.math.intprovider.IntProvider; -import net.minecraft.world.gen.placementmodifier.CountPlacementModifier; - -public class WorldHelper5 { - private final CountPlacementModifier a; - private static final String c = "count"; - - public WorldHelper5(CountPlacementModifier var1) { - this.a = var1; - } - - public IntProvider a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 137726859340387L ^ var2; - long var4 = var2 ^ 95784646460541L; - long var6 = var2 ^ 38024723835275L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, c, CountPlacementModifier.class, IntProvider.class, var6}); - return (IntProvider)var8.a(new Object[]{var4}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldHelper6.java b/src/main/java/dev/zprestige/prestige/world/WorldHelper6.java deleted file mode 100644 index e36c835..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldHelper6.java +++ /dev/null @@ -1,81 +0,0 @@ -package dev.zprestige.prestige.world; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.world.explosion.Explosion; - -public class WorldHelper6 { - private final Explosion a; - - public WorldHelper6(Explosion var1) { - this.a = var1; - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldHelper7.java b/src/main/java/dev/zprestige/prestige/world/WorldHelper7.java deleted file mode 100644 index c2a2173..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldHelper7.java +++ /dev/null @@ -1,100 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.world.gen.HeightContext; - -public class WorldHelper7 { - private final Object a; - - public WorldHelper7(Object var1) { - this.a = var1; - } - - public void a(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - var2 = 84663012929734L ^ var2; - long var5 = var2 ^ 91845692134621L; - long var7 = var2 ^ 110872705712345L; - FieldAccessor.b(new Object[]{this.a, "minY", HeightContext.class, int.class, var7}).a_void_____________(new Object[]{var4, var5}); - } - - public void b(Object[] var1) { - int var4 = (Integer)var1[0]; - long var2 = (Long)var1[1]; - var2 = 84663012929734L ^ var2; - long var5 = var2 ^ 27498981472984L; - long var7 = var2 ^ 50974666419932L; - FieldAccessor.b(new Object[]{this.a, "height", HeightContext.class, int.class, var7}).a_void_____________(new Object[]{var4, var5}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldHelper8.java b/src/main/java/dev/zprestige/prestige/world/WorldHelper8.java deleted file mode 100644 index 1908c98..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldHelper8.java +++ /dev/null @@ -1,94 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.world.gen.heightprovider.HeightProvider; -import net.minecraft.world.gen.placementmodifier.HeightRangePlacementModifier; - -public class WorldHelper8 { - private final HeightRangePlacementModifier a; - private static final String c = "height"; - - public WorldHelper8(HeightRangePlacementModifier var1) { - this.a = var1; - } - - public HeightProvider a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 56333363987919L ^ var2; - long var4 = var2 ^ 97312078874029L; - long var6 = var2 ^ 49520706529371L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, c, HeightRangePlacementModifier.class, HeightProvider.class, var6}); - return (HeightProvider)var8.a(new Object[]{var4}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldHelper9.java b/src/main/java/dev/zprestige/prestige/world/WorldHelper9.java deleted file mode 100644 index 8d7df29..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldHelper9.java +++ /dev/null @@ -1,93 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.reflect.FieldAccessor; -import dev.zprestige.prestige.reflect.FieldValue; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.world.gen.placementmodifier.RarityFilterPlacementModifier; - -public class WorldHelper9 { - private final RarityFilterPlacementModifier a; - private static final String c = "chance"; - - public WorldHelper9(RarityFilterPlacementModifier var1) { - this.a = var1; - } - - public int a(Object[] var1) { - long var2 = (Long)var1[0]; - var2 = 131872826531772L ^ var2; - long var4 = var2 ^ 63183428741501L; - long var6 = var2 ^ 84661357806731L; - FieldValue var8 = FieldAccessor.b(new Object[]{this.a, c, RarityFilterPlacementModifier.class, int.class, var6}); - return (Integer)var8.a(new Object[]{var4}); - } - - private static Field a(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field b(Class var0, String var1, Class var2) { - Field var3 = a(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = b(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method a(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method b(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = a(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = b(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldUtil.java b/src/main/java/dev/zprestige/prestige/world/WorldUtil.java deleted file mode 100644 index e4ec5fe..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldUtil.java +++ /dev/null @@ -1,428 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.client.Prestige; -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.render.RenderBatch; -import dev.zprestige.prestige.render.RenderContract2; -import dev.zprestige.prestige.render.RenderUtil5; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import net.minecraft.entity.Entity; -import net.minecraft.util.hit.HitResult; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.RaycastContext; -import net.minecraft.world.RaycastContext.FluidHandling; -import net.minecraft.world.RaycastContext.ShapeType; - -public class WorldUtil implements RenderContract2 { - public static boolean c(Object[] var0) { - RenderBatch var3 = (RenderBatch)var0[0]; - float var4 = (Float)var0[1]; - float var1 = (Float)var0[2]; - float var2 = (Float)var0[3]; - long var5 = (Long)var0[4]; - var5 = 115517686541580L ^ var5; - long var7 = var5 ^ 95671329056734L; - long var9 = var5 ^ 122797480979132L; - long var11 = var5 ^ 57549318998263L; - float var10000 = b.player.getYaw(); - float var10001 = var3.a(new Object[0]) + var1; - float var10002 = Prestige.h.a(new Object[0]) * (1.1F - var4) * 7.0F / var2; - Object[] var10007 = new Object[]{null, null, var7}; - var10007[1] = 1.0F; - var10007[0] = 0.5F; - var10002 *= RenderUtil5.a(var10007); - Object[] var10005 = new Object[]{null, null, null, var11}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var10000; - float var14 = c_float____(var10005); - Event.b(); - var10001 = b.player.getPitch(); - var10002 = var3.b(new Object[0]) + var1 / 2.0F; - float var10003 = Prestige.h.a(new Object[0]) * (1.1F - var4) * 7.0F / var2; - Object[] var10008 = new Object[]{null, null, var7}; - var10008[1] = 1.0F; - var10008[0] = 0.5F; - var10003 *= RenderUtil5.a(var10008); - Object[] var10006 = new Object[]{null, null, null, var11}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - float var15 = c_float____(var10006); - a_void________________________________(new Object[]{new RenderBatch(var14, var15), var9}); - return b.player.getYaw() - 5.0F < var3.a(new Object[0]) - && b.player.getYaw() + 5.0F > var3.a(new Object[0]) - && b.player.getPitch() - 5.0F < var3.b(new Object[0]) - && b.player.getPitch() + 5.0F > var3.b(new Object[0]); - } - - public static boolean d(Object[] var0) { - RenderBatch var6 = (RenderBatch)var0[0]; - float var1 = (Float)var0[1]; - float var4 = (Float)var0[2]; - float var5 = (Float)var0[3]; - long var2 = (Long)var0[4]; - var2 = 115517686541580L ^ var2; - long var7 = var2 ^ 127730507624968L; - long var9 = var2 ^ 84145391173482L; - long var11 = var2 ^ 25836823158049L; - Event.b(); - float var10001 = b.player.getPitch(); - float var10002 = var6.b(new Object[0]) + var4 / 2.0F; - float var10003 = Prestige.h.a(new Object[0]) * (1.1F - var1) * 7.0F / var5; - Object[] var10008 = new Object[]{null, null, var7}; - var10008[1] = 1.0F; - var10008[0] = 0.5F; - var10003 *= RenderUtil5.a(var10008); - Object[] var10006 = new Object[]{null, null, null, var11}; - var10006[2] = var10003; - var10006[1] = var10002; - var10006[0] = var10001; - float var14 = c_float____(var10006); - a_void________________________________(new Object[]{new RenderBatch(b.player.getYaw(), var14), var9}); - return b.player.getPitch() - 1.0F < var6.b(new Object[0]) && b.player.getPitch() + 1.0F > var6.b(new Object[0]); - } - - public static boolean f(Object[] var0) { - RenderBatch var1 = (RenderBatch)var0[0]; - RenderBatch var5 = (RenderBatch)var0[1]; - float var2 = (Float)var0[2]; - Event.b(); - float var7 = Math.abs(Math.abs(var5.a(new Object[0])) - Math.abs(var1.a(new Object[0]))); - float var8 = Math.abs(var5.b(new Object[0]) - Math.abs(var1.b(new Object[0]))); - float var9 = (float)Math.sqrt(var7 * var7 + var8 * var8); - return var9 <= var2; - } - - public static float a(Object[] var0) { - RenderBatch var1 = (RenderBatch)var0[0]; - float var4 = Math.abs(Math.abs(var1.a(new Object[0])) - Math.abs(b.player.getYaw())); - float var5 = Math.abs(var1.b(new Object[0]) - Math.abs(b.player.getPitch())); - return (float)Math.sqrt(var4 * var4 + var5 * var5); - } - - public static HitResult a_class_239_(Object[] var0) { - RenderBatch var3 = (RenderBatch)var0[0]; - long var1 = (Long)var0[1]; - var1 = 115517686541580L ^ var1; - long var4 = var1 ^ 79751958745328L; - return b.world - .raycast( - new RaycastContext( - b.player.getEyePos(), - a_class_243________________(new Object[]{var3, var4}).multiply(6.0).add(b.player.getEyePos()), - ShapeType.OUTLINE, - FluidHandling.NONE, - b.player - ) - ); - } - - public static HitResult b(Object[] var0) { - RenderBatch var2 = (RenderBatch)var0[0]; - float var1 = (Float)var0[1]; - long var3 = (Long)var0[2]; - var3 = 115517686541580L ^ var3; - long var5 = var3 ^ 135189588091527L; - return b.world - .raycast( - new RaycastContext( - b.player.getEyePos(), - a_class_243________________(new Object[]{var2, var5}).multiply(var1).add(b.player.getEyePos()), - ShapeType.OUTLINE, - FluidHandling.NONE, - b.player - ) - ); - } - - public static Vec3d a_class_243________________(Object[] var0) { - RenderBatch var3 = (RenderBatch)var0[0]; - float var4 = (float) (Math.PI / 180.0); - float var5 = (float) Math.PI; - float var6 = MathHelper.cos(-var3.a(new Object[0]) * var4 - var5); - float var7 = MathHelper.sin(-var3.a(new Object[0]) * var4 - var5); - float var8 = -MathHelper.cos(-var3.b(new Object[0]) * var4); - float var9 = MathHelper.sin(-var3.b(new Object[0]) * var4); - return new Vec3d(var7 * var8, var9, var6 * var8).normalize(); - } - - public static void a_void________________________________(Object[] var0) { - RenderBatch var1 = (RenderBatch)var0[0]; - b.player.setYaw(var1.a(new Object[0])); - b.player.setPitch(var1.b(new Object[0])); - } - - public static RenderBatch a_RenderBatch_(Object[] var0) { - Vec3d var1 = (Vec3d)var0[0]; - long var2 = (Long)var0[1]; - var2 = 115517686541580L ^ var2; - long var4 = var2 ^ 114528207943322L; - float var10000 = (float)var1.x; - float var10001 = (float)var1.y; - float var10002 = (float)var1.z; - Object[] var10005 = new Object[]{null, null, null, var4}; - var10005[2] = var10002; - var10005[1] = var10001; - var10005[0] = var10000; - return b_RenderBatch_____________(var10005); - } - - public static RenderBatch b_RenderBatch_____________(Object[] var0) { - float var2 = (Float)var0[0]; - float var1 = (Float)var0[1]; - float var5 = (Float)var0[2]; - long var3 = (Long)var0[3]; - var3 = 115517686541580L ^ var3; - long var6 = var3 ^ 13979993745796L; - Vec3d var8 = b.player.getEyePos(); - double var9 = var2 - var8.x; - double var11 = var1 - var8.y; - double var13 = var5 - var8.z; - double var15 = Math.sqrt(var9 * var9 + var13 * var13); - float var17 = (float)Math.toDegrees(Math.atan2(var13, var9)) - 90.0F; - float var18 = (float)(-Math.toDegrees(Math.atan2(var11, var15))); - float[] var19 = new float[]{b.player.getYaw(), b.player.getPitch()}; - float var10002 = var19[0]; - float var10003 = var17 - var19[0]; - Object[] var10006 = new Object[]{null, var6}; - var10006[0] = var10003; - var10002 += b_float_____________________(var10006); - var10003 = var19[1]; - float var10004 = var18 - var19[1]; - Object[] var10007 = new Object[]{null, var6}; - var10007[0] = var10004; - return new RenderBatch(var10002, var10003 + b_float_____________________(var10007)); - } - - public static RenderBatch c_RenderBatch(Object[] var0) { - RenderBatch var1 = (RenderBatch)var0[0]; - Vec3d var5 = (Vec3d)var0[1]; - float var4 = (Float)var0[2]; - long var2 = (Long)var0[3]; - var2 = 115517686541580L ^ var2; - long var6 = var2 ^ 110052110534005L; - float var10000 = var1.a(new Object[0]); - float var10001 = var1.b(new Object[0]); - float var10002 = (float)var5.x; - float var10003 = (float)var5.y; - float var10004 = (float)var5.z; - Object[] var10008 = new Object[]{null, null, null, null, null, null, var6}; - var10008[5] = var4; - var10008[4] = var10004; - var10008[3] = var10003; - var10008[2] = var10002; - var10008[1] = var10001; - var10008[0] = var10000; - return e(var10008); - } - - public static RenderBatch d_RenderBatch(Object[] var0) { - RenderBatch var4 = (RenderBatch)var0[0]; - Vec3d var3 = (Vec3d)var0[1]; - long var1 = (Long)var0[2]; - var1 = 115517686541580L ^ var1; - long var5 = var1 ^ 64373897445974L; - double var7 = b.player.getEyePos().distanceTo(var3); - float var9 = (float)MathHelper.clamp(0.18 / Math.max(var7, 1.0), 0.005, 0.15); - float var10000 = -var9; - Object[] var10004 = new Object[]{null, null, var5}; - var10004[1] = var9; - var10004[0] = var10000; - float var10 = RenderUtil5.a(var10004); - var10000 = -var9; - var10004 = new Object[]{null, null, var5}; - var10004[1] = var9; - var10004[0] = var10000; - float var11 = RenderUtil5.a(var10004); - float var12 = MathHelper.clamp(var4.b(new Object[0]) + var11, -89.9F, 89.9F); - RenderBatch var13 = new RenderBatch(var4.a(new Object[0]) + var10, var12); - var13.c(new Object[]{var4.a_boolean________________________________________(new Object[0])}); - return var13; - } - - public static RenderBatch e(Object[] var0) { - float var5 = (Float)var0[0]; - float var2 = (Float)var0[1]; - float var6 = (Float)var0[2]; - float var1 = (Float)var0[3]; - float var4 = (Float)var0[4]; - float var3 = (Float)var0[5]; - long var7 = (Long)var0[6]; - var7 = 115517686541580L ^ var7; - long var9 = var7 ^ 91919126308211L; - Vec3d var12 = b.player.getEyePos(); - Event.b(); - double var13 = var6 - var12.x; - double var15 = var1 - var12.y; - double var17 = var4 - var12.z; - double var19 = Math.sqrt(var13 * var13 + var17 * var17); - float var21 = (float)Math.toDegrees(Math.atan2(var17, var13)) - 90.0F; - float var22 = (float)(-Math.toDegrees(Math.atan2(var15, var19))); - float var10000 = var21 - var5; - Object[] var10003 = new Object[]{null, var9}; - var10003[0] = var10000; - float var23 = b_float_____________________(var10003); - boolean var24 = Math.abs(var23) > var3; - var23 = MathHelper.clamp(var23, -var3, var3); - float var25 = var5 + var23; - float var10004 = var22 - var2; - Object[] var10007 = new Object[]{null, var9}; - var10007[0] = var10004; - RenderBatch var26 = new RenderBatch(var25, var2 + b_float_____________________(var10007)); - var26.c(new Object[]{var24}); - return var26; - } - - public static RenderBatch f_RenderBatch(Object[] var0) { - Entity var2 = (Entity)var0[0]; - Vec3d var1 = (Vec3d)var0[1]; - long var3 = (Long)var0[2]; - var3 = 115517686541580L ^ var3; - long var5 = var3 ^ 69451085454382L; - float var10001 = (float)var1.x; - float var10002 = (float)var1.y; - float var10003 = (float)var1.z; - Object[] var10006 = new Object[]{null, null, null, null, var5}; - var10006[3] = var10003; - var10006[2] = var10002; - var10006[1] = var10001; - var10006[0] = var2; - return g(var10006); - } - - public static RenderBatch g(Object[] var0) { - Entity var1 = (Entity)var0[0]; - float var5 = (Float)var0[1]; - float var2 = (Float)var0[2]; - float var6 = (Float)var0[3]; - long var3 = (Long)var0[4]; - var3 = 115517686541580L ^ var3; - long var7 = var3 ^ 70033678902934L; - Vec3d var9 = var1.getEyePos(); - double var10 = var5 - var9.x; - double var12 = var2 - var9.y; - double var14 = var6 - var9.z; - double var16 = Math.sqrt(var10 * var10 + var14 * var14); - float var18 = (float)Math.toDegrees(Math.atan2(var14, var10)) - 90.0F; - float var19 = (float)(-Math.toDegrees(Math.atan2(var12, var16))); - float[] var20 = new float[]{var1.getYaw(), var1.getPitch()}; - float var10002 = var20[0]; - float var10003 = var18 - var20[0]; - Object[] var10006 = new Object[]{null, var7}; - var10006[0] = var10003; - var10002 += b_float_____________________(var10006); - var10003 = var20[1]; - float var10004 = var19 - var20[1]; - Object[] var10007 = new Object[]{null, var7}; - var10007[0] = var10004; - return new RenderBatch(var10002, var10003 + b_float_____________________(var10007)); - } - - public static float b_float_____________________(Object[] var0) { - float var1 = (Float)var0[0]; - Event.b(); - float var5 = var1 % 360.0F; - if (var5 >= 180.0F) { - var5 -= 360.0F; - } - - if (var5 < -180.0F) { - var5 += 360.0F; - } - - return var5; - } - - public static float c_float____(Object[] var0) { - float var4 = (Float)var0[0]; - float var5 = (Float)var0[1]; - float var3 = (Float)var0[2]; - long var1 = (Long)var0[3]; - var1 = 115517686541580L ^ var1; - long var6 = var1 ^ 56689163446474L; - float var10001 = var4 - var5; - Object[] var10007 = new Object[]{null, null, null, var6}; - var10007[2] = 1.0F; - var10007[1] = 0.0F; - var10007[0] = var3; - return var4 - var10001 * d_float___(var10007); - } - - private static float d_float___(Object[] var0) { - float var4 = (Float)var0[0]; - float var3 = (Float)var0[1]; - float var5 = (Float)var0[2]; - return var4 < var3 ? var3 : Math.min(var4, var5); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/java/dev/zprestige/prestige/world/WorldUtil2.java b/src/main/java/dev/zprestige/prestige/world/WorldUtil2.java deleted file mode 100644 index 12282a5..0000000 --- a/src/main/java/dev/zprestige/prestige/world/WorldUtil2.java +++ /dev/null @@ -1,225 +0,0 @@ -package dev.zprestige.prestige.world; - -import dev.zprestige.prestige.event.Event; -import dev.zprestige.prestige.render.RenderContract2; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; -import java.util.function.Predicate; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.MinecraftClient; -import net.minecraft.entity.Entity; -import net.minecraft.entity.ItemEntity; -import net.minecraft.state.property.Properties; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.HitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.BlockPos.Mutable; - -public class WorldUtil2 implements RenderContract2 { - private static final MinecraftClient b = MinecraftClient.getInstance(); - - public static boolean a(Object[] var0) { - Entity var1 = (Entity)var0[0]; - Vec3d var5 = b.player.getEyePos(); - Event.b(); - Vec3d var6 = var1.getEyePos(); - Box var7 = var1.getBoundingBox(); - Vec3d var8 = var6.subtract(var5).normalize(); - double var9 = var5.distanceTo(var6); - - for (double var11 = 0.0; var11 < var9; var11 += 0.1) { - Vec3d var13 = var5.add(var8.multiply(var11)); - if (var7 != null && var7.contains(var13)) { - return false; - } - - BlockPos var14 = BlockPos.ofFloored(var13.x, var13.y, var13.z); - if (b.world.getBlockState(var14).getBlock() == Blocks.COBWEB) { - return true; - } - } - - return false; - } - - public static BlockPos a_class_2338______(Object[] var0) { - BlockHitResult var3 = (BlockHitResult)var0[0]; - return var3.getBlockPos().add(var3.getSide().getOffsetX(), var3.getSide().getOffsetY(), var3.getSide().getOffsetZ()); - } - - public static boolean b(Object[] var0) { - BlockPos var2 = (BlockPos)var0[0]; - Block var1 = (Block)var0[1]; - long var3 = (Long)var0[2]; - var3 = 66077792794307L ^ var3; - long var5 = var3 ^ 37798456577286L; - return a_class_2680_(new Object[]{var2, var5}).isOf(var1); - } - - public static boolean c(Object[] var0) { - HitResult var1 = (HitResult)var0[0]; - long var2 = (Long)var0[1]; - var2 = 66077792794307L ^ var2; - long var4 = var2 ^ 1144871853884L; - return e(new Object[]{((BlockHitResult)var1).getBlockPos(), var4}); - } - - public static boolean d(Object[] var0) { - BlockHitResult var3 = (BlockHitResult)var0[0]; - long var1 = (Long)var0[1]; - var1 = 66077792794307L ^ var1; - long var4 = var1 ^ 47245050379047L; - return e(new Object[]{var3.getBlockPos(), var4}); - } - - public static boolean e(Object[] var0) { - BlockPos var3 = (BlockPos)var0[0]; - long var1 = (Long)var0[1]; - var1 = 66077792794307L ^ var1; - long var4 = var1 ^ 119110895513607L; - return !b.world.getBlockState(var3).isReplaceable() - || b.world.getBlockState(var3).isOf(Blocks.FIRE) - || b.world.getBlockState(var3).isOf(a_class_2248_(new Object[]{var4})) - || b.world.getBlockState(var3).isOf(Blocks.SNOW) && b.world.getBlockState(var3).get(Properties.LAYERS) == 1; - } - - public static Block a_class_2248_(Object[] var0) { - return Blocks.SHORT_GRASS; - } - - public static boolean f(Object[] var0) { - BlockPos var1 = (BlockPos)var0[0]; - long var2 = (Long)var0[1]; - var2 = 66077792794307L ^ var2; - long var4 = var2 ^ 94192405109382L; - long var6 = var2 ^ 81031200972677L; - return (b(new Object[]{var1, Blocks.OBSIDIAN, var6}) || b(new Object[]{var1, Blocks.BEDROCK, var6})) - && b(new Object[]{var1.up(), Blocks.AIR, var6}) - && !g(new Object[]{var1.up(), var4}); - } - - public static boolean g(Object[] var0) { - BlockPos var1 = (BlockPos)var0[0]; - Event.b(); - Box var5 = new Box(var1.getX(), var1.getY(), var1.getZ(), var1.getX() + 1.0, var1.getY() + 1.0, var1.getZ() + 1.0); - return !b.world.getOtherEntities(null, var5, lpL10_0 -> !(((net.minecraft.entity.Entity)lpL10_0) instanceof ItemEntity)).isEmpty(); - } - - public static List a_List___(Object[] var0) { - int var3 = (Integer)var0[0]; - Predicate var4 = (Predicate)var0[1]; - ArrayList var6 = new ArrayList(); - Event.b(); - BlockPos var7 = b.player.getBlockPos(); - int var8 = var7.getX(); - int var9 = var7.getY(); - int var10 = var7.getZ(); - Mutable var11 = new Mutable(); - - for (int var12 = -var3; var12 <= var3; var12++) { - for (int var13 = -var3; var13 <= var3; var13++) { - for (int var14 = -var3; var14 <= var3; var14++) { - var11.set(var8 + var12, var9 + var13, var10 + var14); - if (var4.test(var11)) { - var6.add(var11.toImmutable()); - } - } - } - } - - return var6; - } - - public static boolean k(Object[] var0) { - BlockPos var3 = (BlockPos)var0[0]; - Block var4 = (Block)var0[1]; - return b.world.getBlockState(var3).getBlock() == var4; - } - - public static BlockState a_class_2680_(Object[] var0) { - BlockPos var3 = (BlockPos)var0[0]; - return b.world.getBlockState(var3); - } - - public static int a_int______________________________(Object[] var0) { - BlockPos var3 = (BlockPos)var0[0]; - long var1 = (Long)var0[1]; - var1 = 66077792794307L ^ var1; - long var4 = var1 ^ 69417490838164L; - return a_class_2680_(new Object[]{var3, var4}).get(Properties.CHARGES); - } - - private static Field c(Class var0, String var1, Class var2) { - for (Field var6 : var0.getDeclaredFields()) { - if (var6.getName().equals(var1) && var6.getType() == var2) { - return var6; - } - } - - return null; - } - - private static Field d(Class var0, String var1, Class var2) { - Field var3 = c(var0, var1, var2); - if (var3 != null) { - return var3; - } else { - Class[] var4 = var0.getInterfaces(); - if (var4 != null) { - for (int var5 = 0; var5 < var4.length; var5++) { - var3 = d(var4[var5], var1, var2); - if (var3 != null) { - return var3; - } - } - } - - return null; - } - } - - private static Method c(Class var0, String var1, Class var2, int var3, Class[] var4) { - label33: - for (Method var8 : var0.getDeclaredMethods()) { - if (var8.getName().equals(var1) && var8.getReturnType() == var2) { - Class[] var9 = var8.getParameterTypes(); - if (var9.length == var3) { - for (int var10 = 0; var10 < var3; var10++) { - if (var9[var10] != var4[var10]) { - continue label33; - } - } - - return var8; - } - } - } - - return null; - } - - private static Method d(Class var0, String var1, Class var2, int var3, Class[] var4) { - Method var5 = c(var0, var1, var2, var3, var4); - if (var5 != null) { - return var5; - } else { - Class[] var6 = var0.getInterfaces(); - if (var6 != null) { - for (int var7 = 0; var7 < var6.length; var7++) { - var5 = d(var6[var7], var1, var2, var3, var4); - if (var5 != null) { - return var5; - } - } - } - - return null; - } - } -} diff --git a/src/main/resources/prestige-engine/inject-transformers.list b/src/main/resources/prestige-engine/inject-transformers.list new file mode 100644 index 0000000..4c44320 --- /dev/null +++ b/src/main/resources/prestige-engine/inject-transformers.list @@ -0,0 +1,3 @@ +dev.zprestige.prestige.inject.hooks.MouseHooks +dev.zprestige.prestige.inject.hooks.KeyboardHooks +dev.zprestige.prestige.inject.hooks.RenderSystemHooks diff --git a/src/main/resources/prestige-engine/transformers.list b/src/main/resources/prestige-engine/transformers.list index 2cc3c73..8811e9c 100644 --- a/src/main/resources/prestige-engine/transformers.list +++ b/src/main/resources/prestige-engine/transformers.list @@ -24,9 +24,6 @@ dev.zprestige.prestige.mixin.LightmapTextureManagerMixin dev.zprestige.prestige.mixin.LivingEntityMixin dev.zprestige.prestige.mixin.LivingEntityRendererMixin dev.zprestige.prestige.mixin.MinecraftClientMixin -dev.zprestige.prestige.mixin.MinecraftClientMixin2 -dev.zprestige.prestige.mixin.MinecraftClientMixin3 -dev.zprestige.prestige.mixin.MinecraftClientMixin4 dev.zprestige.prestige.mixin.ModelCommandRendererMixin dev.zprestige.prestige.mixin.MouseMixin dev.zprestige.prestige.mixin.NamespaceResourceManagerMixin diff --git a/src/main/resources/prestige_ui/manifest_live.json b/src/main/resources/prestige_ui/manifest_live.json index a17245c..982a680 100644 --- a/src/main/resources/prestige_ui/manifest_live.json +++ b/src/main/resources/prestige_ui/manifest_live.json @@ -1,7856 +1,7856 @@ { - "modules": [ - { - "class": "dev.zprestige.prestige.module.combat.AimAssist", - "name": "Aim Assist", - "desc": "Aims at targets", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Aims at players or end crystals.", - "value": "Players", - "props": { - "options": "[Players,Crystals]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Target", - "desc": "Closest = nearest; Crosshair = smallest angle to aim; Lowest HP/Armor = weakest player.", - "value": "Closest", - "props": { - "options": "[Closest,Crosshair,Lowest HP,Lowest Armor]" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Fov", - "desc": "Considers targets within this view angle (degrees). 360 = full sphere, allowing flicks behind you.", - "value": "90.0", - "props": { - "min": "0.1", - "max": "360.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Range", - "desc": "Considers targets within this distance (blocks).", - "value": "5.0", - "props": { - "min": "0.0", - "max": "10.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Sticky Targeting", - "desc": "Keeps the current target until it dies or leaves range.", - "value": "true", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Through Walls", - "desc": "Allows targets hidden behind blocks.", - "value": "false", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only On Rotate", - "desc": "Assists only while you are moving the mouse.", - "value": "true", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Stop On Block Break", - "desc": "Pauses while you are mining a block.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Weapon Only", - "desc": "Assists only while holding a sword or axe.", - "value": "false", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Crystal Only", - "desc": "Assists only while holding an end crystal.", - "value": "false", - "props": {} - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Require Left Click", - "desc": "Assists only while left click is held.", - "value": "false", - "props": {} - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Require Right Click", - "desc": "Assists only while right click is held.", - "value": "false", - "props": {} - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Reaction Delay", - "desc": "Waits this long after acquiring a target before aiming (ms).", - "value": "0.0", - "props": { - "min": "0.0", - "max": "500.0" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Speed", - "desc": "Sets how fast the aim pulls to the target. Higher = snappier.", - "value": "50.0", - "props": { - "min": "0.1", - "max": "100.0" - } - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Randomness", - "desc": "Adds per-frame jitter so the aim never moves dead straight.", - "value": "70.0", - "props": { - "min": "0.1", - "max": "100.0" - } - }, - { - "field": "q", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Smoothen", - "desc": "Replaces speed-based aim with a smoothness curve; glides instead of snapping.", - "value": "false", - "props": {} - }, - { - "field": "r", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Smoothness", - "desc": "Sets how buttery the glide is. 100 = very slow drift.", - "value": "75.0", - "props": { - "min": "0.0", - "max": "100.0" - } - }, - { - "field": "s", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Predict Movement", - "desc": "Leads moving players by their velocity.", - "value": "true", - "props": {} - }, - { - "field": "t", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Predict Multiply", - "desc": "Multiplies the lead. 1 = exact velocity; higher offsets ping (x).", - "value": "1.0", - "props": { - "min": "1.0", - "max": "4.0" - } - }, - { - "field": "u", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Vertical Only", - "desc": "Corrects pitch only for crystals; yaw stays yours.", - "value": "false", - "props": {} - }, - { - "field": "v", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Stop On Hitbox", - "desc": "Freezes correction once your crosshair is on the hitbox.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.Ambience", - "name": "Ambience", - "desc": "Changes the ambience of the game", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Fog", - "desc": "Overrides vanilla fog with custom distances and color.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Start", - "desc": "Starts fog at this distance (blocks).", - "value": "90.0", - "props": { - "min": "0.0", - "max": "200.0" - } - }, - { - "field": "b", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "End", - "desc": "Reaches full fog at this distance (blocks).", - "value": "150.0", - "props": { - "min": "0.0", - "max": "200.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Color", - "desc": "Sets the fog color.", - "value": "java.awt.Color[r=255,g=255,b=255]", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Cover Horizon Band", - "desc": "Hides the bright horizon strip by matching the sky cutoff to fog end.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Sky", - "desc": "Overrides the upper sky color.", - "value": "false", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Sky Color", - "desc": "Sets the sky dome color.", - "value": "java.awt.Color[r=135,g=206,b=235]", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Custom Time", - "desc": "Overrides the visual time of day.", - "value": "true", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Time", - "desc": "Sets the visual time of day (ticks, 0–24000).", - "value": "6000", - "props": { - "min": "0", - "max": "24000" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AnchorExploder", - "name": "Anchor Exploder", - "desc": "Automatically explodes respawn anchors for you", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only Own Anchors", - "desc": "Touches only anchors you placed.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "200.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Glowstone", - "desc": "Charges anchors with glowstone before exploding.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Glowstone Swap", - "desc": "None uses the held item; Swap switches hotbar.", - "value": "Swap", - "props": { - "options": "[None,Swap]" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Glowstone Swap Back", - "desc": "Returns to the previous slot after charging.", - "value": "false", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Explode", - "desc": "Explodes charged anchors.", - "value": "true", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Explode Swap", - "desc": "None uses the held item; Swap switches hotbar.", - "value": "Swap", - "props": { - "options": "[None,Swap]" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Explode Slot", - "desc": "Holds this hotbar slot while exploding (put a totem here).", - "value": "8", - "props": { - "min": "1", - "max": "9" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Explode Swap Back", - "desc": "Returns to the previous slot after exploding.", - "value": "false", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Explode Damage Tick", - "desc": "Explodes only when the enemy can take damage.", - "value": "true", - "props": {} - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Disable After Explode", - "desc": "Turns the module off after an explode.", - "value": "false", - "props": {} - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Silent Aim", - "desc": "Aims server-side when charging and exploding; your camera never moves.", - "value": "", - "props": { - "options": "[Glowstone,Explode]", - "selected": "[false,false]", - "indexByOption": "{Glowstone=0, Explode=1}" - } - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Silent Aim FOV", - "desc": "Caps silent aim at this yaw offset (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AnchorMacro", - "name": "Anchor Macro", - "desc": "Explodes and places anchors automatically", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only Own Anchors", - "desc": "Touches only anchors you placed.", - "value": "false", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "200.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Place", - "desc": "Places anchors at your crosshair.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Place Bind", - "desc": "Press to place an anchor at the crosshair.", - "value": "-1", - "props": { - "toggleMode": "false" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Place Swap", - "desc": "None uses the held item; Swap switches hotbar; Silent swaps server-side.", - "value": "None", - "props": { - "options": "[None,Swap,Silent]" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Place Swap Back", - "desc": "Returns to the previous slot after placing.", - "value": "true", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Glowstone", - "desc": "Charges anchors with glowstone.", - "value": "true", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Glowstone Swap", - "desc": "None uses the held item; Swap switches hotbar; Silent swaps server-side.", - "value": "None", - "props": { - "options": "[None,Swap,Silent]" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Glowstone Swap Back", - "desc": "Returns to the previous slot after charging.", - "value": "true", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only On Place Bind", - "desc": "Charges only anchors placed with Place Bind.", - "value": "false", - "props": {} - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Explode", - "desc": "Explodes charged anchors.", - "value": "true", - "props": {} - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Explode Swap", - "desc": "None uses the held item; Swap switches hotbar; Silent swaps server-side.", - "value": "None", - "props": { - "options": "[None,Swap,Silent]" - } - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Explode Slot", - "desc": "Holds this hotbar slot while exploding (put a totem here).", - "value": "1", - "props": { - "min": "1", - "max": "9" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Explode Swap Back", - "desc": "Returns to the previous slot after exploding.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AnchorPearlCatch", - "name": "Anchor Pearl Catch", - "desc": "Pre-places and detonates a respawn anchor where enemy pearls land", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Scan Range", - "desc": "Only tracks enemy pearls thrown within this distance (blocks).", - "value": "48.0", - "props": { - "min": "16.0", - "max": "96.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min Damage", - "desc": "Only catches pearls whose landing the anchor can hit for at least this predicted damage (pre-armor HP).", - "value": "15.0", - "props": { - "min": "0.0", - "max": "40.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Self Damage", - "desc": "Skips catches whose self-damage would exceed this (HP, armor-aware).", - "value": "10.0", - "props": { - "min": "0.0", - "max": "36.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Anti Suicide", - "desc": "Never detonates if the blast could kill you.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Damage Tick", - "desc": "Detonates only when the target can actually take damage (no i-frames).", - "value": "true", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Safe Anchor", - "desc": "Places a cover block before charging to cut the self-damage.", - "value": "true", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Safe Block", - "desc": "Block to place as the blast cover.", - "value": "Glowstone", - "props": { - "options": "[Glowstone,Obsidian]" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Rotate Silently", - "desc": "Aims server-side via RotationManager; your camera never moves.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Silent Aim FOV", - "desc": "Caps silent aim at this yaw offset (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to your previous slot after the catch finishes.", - "value": "true", - "props": {} - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Place Delay", - "desc": "Random ms between the anchor place and the safe-cover step.", - "value": "0.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "0.0", - "high": "40.0", - "rolled": "0.0" - } - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Charge Delay", - "desc": "Random ms between anchor place/cover and the glowstone charge.", - "value": "20.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "20.0", - "high": "60.0", - "rolled": "20.0" - } - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Detonate Delay", - "desc": "Random ms after they land before the detonate click.", - "value": "40.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "40.0", - "high": "120.0", - "rolled": "40.0" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render", - "desc": "Draws the landing spot, the anchor, and the cover, plus a landing-ETA tag.", - "value": "true", - "props": {} - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Anchor Color", - "desc": "Color for the anchor position.", - "value": "java.awt.Color[r=255,g=90,b=60]", - "props": {} - }, - { - "field": "q", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Safe Color", - "desc": "Color for the safe-cover position.", - "value": "java.awt.Color[r=255,g=220,b=90]", - "props": {} - }, - { - "field": "r", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Landing Color", - "desc": "Color for the predicted pearl landing.", - "value": "java.awt.Color[r=80,g=170,b=255]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AnchorPlacer", - "name": "Anchor Placer", - "desc": "Automatically places respawn anchors for you", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Fire Mode", - "desc": "One-Shot auto-disables after each action; Persistent never auto-disables (use a hold-bind on the module itself for hold-to-fire).", - "value": "One-Shot", - "props": { - "options": "[One-Shot,Persistent]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "200.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Swap", - "desc": "None uses the held item; Swap switches hotbar.", - "value": "Swap", - "props": { - "options": "[None,Swap]" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to the previous slot after placing.", - "value": "false", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent Aim", - "desc": "Aims at placement spots server-side; your camera never moves.", - "value": "false", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Silent Aim FOV", - "desc": "Caps silent aim at this yaw offset (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.Animations", - "name": "Animations", - "desc": "Renders custom smooth swing animations", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Mode", - "desc": "Selects the swing animation style (1–3).", - "value": "1", - "props": { - "min": "1", - "max": "3" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Slow", - "desc": "Slows the swing animation down.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AntiAction", - "name": "Anti Action", - "desc": "Prevents certain bad actions from interrupting your pvp", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Double Glowstone", - "desc": "Blocks double-filling an anchor with glowstone.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Open E-Chest", - "desc": "Blocks opening an ender chest while holding combat items.", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Place Glowstone", - "desc": "Blocks placing glowstone anywhere but an anchor.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Ground Firework", - "desc": "Blocks firing a firework rocket while not gliding on elytra. Skipped if a crossbow is in your offhand.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Sword Shield", - "desc": "Blocks hitting a shield with a sword.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AntiBot", - "name": "Anti Bot", - "desc": "Removes bots from the game", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Mode", - "desc": "Detects bots by packet order, UUID version, tab-list presence, and sustained zero-ping.", - "value": "", - "props": { - "options": "[Packet,UUID,TabList,Ping]", - "selected": "[true,true,true,true]", - "indexByOption": "{Packet=0, TabList=2, UUID=1, Ping=3}" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Validation Threshold", - "desc": "Requires this many EntityPositionS2CPackets from a player before whitelisting them. 1 = current single-packet trust; 2–3 hardens against crafted single-packet Grim bypasses at the cost of a slightly longer trust window.", - "value": "1", - "props": { - "min": "1", - "max": "5" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Tab-List Grace", - "desc": "Waits this long (ms) after a player spawns before rejecting them for missing a tab-list entry — avoids flagging legit players for the one tick between spawn and tab-list packets.", - "value": "500", - "props": { - "min": "0", - "max": "2000" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Ping Grace", - "desc": "Requires a player to hold latency == 0 for at least this long (ms) before flagging as a bot. One server keepalive cycle is enough for a real client to reply.", - "value": "3000", - "props": { - "min": "0", - "max": "10000" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.AntiResourcePack", - "name": "Anti Resource Pack", - "desc": "Prevents servers from forcing a resource pack", - "category": "Visual", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.misc.AntiTrap", - "name": "AntiTrap", - "desc": "Hides entities commonly used to bait trap-TPAs (armor stands, minecarts, etc).", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "g", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Entities", - "desc": "Hides these entity types; armor stands and carts are the TPA-trap staples.", - "value": "", - "props": { - "options": "[Armor Stands,Minecarts,Item Frames,Boats,End Crystals]", - "selected": "[true,true,false,false,false]", - "indexByOption": "{Boats=3, Minecarts=1, End Crystals=4, Armor Stands=0, Item Frames=2}" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Range", - "desc": "Affects entities within this distance (blocks).", - "value": "128.0", - "props": { - "min": "0.0", - "max": "256.0" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Cancel Spawn Packets", - "desc": "Drops spawn packets so trap entities never load.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Discard Existing", - "desc": "Removes already-loaded matching entities every tick.", - "value": "true", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Anti Sign", - "desc": "Blocks the sign-edit screen from opening so a sign placed in your face can't trap you.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AntiWeb", - "name": "Anti Web", - "desc": "Escapes cobwebs automatically: waters the web away and scoops it back up", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Legit is a triggerbot: you aim at the web yourself and it places/scoops automatically. Blatant needs no aiming and runs fully automatic.", - "value": "Legit", - "props": { - "options": "[Legit,Blatant]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "40.0", - "props": { - "min": "0.0", - "max": "600.0", - "low": "40.0", - "high": "90.0", - "rolled": "40.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Swap", - "desc": "None uses the held water bucket; Normal switches hotbar.", - "value": "Normal", - "props": { - "options": "[None,Normal]" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to your previous slot after escaping.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Partial Webs", - "desc": "Also triggers when your hitbox only clips the edge of a web (block-boundary straddle), not just when you're fully in it.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoAnchor", - "name": "Auto Anchor", - "desc": "Full auto-anchor: places, covers, charges, and detonates with human-like delays", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Target Range", - "desc": "Acquires the nearest valid player within this radius.", - "value": "10.0", - "props": { - "min": "1.0", - "max": "16.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min Damage", - "desc": "Skips candidates dealing less than this to the target.", - "value": "6.0", - "props": { - "min": "0.0", - "max": "36.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Self Damage", - "desc": "Skips candidates dealing more than this to you.", - "value": "10.0", - "props": { - "min": "0.0", - "max": "36.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Anti Suicide", - "desc": "Never detonates if self damage would kill you.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Safe Anchor", - "desc": "Places a cover block to reduce self-damage before charging.", - "value": "true", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Safe Block", - "desc": "Block to place as the blast cover.", - "value": "Glowstone", - "props": { - "options": "[Glowstone,Obsidian]" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Rotate Silently", - "desc": "Server-side rotations via RotationManager; camera never moves.", - "value": "true", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to the previous slot after the sequence idles.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Place Delay", - "desc": "Random ms between the anchor place and the safe-cover step.", - "value": "0.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "0.0", - "high": "40.0", - "rolled": "0.0" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Charge Delay", - "desc": "Random ms between anchor place/cover and glowstone charge.", - "value": "20.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "20.0", - "high": "60.0", - "rolled": "20.0" - } - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Detonate Delay", - "desc": "Random ms between charge and detonate.", - "value": "20.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "20.0", - "high": "60.0", - "rolled": "20.0" - } - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only Existing", - "desc": "Never place anchors — only detonate existing ones.", - "value": "false", - "props": {} - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render", - "desc": "Draw boxes for target + candidate.", - "value": "true", - "props": {} - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Anchor Color", - "desc": "Color for the picked anchor position.", - "value": "java.awt.Color[r=255,g=90,b=60]", - "props": {} - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Safe Color", - "desc": "Color for the safe-cover position.", - "value": "java.awt.Color[r=255,g=220,b=90]", - "props": {} - }, - { - "field": "q", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Target Color", - "desc": "Color for the target highlight.", - "value": "java.awt.Color[r=255,g=80,b=80]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.AutoArmor", - "name": "Auto Armor", - "desc": "Automatically equips the best armor from your inventory", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Always swaps anytime; Inventory only in the screen; Keybind only on key.", - "value": "Always", - "props": { - "options": "[Always,Inventory,Keybind]" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Key", - "desc": "Hold to allow armor swaps (Keybind mode).", - "value": "-1", - "props": { - "toggleMode": "false" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Avoid Cursed", - "desc": "Skips armor with Curse of Binding or Vanishing.", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Delay", - "desc": "Waits at least this long between swaps (ms).", - "value": "100", - "props": { - "min": "0", - "max": "1000" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoCart", - "name": "Auto Cart", - "desc": "Automatically places minecarts at your feet for cart-mode combat", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Switch Delay", - "desc": "Waits this many ticks between rail, cart, and weapon steps.", - "value": "2", - "props": { - "min": "0", - "max": "20" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Bow Back Delay", - "desc": "Waits this many ticks before swapping back after a post-shot placement.", - "value": "0", - "props": { - "min": "0", - "max": "20" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Min Charge", - "desc": "Charges the bow this many ticks before the trigger releases. 20 = full.", - "value": "1", - "props": { - "min": "1", - "max": "20" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Arc", - "desc": "Shot curvature for trigger shots: 0 = flattest arc that reaches, 100 = highest lob. Only picks among arcs that still land on the target.", - "value": "20", - "props": { - "min": "0", - "max": "100" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Trigger Bind", - "desc": "Press to place rail and cart, then fire your bow or crossbow.", - "value": "-1", - "props": { - "toggleMode": "false" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Overload", - "desc": "Stacks this many TNT carts on the rail when Overload Bind is used. 1 = off.", - "value": "1", - "props": { - "min": "1", - "max": "4" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Overload Bind", - "desc": "Press to fire toward your aim, then stack the carts at the predicted landing while the arrow is airborne. Or HOLD it while pressing Trigger Bind / while shooting to stack that placement.", - "value": "-1", - "props": { - "toggleMode": "false" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Overload Delay", - "desc": "Random wait in this range (ms) between stacked carts. Re-rolled per cart. Raise if your server flags fast placements.", - "value": "50.0", - "props": { - "min": "0.0", - "max": "1000.0", - "low": "50.0", - "high": "150.0", - "rolled": "50.0" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Overload Hotbar Only", - "desc": "Stacks only from the hotbar; never pulls carts from your main inventory mid-stack.", - "value": "false", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Place Mode", - "desc": "Trajectory places at the predicted arrow landing; Crosshair places at your aim.", - "value": "Trajectory", - "props": { - "options": "[Trajectory,Crosshair]" - } - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "On Bow Shot", - "desc": "Places rail and cart at the predicted landing after you shoot.", - "value": "true", - "props": {} - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Auto Hit Placed", - "desc": "Aims at the nearest placed cart and releases at the perfect moment.", - "value": "true", - "props": {} - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Auto Hit Range", - "desc": "Scans for placed TNT carts within this distance (blocks).", - "value": "24.0", - "props": { - "min": "5.0", - "max": "50.0" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Auto Hit Min Charge", - "desc": "Requires this bow charge before auto-release (ticks). 20 = full.", - "value": "20", - "props": { - "min": "10", - "max": "20" - } - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Switch Back To Bow", - "desc": "Returns to the bow slot after a passive placement.", - "value": "true", - "props": {} - }, - { - "field": "q", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Safe Blocks", - "desc": "Places a block between you and the cart to soak damage.", - "value": "true", - "props": {} - }, - { - "field": "r", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent Aim", - "desc": "Aims at the landing block server-side; your camera never moves.", - "value": "true", - "props": {} - }, - { - "field": "s", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Silent Aim FOV", - "desc": "Caps silent aim at this yaw offset per tick (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - }, - { - "field": "t", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render Path", - "desc": "Highlights the predicted landing block while a bow is drawn.", - "value": "true", - "props": {} - }, - { - "field": "u", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Render Color", - "desc": "Sets the landing highlight color.", - "value": "java.awt.Color[r=131,g=118,b=252]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.AutoClicker", - "name": "Auto Clicker", - "desc": "Automatically clicks your mouse", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Ghost clicks humanized; Interval clicks at a fixed rate for farms.", - "value": "Ghost", - "props": { - "options": "[Ghost,Interval]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Click", - "desc": "Clicks the left or right mouse button (Interval mode only; Ghost is always left).", - "value": "Left", - "props": { - "options": "[Left,Right]" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Interval", - "desc": "Waits this long between clicks (ms).", - "value": "100", - "props": { - "min": "0", - "max": "10000" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min CPS", - "desc": "Lowest clicks per second in Ghost mode.", - "value": "5.0", - "props": { - "min": "0.0", - "max": "25.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max CPS", - "desc": "Highest clicks per second in Ghost mode.", - "value": "15.0", - "props": { - "min": "0.0", - "max": "25.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Stop On Block", - "desc": "Stops clicking while looking at a block.", - "value": "false", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Weapon Only", - "desc": "Only clicks while holding a sword or axe.", - "value": "false", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Reaction Time", - "desc": "Average delay before the first click on a new target (ms). 0 = instant.", - "value": "170.0", - "props": { - "min": "0.0", - "max": "400.0" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Reaction Jitter", - "desc": "Random spread applied to the reaction delay (ms).", - "value": "25.0", - "props": { - "min": "0.0", - "max": "100.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoCrystal", - "name": "Auto Crystal", - "desc": "Automatically places and explodes crystals", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "In Air", - "desc": "Keeps placing while airborne instead of timing out.", - "value": "false", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Damage Tick", - "desc": "Breaks crystals only when they deal damage.", - "value": "false", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Pause On Kill", - "desc": "Pauses while a dead body is nearby.", - "value": "false", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "200.0", - "low": "30.0", - "high": "130.0", - "rolled": "30.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Switch", - "desc": "Switches to crystals when the module enables.", - "value": "false", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Head Bob", - "desc": "Updates your pitch server-side (aimed at the hitbox's nearest point) to break crystals above or below.", - "value": "false", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render", - "desc": "Outlines the crystal being targeted.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Color", - "desc": "Sets the crystal outline color.", - "value": "java.awt.Color[r=131,g=118,b=252]", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Always Break Last", - "desc": "When disabled, finishes breaking the crystal under your crosshair before turning off.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoDrain", - "name": "Auto Drain", - "desc": "Automatically collects water/lava with a bucket", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Legit drains your crosshair target; Silent Aim finds nearby liquid itself.", - "value": "Legit", - "props": { - "options": "[Legit,Silent Aim]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Liquid", - "desc": "Drains these liquid types.", - "value": "", - "props": { - "options": "[Water,Lava,Water On Web,Lava On Web]", - "selected": "[true,true,true,true]", - "indexByOption": "{Water=0, Lava On Web=3, Lava=1, Water On Web=2}" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "50.0", - "props": { - "min": "0.0", - "max": "600.0", - "low": "50.0", - "high": "100.0", - "rolled": "50.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Swap", - "desc": "Switches to an empty bucket when targeting liquid.", - "value": "None", - "props": { - "options": "[None,Normal]" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Fallback to Cobweb", - "desc": "Places cobweb on the liquid when no empty bucket is left.", - "value": "true", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Interact", - "desc": "Scoops the liquid automatically after swapping.", - "value": "true", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to the previous slot after collecting.", - "value": "true", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Silent Aim FOV", - "desc": "Caps silent aim at this yaw offset (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoElytra", - "name": "Auto Elytra", - "desc": "Automatically puts on an elytra (and rockets)", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Require Land", - "desc": "Arms only while you are on the ground.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "50.0", - "props": { - "min": "0.0", - "max": "300.0", - "low": "50.0", - "high": "100.0", - "rolled": "50.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Firework", - "desc": "Boosts with fireworks after takeoff.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Auto Disable", - "desc": "Turns the module off after a set flight time.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Fly Time", - "desc": "Flies this long before turning off (ms).", - "value": "300.0", - "props": { - "min": "0.0", - "max": "1000.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent Inventory", - "desc": "Equips without opening your inventory screen.", - "value": "false", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Auto Jump", - "desc": "Jumps to start the glide.", - "value": "false", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Firework on Space", - "desc": "Fires a firework rocket when you press Space while gliding.", - "value": "false", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Space Cooldown", - "desc": "Random ms between space-triggered rockets. Prevents Grim rapid-interact flags at very low values.", - "value": "400.0", - "props": { - "min": "0.0", - "max": "3000.0", - "low": "400.0", - "high": "600.0", - "rolled": "400.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoHitCrystal", - "name": "Auto Hit Crystal", - "desc": "Automatically hit crystals and attempts to d-tap them by syncing with enemy damage ticks", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Stop In Air", - "desc": "Pauses while you are airborne.", - "value": "false", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Sword Only", - "desc": "Runs only while holding a sword.", - "value": "false", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Pause On Kill", - "desc": "Pauses while a dead body is nearby.", - "value": "false", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "200.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Perfect Timing", - "desc": "Syncs crystal breaks to the enemy's damage ticks.", - "value": "false", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Crystal", - "desc": "Places one crystal, two, none, or keeps placing (Infinite).", - "value": "Single Tap", - "props": { - "options": "[None,Single Tap,Double Tap,Infinite]" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Crystal Delay", - "desc": "Waits a random time in this range between crystal placements (ms).", - "value": "50.0", - "props": { - "min": "0.0", - "max": "200.0", - "low": "50.0", - "high": "150.0", - "rolled": "50.0" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent Rotations", - "desc": "Attacks crystals with server-side rotations; your camera never moves.", - "value": "false", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.movement.AutoJumpReset", - "name": "Auto Jump Reset", - "desc": "Automatically jumps when taking knockback to reduce knockback", - "category": "Movement", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Chance", - "desc": "Rolls this chance on each knockback jump-reset (%).", - "value": "50.0", - "props": { - "min": "0.0", - "max": "100.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.AutoLoot", - "name": "Auto Loot", - "desc": "Helps with looting items from the ground", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "300.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Min Totems", - "desc": "Keeps this many totems and drops the rest.", - "value": "1", - "props": { - "min": "1", - "max": "20" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Min Pearls", - "desc": "Keeps this many pearl stacks and drops the rest.", - "value": "5", - "props": { - "min": "1", - "max": "10" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Key", - "desc": "Press to run the loot routine.", - "value": "-1", - "props": { - "toggleMode": "false" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.AutoMace", - "name": "Auto Mace", - "desc": "Swaps the mace in your hand with a different item", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Horizontal Target Dist", - "desc": "Swaps only with a target within this horizontal distance (blocks).", - "value": "5.0", - "props": { - "min": "0.0", - "max": "6.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min Fall Distance", - "desc": "Swaps to the mace only after falling this far (blocks).", - "value": "10.0", - "props": { - "min": "0.0", - "max": "100.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Stun Slam", - "desc": "Hits with the axe to stun, then maces.", - "value": "false", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Stun Slam Mode", - "desc": "Chance fires on a random roll; Hold Key fires only while the bind is held.", - "value": "Chance", - "props": { - "options": "[Chance,Hold Key]" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Stun Slam Bind", - "desc": "Hold to allow stun slams (Hold Key mode).", - "value": "-1", - "props": { - "toggleMode": "false" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Chance", - "desc": "Rolls this chance on each stun slam (%).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "100.0" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Scale With Fall", - "desc": "Scales the chance with fall distance; big drops fire more often.", - "value": "false", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Stun Min Fall", - "desc": "Stun-slams only after falling this far (blocks). 0 = module minimum.", - "value": "0.0", - "props": { - "min": "0.0", - "max": "100.0" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Axe Hold Delay", - "desc": "Holds the axe visibly this many ticks before hitting. 2–4 reads as legit.", - "value": "0", - "props": { - "min": "0", - "max": "10" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Breach Check", - "desc": "Swaps to Breach instead of Density on low fall distance.", - "value": "false", - "props": {} - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Trigger", - "desc": "Attacks with the mace automatically.", - "value": "true", - "props": {} - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent Aim", - "desc": "Aims at the target server-side; your camera never moves.", - "value": "false", - "props": {} - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Yaw", - "desc": "Caps silent aim at this yaw offset from your view (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Takeoff Elytra", - "desc": "Unequips the elytra when diving on a maceable target.", - "value": "false", - "props": {} - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to the previous slot after the mace hit lands.", - "value": "false", - "props": {} - }, - { - "field": "q", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Swap Back Delay", - "desc": "Waits this long after the hit before swapping back (ms).", - "value": "50", - "props": { - "min": "0", - "max": "500" - } - }, - { - "field": "r", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Expand Hitbox", - "desc": "Grows the target hitbox for the hit. Easier hits, higher flag risk.", - "value": "false", - "props": {} - }, - { - "field": "s", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Hitbox Expansion", - "desc": "Expands the target hitbox by this amount (blocks).", - "value": "0.5", - "props": { - "min": "0.0", - "max": "5.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoObbyCrystal", - "name": "Auto Obby Crystal", - "desc": "Full auto-crystal with real damage predictions, silent aim, and safe break modes", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Target Range", - "desc": "Acquires the nearest valid player within this radius.", - "value": "10.0", - "props": { - "min": "1.0", - "max": "16.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min Damage", - "desc": "Skips candidates dealing less than this to the target.", - "value": "6.0", - "props": { - "min": "0.0", - "max": "36.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Self Damage", - "desc": "Skips candidates dealing more than this to you.", - "value": "8.0", - "props": { - "min": "0.0", - "max": "36.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Anti Suicide", - "desc": "Never places if self damage would kill you (health+absorption).", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Break Mode", - "desc": "Manual never attacks; Attack uses the current slot; SwapAttack swaps to Swap Back Slot first.", - "value": "Attack", - "props": { - "options": "[Manual,Attack,SwapAttack]" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Rotate Silently", - "desc": "Server-side rotations via RotationManager; camera never moves.", - "value": "true", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to the previous slot after the sequence idles.", - "value": "true", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render", - "desc": "Draw boxes showing what the module is calculating and placing.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Advanced", - "desc": "Show fine-grained tuning knobs (delays, prediction, momentum, colors, thresholds).", - "value": "false", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Target Distance", - "desc": "Aborts the sequence if the target moves beyond this.", - "value": "12.0", - "props": { - "min": "1.0", - "max": "20.0" - } - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Place Delay", - "desc": "Random ms between obsidian place and crystal place.", - "value": "60.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "60.0", - "high": "120.0", - "rolled": "60.0" - } - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Break Delay", - "desc": "Random ms between crystal place and break, and between loop cycles.", - "value": "60.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "60.0", - "high": "140.0", - "rolled": "60.0" - } - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "First Action Delay", - "desc": "Random ms reaction delay before the FIRST action of a freshly acquired sequence.", - "value": "40.0", - "props": { - "min": "0.0", - "max": "200.0", - "low": "40.0", - "high": "80.0", - "rolled": "40.0" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Mid Sequence Movement Tolerance", - "desc": "Blocks of target drift allowed once obsidian is committed.", - "value": "3", - "props": { - "min": "1", - "max": "8" - } - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Mid Sequence Damage Tolerance", - "desc": "Multiplier on Min Damage for the mid-sequence re-gate.", - "value": "0.6", - "props": { - "min": "0.0", - "max": "1.0" - } - }, - { - "field": "q", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Debug Aborts", - "desc": "Notify every mid-sequence abort with its stage and reason.", - "value": "false", - "props": {} - }, - { - "field": "r", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Fast Swap", - "desc": "Swap and place in the same tick instead of burning a tick per swap. Halves obsidian->crystal latency; wire order stays vanilla.", - "value": "true", - "props": {} - }, - { - "field": "s", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Silent Aim FOV", - "desc": "Caps silent rotation yaw offset from real look.", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - }, - { - "field": "t", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Momentum Mode", - "desc": "Biases placement so blast knockback pushes the target this way.", - "value": "None", - "props": { - "options": "[None,Toward Hole,Away From Self,Toward Center]" - } - }, - { - "field": "u", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Momentum Weight", - "desc": "Multiplier on the momentum bonus in scoring.", - "value": "1.0", - "props": { - "min": "0.0", - "max": "5.0" - } - }, - { - "field": "v", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Yaw Change Weight", - "desc": "Score penalty per degree of yaw change from your current look.", - "value": "0.05", - "props": { - "min": "0.0", - "max": "1.0" - } - }, - { - "field": "w", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Yaw Change Cap", - "desc": "Yaw delta (deg) at which the penalty stops growing.", - "value": "60.0", - "props": { - "min": "0.0", - "max": "180.0" - } - }, - { - "field": "x", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Prefer 1x1", - "desc": "Bonus for bases horizontally adjacent to the target's feet (face-place style).", - "value": "true", - "props": {} - }, - { - "field": "y", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Prefer Existing Obby", - "desc": "Score bonus for placing crystals on existing obsidian/bedrock.", - "value": "true", - "props": {} - }, - { - "field": "z", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only Existing Obby", - "desc": "If on, never places obsidian — only crystals on already-placed obsidian/bedrock.", - "value": "false", - "props": {} - }, - { - "field": "A", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Path Lookahead", - "desc": "Skip candidates where the target's velocity-extrapolated hitbox intersects the placement.", - "value": "3", - "props": { - "min": "0", - "max": "10" - } - }, - { - "field": "B", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Predict Target", - "desc": "Lead moving targets by their velocity so placements land where they will be.", - "value": "true", - "props": {} - }, - { - "field": "C", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Predict Ticks", - "desc": "Ticks of velocity to extrapolate.", - "value": "3.0", - "props": { - "min": "0.0", - "max": "10.0" - } - }, - { - "field": "D", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Predict Ping Bonus", - "desc": "Multiplier on ping-derived lead ticks (ping_ms / 50ms).", - "value": "1.0", - "props": { - "min": "0.0", - "max": "2.0" - } - }, - { - "field": "E", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Predict Max Offset", - "desc": "Caps the predicted offset (blocks).", - "value": "3.0", - "props": { - "min": "0.0", - "max": "8.0" - } - }, - { - "field": "F", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Predict Self", - "desc": "Extrapolate your own eye position forward.", - "value": "true", - "props": {} - }, - { - "field": "G", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Self Predict Ticks", - "desc": "Ticks of self velocity to extrapolate.", - "value": "2.0", - "props": { - "min": "0.0", - "max": "8.0" - } - }, - { - "field": "H", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Self Predict Max Offset", - "desc": "Caps the predicted self offset (blocks).", - "value": "2.0", - "props": { - "min": "0.0", - "max": "6.0" - } - }, - { - "field": "I", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Reach", - "desc": "Attacks within this eye-to-hitbox distance (blocks). >3.0 flags Grim.", - "value": "2.95", - "props": { - "min": "1.0", - "max": "3.0" - } - }, - { - "field": "J", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render Target", - "desc": "Highlight the current target.", - "value": "true", - "props": {} - }, - { - "field": "K", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render Placement", - "desc": "Box on the picked obsidian pos + crystal spawn pos.", - "value": "true", - "props": {} - }, - { - "field": "L", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render Candidates", - "desc": "Ghost boxes on all viable candidate spots during search.", - "value": "true", - "props": {} - }, - { - "field": "M", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Max Candidates", - "desc": "Cap how many candidate boxes to draw.", - "value": "8", - "props": { - "min": "1", - "max": "30" - } - }, - { - "field": "N", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Obsidian Color", - "desc": "Color for the obsidian placement box.", - "value": "java.awt.Color[r=150,g=60,b=220]", - "props": {} - }, - { - "field": "O", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Crystal Color", - "desc": "Color for the crystal spawn box.", - "value": "java.awt.Color[r=230,g=120,b=230]", - "props": {} - }, - { - "field": "P", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Target Color", - "desc": "Color for the target highlight.", - "value": "java.awt.Color[r=255,g=80,b=80]", - "props": {} - }, - { - "field": "Q", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Candidate Color", - "desc": "Color for candidate ghost boxes.", - "value": "java.awt.Color[r=120,g=200,b=255]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.AutoPearlCatch", - "name": "Auto Pearl Catch", - "desc": "Automatically throws a pearl and a windcharge up in the sky", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Wind Charge Delay", - "desc": "Waits this long after the pearl before the wind charge (ms).", - "value": "120.0", - "props": { - "min": "50.0", - "max": "300.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Moving Delay", - "desc": "Uses this shorter wait instead while you are moving (ms).", - "value": "80.0", - "props": { - "min": "50.0", - "max": "300.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Legit Rotate", - "desc": "Moves your real camera instead of snapping server-side.", - "value": "false", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Smoothing", - "desc": "Scales the camera rotation speed (x). Lower = slower, more human.", - "value": "0.5", - "props": { - "min": "0.1", - "max": "2.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.AutoPickaxe", - "name": "Auto Pickaxe", - "desc": "Automatically switches to a pickaxe in your hotbar when mining the block below you", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only When Mining", - "desc": "Switches only while you are mining a block.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "From Inventory", - "desc": "Also pull a pickaxe out of your main inventory (silent SWAP).", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "300.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.AutoPot", - "name": "Auto Pot", - "desc": "Automatically pots for you", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Auto throws at low health; While Holding throws only with a potion in hand.", - "value": "Auto", - "props": { - "options": "[Auto,While Holding]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Health", - "desc": "Throws a heal pot at or below this health (HP, not %).", - "value": "10.0", - "props": { - "min": "0.1", - "max": "20.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Pitch", - "desc": "Throws the potion at this pitch (degrees).", - "value": "70.0", - "props": { - "min": "50.0", - "max": "90.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.AutoReMace", - "name": "Auto Re Mace", - "desc": "Automatically re-maces someone after you mace them using elytra mace", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Rotation Smoothing", - "desc": "Scales the re-aim rotation speed (x). Lower = slower, more human.", - "value": "0.5", - "props": { - "min": "0.0", - "max": "2.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Above Them", - "desc": "Aims this far above the target when re-macing (degrees).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "100.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoSafeCart", - "name": "Auto Safe Cart", - "desc": "Automatically covers threatening minecarts with blocks", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Silent scans for threatening carts and covers them itself; Legit only covers the spot you are looking at.", - "value": "Silent", - "props": { - "options": "[Silent,Legit]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Protect", - "desc": "Which carts get covered: Only Self covers carts you placed, Only Enemy covers carts other players placed.", - "value": "Both", - "props": { - "options": "[Both,Only Self,Only Enemy]" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min Damage", - "desc": "Covers only carts that would deal at least this damage (HP).", - "value": "5.0", - "props": { - "min": "0.0", - "max": "30.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Damage", - "desc": "Stops covering once the damage left after placed blocks is at most this (HP).", - "value": "5.0", - "props": { - "min": "0.0", - "max": "30.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Blocks", - "desc": "Blocks the cover can be built from; the first one found in your hotbar is used. Logs and Planks match every wood type.", - "value": "", - "props": { - "options": "[Logs,Planks,Cobblestone,Obsidian]", - "selected": "[true,true,true,true]", - "indexByOption": "{Obsidian=3, Planks=1, Logs=0, Cobblestone=2}" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Max Blocks", - "desc": "Caps how many blocks are placed against one cart; a second block is placed when the first does not soak enough damage.", - "value": "2", - "props": { - "min": "1", - "max": "4" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range (ms) when a cart first threatens you and again between blocks. Re-rolled per placement so back-to-back covers don't share one rhythm.", - "value": "80.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "80.0", - "high": "160.0", - "rolled": "80.0" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Swap", - "desc": "None uses the held item; Normal switches hotbar; Silent swaps server-side.", - "value": "Normal", - "props": { - "options": "[None,Normal,Silent]" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Range", - "desc": "Scans for TNT carts within this distance (blocks).", - "value": "10.0", - "props": { - "min": "3.0", - "max": "15.0" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "FOV", - "desc": "Caps rotations at this yaw offset (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoShield", - "name": "Auto Shield", - "desc": "Automatically blocks with your shield in combat", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Target Distance", - "desc": "Blocks with a target within this distance (blocks).", - "value": "5.0", - "props": { - "min": "1.0", - "max": "10.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "FOV", - "desc": "Blocks with a target within this view angle (degrees).", - "value": "90.0", - "props": { - "min": "0.0", - "max": "180.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Movement Threshold", - "desc": "Counts the target as moving above this speed.", - "value": "0.1", - "props": { - "min": "0.0", - "max": "10.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Sword Cooldown Correction", - "desc": "Counts your sword swing as recovered this much earlier (%).", - "value": "10.0", - "props": { - "min": "0.0", - "max": "30.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Disable Tracker", - "desc": "Detects shield-disable (axe crit) and stops holding useKey for the ~5s server-side lockout so incoming crystal damage isn't 'using-item'-reduced and same-tick swaps aren't blocked.", - "value": "true", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap To Sword", - "desc": "Silently switch to a hotbar sword when the shield gets disabled so the dead time becomes offensive time.", - "value": "false", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoShieldBreaker", - "name": "Auto Shield Breaker", - "desc": "Automatically breaks shields by silently attacking them", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Mode to use to break shields", - "value": "Automatic", - "props": { - "options": "[On Hit,Automatic]" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Stun", - "desc": "Double hits to hit the enemy up after breaking their shield", - "value": "false", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Chance", - "desc": "Chance to break the shield on each attempt", - "value": "100.0", - "props": { - "min": "0.0", - "max": "100.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "From Inventory", - "desc": "Also pull an axe out of your main inventory (silent SWAP).", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Hit Delay", - "desc": "Randomized delay window between swapping to the axe and delivering the hit (ms).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "300.0", - "low": "100.0", - "high": "150.0", - "rolled": "100.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Break Cooldown", - "desc": "Waits a random time in this range between consecutive shield breaks (ms).", - "value": "900.0", - "props": { - "min": "0.0", - "max": "3000.0", - "low": "900.0", - "high": "1200.0", - "rolled": "900.0" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Silently swaps to the axe to break the shield", - "value": "true", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent Aim", - "desc": "Silently swaps to the axe to break the shield", - "value": "false", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Yaw", - "desc": "The maximum difference in yaw the player can rotate to", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.movement.AutoShortPearl", - "name": "Auto Short Pearl", - "desc": "Basically anti knockback", - "category": "Movement", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range before the pearl throw (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "300.0", - "low": "30.0", - "high": "70.0", - "rolled": "30.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.AutoText", - "name": "Auto Text", - "desc": "Automatically sends a chat message", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.TextSetting", - "name": "Text", - "desc": "Sends this chat text or command; start with / for commands.", - "value": "/kit 1", - "props": { - "placeholder": "Text or Command (/...)" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.AutoTool", - "name": "Auto Tool", - "desc": "Automatically swaps to the best tool possible", - "category": "Misc", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.combat.AutoTotem", - "name": "Auto Totem", - "desc": "Automatically re-totems when popped", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "c", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Crystal runs the full inventory routine; SMP swaps at low health.", - "value": "Crystal", - "props": { - "options": "[Crystal,SMP]" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Dynamic Delay (BETA)", - "desc": "Shortens the delay when you are in danger.", - "value": "false", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Measures", - "desc": "Judges danger by health, distance, Y level, threats, and damage rate.", - "value": "", - "props": { - "options": "[Health,Distance,Y Level,Nearby Threats,Recent Damage Rate]", - "selected": "[true,true,true,true,true]", - "indexByOption": "{Health=0, Nearby Threats=3, Y Level=2, Recent Damage Rate=4, Distance=1}" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Actions", - "desc": "Picks which steps of the totem routine run.", - "value": "", - "props": { - "options": "[Double Hand,Open Inventory,Refill Hotbar Totem,Switch,Close Inventory]", - "selected": "[true,true,true,true,true]", - "indexByOption": "{Close Inventory=4, Switch=3, Refill Hotbar Totem=2, Open Inventory=1, Double Hand=0}" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Totem Slot", - "desc": "Puts the totem in this hotbar slot.", - "value": "8", - "props": { - "min": "1", - "max": "9" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Legit", - "desc": "Switches only while hovering over a totem.", - "value": "false", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Hover Delay", - "desc": "Waits a random time in this range after hovering (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "300.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Legit Mouse Movement (BETA)", - "desc": "Moves your real mouse to the totem in the inventory.", - "value": "false", - "props": {} - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Mouse Speed", - "desc": "Sets the mouse movement speed range (x).", - "value": "5.0", - "props": { - "min": "1.0", - "max": "20.0", - "low": "5.0", - "high": "10.0", - "rolled": "5.0" - } - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Mouse Move Delay", - "desc": "Waits a random time in this range after opening the inventory (ms).", - "value": "50.0", - "props": { - "min": "1.0", - "max": "200.0", - "low": "50.0", - "high": "100.0", - "rolled": "50.0" - } - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Extra", - "desc": "Restricts actions to specific situations: GUI, double pop, totem guard. Pause Interactions blocks world-interact packets during the routine (anti TotemGuard F).", - "value": "", - "props": { - "options": "[Double Hand On GUI,Only Inventory on Both Pops,Anti Totem Guard Test,Pause Interactions]", - "selected": "[false,false,true,true]", - "indexByOption": "{Only Inventory on Both Pops=1, Pause Interactions=3, Double Hand On GUI=0, Anti Totem Guard Test=2}" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Health", - "desc": "Swaps to a totem at or below this health (HP).", - "value": "5.0", - "props": { - "min": "1.0", - "max": "20.0" - } - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Wait When Shielding", - "desc": "Waits until you stop shielding before switching.", - "value": "true", - "props": {} - }, - { - "field": "q", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Anti Mace", - "desc": "Switches to a totem when an enemy dives to mace you.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.Backtrack", - "name": "Backtrack", - "desc": "Backtracks packets for the target entity", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Range", - "desc": "Backtracks targets inside this distance band (blocks).", - "value": "1.0", - "props": { - "min": "0.0", - "max": "10.0", - "low": "1.0", - "high": "5.0", - "rolled": "1.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Latency", - "desc": "Holds position packets for a random time in this range (ms).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "1500.0", - "low": "100.0", - "high": "150.0", - "rolled": "100.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Weapon Only", - "desc": "Suppresses backtrack while your mainhand is not a sword/axe/mace. Prevents your cross-modules (PearlFollow, AutoCrystal) from placing on the stale backtracked position when you switch off your weapon.", - "value": "false", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.BreachSwap", - "name": "Breach Swap", - "desc": "Automatically swaps to a breach mace when hitting someone", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Chance", - "desc": "Rolls this chance on each Breach swap opportunity (%).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "100.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.CartAura", - "name": "Cart Aura", - "desc": "Automatically attacks minecarts near you with human-like delays", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Reaction Delay", - "desc": "Rolls a random delay in this window (ms) each time a new cart is acquired; the hit only fires once it passes. Aim starts tracking immediately — only the attack waits — so it reads as a human noticing the cart rather than an instant aura.", - "value": "100.0", - "props": { - "min": "0.0", - "max": "1000.0", - "low": "100.0", - "high": "250.0", - "rolled": "100.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Swap Delay", - "desc": "Waits this long between the sword swap and the hit (ms). The swap always settles for at least one full tick regardless of this value.", - "value": "50.0", - "props": { - "min": "0.0", - "max": "300.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to the slot you were holding before the sword swap once the hit lands.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Swap Back Delay", - "desc": "Waits this long between the hit and the swap back (ms).", - "value": "50.0", - "props": { - "min": "0.0", - "max": "300.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Attack Delay", - "desc": "Rolls a random minimum delay in this window (ms) between consecutive hits — a fixed cadence between attack packets is an aura fingerprint, so the gap is re-rolled after every swing.", - "value": "50.0", - "props": { - "min": "0.0", - "max": "1000.0", - "low": "50.0", - "high": "150.0", - "rolled": "50.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Target FOV", - "desc": "Filters candidate carts to those inside this angular cone from your view at acquisition time (degrees). 180 = hemisphere, 360 = disabled.", - "value": "180.0", - "props": { - "min": "30.0", - "max": "360.0" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Humanized Aim", - "desc": "Adds a small distance-scaled jitter to the attack rotation so every hit doesn't ship the exact box-center angle — same correlate KillAura's Humanized Aim breaks for player targets.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.CartPearlCatch", - "name": "Cart Pearl Catch", - "desc": "Detonates a minecart where enemy pearls land", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Scan Range", - "desc": "Only tracks enemy pearls thrown within this distance (blocks).", - "value": "48.0", - "props": { - "min": "16.0", - "max": "96.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min Damage", - "desc": "Only punishes when the predicted pre-armor blast damage at their landing is at least this (HP).", - "value": "15.0", - "props": { - "min": "0.0", - "max": "40.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Self Damage", - "desc": "Skips placements whose worst-case self-damage would exceed this (HP, armor-aware).", - "value": "6.0", - "props": { - "min": "0.0", - "max": "30.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Prefer Xbow", - "desc": "Detonates with flint & steel + charged crossbow when both are in your hotbar; otherwise uses the bow.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Switch Delay", - "desc": "Waits this many ticks between rail, cart, and fire steps.", - "value": "2", - "props": { - "min": "0", - "max": "20" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent Aim", - "desc": "Aims at placements and the shot server-side; your camera never moves.", - "value": "true", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Silent Aim FOV", - "desc": "Caps silent aim at this yaw offset per tick (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render", - "desc": "Shows a TNT-minecart tag at the spot the cart will be placed, with the pearl's landing ETA.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.CartRefill", - "name": "Cart Refill", - "desc": "Auto-tops-up a chosen hotbar slot with TNT minecarts", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Always refills while the inventory is open; Keybind waits for the key.", - "value": "Always", - "props": { - "options": "[Always,Keybind]" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Refill Key", - "desc": "Press to refill (Keybind mode).", - "value": "-1", - "props": { - "toggleMode": "false" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Target Slot", - "desc": "Keeps this hotbar slot topped up with a TNT minecart.", - "value": "9", - "props": { - "min": "1", - "max": "9" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Delay", - "desc": "Waits at least this long between refill clicks (ms).", - "value": "100", - "props": { - "min": "0", - "max": "1000" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.CartStealer", - "name": "Cart Stealer", - "desc": "Automatically pulls minecarts out of shulkers", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between cart pulls (ms).", - "value": "50.0", - "props": { - "min": "0.0", - "max": "1000.0", - "low": "50.0", - "high": "100.0", - "rolled": "50.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Close", - "desc": "Closes the shulker once every cart is taken (or only the shulker slot is left).", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Activate Key", - "desc": "Hold to start stealing. Unbound = steal automatically while a shulker is open.", - "value": "-1", - "props": { - "toggleMode": "false" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.ChestStealer", - "name": "Chest Stealer", - "desc": "Steals items out of chests", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between item pulls (ms).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "1000.0", - "low": "100.0", - "high": "200.0", - "rolled": "100.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Close", - "desc": "Closes the chest once it is empty.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Activate Key", - "desc": "Press to start stealing from the open chest.", - "value": "-1", - "props": { - "toggleMode": "false" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.CobwebPlacer", - "name": "Cobweb Placer", - "desc": "Places cobwebs on the block your looking at", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "f", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Manual places at your crosshair; Auto predicts landings and places itself.", - "value": "Manual", - "props": { - "options": "[Manual,Auto]" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Target Range", - "desc": "Auto-places only with an enemy within this distance (blocks).", - "value": "6.0", - "props": { - "min": "1.0", - "max": "16.0" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "200.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Lead Ticks", - "desc": "Predicts the enemy this many ticks ahead for the placement (ignored when Only When Falling is on — that mode walks the trajectory until it hits ground).", - "value": "10", - "props": { - "min": "1", - "max": "30" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only When Falling", - "desc": "Only fires while the target is airborne and falling; steps their trajectory forward until it hits ground and drops the web at their landing block so they fall into the top of it.", - "value": "false", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Max Webs Per Fall", - "desc": "Caps how many webs get placed per fall so it doesn't spam a stack; resets once the target lands or a different target is picked.", - "value": "1", - "props": { - "min": "1", - "max": "10" - } - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent", - "desc": "Swaps between items server-side.", - "value": "false", - "props": {} - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Switch Back", - "desc": "Switches to a chosen slot or your original after placing.", - "value": "Slot", - "props": { - "options": "[Slot,Original]" - } - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Switch Slot", - "desc": "Switches to this hotbar slot after placing.", - "value": "1", - "props": { - "min": "1", - "max": "9" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Swap", - "desc": "None places only with cobweb in hand; Swap visibly switches to it.", - "value": "Swap", - "props": { - "options": "[None,Swap]" - } - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "From Inventory", - "desc": "If no cobweb is in the hotbar, pulls one from the main inventory with a silent SWAP (matches the AutoPickaxe hotbar→inventory upgrade). Reversed on the following tick so the loadout looks untouched.", - "value": "true", - "props": {} - }, - { - "field": "q", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Head Trap", - "desc": "Also tries the head-level block; the best candidate wins.", - "value": "false", - "props": {} - }, - { - "field": "r", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Auto Switch Back", - "desc": "Off keeps cobweb in hand; Slot switches on the next free tick; Original restores what you held before the cobweb swap on the next free tick.", - "value": "Off", - "props": { - "options": "[Off,Slot,Original]" - } - }, - { - "field": "s", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Auto Switch Slot", - "desc": "Switches to this hotbar slot after placing.", - "value": "1", - "props": { - "min": "1", - "max": "9" - } - }, - { - "field": "t", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render", - "desc": "Outlines the predicted placement position.", - "value": "true", - "props": {} - }, - { - "field": "u", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Render Color", - "desc": "Sets the prediction outline color.", - "value": "java.awt.Color[r=0,g=200,b=255]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.Criticals", - "name": "Criticals", - "desc": "Turns hits into critical hits", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Legit jumps; Minimal micro-hops; Silent sends packets only.", - "value": "Legit", - "props": { - "options": "[Legit,Minimal,Silent]" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.CrystalOptimizer", - "name": "Crystal Optimizer", - "desc": "Does not wait for server-side confirmation when breaking crystals", - "category": "Misc", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.mace.DiagonalPearlCatch", - "name": "Diagonal Pearl Catch", - "desc": "Catches a diagonally-thrown pearl and follows up with a wind charge", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Trajectory simulates a perfect intercept; Macro throws on a fixed delay.", - "value": "Trajectory", - "props": { - "options": "[Trajectory,Macro]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Wind Charge Delay", - "desc": "Waits this long between the pearl and the wind charge (ms).", - "value": "100.0", - "props": { - "min": "10.0", - "max": "300.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent Aim", - "desc": "Uses the computed angle server-side; your camera never moves.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Yaw Delta", - "desc": "Caps silent aim at this yaw offset (degrees). 180 = no cap.", - "value": "180.0", - "props": { - "min": "10.0", - "max": "180.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.DoubleAnchor", - "name": "Double Anchor", - "desc": "Automatically places another anchor (in the air) after anchoring", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Chance", - "desc": "Rolls this chance on each double anchor (%).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "100.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Glow Stone", - "desc": "Places glowstone after the double anchor.", - "value": "false", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range before the glowstone (ms).", - "value": "50.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "50.0", - "high": "100.0", - "rolled": "50.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Macro Bind", - "desc": "Press to run the full anchor sequence at your crosshair.", - "value": "-1", - "props": { - "toggleMode": "false" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Macro Hold Repeat", - "desc": "Keeps re-running the double anchor sequence as long as the bind is held; releases stop after the current sequence.", - "value": "false", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Macro Delay", - "desc": "Waits a random time in this range between sequence stages (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Macro Swap", - "desc": "None uses the held item per stage; Swap switches hotbar slots.", - "value": "Swap", - "props": { - "options": "[None,Swap]" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Macro Swap Back", - "desc": "Returns to the slot you held when you pressed the bind.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Macro Explode Slot", - "desc": "Holds this hotbar slot during the explode step (put a totem here).", - "value": "8", - "props": { - "min": "1", - "max": "9" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Macro Damage Tick", - "desc": "Waits for the target's hurt time to clear before the second anchor.", - "value": "true", - "props": {} - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Macro Damage Tick Range", - "desc": "Applies the wait only with a target within this distance (blocks).", - "value": "10.0", - "props": { - "min": "1.0", - "max": "20.0" - } - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Macro Damage Tick Max Wait", - "desc": "Gives up waiting after this long and fires anyway (ms).", - "value": "500", - "props": { - "min": "0", - "max": "2000" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.ESP", - "name": "ESP", - "desc": "Renders various things through walls", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Selects the shader used to draw entity outlines/fills.", - "value": "Normal", - "props": { - "options": "[Normal,Chams,Aura]" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Targets", - "desc": "Outlines these entity types.", - "value": "", - "props": { - "options": "[Players,Crystals,Items,Monsters,Ambient,Friendly,Aquatic,Nether,End,Bosses,Tameable,Projectiles,Vehicles,Decorations]", - "selected": "[true,true,true,false,false,false,false,false,false,false,false,false,false,false]", - "indexByOption": "{Friendly=5, Tameable=10, Projectiles=11, Crystals=1, Nether=7, Bosses=9, Vehicles=12, Decorations=13, Ambient=4, Aquatic=6, Monsters=3, Items=2, End=8, Players=0}" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Menu Color", - "desc": "Follows the menu accent color instead of a custom one.", - "value": "true", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Color", - "desc": "Custom outline color.", - "value": "java.awt.Color[r=0,g=200,b=255]", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Quality", - "desc": "Raises outline shader quality. Default 3 balances smoothness and FPS; 6 is the safe sampling cap.", - "value": "3", - "props": { - "min": "1", - "max": "6" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Radius", - "desc": "Widens the outline glow (px).", - "value": "15", - "props": { - "min": "1", - "max": "20" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Fill", - "desc": "Fills the silhouette instead of outlining only.", - "value": "false", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Opacity", - "desc": "Body alpha of the flat fill.", - "value": "0.5", - "props": { - "min": "0.1", - "max": "1.0" - } - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Rim Width", - "desc": "Darker separator rim; 0 disables the edge search.", - "value": "2.0", - "props": { - "min": "0.0", - "max": "4.0" - } - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Line Width", - "desc": "Thickness of the crisp core line.", - "value": "1.0", - "props": { - "min": "0.1", - "max": "2.0" - } - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Halo Opacity", - "desc": "Diffuse halo strength around the silhouette.", - "value": "0.7", - "props": { - "min": "0.0", - "max": "1.0" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Core Boost", - "desc": "How white-hot the line center gets; 0 = pure accent.", - "value": "0.8", - "props": { - "min": "0.0", - "max": "1.0" - } - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Invisible", - "desc": "Force-renders invisible entities so their outline shows.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.ElytraWindCharge", - "name": "Elytra Wind Charge", - "desc": "Goes on elytra and windcharges underneath you when you approach the ground to go up rapidly.", - "category": "Mace", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.misc.EnemyFaker", - "name": "Enemy Faker", - "desc": "Fakes your enemy", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.TextSetting", - "name": "Name", - "desc": "Shows the target under this fake name.", - "value": "Marlowww", - "props": { - "placeholder": "Fake Name" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.TextSetting", - "name": "Gamemode", - "desc": "Sets the gamemode label shown with the tier tag.", - "value": "vanilla", - "props": { - "placeholder": "Gamemode" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Tier", - "desc": "Shows this tier tag (HT1–LT5) next to the fake name.", - "value": "None", - "props": { - "options": "[None,HT1,LT1,HT2,LT2,HT3,LT3,HT4,LT4,HT5,LT5]" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Update", - "desc": "Re-applies the fake identity; the toggle acts as a one-shot button.", - "value": "false", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.spear.ExtendedReach", - "name": "Extended Reach", - "desc": "Increases reach by attribute swapping to spear", - "category": "Spear", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Chance", - "desc": "Rolls this chance on each extended-reach hit (%).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "100.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Weapons", - "desc": "Extends reach for swords, axes, and/or maces.", - "value": "", - "props": { - "options": "[Sword,Axe,Mace]", - "selected": "[true,true,true]", - "indexByOption": "{Mace=2, Sword=0, Axe=1}" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Works With Triggerbot", - "desc": "Lets Triggerbot fire on extended-reach targets.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.movement.FakeLag", - "name": "Fake Lag", - "desc": "Lags your packets to make it seem like you are lagging", - "category": "Movement", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Holds packets manually, on a timer, by range, dynamically, or on knockback.", - "value": "Manual", - "props": { - "options": "[Manual,Timed,Ranged,Dynamic,Knockback]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Lag Range", - "desc": "Holds packets while an enemy is inside this distance band (blocks).", - "value": "3.0", - "props": { - "min": "0.0", - "max": "10.0", - "low": "3.0", - "high": "5.0", - "rolled": "3.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Target FOV", - "desc": "Considers enemies within this view angle (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "360.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Choke", - "desc": "Holds packets for a random burst interval in this range (ms).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "1000.0", - "low": "100.0", - "high": "150.0", - "rolled": "100.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Range Choke", - "desc": "Caps range-based holds at a random time in this range (ms).", - "value": "500.0", - "props": { - "min": "0.0", - "max": "1000.0", - "low": "500.0", - "high": "700.0", - "rolled": "500.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Send Packets", - "desc": "Flushes held packets on these actions: hits, swings, clicks, explosions.", - "value": "", - "props": { - "options": "[On Interact Entity,On Hand Swing,On Interact Block,On Interact Item,On Click Slot,On Explosion]", - "selected": "[false,false,false,false,false,false]", - "indexByOption": "{On Interact Block=2, On Click Slot=4, On Interact Item=3, On Interact Entity=0, On Hand Swing=1, On Explosion=5}" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render", - "desc": "Draws a circle showing how long packets have been held.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.movement.FastBridge", - "name": "Fast Bridge", - "desc": "Automatically sneaks on block edges", - "category": "Movement", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.misc.FastEXP", - "name": "Fast EXP", - "desc": "Spams EXP bottles", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Manual: speeds up bottles while you hold RMB. Automatic: swaps to EXP and mends damaged Mending gear on its own.", - "value": "Manual", - "props": { - "options": "[Manual,Automatic]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between bottle throws (ms).", - "value": "30.0", - "props": { - "min": "20.0", - "max": "500.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Rotate Down", - "desc": "Pitches down while throwing bottles.", - "value": "false", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "From Inventory", - "desc": "Also pull EXP bottles out of your main inventory (silent SWAP).", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to the previous slot after mending completes.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.FastPearlCatch", - "name": "Fast Pearl Catch", - "desc": "Pearl and wind charge back-to-back with no swap between the throws", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "c", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Swap switches hotbar slots between the two throws. Offhand swap-hands the wind charge into your offhand first, then throws pearl (mainhand) and wind charge (offhand) back-to-back with no slot swap between them — faster — then restores your original offhand item.", - "value": "Swap", - "props": { - "options": "[Swap,Offhand]" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Pearl Angle", - "desc": "Pearl throw angle above horizontal (degrees), along your view direction. 90 = straight up (classic Auto Pearl Catch); lower = flatter and farther forward.", - "value": "48.0", - "props": { - "min": "0.0", - "max": "90.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Offhand Pearl Angle", - "desc": "Pearl throw angle above horizontal (degrees) in Offhand mode. Steeper keeps the pearl closer above you so the offhand wind charge meets it sooner.", - "value": "70.0", - "props": { - "min": "0.0", - "max": "90.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Offhand Wind Charge Angle", - "desc": "Wind charge throw angle above horizontal (degrees) in Offhand mode. Tune against Offhand Pearl Angle to control where the intercept happens — steeper meets the pearl earlier/closer.", - "value": "66.0", - "props": { - "min": "0.0", - "max": "90.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Wind Charge Angle", - "desc": "Wind charge throw angle above horizontal (degrees). Tune relative to the pearl angle to control where the intercept happens — steeper meets the pearl earlier/closer, shallower later/farther.", - "value": "40.0", - "props": { - "min": "0.0", - "max": "90.0" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to your original hotbar slot right after the wind charge throw, so you land holding what you had at enable (e.g. mace).", - "value": "true", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Legit Rotate", - "desc": "Moves your real camera instead of snapping server-side. Swap mode only.", - "value": "false", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Smoothing", - "desc": "Scales the camera rotation speed (x). Lower = slower, more human.", - "value": "0.5", - "props": { - "min": "0.1", - "max": "2.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.FastPlace", - "name": "Fast Place", - "desc": "Allows you to place blocks faster", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Blocks Only", - "desc": "Speeds up block items only, not all usable items.", - "value": "false", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Min Speed", - "desc": "Sets the lowest use cooldown rolled per placement (ticks). 0 = every tick.", - "value": "0", - "props": { - "min": "0", - "max": "4" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Max Speed", - "desc": "Sets the highest use cooldown rolled per placement (ticks).", - "value": "1", - "props": { - "min": "0", - "max": "4" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.FreeLook", - "name": "Free Look", - "desc": "Allows you to look around without rotating", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Third Person", - "desc": "Switches to third person while free-looking.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.movement.Freecam", - "name": "Freecam", - "desc": "Allows you to move your camera around without actually moving your player", - "category": "Movement", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Speed", - "desc": "Sets camera fly speed (x).", - "value": "1.0", - "props": { - "min": "0.1", - "max": "10.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render Previous", - "desc": "Keeps drawing your body at its real position.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.Friends", - "name": "Friends", - "desc": "Manages what to do with friends", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "No Attack", - "desc": "Blocks attacks on friends.", - "value": "false", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Highlight", - "desc": "Colors friend names blue.", - "value": "false", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.GhostPlace", - "name": "Ghost Place", - "desc": "Right-clicks blocks behind enemies instead of interacting with them", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Cobweb Only", - "desc": "Restrict placements to cobweb. Off = any block in main hand goes through.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Use Offhand", - "desc": "Also accept a placeable in the offhand. Main hand still takes precedence when both hands are placeable — this only catches sword-main + cobweb-offhand loadouts, where vanilla right-click on a mob would enter the entity path before ever reaching offhand block placement.", - "value": "false", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.HealthIndicators", - "name": "Health Indicators", - "desc": "Shows health on players", - "category": "Visual", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.visual.HitEffect", - "name": "Hit Effect", - "desc": "Draws particles when hitting entities", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Amount", - "desc": "Spawns this many particles per hit.", - "value": "10", - "props": { - "min": "1", - "max": "20" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Lifespan", - "desc": "Keeps particles alive this long (seconds).", - "value": "10", - "props": { - "min": "1", - "max": "60" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Physics", - "desc": "Gives particles gravity and collisions.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Totem Pop", - "desc": "Spawns particles on totem pops too.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.HitFix", - "name": "Hit Fix", - "desc": "Fixes bad hits", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Weapon Only", - "desc": "Attacks only while holding a weapon.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only On Ground", - "desc": "Delays the hit until the target is on the ground.", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Damage Tick", - "desc": "Waits for the target's hurt time to clear before hitting.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.HitFlick", - "name": "Hit Flick", - "desc": "Flicks the camera off-target around each hit to obscure aim", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Players Only", - "desc": "Skips flicks on non-player entities. Crystals / anchors / mobs are single-hit and the flick just fights AutoCrystal / AutoAnchor / AutoObbyCrystal for the rotation slot, wasting the state machine without ever rendering.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Require Sprint", - "desc": "Flicks only while sprinting.", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min Angle", - "desc": "Sets the smallest flick angle (degrees).", - "value": "60.0", - "props": { - "min": "10.0", - "max": "180.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Angle", - "desc": "Sets the largest flick angle (degrees).", - "value": "75.0", - "props": { - "min": "10.0", - "max": "180.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Direction", - "desc": "Flicks left, right, or randomly.", - "value": "Right", - "props": { - "options": "[Left,Right,Random]" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.Hitboxes", - "name": "Hitboxes", - "desc": "Expands entity hitboxes", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Player Only", - "desc": "Expands player hitboxes only.", - "value": "false", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Expand", - "desc": "Grows hitboxes by this amount (blocks).", - "value": "0.5", - "props": { - "min": "0.0", - "max": "5.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render Hitboxes", - "desc": "Draws the expanded hitboxes.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Distance", - "desc": "Only expands / draws hitboxes within this distance (blocks). Also gates the None-mode setBox path so 200-block-away zombies, item frames, and boats aren't silently re-boxed on every entity tick.", - "value": "5.0", - "props": { - "min": "0.1", - "max": "20.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Anti Cheat", - "desc": "Grim/Vulcan keeps expansion within what those anticheats tolerate.", - "value": "None", - "props": { - "options": "[Grim/Vulcan,None]" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Ignore Walls", - "desc": "Skips the eye-to-eye canSee occlusion check when the expanded-box raycast succeeds — the whole point of expansion is to catch hits where a box lobe pokes past a corner obby while the target's eye is still behind it. Leave OFF for Grim (Post/HitboxA correlates a swing on an eye-occluded target). Turn ON for Vulcan.", - "value": "false", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Skip Shielding", - "desc": "Skips the silent hit when the target is actively raising a shield. Prevents the sword-disable (~1s axe/sword lockout) that a contact swing eats — catastrophic in Crystal because it desyncs crystal-swap timing. Uses a rotation-independent check (not TargetUtil.isShielding's canHitAroundShield fallback), which flips false the instant the target strafes; the server re-evaluates shield facing per-tick so the lazy check would still eat the disable. AutoShieldBreaker is the correct tool for punching through raised shields.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.HudEditor", - "name": "Hud Editor", - "desc": "Opens the Hud Editor", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "HUD Scale", - "desc": "Scales the whole HUD (%). 115 matches the previous fixed size.", - "value": "115.0", - "props": { - "min": "50.0", - "max": "200.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.InstantCrossbow", - "name": "Instant Crossbow", - "desc": "Instantly swaps to a crossbow (even from your inventory) and auto-restores your slot", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "From Inventory", - "desc": "Also pull a crossbow out of your main inventory (silent SWAP).", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.spear.InstantLunge", - "name": "Instant Lunge", - "desc": "Instantly lunges with the spear without needing to swap or click", - "category": "Spear", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Swap Back", - "desc": "Returns to the previous slot after the lunge.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Swap Back Delay", - "desc": "Waits a random time in this range before swapping back (ms).", - "value": "20.0", - "props": { - "min": "0.0", - "max": "300.0", - "low": "20.0", - "high": "70.0", - "rolled": "20.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.InstantShield", - "name": "Instant Shield", - "desc": "One keybind to swap to a shield (even from your inventory), press again to swap back", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Swap Key", - "desc": "Instantly switches to a shield when pressed; press again to return to the previous slot. If the bind is in Hold mode, release the key to swap back.", - "value": "-1", - "props": { - "toggleMode": "false" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "From Inventory", - "desc": "Also pull a shield out of your main inventory (silent SWAP).", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.ItemESP", - "name": "Item ESP", - "desc": "Highlights dropped items through walls", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Scale", - "desc": "Scales the item nametag (x).", - "value": "1.0", - "props": { - "min": "0.1", - "max": "2.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Limit", - "desc": "Caps rendered nametags at this count.", - "value": "100", - "props": { - "min": "1", - "max": "200" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Distance", - "desc": "Hides items beyond this distance (blocks).", - "value": "64.0", - "props": { - "min": "8.0", - "max": "256.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Background", - "desc": "Draws a panel behind the nametag.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Background Color", - "desc": "Sets the nametag panel color.", - "value": "java.awt.Color[r=14,g=14,b=14]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.JumpCircles", - "name": "Jump Circles", - "desc": "Draws circles when players jump", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Self Only", - "desc": "Spawns circles on your own jumps only.", - "value": "false", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Radius", - "desc": "Grows the circle to this final radius (blocks).", - "value": "1.0", - "props": { - "min": "0.2", - "max": "5.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Duration", - "desc": "Keeps each circle visible this long (ms).", - "value": "1200", - "props": { - "min": "200", - "max": "4000" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Thickness", - "desc": "Sets ring thickness (blocks).", - "value": "0.02", - "props": { - "min": "0.005", - "max": "0.1" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Glow Distance", - "desc": "Bleeds the glow halo this far outward (blocks).", - "value": "0.15", - "props": { - "min": "0.0", - "max": "0.5" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Theme Color", - "desc": "Uses the menu theme color.", - "value": "true", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Color", - "desc": "Sets the circle color when not using the theme.", - "value": "java.awt.Color[r=131,g=118,b=252]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.KeepSprint", - "name": "Keep Sprint", - "desc": "Re-presses sprint after attacking to avoid losing the server-side sprint state", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Restore Delay", - "desc": "Randomizes the tick delay between releasing W and re-pressing it. A fixed +1-tick handoff is a Killaura fingerprint — Vulcan / Verus flag the deterministic cadence.", - "value": "1.0", - "props": { - "min": "0.0", - "max": "3.0", - "low": "1.0", - "high": "2.0", - "rolled": "1.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.KeyPearl", - "name": "Key Pearl", - "desc": "Swaps to pearl, throws it and then swaps back whenever enabled", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "10.0", - "props": { - "min": "0.0", - "max": "50.0", - "low": "10.0", - "high": "30.0", - "rolled": "10.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.KeyWindCharge", - "name": "Key Wind Charge", - "desc": "Throws a windcharge upon enabling", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Normal switches your hotbar; Silent swaps server-side only.", - "value": "Normal", - "props": { - "options": "[Normal,Silent]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "10.0", - "props": { - "min": "0.0", - "max": "50.0", - "low": "10.0", - "high": "30.0", - "rolled": "10.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.KillAura", - "name": "Kill Aura", - "desc": "Automatically attacks entities within range", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Reach", - "desc": "Attacks within this eye-to-hitbox distance (blocks). Server caps at 3.0.", - "value": "2.95", - "props": { - "min": "1.0", - "max": "3.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Sticky Targeting", - "desc": "Keeps the current target until it dies or leaves range.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Humanized Aim", - "desc": "Adds a small distance-scaled yaw/pitch jitter to the attack rotation so every hit doesn't ship the exact eye-vector angle — a perfect-center snap on every attack is a Ghost / Vulcan Killaura correlate. Uses RotationUtil.randomizeRotation, which auto-scales spread by 1/distance (short-range hits stay tight) and clamps pitch to ±89.9 for Grim BadPacketsN.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Player Only", - "desc": "Attacks players only.", - "value": "true", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Weapon Only", - "desc": "Attacks only while holding a sword or axe.", - "value": "false", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Cooldown Mode", - "desc": "Vanilla only fires at 100% charge (native MC gate). Range rolls a random threshold in the Cooldown Range window each swing (matches Triggerbot's line-37 pattern) — no two swings land at the same charge, breaking the KillAura fingerprint of a fixed threshold. MinMax pins to the window's min bound as a fixed constant (permissive: attacks fire as soon as charge >= min).", - "value": "Range", - "props": { - "options": "[Vanilla,Range,MinMax]" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Cooldown Range", - "desc": "Rolls a random attack-cooldown threshold in this window each swing (%). Constant thresholds like the old 94% are a KillAura fingerprint — every swing releases at the same charge — so this jitters the release across the window to break the pattern.", - "value": "88.0", - "props": { - "min": "0.0", - "max": "100.0", - "low": "88.0", - "high": "100.0", - "rolled": "88.0" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Miss Chance", - "desc": "Percentage chance per fireable tick to skip the attack — a 100% hit rate is the exact stat anticheats correlate. IMPORTANT for safety: a miss sends NO packet at all (no swing, no attack, no slot swap). The anticheat sees literally nothing that tick — no wall-swing, no air-swing, no unpaired swing packet, so this can't cause a flag on its own. The only cost is the ~100ms internal cooldown before the next attempt, which is what humanizes the attack-packet cadence. 5–15% is a plausible human miss rate.", - "value": "0.0", - "props": { - "min": "0.0", - "max": "25.0" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Yaw", - "desc": "Caps rotations at this yaw offset from your view (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Target FOV", - "desc": "Filters candidate targets to those inside this angular cone from your view at ACQUISITION time (degrees). Default 180 = hemisphere (no effective filter, preserves prior behavior). 360 = disabled (short-circuits). Retention is still governed by Max Yaw — a target acquired at 30° that drifts past this cone stays locked while it remains within Max Yaw, so tighten this to prefer front-of-view targets without losing them mid-fight.", - "value": "180.0", - "props": { - "min": "30.0", - "max": "360.0" - } - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "On Shielding", - "desc": "Ignore = hit through the shield (0.5x dmg, target still guarded). Skip = don't attack while the shield is up. Prefer Axe = silent-swap to a hotbar axe for the disable-shield hit, then auto-restore.", - "value": "Ignore", - "props": { - "options": "[Ignore,Skip,Prefer Axe]" - } - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Aim Points", - "desc": "Anatomy regions the attack may aim at. Each enabled region contributes a candidate hitbox point (X/Z clamped to the hitbox like eyeReachTo, Y sliced to that anatomy band); the region whose candidate lands closest to your eye is picked. Head is the default aim vector — a headshot every frame is a Ghost / Vulcan / Grim AimEyeLock correlate — so Chest is on by default alongside Head, and the module can pick whichever gives the tighter angle per attack. Enable Legs / Thighs to open low-angle attacks against sneaking or crouched targets. Empty selection falls back to eye.", - "value": "", - "props": { - "options": "[Head,Neck,Chest,Waist,Thighs,Legs]", - "selected": "[true,false,true,false,false,false]", - "indexByOption": "{Chest=2, Legs=5, Head=0, Waist=3, Neck=1, Thighs=4}" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render Dot", - "desc": "Draws a dot at the exact aim point.", - "value": "false", - "props": {} - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Dot Size", - "desc": "Sets the aim dot's radius (blocks).", - "value": "0.1", - "props": { - "min": "0.02", - "max": "0.5" - } - }, - { - "field": "q", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Dot Color", - "desc": "Sets the aim dot color.", - "value": "java.awt.Color[r=255,g=64,b=64]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.MacePot", - "name": "Mace Pot", - "desc": "Throws speed and strength pots from your inventory when needed", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Delay", - "desc": "Waits this long between potion throws (ms).", - "value": "300.0", - "props": { - "min": "50.0", - "max": "300.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Auto Disable", - "desc": "Turns the module off after potting.", - "value": "false", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Pitch", - "desc": "Throws potions at this pitch (degrees).", - "value": "70.0", - "props": { - "min": "50.0", - "max": "90.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.MacePrediction", - "name": "Mace Prediction", - "desc": "Shows your opponents reach and predicts their falling/flying path when macing", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Draws predictions as a box, an outline, or both.", - "value": "Outline", - "props": { - "options": "[Box,Outline,Both]" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Predict Air Path", - "desc": "Traces the target's airborne arc to its landing point.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Max Air Pred. Ticks", - "desc": "Simulates the air path up to this many ticks ahead. Higher = more CPU.", - "value": "100", - "props": { - "min": "1", - "max": "500" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Air Path Color", - "desc": "Sets the air path color.", - "value": "java.awt.Color[r=255,g=255,b=0]", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Air Landing Color", - "desc": "Sets the air landing marker color.", - "value": "java.awt.Color[r=0,g=255,b=0]", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Predict Ground Path", - "desc": "Traces the target's on-ground movement ahead.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Ground Pred. Ticks", - "desc": "Simulates the ground path this many ticks ahead.", - "value": "6", - "props": { - "min": "1", - "max": "15" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Ground Path Color", - "desc": "Sets the ground path color.", - "value": "java.awt.Color[r=0,g=150,b=255]", - "props": {} - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Range Circles", - "desc": "Draws circles at current and predicted landing positions.", - "value": "true", - "props": {} - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Circle Inner", - "desc": "Sets the inner circle color.", - "value": "java.awt.Color[r=255,g=0,b=0]", - "props": {} - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Circle Outer", - "desc": "Sets the outer circle color.", - "value": "java.awt.Color[r=0,g=255,b=0]", - "props": {} - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Circle Alpha", - "desc": "Sets circle opacity (0–255).", - "value": "255.0", - "props": { - "min": "0.0", - "max": "255.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.MiddleClickFriend", - "name": "Middle Click Friend", - "desc": "Adds friends when middle clicking on them", - "category": "Misc", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.misc.NameHider", - "name": "Name Hider", - "desc": "Attempts to replace your name in chat and F5", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Random generates names; Custom uses your text.", - "value": "Random", - "props": { - "options": "[Random,Custom]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.TextSetting", - "name": "Custom Name", - "desc": "Replaces your name with this text.", - "value": "PrestigeClient", - "props": { - "placeholder": "Custom Name" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Randomize", - "desc": "Re-rolls the random name on a timer.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Speed", - "desc": "Waits this long between name re-rolls (ms).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "5000.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.NameTags", - "name": "Name Tags", - "desc": "Renders a name tag above players", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Scale", - "desc": "Scales the nametag (x).", - "value": "1.0", - "props": { - "min": "0.1", - "max": "2.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Limit", - "desc": "Caps rendered nametags at this count.", - "value": "100", - "props": { - "min": "1", - "max": "200" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Fade Distance", - "desc": "Blocks past which tags fade out (fade over the last 10 blocks).", - "value": "60.0", - "props": { - "min": "20.0", - "max": "200.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Distance", - "desc": "Shows the distance in meters on the right side of the tag.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Health Number", - "desc": "Shows a numeric HP value next to the health bar.", - "value": "false", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Totem Pops", - "desc": "Shows the player's totem pop count next to the name.", - "value": "true", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Hands", - "desc": "Shows main-hand and offhand items below the tag.", - "value": "true", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Armor", - "desc": "Shows the player's armor below the tag.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Enchantments", - "desc": "Shows enchantment levels on armor and held items.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.NoBounce", - "name": "No Bounce", - "desc": "Removes the bobbing animation in your hotbar when using any form of crystal modules", - "category": "Visual", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.movement.NoJumpDelay", - "name": "No Jump Delay", - "desc": "Removes the delay between jumps", - "category": "Movement", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.combat.NoMissDelay", - "name": "No Miss Delay", - "desc": "Removes the sword delay after missing", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Humanize %", - "desc": "Chance per air-swing to behave like vanilla: reset cooldown AND play the swing animation. 0 = always suppress (fingerprint: no player ever preserves 100% of miss charges), 100 = module effectively off. A few percent (5-15) is enough to defeat Vulcan / Verus / Intave 'zero air-swing charge loss' correlates while still buying most of the DPS advantage.", - "value": "0", - "props": { - "min": "0", - "max": "100" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "In Combat Only", - "desc": "Only preserves the cooldown / hides the swing when a hostile player (alive, not self, not friend, passes AntiBot) is within Range. Out of combat, defers to vanilla so open-world air-swings look normal — otherwise every miss on a mob, a fence, or empty air ships a suppressed reset that has no PvP purpose and stands out on server logs.", - "value": "false", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Range", - "desc": "Radius (blocks) around you to search for a hostile player when In Combat Only is on.", - "value": "5.0", - "props": { - "min": "3.0", - "max": "8.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.OreSimulation", - "name": "Ore Simulation", - "desc": "Simulates ore veins by using the seed for xray", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Ores", - "desc": "Highlights these simulated ore types.", - "value": "", - "props": { - "options": "[Coal,Copper,Iron,Lapis,Redstone,Gold,Diamond,Emerald,Quartz,Ancient Debris]", - "selected": "[true,true,true,true,true,true,true,true,true,true]", - "indexByOption": "{Gold=5, Iron=2, Diamond=6, Quartz=8, Redstone=4, Emerald=7, Ancient Debris=9, Coal=0, Lapis=3, Copper=1}" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.TextSetting", - "name": "Seed", - "desc": "Simulates ore generation from this world seed.", - "value": "", - "props": { - "placeholder": "Seed to use for the simulation" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Chunks", - "desc": "Simulates this many chunks around you. Higher = slower.", - "value": "5", - "props": { - "min": "1", - "max": "10" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.movement.Parkour", - "name": "Parkour", - "desc": "Automatically jumps at the edges of blocks.", - "category": "Movement", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Distance", - "desc": "Auto-jumps within a random edge distance in this range (blocks).", - "value": "0.1", - "props": { - "min": "0.0", - "max": "10.0", - "low": "0.1", - "high": "1.0", - "rolled": "0.1" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.PearlFollow", - "name": "Pearl Follow", - "desc": "Auto-chases enemy pearls by matching where theirs is about to land", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Thrower Range", - "desc": "Only chases pearls thrown by an enemy within this distance (blocks).", - "value": "50.0", - "props": { - "min": "5.0", - "max": "200.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min Landing Distance", - "desc": "Ignores pearls landing this close to us — skips hole-fight up-close pearls that would drop the enemy inside our own bubble (blocks).", - "value": "8.0", - "props": { - "min": "0.0", - "max": "50.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Landing Range", - "desc": "Only chases pearls landing within this distance of us (blocks).", - "value": "60.0", - "props": { - "min": "5.0", - "max": "200.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Error", - "desc": "Rejects solutions whose simulated landing is further than this from the enemy pearl's landing (blocks).", - "value": "2.0", - "props": { - "min": "0.5", - "max": "10.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range after detecting the enemy pearl before throwing (ms).", - "value": "50.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "50.0", - "high": "100.0", - "rolled": "50.0" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Swap Back Delay", - "desc": "Waits a random time in this range after the throw before switching back to the slot you had held (ms).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "2000.0", - "low": "100.0", - "high": "300.0", - "rolled": "100.0" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only On Ground", - "desc": "Only chases while standing on ground (avoids mid-fall or elytra desyncs).", - "value": "false", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Target Only", - "desc": "Only chases pearls whose thrower is your locked TargetManager target. Skips everyone else regardless of Thrower Range — the setting has already narrowed us to one enemy. Note: while enabled, the module goes silent if no target is locked (fresh join, target timed out at >15 blocks / 5s since last hit) — that's the intended semantics, not a bug. Turn off to fall back to the range-based filter.", - "value": "false", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.PearlTrajectory", - "name": "Pearl Trajectory", - "desc": "Shows pearl paths and landing positions", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render Line", - "desc": "Draws the predicted flight path.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Theme Color", - "desc": "Uses the menu theme color for the line.", - "value": "false", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Line Color", - "desc": "Sets the trajectory line color.", - "value": "java.awt.Color[r=14,g=14,b=14]", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Landing Tag", - "desc": "Shows a nametag at the predicted landing point.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Tag Scale", - "desc": "Scales the landing nametag (x).", - "value": "1.0", - "props": { - "min": "0.1", - "max": "2.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Tag Background", - "desc": "Draws a panel behind the landing nametag.", - "value": "true", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Tag Bg Color", - "desc": "Sets the landing nametag panel color.", - "value": "java.awt.Color[r=14,g=14,b=14]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.PearlWindCharge", - "name": "Pearl Wind Charge", - "desc": "Throws a pearl and instantly windcharge when the pearl lands", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Auto Swap", - "desc": "Switches to the pearl and wind charge for you.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Jump", - "desc": "Jumps as the combo starts for extra height.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.PotionRefill", - "name": "Potion Refill", - "desc": "Refills your hotbar with splash potions", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Health Pot Only", - "desc": "Refills healing potions only.", - "value": "false", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range between potion swaps (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "300.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.PredictDoubleHand", - "name": "Predict Double Hand", - "desc": "Predicts when you will pop and mainhand totems for you", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Triggers", - "desc": "Double-hands on these threats: anchors, crystals, obsidian, sword pops, mace smashes, pearls.", - "value": "", - "props": { - "options": "[Anchors,Crystals,Obsidian,Sword Pop,Mace,Pearl]", - "selected": "[true,true,true,true,true,false]", - "indexByOption": "{Anchors=0, Pearl=5, Mace=4, Sword Pop=3, Crystals=1, Obsidian=2}" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Pause", - "desc": "Pauses while these modules are active.", - "value": "", - "props": { - "options": "[Auto Crystal,Auto Hit Crystal,Shield]", - "selected": "[true,true,true]", - "indexByOption": "{Shield=2, Auto Crystal=0, Auto Hit Crystal=1}" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Re-swap Delay", - "desc": "Waits a random time in this range after re-swapping (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "300.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Sensitivity", - "desc": "Scales how eagerly threats trigger a double hand (x).", - "value": "1.0", - "props": { - "min": "0.5", - "max": "1.5" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.Reach", - "name": "Reach", - "desc": "Increases your reach", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Chance", - "desc": "Rolls this chance on each extended hit (%).", - "value": "60.0", - "props": { - "min": "0.0", - "max": "100.0" - } - }, - { - "field": "b", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Reach", - "desc": "Adds a random amount in this range to your reach (blocks).", - "value": "0.0", - "props": { - "min": "0.0", - "max": "2.0", - "low": "0.0", - "high": "0.1", - "rolled": "0.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.Refill", - "name": "Refill", - "desc": "Tops off hotbar stacks from the rest of your inventory", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Always refills while the inventory is open; Keybind waits for the key.", - "value": "Always", - "props": { - "options": "[Always,Keybind]" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.KeybindSetting", - "name": "Refill Key", - "desc": "Press to refill (Keybind mode).", - "value": "-1", - "props": { - "toggleMode": "false" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Threshold", - "desc": "Tops off hotbar stacks at or below this count (items).", - "value": "32", - "props": { - "min": "1", - "max": "63" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Delay", - "desc": "Waits at least this long between refill clicks (ms).", - "value": "100", - "props": { - "min": "0", - "max": "1000" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.RenderOptimizer", - "name": "Render Optimizer", - "desc": "Removes certain visuals from your screen", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Hurt Cam", - "desc": "Removes the hurt-cam shake on damage.", - "value": "false", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Fire", - "desc": "Removes the fire overlay while burning.", - "value": "false", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Particles", - "desc": "Removes all particles.", - "value": "false", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Background Tint", - "desc": "Removes the dark tint behind GUI screens.", - "value": "false", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Full Bright", - "desc": "Lights every block fully, no torches needed.", - "value": "false", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Remove Weather", - "desc": "Removes rain and snow.", - "value": "false", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Shorten Loading Screen", - "desc": "Skips the downloading-terrain screen.", - "value": "false", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "No Scoreboard", - "desc": "Hides the scoreboard.", - "value": "false", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "No Title", - "desc": "Hides title text.", - "value": "false", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "No Hotbar Text", - "desc": "Hides hotbar item names.", - "value": "false", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.RightClicker", - "name": "Right Clicker", - "desc": "Automatically right clicks for you", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min CPS", - "desc": "Lowest clicks per second.", - "value": "5.0", - "props": { - "min": "0.0", - "max": "25.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max CPS", - "desc": "Highest clicks per second.", - "value": "15.0", - "props": { - "min": "0.0", - "max": "25.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.SafeAnchor", - "name": "Safe Anchor", - "desc": "Prevents anchors from dealing damage to you", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Legit covers the anchor you charge; Blatant covers nearby anchors itself.", - "value": "Legit", - "props": { - "options": "[Legit,Blatant]" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only Own", - "desc": "Covers only anchors you placed.", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min Damage", - "desc": "Covers only anchors that would deal at least this damage (HP).", - "value": "5.0", - "props": { - "min": "0.0", - "max": "30.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Damage", - "desc": "Accepts at most this much damage left after covering (HP).", - "value": "5.0", - "props": { - "min": "0.0", - "max": "30.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "When", - "desc": "Covers before or after the glowstone charge.", - "value": "Before Charge", - "props": { - "options": "[Before Charge,After Charge]" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range (ms). Legit: after your anchor place packet before firing the cover. Blatant: reaction time after first noticing an anchor, and between covers. Vanilla auto-cover is one tick (~50 ms) — a fixed, machine-perfect reaction. Humans take 200+ ms; a randomized 80-160 ms window looks reactive without being fatally slow.", - "value": "20.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "20.0", - "high": "100.0", - "rolled": "20.0" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Swap", - "desc": "None uses the held item; Normal switches hotbar; Silent swaps server-side.", - "value": "None", - "props": { - "options": "[None,Normal,Silent]" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Block", - "desc": "Covers with glowstone or obsidian.", - "value": "Glowstone", - "props": { - "options": "[Glowstone,Obsidian]" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Limit", - "desc": "Caps how many cover blocks are placed per anchor.", - "value": "1", - "props": { - "min": "1", - "max": "5" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "FOV", - "desc": "Caps rotations at this yaw offset (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.SelfDestruct", - "name": "Self Destruct", - "desc": "Destructs the client to hopefully prevent detection when screenshared", - "category": "Misc", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.mace.ShieldDrain", - "name": "Shield Drain", - "desc": "Repeatedly hits a target's shield to drain its durability during mace combat", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Horizontal Target Dist", - "desc": "Searches for shielders within this horizontal distance (blocks).", - "value": "5.0", - "props": { - "min": "0.0", - "max": "6.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Range", - "desc": "Ignores targets beyond this distance (blocks).", - "value": "4.5", - "props": { - "min": "3.0", - "max": "6.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Min Fall Distance", - "desc": "Drains only after falling this far (blocks). 0 = always.", - "value": "0.0", - "props": { - "min": "0.0", - "max": "50.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Only On Crosshair", - "desc": "Drains only the player under your crosshair.", - "value": "false", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Require Mace", - "desc": "Runs only while holding a mace; disables auto-swap.", - "value": "true", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Pause On Ground", - "desc": "Stops draining when you touch the ground.", - "value": "false", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Clicks Per Tick", - "desc": "Sends this many attacks per tick. 3 ≈ 60 CPS; 10 ≈ 200 CPS, blatant.", - "value": "2", - "props": { - "min": "1", - "max": "10" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Auto Swap", - "desc": "Switches to a mace when you are not holding one.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent", - "desc": "Returns to the previous slot once the target stops shielding.", - "value": "false", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.ShieldRenderer", - "name": "Shield Renderer", - "desc": "Modifies the look of your and other peoples shields", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Overlay", - "desc": "Draws a colored overlay on shields to show their state.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render Self", - "desc": "Overlays your own shield too.", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Render Mode", - "desc": "Shows overlays always, only while shields are up, or only when broken.", - "value": "Always", - "props": { - "options": "[Always,Normal,Broken]" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "X Offset", - "desc": "Shifts the overlay along X (blocks).", - "value": "0.0", - "props": { - "min": "-1.0", - "max": "1.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Y Offset", - "desc": "Shifts the overlay along Y (blocks).", - "value": "0.0", - "props": { - "min": "-1.0", - "max": "1.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Z Offset", - "desc": "Shifts the overlay along Z (blocks).", - "value": "0.0", - "props": { - "min": "-1.0", - "max": "1.0" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "X Scale", - "desc": "Stretches the overlay along X (x).", - "value": "1.0", - "props": { - "min": "0.0", - "max": "2.0" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Y Scale", - "desc": "Stretches the overlay along Y (x).", - "value": "1.0", - "props": { - "min": "0.0", - "max": "2.0" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Z Scale", - "desc": "Stretches the overlay along Z (x).", - "value": "1.0", - "props": { - "min": "0.0", - "max": "2.0" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Default Color", - "desc": "Sets the intact-shield overlay color.", - "value": "java.awt.Color[r=0,g=255,b=0]", - "props": {} - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Broken Color", - "desc": "Sets the broken-shield overlay color.", - "value": "java.awt.Color[r=255,g=0,b=0]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.movement.ShortPearl", - "name": "Short Pearl", - "desc": "Throws a pearl at your feet", - "category": "Movement", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Legit rotates your real camera; Silent rotates server-side only.", - "value": "Legit", - "props": { - "options": "[Legit,Silent]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Min Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "200.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Switch Back", - "desc": "Returns to the previous slot after the throw.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Pitch", - "desc": "Throws the pearl at this pitch (degrees).", - "value": "70.0", - "props": { - "min": "30.0", - "max": "90.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Smoothing", - "desc": "Scales the camera rotation speed (x). Lower = slower, more human.", - "value": "0.5", - "props": { - "min": "0.1", - "max": "2.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.ShortWindCharge", - "name": "Short Wind Charge", - "desc": "Throws a wind charge at your feet", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Legit rotates your real camera; Silent rotates server-side only.", - "value": "Legit", - "props": { - "options": "[Legit,Silent]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Min Delay", - "desc": "Waits a random time in this range between actions (ms).", - "value": "30.0", - "props": { - "min": "0.0", - "max": "200.0", - "low": "30.0", - "high": "50.0", - "rolled": "30.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Switch Back", - "desc": "Returns to the previous slot after the throw.", - "value": "true", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Auto Jump", - "desc": "Jumps as the wind charge is thrown.", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Pitch 1", - "desc": "Throws the wind charge at this pitch (degrees).", - "value": "40.0", - "props": { - "min": "30.0", - "max": "90.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Smoothing", - "desc": "Scales the camera rotation speed (x). Lower = slower, more human.", - "value": "0.5", - "props": { - "min": "0.1", - "max": "2.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.SilentAim", - "name": "Silent Aim", - "desc": "Redirects missed hits to hit ones", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Player Only", - "desc": "Aims at players only.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Weapon Only", - "desc": "Runs only while holding a sword or axe.", - "value": "false", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Continuous Tracking", - "desc": "Tracks the closest target every tick instead of only snapping on hit.", - "value": "false", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Yaw", - "desc": "Caps silent aim at this yaw offset from your view (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Pitch", - "desc": "Caps silent aim at this pitch offset from your view (degrees). Pitch is intrinsically clamped to ±90 so no seam-wrap folding is needed — a plain absolute delta. Default 90 is a no-op ceiling; tighten to reject aim vectors that would ship a suspicious head-snap up/down (e.g. crystalled feet directly below the crosshair).", - "value": "90.0", - "props": { - "min": "0.0", - "max": "90.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Aim Points", - "desc": "Anatomy regions the silent aim may point at. Each enabled region contributes a candidate: X/Z clamped to the hitbox (same math as vanilla's nearest-point) and Y sliced to that region's band; the region whose candidate lands closest to your eye wins. Head every hit is a Ghost / Vulcan / Grim AimEyeLock correlate, so Body is on by default alongside Head so the picker can prefer the tighter angle per attack. Enable Legs / Feet to open low-angle attacks on crouched targets or crystalled feet. Empty selection falls back to the eye vector (never breaks the module).", - "value": "", - "props": { - "options": "[Head,Neck,Body,Arms,Thighs,Legs,Feet]", - "selected": "[true,false,true,false,false,false,false]", - "indexByOption": "{Legs=5, Head=0, Arms=3, Neck=1, Thighs=4, Body=2, Feet=6}" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Render Dot", - "desc": "Draws a dot where the silent aim points.", - "value": "false", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Dot Size", - "desc": "Sets the aim dot's radius (blocks).", - "value": "0.1", - "props": { - "min": "0.02", - "max": "0.5" - } - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Dot Color", - "desc": "Sets the aim dot color.", - "value": "java.awt.Color[r=255,g=64,b=64]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.spear.SpearDamageIndicator", - "name": "Spear Damage Indicator", - "desc": "Shows how much damage you have accumulated for the spear", - "category": "Spear", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.spear.SpearMaceDoubleTap", - "name": "Spear Mace Double Tap", - "desc": "Double taps people with a spear then mace combination", - "category": "Spear", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Trigger Fall Distance", - "desc": "Swaps to the mace after falling this far (blocks).", - "value": "3.0", - "props": { - "min": "0.0", - "max": "20.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.movement.Sprint", - "name": "Sprint", - "desc": "Automatically sprints for you", - "category": "Movement", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.visual.StorageESP", - "name": "Storage ESP", - "desc": "Highlights storage blocks through walls", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Targets", - "desc": "Glows these storage block types.", - "value": "", - "props": { - "options": "[Chests,Trapped Chests,Ender Chests,Shulker Boxes,Barrels,Hoppers,Dispensers,Droppers,Furnaces,Brewing Stands]", - "selected": "[true,true,true,true,true,false,false,false,false,false]", - "indexByOption": "{Trapped Chests=1, Ender Chests=2, Dispensers=6, Chests=0, Barrels=4, Furnaces=8, Shulker Boxes=3, Hoppers=5, Droppers=7, Brewing Stands=9}" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Fill", - "desc": "Fills blocks with the glow color instead of outline only.", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Chests Color", - "desc": "Sets the chest glow color.", - "value": "java.awt.Color[r=255,g=165,b=0]", - "props": {} - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Trapped Chests Color", - "desc": "Sets the trapped chest glow color.", - "value": "java.awt.Color[r=220,g=50,b=50]", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Ender Chests Color", - "desc": "Sets the ender chest glow color.", - "value": "java.awt.Color[r=130,g=60,b=220]", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Shulkers Color", - "desc": "Sets the shulker box glow color.", - "value": "java.awt.Color[r=235,g=100,b=235]", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Barrels Color", - "desc": "Sets the barrel glow color.", - "value": "java.awt.Color[r=180,g=140,b=90]", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Hoppers Color", - "desc": "Sets the hopper glow color.", - "value": "java.awt.Color[r=160,g=160,b=160]", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Dispensers Color", - "desc": "Sets the dispenser glow color.", - "value": "java.awt.Color[r=120,g=120,b=120]", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Droppers Color", - "desc": "Sets the dropper glow color.", - "value": "java.awt.Color[r=140,g=110,b=90]", - "props": {} - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Furnaces Color", - "desc": "Sets the furnace glow color.", - "value": "java.awt.Color[r=220,g=90,b=30]", - "props": {} - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Brewing Stands Color", - "desc": "Sets the brewing stand glow color.", - "value": "java.awt.Color[r=80,g=200,b=80]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.StreamerMode", - "name": "Streamer Mode", - "desc": "Hides everyones names on your screen", - "category": "Misc", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Exclude Friends", - "desc": "Keeps friend names unmasked.", - "value": "false", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.TextSetting", - "name": "Prefix", - "desc": "Starts every alias with this text.", - "value": "PrestigeClient", - "props": { - "placeholder": "Prefix" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Numbered counts aliases up; Random generates fresh ones.", - "value": "Numbered", - "props": { - "options": "[Numbered,Random]" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Include Self", - "desc": "Replaces your own name too.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.SwapHit", - "name": "Swap Hit", - "desc": "Briefly swaps to a sword to hit, then swaps back to your previous slot", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Totem Only", - "desc": "Swaps only while holding a totem.", - "value": "false", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Swap Delay", - "desc": "Waits this long between the sword swap and the hit (ms).", - "value": "50.0", - "props": { - "min": "0.0", - "max": "300.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Swap Back Delay", - "desc": "Waits this long between the hit and the swap back (ms).", - "value": "50.0", - "props": { - "min": "0.0", - "max": "300.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Shield Aware", - "desc": "If the target is actively shielding into you, a sword swap does 0 damage AND wastes the disable-shield stun an axe would apply. When on, skip the sword swap in that case (or divert to Prefer Axe below).", - "value": "true", - "props": {} - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Prefer Axe", - "desc": "Instead of skipping when the target is shielding, swap to an axe hotbar slot so the hit disables the shield + applies its 5s cooldown. Falls back to skip if no axe is in the hotbar.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.TargetRenderer", - "name": "Target Renderer", - "desc": "Highlights your target during combat", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Draws the target effect as a ghost or a square.", - "value": "Ghost", - "props": { - "options": "[Ghost,Square]" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.misc.Teams", - "name": "Teams", - "desc": "Prevents you from attacking teammates in certain game modes", - "category": "Misc", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.visual.TotemAnimation", - "name": "Totem Animation", - "desc": "Increases the speed of totem animations", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Speed", - "desc": "Sets the totem pop animation speed (x).", - "value": "1", - "props": { - "min": "0", - "max": "5" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.TotemHit", - "name": "Totem Hit", - "desc": "More knockback when hitting players with totems", - "category": "Combat", - "enabled": false, - "settings": [] - }, - { - "class": "dev.zprestige.prestige.module.visual.Trails", - "name": "Trails", - "desc": "Leaves a trail behind players", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Self Only", - "desc": "Draws your own trail only.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Draws footsteps, a ring, or particles.", - "value": "Footsteps", - "props": { - "options": "[Footsteps,Ring,Particles]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Duration", - "desc": "Keeps each trail point visible this long (ms).", - "value": "1500", - "props": { - "min": "200", - "max": "5000" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Size", - "desc": "Scales the trail (x).", - "value": "1.0", - "props": { - "min": "0.2", - "max": "3.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Theme Color", - "desc": "Uses the menu theme color.", - "value": "true", - "props": {} - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Color", - "desc": "Sets the trail color when not using the theme.", - "value": "java.awt.Color[r=131,g=118,b=252]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.Trajectories", - "name": "Trajectories", - "desc": "Shows trajectories of certain items", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "c", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Render", - "desc": "Predicts all projectiles, or only crossbows, bows, or pearls.", - "value": "All", - "props": { - "options": "[All,Crossbow,Bow,Bows,Pearl]" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Color", - "desc": "Sets the color of the trajectory beam and impact rings.", - "value": "java.awt.Color[r=131,g=118,b=252]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.Triggerbot", - "name": "Triggerbot", - "desc": "Attacks entities when looking at them", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Targets", - "desc": "Attacks players, crystals, or anything.", - "value": "", - "props": { - "options": "[Any,Players,Crystals]", - "selected": "[false,true,true]", - "indexByOption": "{Any=0, Players=1, Crystals=2}" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Sticky Target", - "desc": "Locks the first player hit until they die or leave range.", - "value": "false", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Sticky Range", - "desc": "Distance at which a locked sticky target is released. Was hardcoded 5.0 — expose it so users can tighten (kite-heavy fights, avoid re-lock over a wall) or loosen (long-reach setups). Range 3–8: 3 is roughly a sword swing, 8 covers a mace / spear-reach extension.", - "value": "5.0", - "props": { - "min": "3.0", - "max": "8.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Sword Settings", - "desc": "Toggles sword rules: weapon only, crit timing, invisibles, crit only.", - "value": "", - "props": { - "options": "[Weapon Only,Criticals Timing,Attack Invisibles,Crit Only]", - "selected": "[true,true,false,false]", - "indexByOption": "{Attack Invisibles=2, Crit Only=3, Criticals Timing=1, Weapon Only=0}" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Crystal Settings", - "desc": "Toggles crystal rules: crystal only, on-ground only, pause on kill.", - "value": "", - "props": { - "options": "[Crystal Only,On Ground Only,Pause On Kill]", - "selected": "[true,true,true]", - "indexByOption": "{On Ground Only=1, Crystal Only=0, Pause On Kill=2}" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Require Left Click", - "desc": "Fires only while left click is held.", - "value": "false", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Pause In Screen", - "desc": "Pauses while a screen is open.", - "value": "true", - "props": {} - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Ignore Friends", - "desc": "Skips players on your Socials friend list. Off = Triggerbot will happily attack friends whose name matches your list (previous behavior — no socials guard existed).", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Debug Targets", - "desc": "When a crosshair entity is rejected, prints its class + which gate failed to chat (rate-limited per entity).", - "value": "false", - "props": {} - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Delay", - "desc": "Waits a random time in this range after seeing the target (ms).", - "value": "0.0", - "props": { - "min": "0.0", - "max": "500.0", - "low": "0.0", - "high": "0.0", - "rolled": "0.0" - } - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Cooldown", - "desc": "Fires within this attack-cooldown window (%). 80–100 is the default.", - "value": "80.0", - "props": { - "min": "0.0", - "max": "100.0", - "low": "80.0", - "high": "100.0", - "rolled": "80.0" - } - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "TPS Sync", - "desc": "Raises the cooldown threshold on laggy servers to avoid double swings.", - "value": "true", - "props": {} - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Miss Chance", - "desc": "Percentage chance for a fireable player acquisition to be missed. A missed player is not retried until the crosshair leaves or switches target, or Require Left Click is released. Crystals are never missed. 5–15% is a plausible human miss rate.", - "value": "0.0", - "props": { - "min": "0.0", - "max": "25.0" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Custom Cooldown", - "desc": "Millisecond gate that replaces the vanilla attack-cooldown check when Weapon Only is OFF. Before this, holding a shovel / totem / bow / fist against a player let Triggerbot fire every tick because the cooldown branch was gated on `weapon`. Rolls a random ms threshold in this window per fire (jitter matches AutoShieldBreaker's breakCooldown pattern — a fixed threshold is trivially fingerprintable). Crystals bypass this gate entirely.", - "value": "100.0", - "props": { - "min": "0.0", - "max": "1000.0", - "low": "100.0", - "high": "200.0", - "rolled": "100.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.TwoDESP", - "name": "Two DESP", - "desc": "Draws 2D boxes around players", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Show Invisibles", - "desc": "Draws boxes for invisible players too.", - "value": "true", - "props": {} - }, - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Style", - "desc": "Draws a full box, corner brackets, or side brackets.", - "value": "Corners", - "props": { - "options": "[Box,Corners,Brackets]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Rounding", - "desc": "Rounds box corners by this radius (px).", - "value": "2.0", - "props": { - "min": "0.0", - "max": "8.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Line Width", - "desc": "Sets border stroke thickness (px).", - "value": "0.75", - "props": { - "min": "0.5", - "max": "1.5" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.MultiSetting", - "name": "Features", - "desc": "Toggles overlay elements: fill, glow, gradient, health, name, distance.", - "value": "", - "props": { - "options": "[Fill,Glow,Gradient,Health Bar,Name Tag,Distance,Blur Labels]", - "selected": "[true,true,true,true,true,true,true]", - "indexByOption": "{Fill=0, Gradient=2, Name Tag=4, Blur Labels=6, Health Bar=3, Glow=1, Distance=5}" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Fill Alpha", - "desc": "Sets fill tint opacity (0–0.4).", - "value": "0.12", - "props": { - "min": "0.0", - "max": "0.4" - } - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Glow Strength", - "desc": "Extends the glow this far outward (px).", - "value": "8.0", - "props": { - "min": "2.0", - "max": "20.0" - } - }, - { - "field": "i", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Animated", - "desc": "Oscillates the gradient over time.", - "value": "true", - "props": {} - }, - { - "field": "j", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Animation Speed", - "desc": "Sets the gradient breathing speed (x).", - "value": "1.4", - "props": { - "min": "0.3", - "max": "4.0" - } - }, - { - "field": "k", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Health Position", - "desc": "Docks the health bar left, right, bottom, or top.", - "value": "Left", - "props": { - "options": "[Left,Right,Bottom,Top]" - } - }, - { - "field": "l", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Health Text", - "desc": "Overlays numeric HP on the health bar.", - "value": "true", - "props": {} - }, - { - "field": "m", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Health Shine", - "desc": "Sweeps an animated highlight along the health bar.", - "value": "true", - "props": {} - }, - { - "field": "n", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Fade Speed", - "desc": "Fades boxes in and out at this speed (x).", - "value": "14.0", - "props": { - "min": "3.0", - "max": "30.0" - } - }, - { - "field": "o", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Max Distance", - "desc": "Hides boxes for players beyond this distance (blocks).", - "value": "120", - "props": { - "min": "10", - "max": "300" - } - }, - { - "field": "p", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Limit", - "desc": "Caps rendered boxes at this count (nearest players first).", - "value": "30", - "props": { - "min": "1", - "max": "200" - } - }, - { - "field": "q", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Menu Color", - "desc": "Uses the menu accent color for the box.", - "value": "true", - "props": {} - }, - { - "field": "r", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Box Color", - "desc": "Sets the border color when not using the menu accent.", - "value": "java.awt.Color[r=131,g=118,b=252]", - "props": {} - }, - { - "field": "s", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Gradient Color", - "desc": "Sets the gradient's bottom color.", - "value": "java.awt.Color[r=255,g=106,b=200]", - "props": {} - }, - { - "field": "t", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Friend Color", - "desc": "Sets the box color for friends.", - "value": "java.awt.Color[r=120,g=220,b=255]", - "props": {} - }, - { - "field": "u", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Health High", - "desc": "Sets the health bar color at full health.", - "value": "java.awt.Color[r=120,g=245,b=140]", - "props": {} - }, - { - "field": "v", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Health Low", - "desc": "Sets the health bar color at low health.", - "value": "java.awt.Color[r=255,g=74,b=74]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.movement.Velocity", - "name": "Velocity", - "desc": "Reduces knockback you take", - "category": "Movement", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Chance", - "desc": "Rolls this chance on each knockback reduction (%).", - "value": "60.0", - "props": { - "min": "0.0", - "max": "100.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Ignore Explosions", - "desc": "Skips reduction while flying away from explosions.", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Vertical", - "desc": "Takes a random share in this range of vertical knockback (%).", - "value": "80.0", - "props": { - "min": "0.0", - "max": "100.0", - "low": "80.0", - "high": "100.0", - "rolled": "80.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Horizontal", - "desc": "Takes a random share in this range of horizontal knockback (%).", - "value": "80.0", - "props": { - "min": "0.0", - "max": "100.0", - "low": "80.0", - "high": "100.0", - "rolled": "80.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.movement.WTap", - "name": "W Tap", - "desc": "Releases W and holds it again to reset server-side sprinting for more knockback", - "category": "Movement", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Chance", - "desc": "Rolls this chance on each W-tap (%).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "100.0" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Hold Length", - "desc": "Releases W for a random time in this range (ms).", - "value": "100.0", - "props": { - "min": "0.0", - "max": "400.0", - "low": "100.0", - "high": "200.0", - "rolled": "100.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.RangeSetting", - "name": "Reaction", - "desc": "Waits a random reaction time in this range after the hit (ms).", - "value": "10.0", - "props": { - "min": "0.0", - "max": "50.0", - "low": "10.0", - "high": "30.0", - "rolled": "10.0" - } - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.Weather", - "name": "Weather", - "desc": "Renders custom weather effects", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.EnumSetting", - "name": "Mode", - "desc": "Spawns rain, snow, fireflies, or embers.", - "value": "Rain", - "props": { - "options": "[Rain,Snow,Fireflies,Embers]" - } - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Density", - "desc": "Caps particles at this count. Higher = denser, more GPU.", - "value": "200", - "props": { - "min": "10", - "max": "1500" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Radius", - "desc": "Spawns particles within this distance (blocks).", - "value": "50", - "props": { - "min": "5", - "max": "100" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Speed", - "desc": "Multiplies particle speed (x).", - "value": "1.0", - "props": { - "min": "0.1", - "max": "5.0" - } - }, - { - "field": "f", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Size", - "desc": "Multiplies particle size (x).", - "value": "3.0", - "props": { - "min": "0.1", - "max": "5.0" - } - }, - { - "field": "g", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Theme Color", - "desc": "Uses menu theme shades for particles.", - "value": "true", - "props": {} - }, - { - "field": "h", - "setClass": "dev.zprestige.prestige.ColorSetting", - "name": "Color", - "desc": "Sets the particle color when not using the theme.", - "value": "java.awt.Color[r=255,g=255,b=255]", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.mace.WindChargeAura", - "name": "Wind Charge Aura", - "desc": "Automatically hits wind charges around you", - "category": "Mace", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Reach", - "desc": "Attacks within this eye-to-hitbox distance (blocks). Server caps at 3.0.", - "value": "2.95", - "props": { - "min": "1.0", - "max": "3.0" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Humanized Aim", - "desc": "Adds a small distance-scaled yaw/pitch jitter to the attack rotation so every hit doesn't ship the exact eye-vector angle. Same jitter KillAura uses; auto-scales spread by 1/distance and clamps pitch to ±89.9 for Grim BadPacketsN.", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Max Yaw", - "desc": "Caps rotations at this yaw offset from your view (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } - }, - { - "field": "e", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "In Air Only", - "desc": "Only attacks wind charges while you are airborne.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.visual.XRay", - "name": "XRay", - "desc": "See ores and valuables through walls", - "category": "Visual", - "enabled": false, - "settings": [ - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Full Bright", - "desc": "Fully lights every block. Some anticheats flag it; off keeps only ore glow.", - "value": "true", - "props": {} - } - ] - }, - { - "class": "dev.zprestige.prestige.module.combat.XbowCart", - "name": "Xbow Cart", - "desc": "Places a minecart and detonates it with a charged crossbow", - "category": "Combat", - "enabled": false, - "settings": [ - { - "field": "a", - "setClass": "dev.zprestige.prestige.IntSetting", - "name": "Switch Delay", - "desc": "Waits this many ticks between rail, cart, fire, and crossbow steps.", - "value": "2", - "props": { - "min": "0", - "max": "20" - } - }, - { - "field": "d", - "setClass": "dev.zprestige.prestige.BoolSetting", - "name": "Silent Aim", - "desc": "Aims at placements and the shot server-side; your camera never moves.", - "value": "true", - "props": {} - }, - { - "field": "c", - "setClass": "dev.zprestige.prestige.FloatSetting", - "name": "Silent Aim FOV", - "desc": "Caps silent aim at this yaw offset per tick (degrees).", - "value": "180.0", - "props": { - "min": "0.0", - "max": "180.0" - } + "modules": [ + { + "class": "dev.zprestige.prestige.module.combat.AimAssist", + "name": "Aim Assist", + "desc": "Aims at targets", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Aims at players or end crystals.", + "value": "Players", + "props": { + "options": "[Players,Crystals]" + } + }, + { + "field": "target", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Target", + "desc": "Closest = nearest; Crosshair = smallest angle to aim; Lowest HP/Armor = weakest player.", + "value": "Closest", + "props": { + "options": "[Closest,Crosshair,Lowest HP,Lowest Armor]" + } + }, + { + "field": "fov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Fov", + "desc": "Considers targets within this view angle (degrees). 360 = full sphere, allowing flicks behind you.", + "value": "90.0", + "props": { + "min": "0.1", + "max": "360.0" + } + }, + { + "field": "range", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Range", + "desc": "Considers targets within this distance (blocks).", + "value": "5.0", + "props": { + "min": "0.0", + "max": "10.0" + } + }, + { + "field": "stickyTargeting", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Sticky Targeting", + "desc": "Keeps the current target until it dies or leaves range.", + "value": "true", + "props": {} + }, + { + "field": "throughWalls", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Through Walls", + "desc": "Allows targets hidden behind blocks.", + "value": "false", + "props": {} + }, + { + "field": "onlyOnRotate", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only On Rotate", + "desc": "Assists only while you are moving the mouse.", + "value": "true", + "props": {} + }, + { + "field": "stopOnBlockBreak", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Stop On Block Break", + "desc": "Pauses while you are mining a block.", + "value": "true", + "props": {} + }, + { + "field": "weaponOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Weapon Only", + "desc": "Assists only while holding a sword or axe.", + "value": "false", + "props": {} + }, + { + "field": "crystalOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Crystal Only", + "desc": "Assists only while holding an end crystal.", + "value": "false", + "props": {} + }, + { + "field": "requireLeftClick", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Require Left Click", + "desc": "Assists only while left click is held.", + "value": "false", + "props": {} + }, + { + "field": "requireRightClick", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Require Right Click", + "desc": "Assists only while right click is held.", + "value": "false", + "props": {} + }, + { + "field": "reactionDelay", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Reaction Delay", + "desc": "Waits this long after acquiring a target before aiming (ms).", + "value": "0.0", + "props": { + "min": "0.0", + "max": "500.0" + } + }, + { + "field": "speed", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Speed", + "desc": "Sets how fast the aim pulls to the target. Higher = snappier.", + "value": "50.0", + "props": { + "min": "0.1", + "max": "100.0" + } + }, + { + "field": "randomness", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Randomness", + "desc": "Adds per-frame jitter so the aim never moves dead straight.", + "value": "70.0", + "props": { + "min": "0.1", + "max": "100.0" + } + }, + { + "field": "smoothen", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Smoothen", + "desc": "Replaces speed-based aim with a smoothness curve; glides instead of snapping.", + "value": "false", + "props": {} + }, + { + "field": "smoothness", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Smoothness", + "desc": "Sets how buttery the glide is. 100 = very slow drift.", + "value": "75.0", + "props": { + "min": "0.0", + "max": "100.0" + } + }, + { + "field": "predictMovement", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Predict Movement", + "desc": "Leads moving players by their velocity.", + "value": "true", + "props": {} + }, + { + "field": "predictMultiply", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Predict Multiply", + "desc": "Multiplies the lead. 1 = exact velocity; higher offsets ping (x).", + "value": "1.0", + "props": { + "min": "1.0", + "max": "4.0" + } + }, + { + "field": "verticalOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Vertical Only", + "desc": "Corrects pitch only for crystals; yaw stays yours.", + "value": "false", + "props": {} + }, + { + "field": "stopOnHitbox", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Stop On Hitbox", + "desc": "Freezes correction once your crosshair is on the hitbox.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.Ambience", + "name": "Ambience", + "desc": "Changes the ambience of the game", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "fog", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Fog", + "desc": "Overrides vanilla fog with custom distances and color.", + "value": "true", + "props": {} + }, + { + "field": "start", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Start", + "desc": "Starts fog at this distance (blocks).", + "value": "90.0", + "props": { + "min": "0.0", + "max": "200.0" + } + }, + { + "field": "end", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "End", + "desc": "Reaches full fog at this distance (blocks).", + "value": "150.0", + "props": { + "min": "0.0", + "max": "200.0" + } + }, + { + "field": "color", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Color", + "desc": "Sets the fog color.", + "value": "java.awt.Color[r=255,g=255,b=255]", + "props": {} + }, + { + "field": "coverHorizonBand", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Cover Horizon Band", + "desc": "Hides the bright horizon strip by matching the sky cutoff to fog end.", + "value": "true", + "props": {} + }, + { + "field": "sky", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Sky", + "desc": "Overrides the upper sky color.", + "value": "false", + "props": {} + }, + { + "field": "skyColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Sky Color", + "desc": "Sets the sky dome color.", + "value": "java.awt.Color[r=135,g=206,b=235]", + "props": {} + }, + { + "field": "customTime", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Custom Time", + "desc": "Overrides the visual time of day.", + "value": "true", + "props": {} + }, + { + "field": "time", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Time", + "desc": "Sets the visual time of day (ticks, 0–24000).", + "value": "6000", + "props": { + "min": "0", + "max": "24000" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AnchorExploder", + "name": "Anchor Exploder", + "desc": "Automatically explodes respawn anchors for you", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "onlyOwnAnchors", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only Own Anchors", + "desc": "Touches only anchors you placed.", + "value": "true", + "props": {} + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "200.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "glowstone", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Glowstone", + "desc": "Charges anchors with glowstone before exploding.", + "value": "true", + "props": {} + }, + { + "field": "glowstoneSwap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Glowstone Swap", + "desc": "None uses the held item; Swap switches hotbar.", + "value": "Swap", + "props": { + "options": "[None,Swap]" + } + }, + { + "field": "glowstoneSwapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Glowstone Swap Back", + "desc": "Returns to the previous slot after charging.", + "value": "false", + "props": {} + }, + { + "field": "explode", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Explode", + "desc": "Explodes charged anchors.", + "value": "true", + "props": {} + }, + { + "field": "explodeSwap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Explode Swap", + "desc": "None uses the held item; Swap switches hotbar.", + "value": "Swap", + "props": { + "options": "[None,Swap]" + } + }, + { + "field": "explodeSlot", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Explode Slot", + "desc": "Holds this hotbar slot while exploding (put a totem here).", + "value": "8", + "props": { + "min": "1", + "max": "9" + } + }, + { + "field": "explodeSwapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Explode Swap Back", + "desc": "Returns to the previous slot after exploding.", + "value": "false", + "props": {} + }, + { + "field": "explodeDamageTick", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Explode Damage Tick", + "desc": "Explodes only when the enemy can take damage.", + "value": "true", + "props": {} + }, + { + "field": "disableAfterExplode", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Disable After Explode", + "desc": "Turns the module off after an explode.", + "value": "false", + "props": {} + }, + { + "field": "silentAim", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Silent Aim", + "desc": "Aims server-side when charging and exploding; your camera never moves.", + "value": "", + "props": { + "options": "[Glowstone,Explode]", + "selected": "[false,false]", + "indexByOption": "{Glowstone=0, Explode=1}" + } + }, + { + "field": "silentAimFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Silent Aim FOV", + "desc": "Caps silent aim at this yaw offset (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AnchorMacro", + "name": "Anchor Macro", + "desc": "Explodes and places anchors automatically", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "onlyOwnAnchors", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only Own Anchors", + "desc": "Touches only anchors you placed.", + "value": "false", + "props": {} + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "200.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "place", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Place", + "desc": "Places anchors at your crosshair.", + "value": "true", + "props": {} + }, + { + "field": "placeBind", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Place Bind", + "desc": "Press to place an anchor at the crosshair.", + "value": "-1", + "props": { + "toggleMode": "false" + } + }, + { + "field": "placeSwap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Place Swap", + "desc": "None uses the held item; Swap switches hotbar; Silent swaps server-side.", + "value": "None", + "props": { + "options": "[None,Swap,Silent]" + } + }, + { + "field": "placeSwapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Place Swap Back", + "desc": "Returns to the previous slot after placing.", + "value": "true", + "props": {} + }, + { + "field": "glowstone", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Glowstone", + "desc": "Charges anchors with glowstone.", + "value": "true", + "props": {} + }, + { + "field": "glowstoneSwap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Glowstone Swap", + "desc": "None uses the held item; Swap switches hotbar; Silent swaps server-side.", + "value": "None", + "props": { + "options": "[None,Swap,Silent]" + } + }, + { + "field": "glowstoneSwapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Glowstone Swap Back", + "desc": "Returns to the previous slot after charging.", + "value": "true", + "props": {} + }, + { + "field": "onlyOnPlaceBind", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only On Place Bind", + "desc": "Charges only anchors placed with Place Bind.", + "value": "false", + "props": {} + }, + { + "field": "explode", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Explode", + "desc": "Explodes charged anchors.", + "value": "true", + "props": {} + }, + { + "field": "explodeSwap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Explode Swap", + "desc": "None uses the held item; Swap switches hotbar; Silent swaps server-side.", + "value": "None", + "props": { + "options": "[None,Swap,Silent]" + } + }, + { + "field": "explodeSlot", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Explode Slot", + "desc": "Holds this hotbar slot while exploding (put a totem here).", + "value": "1", + "props": { + "min": "1", + "max": "9" + } + }, + { + "field": "explodeSwapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Explode Swap Back", + "desc": "Returns to the previous slot after exploding.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AnchorPearlCatch", + "name": "Anchor Pearl Catch", + "desc": "Pre-places and detonates a respawn anchor where enemy pearls land", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "scanRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Scan Range", + "desc": "Only tracks enemy pearls thrown within this distance (blocks).", + "value": "48.0", + "props": { + "min": "16.0", + "max": "96.0" + } + }, + { + "field": "minDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min Damage", + "desc": "Only catches pearls whose landing the anchor can hit for at least this predicted damage (pre-armor HP).", + "value": "15.0", + "props": { + "min": "0.0", + "max": "40.0" + } + }, + { + "field": "maxSelfDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Self Damage", + "desc": "Skips catches whose self-damage would exceed this (HP, armor-aware).", + "value": "10.0", + "props": { + "min": "0.0", + "max": "36.0" + } + }, + { + "field": "antiSuicide", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Anti Suicide", + "desc": "Never detonates if the blast could kill you.", + "value": "true", + "props": {} + }, + { + "field": "damageTick", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Damage Tick", + "desc": "Detonates only when the target can actually take damage (no i-frames).", + "value": "true", + "props": {} + }, + { + "field": "safeAnchor", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Safe Anchor", + "desc": "Places a cover block before charging to cut the self-damage.", + "value": "true", + "props": {} + }, + { + "field": "safeBlock", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Safe Block", + "desc": "Block to place as the blast cover.", + "value": "Glowstone", + "props": { + "options": "[Glowstone,Obsidian]" + } + }, + { + "field": "rotateSilently", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Rotate Silently", + "desc": "Aims server-side via RotationManager; your camera never moves.", + "value": "true", + "props": {} + }, + { + "field": "silentAimFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Silent Aim FOV", + "desc": "Caps silent aim at this yaw offset (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to your previous slot after the catch finishes.", + "value": "true", + "props": {} + }, + { + "field": "placeDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Place Delay", + "desc": "Random ms between the anchor place and the safe-cover step.", + "value": "0.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "0.0", + "high": "40.0", + "rolled": "0.0" + } + }, + { + "field": "chargeDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Charge Delay", + "desc": "Random ms between anchor place/cover and the glowstone charge.", + "value": "20.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "20.0", + "high": "60.0", + "rolled": "20.0" + } + }, + { + "field": "detonateDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Detonate Delay", + "desc": "Random ms after they land before the detonate click.", + "value": "40.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "40.0", + "high": "120.0", + "rolled": "40.0" + } + }, + { + "field": "render", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render", + "desc": "Draws the landing spot, the anchor, and the cover, plus a landing-ETA tag.", + "value": "true", + "props": {} + }, + { + "field": "anchorColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Anchor Color", + "desc": "Color for the anchor position.", + "value": "java.awt.Color[r=255,g=90,b=60]", + "props": {} + }, + { + "field": "safeColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Safe Color", + "desc": "Color for the safe-cover position.", + "value": "java.awt.Color[r=255,g=220,b=90]", + "props": {} + }, + { + "field": "landingColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Landing Color", + "desc": "Color for the predicted pearl landing.", + "value": "java.awt.Color[r=80,g=170,b=255]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AnchorPlacer", + "name": "Anchor Placer", + "desc": "Automatically places respawn anchors for you", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "fireMode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Fire Mode", + "desc": "One-Shot auto-disables after each action; Persistent never auto-disables (use a hold-bind on the module itself for hold-to-fire).", + "value": "One-Shot", + "props": { + "options": "[One-Shot,Persistent]" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "200.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "swap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Swap", + "desc": "None uses the held item; Swap switches hotbar.", + "value": "Swap", + "props": { + "options": "[None,Swap]" + } + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to the previous slot after placing.", + "value": "false", + "props": {} + }, + { + "field": "silentAim", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent Aim", + "desc": "Aims at placement spots server-side; your camera never moves.", + "value": "false", + "props": {} + }, + { + "field": "silentAimFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Silent Aim FOV", + "desc": "Caps silent aim at this yaw offset (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.Animations", + "name": "Animations", + "desc": "Renders custom smooth swing animations", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Mode", + "desc": "Selects the swing animation style (1–3).", + "value": "1", + "props": { + "min": "1", + "max": "3" + } + }, + { + "field": "slow", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Slow", + "desc": "Slows the swing animation down.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AntiAction", + "name": "Anti Action", + "desc": "Prevents certain bad actions from interrupting your pvp", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "doubleGlowstone", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Double Glowstone", + "desc": "Blocks double-filling an anchor with glowstone.", + "value": "true", + "props": {} + }, + { + "field": "openEChest", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Open E-Chest", + "desc": "Blocks opening an ender chest while holding combat items.", + "value": "true", + "props": {} + }, + { + "field": "placeGlowstone", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Place Glowstone", + "desc": "Blocks placing glowstone anywhere but an anchor.", + "value": "true", + "props": {} + }, + { + "field": "groundFirework", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Ground Firework", + "desc": "Blocks firing a firework rocket while not gliding on elytra. Skipped if a crossbow is in your offhand.", + "value": "true", + "props": {} + }, + { + "field": "swordShield", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Sword Shield", + "desc": "Blocks hitting a shield with a sword.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AntiBot", + "name": "Anti Bot", + "desc": "Removes bots from the game", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Mode", + "desc": "Detects bots by packet order, UUID version, tab-list presence, and sustained zero-ping.", + "value": "", + "props": { + "options": "[Packet,UUID,TabList,Ping]", + "selected": "[true,true,true,true]", + "indexByOption": "{Packet=0, TabList=2, UUID=1, Ping=3}" + } + }, + { + "field": "validationThreshold", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Validation Threshold", + "desc": "Requires this many EntityPositionS2CPackets from a player before whitelisting them. 1 = current single-packet trust; 2–3 hardens against crafted single-packet Grim bypasses at the cost of a slightly longer trust window.", + "value": "1", + "props": { + "min": "1", + "max": "5" + } + }, + { + "field": "tabListGrace", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Tab-List Grace", + "desc": "Waits this long (ms) after a player spawns before rejecting them for missing a tab-list entry — avoids flagging legit players for the one tick between spawn and tab-list packets.", + "value": "500", + "props": { + "min": "0", + "max": "2000" + } + }, + { + "field": "pingGrace", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Ping Grace", + "desc": "Requires a player to hold latency == 0 for at least this long (ms) before flagging as a bot. One server keepalive cycle is enough for a real client to reply.", + "value": "3000", + "props": { + "min": "0", + "max": "10000" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.AntiResourcePack", + "name": "Anti Resource Pack", + "desc": "Prevents servers from forcing a resource pack", + "category": "Visual", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.misc.AntiTrap", + "name": "AntiTrap", + "desc": "Hides entities commonly used to bait trap-TPAs (armor stands, minecarts, etc).", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "entities", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Entities", + "desc": "Hides these entity types; armor stands and carts are the TPA-trap staples.", + "value": "", + "props": { + "options": "[Armor Stands,Minecarts,Item Frames,Boats,End Crystals]", + "selected": "[true,true,false,false,false]", + "indexByOption": "{Boats=3, Minecarts=1, End Crystals=4, Armor Stands=0, Item Frames=2}" + } + }, + { + "field": "range", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Range", + "desc": "Affects entities within this distance (blocks).", + "value": "128.0", + "props": { + "min": "0.0", + "max": "256.0" + } + }, + { + "field": "cancelSpawnPackets", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Cancel Spawn Packets", + "desc": "Drops spawn packets so trap entities never load.", + "value": "true", + "props": {} + }, + { + "field": "discardExisting", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Discard Existing", + "desc": "Removes already-loaded matching entities every tick.", + "value": "true", + "props": {} + }, + { + "field": "antiSign", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Anti Sign", + "desc": "Blocks the sign-edit screen from opening so a sign placed in your face can't trap you.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AntiWeb", + "name": "Anti Web", + "desc": "Escapes cobwebs automatically: waters the web away and scoops it back up", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Legit is a triggerbot: you aim at the web yourself and it places/scoops automatically. Blatant needs no aiming and runs fully automatic.", + "value": "Legit", + "props": { + "options": "[Legit,Blatant]" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "40.0", + "props": { + "min": "0.0", + "max": "600.0", + "low": "40.0", + "high": "90.0", + "rolled": "40.0" + } + }, + { + "field": "swap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Swap", + "desc": "None uses the held water bucket; Normal switches hotbar.", + "value": "Normal", + "props": { + "options": "[None,Normal]" + } + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to your previous slot after escaping.", + "value": "true", + "props": {} + }, + { + "field": "partialWebs", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Partial Webs", + "desc": "Also triggers when your hitbox only clips the edge of a web (block-boundary straddle), not just when you're fully in it.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoAnchor", + "name": "Auto Anchor", + "desc": "Full auto-anchor: places, covers, charges, and detonates with human-like delays", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "targetRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Target Range", + "desc": "Acquires the nearest valid player within this radius.", + "value": "10.0", + "props": { + "min": "1.0", + "max": "16.0" + } + }, + { + "field": "minDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min Damage", + "desc": "Skips candidates dealing less than this to the target.", + "value": "6.0", + "props": { + "min": "0.0", + "max": "36.0" + } + }, + { + "field": "maxSelfDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Self Damage", + "desc": "Skips candidates dealing more than this to you.", + "value": "10.0", + "props": { + "min": "0.0", + "max": "36.0" + } + }, + { + "field": "antiSuicide", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Anti Suicide", + "desc": "Never detonates if self damage would kill you.", + "value": "true", + "props": {} + }, + { + "field": "safeAnchor", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Safe Anchor", + "desc": "Places a cover block to reduce self-damage before charging.", + "value": "true", + "props": {} + }, + { + "field": "safeBlock", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Safe Block", + "desc": "Block to place as the blast cover.", + "value": "Glowstone", + "props": { + "options": "[Glowstone,Obsidian]" + } + }, + { + "field": "rotateSilently", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Rotate Silently", + "desc": "Server-side rotations via RotationManager; camera never moves.", + "value": "true", + "props": {} + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to the previous slot after the sequence idles.", + "value": "true", + "props": {} + }, + { + "field": "placeDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Place Delay", + "desc": "Random ms between the anchor place and the safe-cover step.", + "value": "0.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "0.0", + "high": "40.0", + "rolled": "0.0" + } + }, + { + "field": "chargeDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Charge Delay", + "desc": "Random ms between anchor place/cover and glowstone charge.", + "value": "20.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "20.0", + "high": "60.0", + "rolled": "20.0" + } + }, + { + "field": "detonateDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Detonate Delay", + "desc": "Random ms between charge and detonate.", + "value": "20.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "20.0", + "high": "60.0", + "rolled": "20.0" + } + }, + { + "field": "onlyExisting", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only Existing", + "desc": "Never place anchors — only detonate existing ones.", + "value": "false", + "props": {} + }, + { + "field": "render", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render", + "desc": "Draw boxes for target + candidate.", + "value": "true", + "props": {} + }, + { + "field": "anchorColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Anchor Color", + "desc": "Color for the picked anchor position.", + "value": "java.awt.Color[r=255,g=90,b=60]", + "props": {} + }, + { + "field": "safeColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Safe Color", + "desc": "Color for the safe-cover position.", + "value": "java.awt.Color[r=255,g=220,b=90]", + "props": {} + }, + { + "field": "targetColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Target Color", + "desc": "Color for the target highlight.", + "value": "java.awt.Color[r=255,g=80,b=80]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.AutoArmor", + "name": "Auto Armor", + "desc": "Automatically equips the best armor from your inventory", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Always swaps anytime; Inventory only in the screen; Keybind only on key.", + "value": "Always", + "props": { + "options": "[Always,Inventory,Keybind]" + } + }, + { + "field": "swapKey", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Key", + "desc": "Hold to allow armor swaps (Keybind mode).", + "value": "-1", + "props": { + "toggleMode": "false" + } + }, + { + "field": "avoidCursed", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Avoid Cursed", + "desc": "Skips armor with Curse of Binding or Vanishing.", + "value": "true", + "props": {} + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Delay", + "desc": "Waits at least this long between swaps (ms).", + "value": "100", + "props": { + "min": "0", + "max": "1000" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoCart", + "name": "Auto Cart", + "desc": "Automatically places minecarts at your feet for cart-mode combat", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "switchDelay", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Switch Delay", + "desc": "Waits this many ticks between rail, cart, and weapon steps.", + "value": "2", + "props": { + "min": "0", + "max": "20" + } + }, + { + "field": "bowBackDelay", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Bow Back Delay", + "desc": "Waits this many ticks before swapping back after a post-shot placement.", + "value": "0", + "props": { + "min": "0", + "max": "20" + } + }, + { + "field": "minCharge", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Min Charge", + "desc": "Charges the bow this many ticks before the trigger releases. 20 = full.", + "value": "1", + "props": { + "min": "1", + "max": "20" + } + }, + { + "field": "arc", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Arc", + "desc": "Shot curvature for trigger shots: 0 = flattest arc that reaches, 100 = highest lob. Only picks among arcs that still land on the target.", + "value": "20", + "props": { + "min": "0", + "max": "100" + } + }, + { + "field": "triggerBind", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Trigger Bind", + "desc": "Press to place rail and cart, then fire your bow or crossbow.", + "value": "-1", + "props": { + "toggleMode": "false" + } + }, + { + "field": "overload", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Overload", + "desc": "Stacks this many TNT carts on the rail when Overload Bind is used. 1 = off.", + "value": "1", + "props": { + "min": "1", + "max": "4" + } + }, + { + "field": "overloadBind", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Overload Bind", + "desc": "Press to fire toward your aim, then stack the carts at the predicted landing while the arrow is airborne. Or HOLD it while pressing Trigger Bind / while shooting to stack that placement.", + "value": "-1", + "props": { + "toggleMode": "false" + } + }, + { + "field": "overloadDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Overload Delay", + "desc": "Random wait in this range (ms) between stacked carts. Re-rolled per cart. Raise if your server flags fast placements.", + "value": "50.0", + "props": { + "min": "0.0", + "max": "1000.0", + "low": "50.0", + "high": "150.0", + "rolled": "50.0" + } + }, + { + "field": "overloadHotbarOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Overload Hotbar Only", + "desc": "Stacks only from the hotbar; never pulls carts from your main inventory mid-stack.", + "value": "false", + "props": {} + }, + { + "field": "placeMode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Place Mode", + "desc": "Trajectory places at the predicted arrow landing; Crosshair places at your aim.", + "value": "Trajectory", + "props": { + "options": "[Trajectory,Crosshair]" + } + }, + { + "field": "onBowShot", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "On Bow Shot", + "desc": "Places rail and cart at the predicted landing after you shoot.", + "value": "true", + "props": {} + }, + { + "field": "autoHitPlaced", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Auto Hit Placed", + "desc": "Aims at the nearest placed cart and releases at the perfect moment.", + "value": "true", + "props": {} + }, + { + "field": "autoHitRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Auto Hit Range", + "desc": "Scans for placed TNT carts within this distance (blocks).", + "value": "24.0", + "props": { + "min": "5.0", + "max": "50.0" + } + }, + { + "field": "autoHitMinCharge", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Auto Hit Min Charge", + "desc": "Requires this bow charge before auto-release (ticks). 20 = full.", + "value": "20", + "props": { + "min": "10", + "max": "20" + } + }, + { + "field": "switchBackToBow", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Switch Back To Bow", + "desc": "Returns to the bow slot after a passive placement.", + "value": "true", + "props": {} + }, + { + "field": "safeBlocks", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Safe Blocks", + "desc": "Places a block between you and the cart to soak damage.", + "value": "true", + "props": {} + }, + { + "field": "silentAim", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent Aim", + "desc": "Aims at the landing block server-side; your camera never moves.", + "value": "true", + "props": {} + }, + { + "field": "silentAimFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Silent Aim FOV", + "desc": "Caps silent aim at this yaw offset per tick (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + }, + { + "field": "renderPath", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render Path", + "desc": "Highlights the predicted landing block while a bow is drawn.", + "value": "true", + "props": {} + }, + { + "field": "renderColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Render Color", + "desc": "Sets the landing highlight color.", + "value": "java.awt.Color[r=131,g=118,b=252]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.AutoClicker", + "name": "Auto Clicker", + "desc": "Automatically clicks your mouse", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Ghost clicks humanized; Interval clicks at a fixed rate for farms.", + "value": "Ghost", + "props": { + "options": "[Ghost,Interval]" + } + }, + { + "field": "clickButton", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Click", + "desc": "Clicks the left or right mouse button (Interval mode only; Ghost is always left).", + "value": "Left", + "props": { + "options": "[Left,Right]" + } + }, + { + "field": "interval", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Interval", + "desc": "Waits this long between clicks (ms).", + "value": "100", + "props": { + "min": "0", + "max": "10000" + } + }, + { + "field": "minCps", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min CPS", + "desc": "Lowest clicks per second in Ghost mode.", + "value": "5.0", + "props": { + "min": "0.0", + "max": "25.0" + } + }, + { + "field": "maxCps", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max CPS", + "desc": "Highest clicks per second in Ghost mode.", + "value": "15.0", + "props": { + "min": "0.0", + "max": "25.0" + } + }, + { + "field": "stopOnBlock", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Stop On Block", + "desc": "Stops clicking while looking at a block.", + "value": "false", + "props": {} + }, + { + "field": "weaponOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Weapon Only", + "desc": "Only clicks while holding a sword or axe.", + "value": "false", + "props": {} + }, + { + "field": "reactionTime", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Reaction Time", + "desc": "Average delay before the first click on a new target (ms). 0 = instant.", + "value": "170.0", + "props": { + "min": "0.0", + "max": "400.0" + } + }, + { + "field": "reactionJitter", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Reaction Jitter", + "desc": "Random spread applied to the reaction delay (ms).", + "value": "25.0", + "props": { + "min": "0.0", + "max": "100.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoCrystal", + "name": "Auto Crystal", + "desc": "Automatically places and explodes crystals", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "inAir", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "In Air", + "desc": "Keeps placing while airborne instead of timing out.", + "value": "false", + "props": {} + }, + { + "field": "damageTick", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Damage Tick", + "desc": "Breaks crystals only when they deal damage.", + "value": "false", + "props": {} + }, + { + "field": "pauseOnKill", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Pause On Kill", + "desc": "Pauses while a dead body is nearby.", + "value": "false", + "props": {} + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "200.0", + "low": "30.0", + "high": "130.0", + "rolled": "30.0" + } + }, + { + "field": "autoSwitch", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Switch", + "desc": "Switches to crystals when the module enables.", + "value": "false", + "props": {} + }, + { + "field": "headBob", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Head Bob", + "desc": "Updates your pitch server-side (aimed at the hitbox's nearest point) to break crystals above or below.", + "value": "false", + "props": {} + }, + { + "field": "render", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render", + "desc": "Outlines the crystal being targeted.", + "value": "true", + "props": {} + }, + { + "field": "color", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Color", + "desc": "Sets the crystal outline color.", + "value": "java.awt.Color[r=131,g=118,b=252]", + "props": {} + }, + { + "field": "alwaysBreakLast", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Always Break Last", + "desc": "When disabled, finishes breaking the crystal under your crosshair before turning off.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoDrain", + "name": "Auto Drain", + "desc": "Automatically collects water/lava with a bucket", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Legit drains your crosshair target; Silent Aim finds nearby liquid itself.", + "value": "Legit", + "props": { + "options": "[Legit,Silent Aim]" + } + }, + { + "field": "liquid", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Liquid", + "desc": "Drains these liquid types.", + "value": "", + "props": { + "options": "[Water,Lava,Water On Web,Lava On Web]", + "selected": "[true,true,true,true]", + "indexByOption": "{Water=0, Lava On Web=3, Lava=1, Water On Web=2}" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "50.0", + "props": { + "min": "0.0", + "max": "600.0", + "low": "50.0", + "high": "100.0", + "rolled": "50.0" + } + }, + { + "field": "swap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Swap", + "desc": "Switches to an empty bucket when targeting liquid.", + "value": "None", + "props": { + "options": "[None,Normal]" + } + }, + { + "field": "fallbackToCobweb", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Fallback to Cobweb", + "desc": "Places cobweb on the liquid when no empty bucket is left.", + "value": "true", + "props": {} + }, + { + "field": "interact", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Interact", + "desc": "Scoops the liquid automatically after swapping.", + "value": "true", + "props": {} + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to the previous slot after collecting.", + "value": "true", + "props": {} + }, + { + "field": "silentAimFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Silent Aim FOV", + "desc": "Caps silent aim at this yaw offset (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoElytra", + "name": "Auto Elytra", + "desc": "Automatically puts on an elytra (and rockets)", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "requireLand", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Require Land", + "desc": "Arms only while you are on the ground.", + "value": "true", + "props": {} + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "50.0", + "props": { + "min": "0.0", + "max": "300.0", + "low": "50.0", + "high": "100.0", + "rolled": "50.0" + } + }, + { + "field": "firework", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Firework", + "desc": "Boosts with fireworks after takeoff.", + "value": "true", + "props": {} + }, + { + "field": "autoDisable", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Auto Disable", + "desc": "Turns the module off after a set flight time.", + "value": "true", + "props": {} + }, + { + "field": "flyTime", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Fly Time", + "desc": "Flies this long before turning off (ms).", + "value": "300.0", + "props": { + "min": "0.0", + "max": "1000.0" + } + }, + { + "field": "silentInventory", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent Inventory", + "desc": "Equips without opening your inventory screen.", + "value": "false", + "props": {} + }, + { + "field": "autoJump", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Auto Jump", + "desc": "Jumps to start the glide.", + "value": "false", + "props": {} + }, + { + "field": "fireworkOnSpace", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Firework on Space", + "desc": "Fires a firework rocket when you press Space while gliding.", + "value": "false", + "props": {} + }, + { + "field": "spaceCooldown", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Space Cooldown", + "desc": "Random ms between space-triggered rockets. Prevents Grim rapid-interact flags at very low values.", + "value": "400.0", + "props": { + "min": "0.0", + "max": "3000.0", + "low": "400.0", + "high": "600.0", + "rolled": "400.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoHitCrystal", + "name": "Auto Hit Crystal", + "desc": "Automatically hit crystals and attempts to d-tap them by syncing with enemy damage ticks", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "stopInAir", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Stop In Air", + "desc": "Pauses while you are airborne.", + "value": "false", + "props": {} + }, + { + "field": "swordOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Sword Only", + "desc": "Runs only while holding a sword.", + "value": "false", + "props": {} + }, + { + "field": "pauseOnKill", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Pause On Kill", + "desc": "Pauses while a dead body is nearby.", + "value": "false", + "props": {} + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "200.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "perfectTiming", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Perfect Timing", + "desc": "Syncs crystal breaks to the enemy's damage ticks.", + "value": "false", + "props": {} + }, + { + "field": "crystalMode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Crystal", + "desc": "Places one crystal, two, none, or keeps placing (Infinite).", + "value": "Single Tap", + "props": { + "options": "[None,Single Tap,Double Tap,Infinite]" + } + }, + { + "field": "crystalDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Crystal Delay", + "desc": "Waits a random time in this range between crystal placements (ms).", + "value": "50.0", + "props": { + "min": "0.0", + "max": "200.0", + "low": "50.0", + "high": "150.0", + "rolled": "50.0" + } + }, + { + "field": "silentRotations", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent Rotations", + "desc": "Attacks crystals with server-side rotations; your camera never moves.", + "value": "false", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.movement.AutoJumpReset", + "name": "Auto Jump Reset", + "desc": "Automatically jumps when taking knockback to reduce knockback", + "category": "Movement", + "enabled": false, + "settings": [ + { + "field": "chance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Chance", + "desc": "Rolls this chance on each knockback jump-reset (%).", + "value": "50.0", + "props": { + "min": "0.0", + "max": "100.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.AutoLoot", + "name": "Auto Loot", + "desc": "Helps with looting items from the ground", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "300.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "minTotems", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Min Totems", + "desc": "Keeps this many totems and drops the rest.", + "value": "1", + "props": { + "min": "1", + "max": "20" + } + }, + { + "field": "minPearls", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Min Pearls", + "desc": "Keeps this many pearl stacks and drops the rest.", + "value": "5", + "props": { + "min": "1", + "max": "10" + } + }, + { + "field": "lootKey", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Key", + "desc": "Press to run the loot routine.", + "value": "-1", + "props": { + "toggleMode": "false" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.AutoMace", + "name": "Auto Mace", + "desc": "Swaps the mace in your hand with a different item", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "horizontalTargetDist", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Horizontal Target Dist", + "desc": "Swaps only with a target within this horizontal distance (blocks).", + "value": "5.0", + "props": { + "min": "0.0", + "max": "6.0" + } + }, + { + "field": "minFallDistance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min Fall Distance", + "desc": "Swaps to the mace only after falling this far (blocks).", + "value": "10.0", + "props": { + "min": "0.0", + "max": "100.0" + } + }, + { + "field": "stunSlam", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Stun Slam", + "desc": "Hits with the axe to stun, then maces.", + "value": "false", + "props": {} + }, + { + "field": "stunSlamMode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Stun Slam Mode", + "desc": "Chance fires on a random roll; Hold Key fires only while the bind is held.", + "value": "Chance", + "props": { + "options": "[Chance,Hold Key]" + } + }, + { + "field": "stunSlamBind", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Stun Slam Bind", + "desc": "Hold to allow stun slams (Hold Key mode).", + "value": "-1", + "props": { + "toggleMode": "false" + } + }, + { + "field": "chance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Chance", + "desc": "Rolls this chance on each stun slam (%).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "100.0" + } + }, + { + "field": "scaleWithFall", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Scale With Fall", + "desc": "Scales the chance with fall distance; big drops fire more often.", + "value": "false", + "props": {} + }, + { + "field": "stunMinFall", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Stun Min Fall", + "desc": "Stun-slams only after falling this far (blocks). 0 = module minimum.", + "value": "0.0", + "props": { + "min": "0.0", + "max": "100.0" + } + }, + { + "field": "axeHoldDelay", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Axe Hold Delay", + "desc": "Holds the axe visibly this many ticks before hitting. 2–4 reads as legit.", + "value": "0", + "props": { + "min": "0", + "max": "10" + } + }, + { + "field": "breachCheck", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Breach Check", + "desc": "Swaps to Breach instead of Density on low fall distance.", + "value": "false", + "props": {} + }, + { + "field": "trigger", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Trigger", + "desc": "Attacks with the mace automatically.", + "value": "true", + "props": {} + }, + { + "field": "silentAim", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent Aim", + "desc": "Aims at the target server-side; your camera never moves.", + "value": "false", + "props": {} + }, + { + "field": "maxYaw", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Yaw", + "desc": "Caps silent aim at this yaw offset from your view (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + }, + { + "field": "takeoffElytra", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Takeoff Elytra", + "desc": "Unequips the elytra when diving on a maceable target.", + "value": "false", + "props": {} + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to the previous slot after the mace hit lands.", + "value": "false", + "props": {} + }, + { + "field": "swapBackDelay", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Swap Back Delay", + "desc": "Waits this long after the hit before swapping back (ms).", + "value": "50", + "props": { + "min": "0", + "max": "500" + } + }, + { + "field": "expandHitbox", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Expand Hitbox", + "desc": "Grows the target hitbox for the hit. Easier hits, higher flag risk.", + "value": "false", + "props": {} + }, + { + "field": "hitboxExpansion", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Hitbox Expansion", + "desc": "Expands the target hitbox by this amount (blocks).", + "value": "0.5", + "props": { + "min": "0.0", + "max": "5.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoObbyCrystal", + "name": "Auto Obby Crystal", + "desc": "Full auto-crystal with real damage predictions, silent aim, and safe break modes", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "targetRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Target Range", + "desc": "Acquires the nearest valid player within this radius.", + "value": "10.0", + "props": { + "min": "1.0", + "max": "16.0" + } + }, + { + "field": "minDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min Damage", + "desc": "Skips candidates dealing less than this to the target.", + "value": "6.0", + "props": { + "min": "0.0", + "max": "36.0" + } + }, + { + "field": "maxSelfDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Self Damage", + "desc": "Skips candidates dealing more than this to you.", + "value": "8.0", + "props": { + "min": "0.0", + "max": "36.0" + } + }, + { + "field": "antiSuicide", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Anti Suicide", + "desc": "Never places if self damage would kill you (health+absorption).", + "value": "true", + "props": {} + }, + { + "field": "breakMode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Break Mode", + "desc": "Manual never attacks; Attack uses the current slot; SwapAttack swaps to Swap Back Slot first.", + "value": "Attack", + "props": { + "options": "[Manual,Attack,SwapAttack]" + } + }, + { + "field": "rotateSilently", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Rotate Silently", + "desc": "Server-side rotations via RotationManager; camera never moves.", + "value": "true", + "props": {} + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to the previous slot after the sequence idles.", + "value": "true", + "props": {} + }, + { + "field": "render", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render", + "desc": "Draw boxes showing what the module is calculating and placing.", + "value": "true", + "props": {} + }, + { + "field": "advanced", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Advanced", + "desc": "Show fine-grained tuning knobs (delays, prediction, momentum, colors, thresholds).", + "value": "false", + "props": {} + }, + { + "field": "maxTargetDistance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Target Distance", + "desc": "Aborts the sequence if the target moves beyond this.", + "value": "12.0", + "props": { + "min": "1.0", + "max": "20.0" + } + }, + { + "field": "placeDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Place Delay", + "desc": "Random ms between obsidian place and crystal place.", + "value": "60.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "60.0", + "high": "120.0", + "rolled": "60.0" + } + }, + { + "field": "breakDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Break Delay", + "desc": "Random ms between crystal place and break, and between loop cycles.", + "value": "60.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "60.0", + "high": "140.0", + "rolled": "60.0" + } + }, + { + "field": "firstActionDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "First Action Delay", + "desc": "Random ms reaction delay before the FIRST action of a freshly acquired sequence.", + "value": "40.0", + "props": { + "min": "0.0", + "max": "200.0", + "low": "40.0", + "high": "80.0", + "rolled": "40.0" + } + }, + { + "field": "midSequenceMovementTolerance", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Mid Sequence Movement Tolerance", + "desc": "Blocks of target drift allowed once obsidian is committed.", + "value": "3", + "props": { + "min": "1", + "max": "8" + } + }, + { + "field": "midSequenceDamageTolerance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Mid Sequence Damage Tolerance", + "desc": "Multiplier on Min Damage for the mid-sequence re-gate.", + "value": "0.6", + "props": { + "min": "0.0", + "max": "1.0" + } + }, + { + "field": "debugAborts", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Debug Aborts", + "desc": "Notify every mid-sequence abort with its stage and reason.", + "value": "false", + "props": {} + }, + { + "field": "fastSwap", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Fast Swap", + "desc": "Swap and place in the same tick instead of burning a tick per swap. Halves obsidian->crystal latency; wire order stays vanilla.", + "value": "true", + "props": {} + }, + { + "field": "silentAimFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Silent Aim FOV", + "desc": "Caps silent rotation yaw offset from real look.", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + }, + { + "field": "momentumMode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Momentum Mode", + "desc": "Biases placement so blast knockback pushes the target this way.", + "value": "None", + "props": { + "options": "[None,Toward Hole,Away From Self,Toward Center]" + } + }, + { + "field": "momentumWeight", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Momentum Weight", + "desc": "Multiplier on the momentum bonus in scoring.", + "value": "1.0", + "props": { + "min": "0.0", + "max": "5.0" + } + }, + { + "field": "yawChangeWeight", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Yaw Change Weight", + "desc": "Score penalty per degree of yaw change from your current look.", + "value": "0.05", + "props": { + "min": "0.0", + "max": "1.0" + } + }, + { + "field": "yawChangeCap", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Yaw Change Cap", + "desc": "Yaw delta (deg) at which the penalty stops growing.", + "value": "60.0", + "props": { + "min": "0.0", + "max": "180.0" + } + }, + { + "field": "prefer1x1", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Prefer 1x1", + "desc": "Bonus for bases horizontally adjacent to the target's feet (face-place style).", + "value": "true", + "props": {} + }, + { + "field": "preferExistingObby", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Prefer Existing Obby", + "desc": "Score bonus for placing crystals on existing obsidian/bedrock.", + "value": "true", + "props": {} + }, + { + "field": "onlyExistingObby", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only Existing Obby", + "desc": "If on, never places obsidian — only crystals on already-placed obsidian/bedrock.", + "value": "false", + "props": {} + }, + { + "field": "pathLookahead", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Path Lookahead", + "desc": "Skip candidates where the target's velocity-extrapolated hitbox intersects the placement.", + "value": "3", + "props": { + "min": "0", + "max": "10" + } + }, + { + "field": "predictTarget", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Predict Target", + "desc": "Lead moving targets by their velocity so placements land where they will be.", + "value": "true", + "props": {} + }, + { + "field": "predictTicks", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Predict Ticks", + "desc": "Ticks of velocity to extrapolate.", + "value": "3.0", + "props": { + "min": "0.0", + "max": "10.0" + } + }, + { + "field": "predictPingBonus", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Predict Ping Bonus", + "desc": "Multiplier on ping-derived lead ticks (ping_ms / 50ms).", + "value": "1.0", + "props": { + "min": "0.0", + "max": "2.0" + } + }, + { + "field": "predictMaxOffset", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Predict Max Offset", + "desc": "Caps the predicted offset (blocks).", + "value": "3.0", + "props": { + "min": "0.0", + "max": "8.0" + } + }, + { + "field": "predictSelf", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Predict Self", + "desc": "Extrapolate your own eye position forward.", + "value": "true", + "props": {} + }, + { + "field": "selfPredictTicks", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Self Predict Ticks", + "desc": "Ticks of self velocity to extrapolate.", + "value": "2.0", + "props": { + "min": "0.0", + "max": "8.0" + } + }, + { + "field": "selfPredictMaxOffset", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Self Predict Max Offset", + "desc": "Caps the predicted self offset (blocks).", + "value": "2.0", + "props": { + "min": "0.0", + "max": "6.0" + } + }, + { + "field": "reach", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Reach", + "desc": "Attacks within this eye-to-hitbox distance (blocks). >3.0 flags Grim.", + "value": "2.95", + "props": { + "min": "1.0", + "max": "3.0" + } + }, + { + "field": "renderTarget", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render Target", + "desc": "Highlight the current target.", + "value": "true", + "props": {} + }, + { + "field": "renderPlacement", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render Placement", + "desc": "Box on the picked obsidian pos + crystal spawn pos.", + "value": "true", + "props": {} + }, + { + "field": "renderCandidates", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render Candidates", + "desc": "Ghost boxes on all viable candidate spots during search.", + "value": "true", + "props": {} + }, + { + "field": "maxCandidates", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Max Candidates", + "desc": "Cap how many candidate boxes to draw.", + "value": "8", + "props": { + "min": "1", + "max": "30" + } + }, + { + "field": "obsidianColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Obsidian Color", + "desc": "Color for the obsidian placement box.", + "value": "java.awt.Color[r=150,g=60,b=220]", + "props": {} + }, + { + "field": "crystalColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Crystal Color", + "desc": "Color for the crystal spawn box.", + "value": "java.awt.Color[r=230,g=120,b=230]", + "props": {} + }, + { + "field": "targetColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Target Color", + "desc": "Color for the target highlight.", + "value": "java.awt.Color[r=255,g=80,b=80]", + "props": {} + }, + { + "field": "candidateColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Candidate Color", + "desc": "Color for candidate ghost boxes.", + "value": "java.awt.Color[r=120,g=200,b=255]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.AutoPearlCatch", + "name": "Auto Pearl Catch", + "desc": "Automatically throws a pearl and a windcharge up in the sky", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "windChargeDelay", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Wind Charge Delay", + "desc": "Waits this long after the pearl before the wind charge (ms).", + "value": "120.0", + "props": { + "min": "50.0", + "max": "300.0" + } + }, + { + "field": "movingDelay", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Moving Delay", + "desc": "Uses this shorter wait instead while you are moving (ms).", + "value": "80.0", + "props": { + "min": "50.0", + "max": "300.0" + } + }, + { + "field": "legitRotate", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Legit Rotate", + "desc": "Moves your real camera instead of snapping server-side.", + "value": "false", + "props": {} + }, + { + "field": "smoothing", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Smoothing", + "desc": "Scales the camera rotation speed (x). Lower = slower, more human.", + "value": "0.5", + "props": { + "min": "0.1", + "max": "2.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.AutoPickaxe", + "name": "Auto Pickaxe", + "desc": "Automatically switches to a pickaxe in your hotbar when mining the block below you", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "onlyWhenMining", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only When Mining", + "desc": "Switches only while you are mining a block.", + "value": "true", + "props": {} + }, + { + "field": "fromInventory", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "From Inventory", + "desc": "Also pull a pickaxe out of your main inventory (silent SWAP).", + "value": "true", + "props": {} + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "300.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.AutoPot", + "name": "Auto Pot", + "desc": "Automatically pots for you", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Auto throws at low health; While Holding throws only with a potion in hand.", + "value": "Auto", + "props": { + "options": "[Auto,While Holding]" + } + }, + { + "field": "health", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Health", + "desc": "Throws a heal pot at or below this health (HP, not %).", + "value": "10.0", + "props": { + "min": "0.1", + "max": "20.0" + } + }, + { + "field": "pitch", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Pitch", + "desc": "Throws the potion at this pitch (degrees).", + "value": "70.0", + "props": { + "min": "50.0", + "max": "90.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.AutoReMace", + "name": "Auto Re Mace", + "desc": "Automatically re-maces someone after you mace them using elytra mace", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "rotationSmoothing", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Rotation Smoothing", + "desc": "Scales the re-aim rotation speed (x). Lower = slower, more human.", + "value": "0.5", + "props": { + "min": "0.0", + "max": "2.0" + } + }, + { + "field": "aboveThem", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Above Them", + "desc": "Aims this far above the target when re-macing (degrees).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "100.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoSafeCart", + "name": "Auto Safe Cart", + "desc": "Automatically covers threatening minecarts with blocks", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Silent scans for threatening carts and covers them itself; Legit only covers the spot you are looking at.", + "value": "Silent", + "props": { + "options": "[Silent,Legit]" + } + }, + { + "field": "protect", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Protect", + "desc": "Which carts get covered: Only Self covers carts you placed, Only Enemy covers carts other players placed.", + "value": "Both", + "props": { + "options": "[Both,Only Self,Only Enemy]" + } + }, + { + "field": "minDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min Damage", + "desc": "Covers only carts that would deal at least this damage (HP).", + "value": "5.0", + "props": { + "min": "0.0", + "max": "30.0" + } + }, + { + "field": "maxDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Damage", + "desc": "Stops covering once the damage left after placed blocks is at most this (HP).", + "value": "5.0", + "props": { + "min": "0.0", + "max": "30.0" + } + }, + { + "field": "blocks", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Blocks", + "desc": "Blocks the cover can be built from; the first one found in your hotbar is used. Logs and Planks match every wood type.", + "value": "", + "props": { + "options": "[Logs,Planks,Cobblestone,Obsidian]", + "selected": "[true,true,true,true]", + "indexByOption": "{Obsidian=3, Planks=1, Logs=0, Cobblestone=2}" + } + }, + { + "field": "maxBlocks", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Max Blocks", + "desc": "Caps how many blocks are placed against one cart; a second block is placed when the first does not soak enough damage.", + "value": "2", + "props": { + "min": "1", + "max": "4" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range (ms) when a cart first threatens you and again between blocks. Re-rolled per placement so back-to-back covers don't share one rhythm.", + "value": "80.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "80.0", + "high": "160.0", + "rolled": "80.0" + } + }, + { + "field": "swap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Swap", + "desc": "None uses the held item; Normal switches hotbar; Silent swaps server-side.", + "value": "Normal", + "props": { + "options": "[None,Normal,Silent]" + } + }, + { + "field": "range", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Range", + "desc": "Scans for TNT carts within this distance (blocks).", + "value": "10.0", + "props": { + "min": "3.0", + "max": "15.0" + } + }, + { + "field": "fov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "FOV", + "desc": "Caps rotations at this yaw offset (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoShield", + "name": "Auto Shield", + "desc": "Automatically blocks with your shield in combat", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "targetDistance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Target Distance", + "desc": "Blocks with a target within this distance (blocks).", + "value": "5.0", + "props": { + "min": "1.0", + "max": "10.0" + } + }, + { + "field": "fov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "FOV", + "desc": "Blocks with a target within this view angle (degrees).", + "value": "90.0", + "props": { + "min": "0.0", + "max": "180.0" + } + }, + { + "field": "movementThreshold", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Movement Threshold", + "desc": "Counts the target as moving above this speed.", + "value": "0.1", + "props": { + "min": "0.0", + "max": "10.0" + } + }, + { + "field": "swordCooldownCorrection", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Sword Cooldown Correction", + "desc": "Counts your sword swing as recovered this much earlier (%).", + "value": "10.0", + "props": { + "min": "0.0", + "max": "30.0" + } + }, + { + "field": "disableTracker", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Disable Tracker", + "desc": "Detects shield-disable (axe crit) and stops holding useKey for the ~5s server-side lockout so incoming crystal damage isn't 'using-item'-reduced and same-tick swaps aren't blocked.", + "value": "true", + "props": {} + }, + { + "field": "swapToSword", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap To Sword", + "desc": "Silently switch to a hotbar sword when the shield gets disabled so the dead time becomes offensive time.", + "value": "false", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoShieldBreaker", + "name": "Auto Shield Breaker", + "desc": "Automatically breaks shields by silently attacking them", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Mode to use to break shields", + "value": "Automatic", + "props": { + "options": "[On Hit,Automatic]" + } + }, + { + "field": "stun", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Stun", + "desc": "Double hits to hit the enemy up after breaking their shield", + "value": "false", + "props": {} + }, + { + "field": "chance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Chance", + "desc": "Chance to break the shield on each attempt", + "value": "100.0", + "props": { + "min": "0.0", + "max": "100.0" + } + }, + { + "field": "fromInventory", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "From Inventory", + "desc": "Also pull an axe out of your main inventory (silent SWAP).", + "value": "true", + "props": {} + }, + { + "field": "hitDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Hit Delay", + "desc": "Randomized delay window between swapping to the axe and delivering the hit (ms).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "300.0", + "low": "100.0", + "high": "150.0", + "rolled": "100.0" + } + }, + { + "field": "breakCooldown", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Break Cooldown", + "desc": "Waits a random time in this range between consecutive shield breaks (ms).", + "value": "900.0", + "props": { + "min": "0.0", + "max": "3000.0", + "low": "900.0", + "high": "1200.0", + "rolled": "900.0" + } + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Silently swaps to the axe to break the shield", + "value": "true", + "props": {} + }, + { + "field": "silentAim", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent Aim", + "desc": "Silently swaps to the axe to break the shield", + "value": "false", + "props": {} + }, + { + "field": "maxYaw", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Yaw", + "desc": "The maximum difference in yaw the player can rotate to", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.movement.AutoShortPearl", + "name": "Auto Short Pearl", + "desc": "Basically anti knockback", + "category": "Movement", + "enabled": false, + "settings": [ + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range before the pearl throw (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "300.0", + "low": "30.0", + "high": "70.0", + "rolled": "30.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.AutoText", + "name": "Auto Text", + "desc": "Automatically sends a chat message", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "text", + "setClass": "dev.zprestige.prestige.TextSetting", + "name": "Text", + "desc": "Sends this chat text or command; start with / for commands.", + "value": "/kit 1", + "props": { + "placeholder": "Text or Command (/...)" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.AutoTool", + "name": "Auto Tool", + "desc": "Automatically swaps to the best tool possible", + "category": "Misc", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.combat.AutoTotem", + "name": "Auto Totem", + "desc": "Automatically re-totems when popped", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Crystal runs the full inventory routine; SMP swaps at low health.", + "value": "Crystal", + "props": { + "options": "[Crystal,SMP]" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "dynamicDelay", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Dynamic Delay (BETA)", + "desc": "Shortens the delay when you are in danger.", + "value": "false", + "props": {} + }, + { + "field": "measures", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Measures", + "desc": "Judges danger by health, distance, Y level, threats, and damage rate.", + "value": "", + "props": { + "options": "[Health,Distance,Y Level,Nearby Threats,Recent Damage Rate]", + "selected": "[true,true,true,true,true]", + "indexByOption": "{Health=0, Nearby Threats=3, Y Level=2, Recent Damage Rate=4, Distance=1}" + } + }, + { + "field": "actions", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Actions", + "desc": "Picks which steps of the totem routine run.", + "value": "", + "props": { + "options": "[Double Hand,Open Inventory,Refill Hotbar Totem,Switch,Close Inventory]", + "selected": "[true,true,true,true,true]", + "indexByOption": "{Close Inventory=4, Switch=3, Refill Hotbar Totem=2, Open Inventory=1, Double Hand=0}" + } + }, + { + "field": "totemSlot", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Totem Slot", + "desc": "Puts the totem in this hotbar slot.", + "value": "8", + "props": { + "min": "1", + "max": "9" + } + }, + { + "field": "legit", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Legit", + "desc": "Switches only while hovering over a totem.", + "value": "false", + "props": {} + }, + { + "field": "hoverDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Hover Delay", + "desc": "Waits a random time in this range after hovering (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "300.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "legitMouseMovement", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Legit Mouse Movement (BETA)", + "desc": "Moves your real mouse to the totem in the inventory.", + "value": "false", + "props": {} + }, + { + "field": "mouseSpeed", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Mouse Speed", + "desc": "Sets the mouse movement speed range (x).", + "value": "5.0", + "props": { + "min": "1.0", + "max": "20.0", + "low": "5.0", + "high": "10.0", + "rolled": "5.0" + } + }, + { + "field": "mouseMoveDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Mouse Move Delay", + "desc": "Waits a random time in this range after opening the inventory (ms).", + "value": "50.0", + "props": { + "min": "1.0", + "max": "200.0", + "low": "50.0", + "high": "100.0", + "rolled": "50.0" + } + }, + { + "field": "extra", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Extra", + "desc": "Restricts actions to specific situations: GUI, double pop, totem guard. Pause Interactions blocks world-interact packets during the routine (anti TotemGuard F).", + "value": "", + "props": { + "options": "[Double Hand On GUI,Only Inventory on Both Pops,Anti Totem Guard Test,Pause Interactions]", + "selected": "[false,false,true,true]", + "indexByOption": "{Only Inventory on Both Pops=1, Pause Interactions=3, Double Hand On GUI=0, Anti Totem Guard Test=2}" + } + }, + { + "field": "health", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Health", + "desc": "Swaps to a totem at or below this health (HP).", + "value": "5.0", + "props": { + "min": "1.0", + "max": "20.0" + } + }, + { + "field": "waitWhenShielding", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Wait When Shielding", + "desc": "Waits until you stop shielding before switching.", + "value": "true", + "props": {} + }, + { + "field": "antiMace", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Anti Mace", + "desc": "Switches to a totem when an enemy dives to mace you.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.Backtrack", + "name": "Backtrack", + "desc": "Backtracks packets for the target entity", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "range", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Range", + "desc": "Backtracks targets inside this distance band (blocks).", + "value": "1.0", + "props": { + "min": "0.0", + "max": "10.0", + "low": "1.0", + "high": "5.0", + "rolled": "1.0" + } + }, + { + "field": "latency", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Latency", + "desc": "Holds position packets for a random time in this range (ms).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "1500.0", + "low": "100.0", + "high": "150.0", + "rolled": "100.0" + } + }, + { + "field": "weaponOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Weapon Only", + "desc": "Suppresses backtrack while your mainhand is not a sword/axe/mace. Prevents your cross-modules (PearlFollow, AutoCrystal) from placing on the stale backtracked position when you switch off your weapon.", + "value": "false", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.BreachSwap", + "name": "Breach Swap", + "desc": "Automatically swaps to a breach mace when hitting someone", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "chance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Chance", + "desc": "Rolls this chance on each Breach swap opportunity (%).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "100.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.CartAura", + "name": "Cart Aura", + "desc": "Automatically attacks minecarts near you with human-like delays", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "reactionDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Reaction Delay", + "desc": "Rolls a random delay in this window (ms) each time a new cart is acquired; the hit only fires once it passes. Aim starts tracking immediately — only the attack waits — so it reads as a human noticing the cart rather than an instant aura.", + "value": "100.0", + "props": { + "min": "0.0", + "max": "1000.0", + "low": "100.0", + "high": "250.0", + "rolled": "100.0" + } + }, + { + "field": "swapDelay", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Swap Delay", + "desc": "Waits this long between the sword swap and the hit (ms). The swap always settles for at least one full tick regardless of this value.", + "value": "50.0", + "props": { + "min": "0.0", + "max": "300.0" + } + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to the slot you were holding before the sword swap once the hit lands.", + "value": "true", + "props": {} + }, + { + "field": "swapBackDelay", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Swap Back Delay", + "desc": "Waits this long between the hit and the swap back (ms).", + "value": "50.0", + "props": { + "min": "0.0", + "max": "300.0" + } + }, + { + "field": "attackDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Attack Delay", + "desc": "Rolls a random minimum delay in this window (ms) between consecutive hits — a fixed cadence between attack packets is an aura fingerprint, so the gap is re-rolled after every swing.", + "value": "50.0", + "props": { + "min": "0.0", + "max": "1000.0", + "low": "50.0", + "high": "150.0", + "rolled": "50.0" + } + }, + { + "field": "targetFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Target FOV", + "desc": "Filters candidate carts to those inside this angular cone from your view at acquisition time (degrees). 180 = hemisphere, 360 = disabled.", + "value": "180.0", + "props": { + "min": "30.0", + "max": "360.0" + } + }, + { + "field": "humanizedAim", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Humanized Aim", + "desc": "Adds a small distance-scaled jitter to the attack rotation so every hit doesn't ship the exact box-center angle — same correlate KillAura's Humanized Aim breaks for player targets.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.CartPearlCatch", + "name": "Cart Pearl Catch", + "desc": "Detonates a minecart where enemy pearls land", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "scanRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Scan Range", + "desc": "Only tracks enemy pearls thrown within this distance (blocks).", + "value": "48.0", + "props": { + "min": "16.0", + "max": "96.0" + } + }, + { + "field": "minDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min Damage", + "desc": "Only punishes when the predicted pre-armor blast damage at their landing is at least this (HP).", + "value": "15.0", + "props": { + "min": "0.0", + "max": "40.0" + } + }, + { + "field": "maxSelfDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Self Damage", + "desc": "Skips placements whose worst-case self-damage would exceed this (HP, armor-aware).", + "value": "6.0", + "props": { + "min": "0.0", + "max": "30.0" + } + }, + { + "field": "preferXbow", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Prefer Xbow", + "desc": "Detonates with flint & steel + charged crossbow when both are in your hotbar; otherwise uses the bow.", + "value": "true", + "props": {} + }, + { + "field": "switchDelay", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Switch Delay", + "desc": "Waits this many ticks between rail, cart, and fire steps.", + "value": "2", + "props": { + "min": "0", + "max": "20" + } + }, + { + "field": "silentAim", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent Aim", + "desc": "Aims at placements and the shot server-side; your camera never moves.", + "value": "true", + "props": {} + }, + { + "field": "silentAimFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Silent Aim FOV", + "desc": "Caps silent aim at this yaw offset per tick (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + }, + { + "field": "render", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render", + "desc": "Shows a TNT-minecart tag at the spot the cart will be placed, with the pearl's landing ETA.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.CartRefill", + "name": "Cart Refill", + "desc": "Auto-tops-up a chosen hotbar slot with TNT minecarts", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Always refills while the inventory is open; Keybind waits for the key.", + "value": "Always", + "props": { + "options": "[Always,Keybind]" + } + }, + { + "field": "refillKey", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Refill Key", + "desc": "Press to refill (Keybind mode).", + "value": "-1", + "props": { + "toggleMode": "false" + } + }, + { + "field": "targetSlot", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Target Slot", + "desc": "Keeps this hotbar slot topped up with a TNT minecart.", + "value": "9", + "props": { + "min": "1", + "max": "9" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Delay", + "desc": "Waits at least this long between refill clicks (ms).", + "value": "100", + "props": { + "min": "0", + "max": "1000" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.CartStealer", + "name": "Cart Stealer", + "desc": "Automatically pulls minecarts out of shulkers", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between cart pulls (ms).", + "value": "50.0", + "props": { + "min": "0.0", + "max": "1000.0", + "low": "50.0", + "high": "100.0", + "rolled": "50.0" + } + }, + { + "field": "autoClose", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Close", + "desc": "Closes the shulker once every cart is taken (or only the shulker slot is left).", + "value": "true", + "props": {} + }, + { + "field": "activateKey", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Activate Key", + "desc": "Hold to start stealing. Unbound = steal automatically while a shulker is open.", + "value": "-1", + "props": { + "toggleMode": "false" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.ChestStealer", + "name": "Chest Stealer", + "desc": "Steals items out of chests", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between item pulls (ms).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "1000.0", + "low": "100.0", + "high": "200.0", + "rolled": "100.0" + } + }, + { + "field": "autoClose", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Close", + "desc": "Closes the chest once it is empty.", + "value": "true", + "props": {} + }, + { + "field": "activateKey", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Activate Key", + "desc": "Press to start stealing from the open chest.", + "value": "-1", + "props": { + "toggleMode": "false" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.CobwebPlacer", + "name": "Cobweb Placer", + "desc": "Places cobwebs on the block your looking at", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Manual places at your crosshair; Auto predicts landings and places itself.", + "value": "Manual", + "props": { + "options": "[Manual,Auto]" + } + }, + { + "field": "targetRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Target Range", + "desc": "Auto-places only with an enemy within this distance (blocks).", + "value": "6.0", + "props": { + "min": "1.0", + "max": "16.0" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "200.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "leadTicks", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Lead Ticks", + "desc": "Predicts the enemy this many ticks ahead for the placement (ignored when Only When Falling is on — that mode walks the trajectory until it hits ground).", + "value": "10", + "props": { + "min": "1", + "max": "30" + } + }, + { + "field": "onlyWhenFalling", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only When Falling", + "desc": "Only fires while the target is airborne and falling; steps their trajectory forward until it hits ground and drops the web at their landing block so they fall into the top of it.", + "value": "false", + "props": {} + }, + { + "field": "maxWebsPerFall", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Max Webs Per Fall", + "desc": "Caps how many webs get placed per fall so it doesn't spam a stack; resets once the target lands or a different target is picked.", + "value": "1", + "props": { + "min": "1", + "max": "10" + } + }, + { + "field": "silent", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent", + "desc": "Swaps between items server-side.", + "value": "false", + "props": {} + }, + { + "field": "switchBack", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Switch Back", + "desc": "Switches to a chosen slot or your original after placing.", + "value": "Slot", + "props": { + "options": "[Slot,Original]" + } + }, + { + "field": "switchSlot", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Switch Slot", + "desc": "Switches to this hotbar slot after placing.", + "value": "1", + "props": { + "min": "1", + "max": "9" + } + }, + { + "field": "swapMode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Swap", + "desc": "None places only with cobweb in hand; Swap visibly switches to it.", + "value": "Swap", + "props": { + "options": "[None,Swap]" + } + }, + { + "field": "fromInventory", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "From Inventory", + "desc": "If no cobweb is in the hotbar, pulls one from the main inventory with a silent SWAP (matches the AutoPickaxe hotbar→inventory upgrade). Reversed on the following tick so the loadout looks untouched.", + "value": "true", + "props": {} + }, + { + "field": "headTrap", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Head Trap", + "desc": "Also tries the head-level block; the best candidate wins.", + "value": "false", + "props": {} + }, + { + "field": "autoSwitchBack", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Auto Switch Back", + "desc": "Off keeps cobweb in hand; Slot switches on the next free tick; Original restores what you held before the cobweb swap on the next free tick.", + "value": "Off", + "props": { + "options": "[Off,Slot,Original]" + } + }, + { + "field": "autoSwitchSlot", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Auto Switch Slot", + "desc": "Switches to this hotbar slot after placing.", + "value": "1", + "props": { + "min": "1", + "max": "9" + } + }, + { + "field": "render", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render", + "desc": "Outlines the predicted placement position.", + "value": "true", + "props": {} + }, + { + "field": "renderColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Render Color", + "desc": "Sets the prediction outline color.", + "value": "java.awt.Color[r=0,g=200,b=255]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.Criticals", + "name": "Criticals", + "desc": "Turns hits into critical hits", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Legit jumps; Minimal micro-hops; Silent sends packets only.", + "value": "Legit", + "props": { + "options": "[Legit,Minimal,Silent]" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.CrystalOptimizer", + "name": "Crystal Optimizer", + "desc": "Does not wait for server-side confirmation when breaking crystals", + "category": "Misc", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.mace.DiagonalPearlCatch", + "name": "Diagonal Pearl Catch", + "desc": "Catches a diagonally-thrown pearl and follows up with a wind charge", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Trajectory simulates a perfect intercept; Macro throws on a fixed delay.", + "value": "Trajectory", + "props": { + "options": "[Trajectory,Macro]" + } + }, + { + "field": "windChargeDelay", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Wind Charge Delay", + "desc": "Waits this long between the pearl and the wind charge (ms).", + "value": "100.0", + "props": { + "min": "10.0", + "max": "300.0" + } + }, + { + "field": "silentAim", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent Aim", + "desc": "Uses the computed angle server-side; your camera never moves.", + "value": "true", + "props": {} + }, + { + "field": "maxYawDelta", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Yaw Delta", + "desc": "Caps silent aim at this yaw offset (degrees). 180 = no cap.", + "value": "180.0", + "props": { + "min": "10.0", + "max": "180.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.DoubleAnchor", + "name": "Double Anchor", + "desc": "Automatically places another anchor (in the air) after anchoring", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "chance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Chance", + "desc": "Rolls this chance on each double anchor (%).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "100.0" + } + }, + { + "field": "glowStone", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Glow Stone", + "desc": "Places glowstone after the double anchor.", + "value": "false", + "props": {} + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range before the glowstone (ms).", + "value": "50.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "50.0", + "high": "100.0", + "rolled": "50.0" + } + }, + { + "field": "macroBind", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Macro Bind", + "desc": "Press to run the full anchor sequence at your crosshair.", + "value": "-1", + "props": { + "toggleMode": "false" + } + }, + { + "field": "macroHoldRepeat", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Macro Hold Repeat", + "desc": "Keeps re-running the double anchor sequence as long as the bind is held; releases stop after the current sequence.", + "value": "false", + "props": {} + }, + { + "field": "macroDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Macro Delay", + "desc": "Waits a random time in this range between sequence stages (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "macroSwap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Macro Swap", + "desc": "None uses the held item per stage; Swap switches hotbar slots.", + "value": "Swap", + "props": { + "options": "[None,Swap]" + } + }, + { + "field": "macroSwapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Macro Swap Back", + "desc": "Returns to the slot you held when you pressed the bind.", + "value": "true", + "props": {} + }, + { + "field": "macroExplodeSlot", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Macro Explode Slot", + "desc": "Holds this hotbar slot during the explode step (put a totem here).", + "value": "8", + "props": { + "min": "1", + "max": "9" + } + }, + { + "field": "macroDamageTick", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Macro Damage Tick", + "desc": "Waits for the target's hurt time to clear before the second anchor.", + "value": "true", + "props": {} + }, + { + "field": "macroDamageTickRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Macro Damage Tick Range", + "desc": "Applies the wait only with a target within this distance (blocks).", + "value": "10.0", + "props": { + "min": "1.0", + "max": "20.0" + } + }, + { + "field": "macroDamageTickMaxWait", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Macro Damage Tick Max Wait", + "desc": "Gives up waiting after this long and fires anyway (ms).", + "value": "500", + "props": { + "min": "0", + "max": "2000" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.ESP", + "name": "ESP", + "desc": "Renders various things through walls", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Selects the shader used to draw entity outlines/fills.", + "value": "Normal", + "props": { + "options": "[Normal,Chams,Aura]" + } + }, + { + "field": "targets", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Targets", + "desc": "Outlines these entity types.", + "value": "", + "props": { + "options": "[Players,Crystals,Items,Monsters,Ambient,Friendly,Aquatic,Nether,End,Bosses,Tameable,Projectiles,Vehicles,Decorations]", + "selected": "[true,true,true,false,false,false,false,false,false,false,false,false,false,false]", + "indexByOption": "{Friendly=5, Tameable=10, Projectiles=11, Crystals=1, Nether=7, Bosses=9, Vehicles=12, Decorations=13, Ambient=4, Aquatic=6, Monsters=3, Items=2, End=8, Players=0}" + } + }, + { + "field": "menuColor", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Menu Color", + "desc": "Follows the menu accent color instead of a custom one.", + "value": "true", + "props": {} + }, + { + "field": "color", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Color", + "desc": "Custom outline color.", + "value": "java.awt.Color[r=0,g=200,b=255]", + "props": {} + }, + { + "field": "quality", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Quality", + "desc": "Raises outline shader quality. Default 3 balances smoothness and FPS; 6 is the safe sampling cap.", + "value": "3", + "props": { + "min": "1", + "max": "6" + } + }, + { + "field": "radius", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Radius", + "desc": "Widens the outline glow (px).", + "value": "15", + "props": { + "min": "1", + "max": "20" + } + }, + { + "field": "fill", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Fill", + "desc": "Fills the silhouette instead of outlining only.", + "value": "false", + "props": {} + }, + { + "field": "opacity", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Opacity", + "desc": "Body alpha of the flat fill.", + "value": "0.5", + "props": { + "min": "0.1", + "max": "1.0" + } + }, + { + "field": "rimWidth", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Rim Width", + "desc": "Darker separator rim; 0 disables the edge search.", + "value": "2.0", + "props": { + "min": "0.0", + "max": "4.0" + } + }, + { + "field": "lineWidth", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Line Width", + "desc": "Thickness of the crisp core line.", + "value": "1.0", + "props": { + "min": "0.1", + "max": "2.0" + } + }, + { + "field": "haloOpacity", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Halo Opacity", + "desc": "Diffuse halo strength around the silhouette.", + "value": "0.7", + "props": { + "min": "0.0", + "max": "1.0" + } + }, + { + "field": "coreBoost", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Core Boost", + "desc": "How white-hot the line center gets; 0 = pure accent.", + "value": "0.8", + "props": { + "min": "0.0", + "max": "1.0" + } + }, + { + "field": "invisible", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Invisible", + "desc": "Force-renders invisible entities so their outline shows.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.ElytraWindCharge", + "name": "Elytra Wind Charge", + "desc": "Goes on elytra and windcharges underneath you when you approach the ground to go up rapidly.", + "category": "Mace", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.misc.EnemyFaker", + "name": "Enemy Faker", + "desc": "Fakes your enemy", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "fakeName", + "setClass": "dev.zprestige.prestige.TextSetting", + "name": "Name", + "desc": "Shows the target under this fake name.", + "value": "Marlowww", + "props": { + "placeholder": "Fake Name" + } + }, + { + "field": "gamemode", + "setClass": "dev.zprestige.prestige.TextSetting", + "name": "Gamemode", + "desc": "Sets the gamemode label shown with the tier tag.", + "value": "vanilla", + "props": { + "placeholder": "Gamemode" + } + }, + { + "field": "tier", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Tier", + "desc": "Shows this tier tag (HT1–LT5) next to the fake name.", + "value": "None", + "props": { + "options": "[None,HT1,LT1,HT2,LT2,HT3,LT3,HT4,LT4,HT5,LT5]" + } + }, + { + "field": "update", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Update", + "desc": "Re-applies the fake identity; the toggle acts as a one-shot button.", + "value": "false", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.spear.ExtendedReach", + "name": "Extended Reach", + "desc": "Increases reach by attribute swapping to spear", + "category": "Spear", + "enabled": false, + "settings": [ + { + "field": "chance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Chance", + "desc": "Rolls this chance on each extended-reach hit (%).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "100.0" + } + }, + { + "field": "weapons", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Weapons", + "desc": "Extends reach for swords, axes, and/or maces.", + "value": "", + "props": { + "options": "[Sword,Axe,Mace]", + "selected": "[true,true,true]", + "indexByOption": "{Mace=2, Sword=0, Axe=1}" + } + }, + { + "field": "worksWithTriggerbot", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Works With Triggerbot", + "desc": "Lets Triggerbot fire on extended-reach targets.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.movement.FakeLag", + "name": "Fake Lag", + "desc": "Lags your packets to make it seem like you are lagging", + "category": "Movement", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Holds packets manually, on a timer, by range, dynamically, or on knockback.", + "value": "Manual", + "props": { + "options": "[Manual,Timed,Ranged,Dynamic,Knockback]" + } + }, + { + "field": "lagRange", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Lag Range", + "desc": "Holds packets while an enemy is inside this distance band (blocks).", + "value": "3.0", + "props": { + "min": "0.0", + "max": "10.0", + "low": "3.0", + "high": "5.0", + "rolled": "3.0" + } + }, + { + "field": "targetFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Target FOV", + "desc": "Considers enemies within this view angle (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "360.0" + } + }, + { + "field": "choke", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Choke", + "desc": "Holds packets for a random burst interval in this range (ms).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "1000.0", + "low": "100.0", + "high": "150.0", + "rolled": "100.0" + } + }, + { + "field": "rangeChoke", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Range Choke", + "desc": "Caps range-based holds at a random time in this range (ms).", + "value": "500.0", + "props": { + "min": "0.0", + "max": "1000.0", + "low": "500.0", + "high": "700.0", + "rolled": "500.0" + } + }, + { + "field": "sendPackets", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Send Packets", + "desc": "Flushes held packets on these actions: hits, swings, clicks, explosions.", + "value": "", + "props": { + "options": "[On Interact Entity,On Hand Swing,On Interact Block,On Interact Item,On Click Slot,On Explosion]", + "selected": "[false,false,false,false,false,false]", + "indexByOption": "{On Interact Block=2, On Click Slot=4, On Interact Item=3, On Interact Entity=0, On Hand Swing=1, On Explosion=5}" + } + }, + { + "field": "render", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render", + "desc": "Draws a circle showing how long packets have been held.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.movement.FastBridge", + "name": "Fast Bridge", + "desc": "Automatically sneaks on block edges", + "category": "Movement", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.misc.FastEXP", + "name": "Fast EXP", + "desc": "Spams EXP bottles", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Manual: speeds up bottles while you hold RMB. Automatic: swaps to EXP and mends damaged Mending gear on its own.", + "value": "Manual", + "props": { + "options": "[Manual,Automatic]" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between bottle throws (ms).", + "value": "30.0", + "props": { + "min": "20.0", + "max": "500.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "rotateDown", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Rotate Down", + "desc": "Pitches down while throwing bottles.", + "value": "false", + "props": {} + }, + { + "field": "fromInventory", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "From Inventory", + "desc": "Also pull EXP bottles out of your main inventory (silent SWAP).", + "value": "true", + "props": {} + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to the previous slot after mending completes.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.FastPearlCatch", + "name": "Fast Pearl Catch", + "desc": "Pearl and wind charge back-to-back with no swap between the throws", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Swap switches hotbar slots between the two throws. Offhand swap-hands the wind charge into your offhand first, then throws pearl (mainhand) and wind charge (offhand) back-to-back with no slot swap between them — faster — then restores your original offhand item.", + "value": "Swap", + "props": { + "options": "[Swap,Offhand]" + } + }, + { + "field": "pearlAngle", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Pearl Angle", + "desc": "Pearl throw angle above horizontal (degrees), along your view direction. 90 = straight up (classic Auto Pearl Catch); lower = flatter and farther forward.", + "value": "48.0", + "props": { + "min": "0.0", + "max": "90.0" + } + }, + { + "field": "offhandPearlAngle", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Offhand Pearl Angle", + "desc": "Pearl throw angle above horizontal (degrees) in Offhand mode. Steeper keeps the pearl closer above you so the offhand wind charge meets it sooner.", + "value": "70.0", + "props": { + "min": "0.0", + "max": "90.0" + } + }, + { + "field": "offhandWindChargeAngle", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Offhand Wind Charge Angle", + "desc": "Wind charge throw angle above horizontal (degrees) in Offhand mode. Tune against Offhand Pearl Angle to control where the intercept happens — steeper meets the pearl earlier/closer.", + "value": "66.0", + "props": { + "min": "0.0", + "max": "90.0" + } + }, + { + "field": "windChargeAngle", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Wind Charge Angle", + "desc": "Wind charge throw angle above horizontal (degrees). Tune relative to the pearl angle to control where the intercept happens — steeper meets the pearl earlier/closer, shallower later/farther.", + "value": "40.0", + "props": { + "min": "0.0", + "max": "90.0" + } + }, + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to your original hotbar slot right after the wind charge throw, so you land holding what you had at enable (e.g. mace).", + "value": "true", + "props": {} + }, + { + "field": "legitRotate", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Legit Rotate", + "desc": "Moves your real camera instead of snapping server-side. Swap mode only.", + "value": "false", + "props": {} + }, + { + "field": "smoothing", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Smoothing", + "desc": "Scales the camera rotation speed (x). Lower = slower, more human.", + "value": "0.5", + "props": { + "min": "0.1", + "max": "2.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.FastPlace", + "name": "Fast Place", + "desc": "Allows you to place blocks faster", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "blocksOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Blocks Only", + "desc": "Speeds up block items only, not all usable items.", + "value": "false", + "props": {} + }, + { + "field": "minSpeed", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Min Speed", + "desc": "Sets the lowest use cooldown rolled per placement (ticks). 0 = every tick.", + "value": "0", + "props": { + "min": "0", + "max": "4" + } + }, + { + "field": "maxSpeed", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Max Speed", + "desc": "Sets the highest use cooldown rolled per placement (ticks).", + "value": "1", + "props": { + "min": "0", + "max": "4" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.FreeLook", + "name": "Free Look", + "desc": "Allows you to look around without rotating", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "thirdPerson", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Third Person", + "desc": "Switches to third person while free-looking.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.movement.Freecam", + "name": "Freecam", + "desc": "Allows you to move your camera around without actually moving your player", + "category": "Movement", + "enabled": false, + "settings": [ + { + "field": "speed", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Speed", + "desc": "Sets camera fly speed (x).", + "value": "1.0", + "props": { + "min": "0.1", + "max": "10.0" + } + }, + { + "field": "renderPrevious", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render Previous", + "desc": "Keeps drawing your body at its real position.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.Friends", + "name": "Friends", + "desc": "Manages what to do with friends", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "noAttack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "No Attack", + "desc": "Blocks attacks on friends.", + "value": "false", + "props": {} + }, + { + "field": "highlight", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Highlight", + "desc": "Colors friend names blue.", + "value": "false", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.GhostPlace", + "name": "Ghost Place", + "desc": "Right-clicks blocks behind enemies instead of interacting with them", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "cobwebOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Cobweb Only", + "desc": "Restrict placements to cobweb. Off = any block in main hand goes through.", + "value": "true", + "props": {} + }, + { + "field": "useOffhand", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Use Offhand", + "desc": "Also accept a placeable in the offhand. Main hand still takes precedence when both hands are placeable — this only catches sword-main + cobweb-offhand loadouts, where vanilla right-click on a mob would enter the entity path before ever reaching offhand block placement.", + "value": "false", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.HealthIndicators", + "name": "Health Indicators", + "desc": "Shows health on players", + "category": "Visual", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.visual.HitEffect", + "name": "Hit Effect", + "desc": "Draws particles when hitting entities", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "amount", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Amount", + "desc": "Spawns this many particles per hit.", + "value": "10", + "props": { + "min": "1", + "max": "20" + } + }, + { + "field": "lifespan", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Lifespan", + "desc": "Keeps particles alive this long (seconds).", + "value": "10", + "props": { + "min": "1", + "max": "60" + } + }, + { + "field": "physics", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Physics", + "desc": "Gives particles gravity and collisions.", + "value": "true", + "props": {} + }, + { + "field": "totemPop", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Totem Pop", + "desc": "Spawns particles on totem pops too.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.HitFix", + "name": "Hit Fix", + "desc": "Fixes bad hits", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "weaponOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Weapon Only", + "desc": "Attacks only while holding a weapon.", + "value": "true", + "props": {} + }, + { + "field": "onlyOnGround", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only On Ground", + "desc": "Delays the hit until the target is on the ground.", + "value": "true", + "props": {} + }, + { + "field": "damageTick", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Damage Tick", + "desc": "Waits for the target's hurt time to clear before hitting.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.HitFlick", + "name": "Hit Flick", + "desc": "Flicks the camera off-target around each hit to obscure aim", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "playersOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Players Only", + "desc": "Skips flicks on non-player entities. Crystals / anchors / mobs are single-hit and the flick just fights AutoCrystal / AutoAnchor / AutoObbyCrystal for the rotation slot, wasting the state machine without ever rendering.", + "value": "true", + "props": {} + }, + { + "field": "requireSprint", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Require Sprint", + "desc": "Flicks only while sprinting.", + "value": "true", + "props": {} + }, + { + "field": "minAngle", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min Angle", + "desc": "Sets the smallest flick angle (degrees).", + "value": "60.0", + "props": { + "min": "10.0", + "max": "180.0" + } + }, + { + "field": "maxAngle", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Angle", + "desc": "Sets the largest flick angle (degrees).", + "value": "75.0", + "props": { + "min": "10.0", + "max": "180.0" + } + }, + { + "field": "direction", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Direction", + "desc": "Flicks left, right, or randomly.", + "value": "Right", + "props": { + "options": "[Left,Right,Random]" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.Hitboxes", + "name": "Hitboxes", + "desc": "Expands entity hitboxes", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "playerOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Player Only", + "desc": "Expands player hitboxes only.", + "value": "false", + "props": {} + }, + { + "field": "expand", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Expand", + "desc": "Grows hitboxes by this amount (blocks).", + "value": "0.5", + "props": { + "min": "0.0", + "max": "5.0" + } + }, + { + "field": "renderHitboxes", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render Hitboxes", + "desc": "Draws the expanded hitboxes.", + "value": "true", + "props": {} + }, + { + "field": "distance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Distance", + "desc": "Only expands / draws hitboxes within this distance (blocks). Also gates the None-mode setBox path so 200-block-away zombies, item frames, and boats aren't silently re-boxed on every entity tick.", + "value": "5.0", + "props": { + "min": "0.1", + "max": "20.0" + } + }, + { + "field": "antiCheat", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Anti Cheat", + "desc": "Grim/Vulcan keeps expansion within what those anticheats tolerate.", + "value": "None", + "props": { + "options": "[Grim/Vulcan,None]" + } + }, + { + "field": "ignoreWalls", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Ignore Walls", + "desc": "Skips the eye-to-eye canSee occlusion check when the expanded-box raycast succeeds — the whole point of expansion is to catch hits where a box lobe pokes past a corner obby while the target's eye is still behind it. Leave OFF for Grim (Post/HitboxA correlates a swing on an eye-occluded target). Turn ON for Vulcan.", + "value": "false", + "props": {} + }, + { + "field": "skipShielding", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Skip Shielding", + "desc": "Skips the silent hit when the target is actively raising a shield. Prevents the sword-disable (~1s axe/sword lockout) that a contact swing eats — catastrophic in Crystal because it desyncs crystal-swap timing. Uses a rotation-independent check (not TargetUtil.isShielding's canHitAroundShield fallback), which flips false the instant the target strafes; the server re-evaluates shield facing per-tick so the lazy check would still eat the disable. AutoShieldBreaker is the correct tool for punching through raised shields.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.HudEditor", + "name": "Hud Editor", + "desc": "Opens the Hud Editor", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "hudScale", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "HUD Scale", + "desc": "Scales the whole HUD (%). 115 matches the previous fixed size.", + "value": "115.0", + "props": { + "min": "50.0", + "max": "200.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.InstantCrossbow", + "name": "Instant Crossbow", + "desc": "Instantly swaps to a crossbow (even from your inventory) and auto-restores your slot", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "fromInventory", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "From Inventory", + "desc": "Also pull a crossbow out of your main inventory (silent SWAP).", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.spear.InstantLunge", + "name": "Instant Lunge", + "desc": "Instantly lunges with the spear without needing to swap or click", + "category": "Spear", + "enabled": false, + "settings": [ + { + "field": "swapBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Swap Back", + "desc": "Returns to the previous slot after the lunge.", + "value": "true", + "props": {} + }, + { + "field": "swapBackDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Swap Back Delay", + "desc": "Waits a random time in this range before swapping back (ms).", + "value": "20.0", + "props": { + "min": "0.0", + "max": "300.0", + "low": "20.0", + "high": "70.0", + "rolled": "20.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.InstantShield", + "name": "Instant Shield", + "desc": "One keybind to swap to a shield (even from your inventory), press again to swap back", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "swapKey", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Swap Key", + "desc": "Instantly switches to a shield when pressed; press again to return to the previous slot. If the bind is in Hold mode, release the key to swap back.", + "value": "-1", + "props": { + "toggleMode": "false" + } + }, + { + "field": "fromInventory", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "From Inventory", + "desc": "Also pull a shield out of your main inventory (silent SWAP).", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.ItemESP", + "name": "Item ESP", + "desc": "Highlights dropped items through walls", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "scale", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Scale", + "desc": "Scales the item nametag (x).", + "value": "1.0", + "props": { + "min": "0.1", + "max": "2.0" + } + }, + { + "field": "limit", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Limit", + "desc": "Caps rendered nametags at this count.", + "value": "100", + "props": { + "min": "1", + "max": "200" + } + }, + { + "field": "maxDistance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Distance", + "desc": "Hides items beyond this distance (blocks).", + "value": "64.0", + "props": { + "min": "8.0", + "max": "256.0" + } + }, + { + "field": "background", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Background", + "desc": "Draws a panel behind the nametag.", + "value": "true", + "props": {} + }, + { + "field": "backgroundColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Background Color", + "desc": "Sets the nametag panel color.", + "value": "java.awt.Color[r=14,g=14,b=14]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.JumpCircles", + "name": "Jump Circles", + "desc": "Draws circles when players jump", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "selfOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Self Only", + "desc": "Spawns circles on your own jumps only.", + "value": "false", + "props": {} + }, + { + "field": "maxRadius", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Radius", + "desc": "Grows the circle to this final radius (blocks).", + "value": "1.0", + "props": { + "min": "0.2", + "max": "5.0" + } + }, + { + "field": "duration", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Duration", + "desc": "Keeps each circle visible this long (ms).", + "value": "1200", + "props": { + "min": "200", + "max": "4000" + } + }, + { + "field": "thickness", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Thickness", + "desc": "Sets ring thickness (blocks).", + "value": "0.02", + "props": { + "min": "0.005", + "max": "0.1" + } + }, + { + "field": "glowDistance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Glow Distance", + "desc": "Bleeds the glow halo this far outward (blocks).", + "value": "0.15", + "props": { + "min": "0.0", + "max": "0.5" + } + }, + { + "field": "themeColor", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Theme Color", + "desc": "Uses the menu theme color.", + "value": "true", + "props": {} + }, + { + "field": "color", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Color", + "desc": "Sets the circle color when not using the theme.", + "value": "java.awt.Color[r=131,g=118,b=252]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.KeepSprint", + "name": "Keep Sprint", + "desc": "Re-presses sprint after attacking to avoid losing the server-side sprint state", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "restoreDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Restore Delay", + "desc": "Randomizes the tick delay between releasing W and re-pressing it. A fixed +1-tick handoff is a Killaura fingerprint — Vulcan / Verus flag the deterministic cadence.", + "value": "1.0", + "props": { + "min": "0.0", + "max": "3.0", + "low": "1.0", + "high": "2.0", + "rolled": "1.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.KeyPearl", + "name": "Key Pearl", + "desc": "Swaps to pearl, throws it and then swaps back whenever enabled", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "10.0", + "props": { + "min": "0.0", + "max": "50.0", + "low": "10.0", + "high": "30.0", + "rolled": "10.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.KeyWindCharge", + "name": "Key Wind Charge", + "desc": "Throws a windcharge upon enabling", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Normal switches your hotbar; Silent swaps server-side only.", + "value": "Normal", + "props": { + "options": "[Normal,Silent]" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "10.0", + "props": { + "min": "0.0", + "max": "50.0", + "low": "10.0", + "high": "30.0", + "rolled": "10.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.KillAura", + "name": "Kill Aura", + "desc": "Automatically attacks entities within range", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "reach", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Reach", + "desc": "Attacks within this eye-to-hitbox distance (blocks). Server caps at 3.0.", + "value": "2.95", + "props": { + "min": "1.0", + "max": "3.0" + } + }, + { + "field": "stickyTargeting", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Sticky Targeting", + "desc": "Keeps the current target until it dies or leaves range.", + "value": "true", + "props": {} + }, + { + "field": "humanizedAim", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Humanized Aim", + "desc": "Adds a small distance-scaled yaw/pitch jitter to the attack rotation so every hit doesn't ship the exact eye-vector angle — a perfect-center snap on every attack is a Ghost / Vulcan Killaura correlate. Uses RotationUtil.randomizeRotation, which auto-scales spread by 1/distance (short-range hits stay tight) and clamps pitch to ±89.9 for Grim BadPacketsN.", + "value": "true", + "props": {} + }, + { + "field": "playerOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Player Only", + "desc": "Attacks players only.", + "value": "true", + "props": {} + }, + { + "field": "weaponOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Weapon Only", + "desc": "Attacks only while holding a sword or axe.", + "value": "false", + "props": {} + }, + { + "field": "cooldownMode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Cooldown Mode", + "desc": "Vanilla only fires at 100% charge (native MC gate). Range rolls a random threshold in the Cooldown Range window each swing (matches Triggerbot's line-37 pattern) — no two swings land at the same charge, breaking the KillAura fingerprint of a fixed threshold. MinMax pins to the window's min bound as a fixed constant (permissive: attacks fire as soon as charge >= min).", + "value": "Range", + "props": { + "options": "[Vanilla,Range,MinMax]" + } + }, + { + "field": "cooldownRange", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Cooldown Range", + "desc": "Rolls a random attack-cooldown threshold in this window each swing (%). Constant thresholds like the old 94% are a KillAura fingerprint — every swing releases at the same charge — so this jitters the release across the window to break the pattern.", + "value": "88.0", + "props": { + "min": "0.0", + "max": "100.0", + "low": "88.0", + "high": "100.0", + "rolled": "88.0" + } + }, + { + "field": "missChance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Miss Chance", + "desc": "Percentage chance per fireable tick to skip the attack — a 100% hit rate is the exact stat anticheats correlate. IMPORTANT for safety: a miss sends NO packet at all (no swing, no attack, no slot swap). The anticheat sees literally nothing that tick — no wall-swing, no air-swing, no unpaired swing packet, so this can't cause a flag on its own. The only cost is the ~100ms internal cooldown before the next attempt, which is what humanizes the attack-packet cadence. 5–15% is a plausible human miss rate.", + "value": "0.0", + "props": { + "min": "0.0", + "max": "25.0" + } + }, + { + "field": "maxYaw", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Yaw", + "desc": "Caps rotations at this yaw offset from your view (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + }, + { + "field": "targetFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Target FOV", + "desc": "Filters candidate targets to those inside this angular cone from your view at ACQUISITION time (degrees). Default 180 = hemisphere (no effective filter, preserves prior behavior). 360 = disabled (short-circuits). Retention is still governed by Max Yaw — a target acquired at 30° that drifts past this cone stays locked while it remains within Max Yaw, so tighten this to prefer front-of-view targets without losing them mid-fight.", + "value": "180.0", + "props": { + "min": "30.0", + "max": "360.0" + } + }, + { + "field": "onShielding", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "On Shielding", + "desc": "Ignore = hit through the shield (0.5x dmg, target still guarded). Skip = don't attack while the shield is up. Prefer Axe = silent-swap to a hotbar axe for the disable-shield hit, then auto-restore.", + "value": "Ignore", + "props": { + "options": "[Ignore,Skip,Prefer Axe]" + } + }, + { + "field": "aimPoints", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Aim Points", + "desc": "Anatomy regions the attack may aim at. Each enabled region contributes a candidate hitbox point (X/Z clamped to the hitbox like eyeReachTo, Y sliced to that anatomy band); the region whose candidate lands closest to your eye is picked. Head is the default aim vector — a headshot every frame is a Ghost / Vulcan / Grim AimEyeLock correlate — so Chest is on by default alongside Head, and the module can pick whichever gives the tighter angle per attack. Enable Legs / Thighs to open low-angle attacks against sneaking or crouched targets. Empty selection falls back to eye.", + "value": "", + "props": { + "options": "[Head,Neck,Chest,Waist,Thighs,Legs]", + "selected": "[true,false,true,false,false,false]", + "indexByOption": "{Chest=2, Legs=5, Head=0, Waist=3, Neck=1, Thighs=4}" + } + }, + { + "field": "renderDot", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render Dot", + "desc": "Draws a dot at the exact aim point.", + "value": "false", + "props": {} + }, + { + "field": "dotSize", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Dot Size", + "desc": "Sets the aim dot's radius (blocks).", + "value": "0.1", + "props": { + "min": "0.02", + "max": "0.5" + } + }, + { + "field": "dotColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Dot Color", + "desc": "Sets the aim dot color.", + "value": "java.awt.Color[r=255,g=64,b=64]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.MacePot", + "name": "Mace Pot", + "desc": "Throws speed and strength pots from your inventory when needed", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "delay", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Delay", + "desc": "Waits this long between potion throws (ms).", + "value": "300.0", + "props": { + "min": "50.0", + "max": "300.0" + } + }, + { + "field": "autoDisable", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Auto Disable", + "desc": "Turns the module off after potting.", + "value": "false", + "props": {} + }, + { + "field": "pitch", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Pitch", + "desc": "Throws potions at this pitch (degrees).", + "value": "70.0", + "props": { + "min": "50.0", + "max": "90.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.MacePrediction", + "name": "Mace Prediction", + "desc": "Shows your opponents reach and predicts their falling/flying path when macing", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Draws predictions as a box, an outline, or both.", + "value": "Outline", + "props": { + "options": "[Box,Outline,Both]" + } + }, + { + "field": "predictAirPath", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Predict Air Path", + "desc": "Traces the target's airborne arc to its landing point.", + "value": "true", + "props": {} + }, + { + "field": "maxAirPredTicks", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Max Air Pred. Ticks", + "desc": "Simulates the air path up to this many ticks ahead. Higher = more CPU.", + "value": "100", + "props": { + "min": "1", + "max": "500" + } + }, + { + "field": "airPathColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Air Path Color", + "desc": "Sets the air path color.", + "value": "java.awt.Color[r=255,g=255,b=0]", + "props": {} + }, + { + "field": "airLandingColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Air Landing Color", + "desc": "Sets the air landing marker color.", + "value": "java.awt.Color[r=0,g=255,b=0]", + "props": {} + }, + { + "field": "predictGroundPath", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Predict Ground Path", + "desc": "Traces the target's on-ground movement ahead.", + "value": "true", + "props": {} + }, + { + "field": "groundPredTicks", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Ground Pred. Ticks", + "desc": "Simulates the ground path this many ticks ahead.", + "value": "6", + "props": { + "min": "1", + "max": "15" + } + }, + { + "field": "groundPathColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Ground Path Color", + "desc": "Sets the ground path color.", + "value": "java.awt.Color[r=0,g=150,b=255]", + "props": {} + }, + { + "field": "rangeCircles", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Range Circles", + "desc": "Draws circles at current and predicted landing positions.", + "value": "true", + "props": {} + }, + { + "field": "circleInner", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Circle Inner", + "desc": "Sets the inner circle color.", + "value": "java.awt.Color[r=255,g=0,b=0]", + "props": {} + }, + { + "field": "circleOuter", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Circle Outer", + "desc": "Sets the outer circle color.", + "value": "java.awt.Color[r=0,g=255,b=0]", + "props": {} + }, + { + "field": "circleAlpha", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Circle Alpha", + "desc": "Sets circle opacity (0–255).", + "value": "255.0", + "props": { + "min": "0.0", + "max": "255.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.MiddleClickFriend", + "name": "Middle Click Friend", + "desc": "Adds friends when middle clicking on them", + "category": "Misc", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.misc.NameHider", + "name": "Name Hider", + "desc": "Attempts to replace your name in chat and F5", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Random generates names; Custom uses your text.", + "value": "Random", + "props": { + "options": "[Random,Custom]" + } + }, + { + "field": "customName", + "setClass": "dev.zprestige.prestige.TextSetting", + "name": "Custom Name", + "desc": "Replaces your name with this text.", + "value": "PrestigeClient", + "props": { + "placeholder": "Custom Name" + } + }, + { + "field": "randomize", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Randomize", + "desc": "Re-rolls the random name on a timer.", + "value": "true", + "props": {} + }, + { + "field": "speed", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Speed", + "desc": "Waits this long between name re-rolls (ms).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "5000.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.NameTags", + "name": "Name Tags", + "desc": "Renders a name tag above players", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "scale", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Scale", + "desc": "Scales the nametag (x).", + "value": "1.0", + "props": { + "min": "0.1", + "max": "2.0" + } + }, + { + "field": "limit", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Limit", + "desc": "Caps rendered nametags at this count.", + "value": "100", + "props": { + "min": "1", + "max": "200" + } + }, + { + "field": "fadeDistance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Fade Distance", + "desc": "Blocks past which tags fade out (fade over the last 10 blocks).", + "value": "60.0", + "props": { + "min": "20.0", + "max": "200.0" + } + }, + { + "field": "distance", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Distance", + "desc": "Shows the distance in meters on the right side of the tag.", + "value": "true", + "props": {} + }, + { + "field": "healthNumber", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Health Number", + "desc": "Shows a numeric HP value next to the health bar.", + "value": "false", + "props": {} + }, + { + "field": "totemPops", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Totem Pops", + "desc": "Shows the player's totem pop count next to the name.", + "value": "true", + "props": {} + }, + { + "field": "hands", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Hands", + "desc": "Shows main-hand and offhand items below the tag.", + "value": "true", + "props": {} + }, + { + "field": "armor", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Armor", + "desc": "Shows the player's armor below the tag.", + "value": "true", + "props": {} + }, + { + "field": "enchantments", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Enchantments", + "desc": "Shows enchantment levels on armor and held items.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.NoBounce", + "name": "No Bounce", + "desc": "Removes the bobbing animation in your hotbar when using any form of crystal modules", + "category": "Visual", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.movement.NoJumpDelay", + "name": "No Jump Delay", + "desc": "Removes the delay between jumps", + "category": "Movement", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.combat.NoMissDelay", + "name": "No Miss Delay", + "desc": "Removes the sword delay after missing", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "humanizePercent", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Humanize %", + "desc": "Chance per air-swing to behave like vanilla: reset cooldown AND play the swing animation. 0 = always suppress (fingerprint: no player ever preserves 100% of miss charges), 100 = module effectively off. A few percent (5-15) is enough to defeat Vulcan / Verus / Intave 'zero air-swing charge loss' correlates while still buying most of the DPS advantage.", + "value": "0", + "props": { + "min": "0", + "max": "100" + } + }, + { + "field": "inCombatOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "In Combat Only", + "desc": "Only preserves the cooldown / hides the swing when a hostile player (alive, not self, not friend, passes AntiBot) is within Range. Out of combat, defers to vanilla so open-world air-swings look normal — otherwise every miss on a mob, a fence, or empty air ships a suppressed reset that has no PvP purpose and stands out on server logs.", + "value": "false", + "props": {} + }, + { + "field": "range", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Range", + "desc": "Radius (blocks) around you to search for a hostile player when In Combat Only is on.", + "value": "5.0", + "props": { + "min": "3.0", + "max": "8.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.OreSimulation", + "name": "Ore Simulation", + "desc": "Simulates ore veins by using the seed for xray", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "ores", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Ores", + "desc": "Highlights these simulated ore types.", + "value": "", + "props": { + "options": "[Coal,Copper,Iron,Lapis,Redstone,Gold,Diamond,Emerald,Quartz,Ancient Debris]", + "selected": "[true,true,true,true,true,true,true,true,true,true]", + "indexByOption": "{Gold=5, Iron=2, Diamond=6, Quartz=8, Redstone=4, Emerald=7, Ancient Debris=9, Coal=0, Lapis=3, Copper=1}" + } + }, + { + "field": "seed", + "setClass": "dev.zprestige.prestige.TextSetting", + "name": "Seed", + "desc": "Simulates ore generation from this world seed.", + "value": "", + "props": { + "placeholder": "Seed to use for the simulation" + } + }, + { + "field": "chunks", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Chunks", + "desc": "Simulates this many chunks around you. Higher = slower.", + "value": "5", + "props": { + "min": "1", + "max": "10" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.movement.Parkour", + "name": "Parkour", + "desc": "Automatically jumps at the edges of blocks.", + "category": "Movement", + "enabled": false, + "settings": [ + { + "field": "distance", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Distance", + "desc": "Auto-jumps within a random edge distance in this range (blocks).", + "value": "0.1", + "props": { + "min": "0.0", + "max": "10.0", + "low": "0.1", + "high": "1.0", + "rolled": "0.1" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.PearlFollow", + "name": "Pearl Follow", + "desc": "Auto-chases enemy pearls by matching where theirs is about to land", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "throwerRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Thrower Range", + "desc": "Only chases pearls thrown by an enemy within this distance (blocks).", + "value": "50.0", + "props": { + "min": "5.0", + "max": "200.0" + } + }, + { + "field": "minLandingDistance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min Landing Distance", + "desc": "Ignores pearls landing this close to us — skips hole-fight up-close pearls that would drop the enemy inside our own bubble (blocks).", + "value": "8.0", + "props": { + "min": "0.0", + "max": "50.0" + } + }, + { + "field": "landingRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Landing Range", + "desc": "Only chases pearls landing within this distance of us (blocks).", + "value": "60.0", + "props": { + "min": "5.0", + "max": "200.0" + } + }, + { + "field": "maxError", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Error", + "desc": "Rejects solutions whose simulated landing is further than this from the enemy pearl's landing (blocks).", + "value": "2.0", + "props": { + "min": "0.5", + "max": "10.0" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range after detecting the enemy pearl before throwing (ms).", + "value": "50.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "50.0", + "high": "100.0", + "rolled": "50.0" + } + }, + { + "field": "swapBackDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Swap Back Delay", + "desc": "Waits a random time in this range after the throw before switching back to the slot you had held (ms).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "2000.0", + "low": "100.0", + "high": "300.0", + "rolled": "100.0" + } + }, + { + "field": "onlyOnGround", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only On Ground", + "desc": "Only chases while standing on ground (avoids mid-fall or elytra desyncs).", + "value": "false", + "props": {} + }, + { + "field": "targetOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Target Only", + "desc": "Only chases pearls whose thrower is your locked TargetManager target. Skips everyone else regardless of Thrower Range — the setting has already narrowed us to one enemy. Note: while enabled, the module goes silent if no target is locked (fresh join, target timed out at >15 blocks / 5s since last hit) — that's the intended semantics, not a bug. Turn off to fall back to the range-based filter.", + "value": "false", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.PearlTrajectory", + "name": "Pearl Trajectory", + "desc": "Shows pearl paths and landing positions", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "renderLine", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render Line", + "desc": "Draws the predicted flight path.", + "value": "true", + "props": {} + }, + { + "field": "themeColor", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Theme Color", + "desc": "Uses the menu theme color for the line.", + "value": "false", + "props": {} + }, + { + "field": "lineColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Line Color", + "desc": "Sets the trajectory line color.", + "value": "java.awt.Color[r=14,g=14,b=14]", + "props": {} + }, + { + "field": "landingTag", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Landing Tag", + "desc": "Shows a nametag at the predicted landing point.", + "value": "true", + "props": {} + }, + { + "field": "tagScale", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Tag Scale", + "desc": "Scales the landing nametag (x).", + "value": "1.0", + "props": { + "min": "0.1", + "max": "2.0" + } + }, + { + "field": "tagBackground", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Tag Background", + "desc": "Draws a panel behind the landing nametag.", + "value": "true", + "props": {} + }, + { + "field": "tagBgColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Tag Bg Color", + "desc": "Sets the landing nametag panel color.", + "value": "java.awt.Color[r=14,g=14,b=14]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.PearlWindCharge", + "name": "Pearl Wind Charge", + "desc": "Throws a pearl and instantly windcharge when the pearl lands", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "autoSwap", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Auto Swap", + "desc": "Switches to the pearl and wind charge for you.", + "value": "true", + "props": {} + }, + { + "field": "jump", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Jump", + "desc": "Jumps as the combo starts for extra height.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.PotionRefill", + "name": "Potion Refill", + "desc": "Refills your hotbar with splash potions", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "healthPotOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Health Pot Only", + "desc": "Refills healing potions only.", + "value": "false", + "props": {} + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range between potion swaps (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "300.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.PredictDoubleHand", + "name": "Predict Double Hand", + "desc": "Predicts when you will pop and mainhand totems for you", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "triggers", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Triggers", + "desc": "Double-hands on these threats: anchors, crystals, obsidian, sword pops, mace smashes, pearls.", + "value": "", + "props": { + "options": "[Anchors,Crystals,Obsidian,Sword Pop,Mace,Pearl]", + "selected": "[true,true,true,true,true,false]", + "indexByOption": "{Anchors=0, Pearl=5, Mace=4, Sword Pop=3, Crystals=1, Obsidian=2}" + } + }, + { + "field": "pause", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Pause", + "desc": "Pauses while these modules are active.", + "value": "", + "props": { + "options": "[Auto Crystal,Auto Hit Crystal,Shield]", + "selected": "[true,true,true]", + "indexByOption": "{Shield=2, Auto Crystal=0, Auto Hit Crystal=1}" + } + }, + { + "field": "reswapDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Re-swap Delay", + "desc": "Waits a random time in this range after re-swapping (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "300.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "sensitivity", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Sensitivity", + "desc": "Scales how eagerly threats trigger a double hand (x).", + "value": "1.0", + "props": { + "min": "0.5", + "max": "1.5" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.Reach", + "name": "Reach", + "desc": "Increases your reach", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "chance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Chance", + "desc": "Rolls this chance on each extended hit (%).", + "value": "60.0", + "props": { + "min": "0.0", + "max": "100.0" + } + }, + { + "field": "extraReach", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Reach", + "desc": "Adds a random amount in this range to your reach (blocks).", + "value": "0.0", + "props": { + "min": "0.0", + "max": "2.0", + "low": "0.0", + "high": "0.1", + "rolled": "0.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.Refill", + "name": "Refill", + "desc": "Tops off hotbar stacks from the rest of your inventory", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Always refills while the inventory is open; Keybind waits for the key.", + "value": "Always", + "props": { + "options": "[Always,Keybind]" + } + }, + { + "field": "refillKey", + "setClass": "dev.zprestige.prestige.KeybindSetting", + "name": "Refill Key", + "desc": "Press to refill (Keybind mode).", + "value": "-1", + "props": { + "toggleMode": "false" + } + }, + { + "field": "threshold", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Threshold", + "desc": "Tops off hotbar stacks at or below this count (items).", + "value": "32", + "props": { + "min": "1", + "max": "63" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Delay", + "desc": "Waits at least this long between refill clicks (ms).", + "value": "100", + "props": { + "min": "0", + "max": "1000" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.RenderOptimizer", + "name": "Render Optimizer", + "desc": "Removes certain visuals from your screen", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "hurtCam", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Hurt Cam", + "desc": "Removes the hurt-cam shake on damage.", + "value": "false", + "props": {} + }, + { + "field": "fire", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Fire", + "desc": "Removes the fire overlay while burning.", + "value": "false", + "props": {} + }, + { + "field": "particles", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Particles", + "desc": "Removes all particles.", + "value": "false", + "props": {} + }, + { + "field": "backgroundTint", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Background Tint", + "desc": "Removes the dark tint behind GUI screens.", + "value": "false", + "props": {} + }, + { + "field": "fullBright", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Full Bright", + "desc": "Lights every block fully, no torches needed.", + "value": "false", + "props": {} + }, + { + "field": "removeWeather", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Remove Weather", + "desc": "Removes rain and snow.", + "value": "false", + "props": {} + }, + { + "field": "shortenLoadingScreen", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Shorten Loading Screen", + "desc": "Skips the downloading-terrain screen.", + "value": "false", + "props": {} + }, + { + "field": "noScoreboard", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "No Scoreboard", + "desc": "Hides the scoreboard.", + "value": "false", + "props": {} + }, + { + "field": "noTitle", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "No Title", + "desc": "Hides title text.", + "value": "false", + "props": {} + }, + { + "field": "noHotbarText", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "No Hotbar Text", + "desc": "Hides hotbar item names.", + "value": "false", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.RightClicker", + "name": "Right Clicker", + "desc": "Automatically right clicks for you", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "minCps", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min CPS", + "desc": "Lowest clicks per second.", + "value": "5.0", + "props": { + "min": "0.0", + "max": "25.0" + } + }, + { + "field": "maxCps", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max CPS", + "desc": "Highest clicks per second.", + "value": "15.0", + "props": { + "min": "0.0", + "max": "25.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.SafeAnchor", + "name": "Safe Anchor", + "desc": "Prevents anchors from dealing damage to you", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Legit covers the anchor you charge; Blatant covers nearby anchors itself.", + "value": "Legit", + "props": { + "options": "[Legit,Blatant]" + } + }, + { + "field": "onlyOwn", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only Own", + "desc": "Covers only anchors you placed.", + "value": "true", + "props": {} + }, + { + "field": "minDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min Damage", + "desc": "Covers only anchors that would deal at least this damage (HP).", + "value": "5.0", + "props": { + "min": "0.0", + "max": "30.0" + } + }, + { + "field": "maxDamage", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Damage", + "desc": "Accepts at most this much damage left after covering (HP).", + "value": "5.0", + "props": { + "min": "0.0", + "max": "30.0" + } + }, + { + "field": "coverTiming", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "When", + "desc": "Covers before or after the glowstone charge.", + "value": "Before Charge", + "props": { + "options": "[Before Charge,After Charge]" + } + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range (ms). Legit: after your anchor place packet before firing the cover. Blatant: reaction time after first noticing an anchor, and between covers. Vanilla auto-cover is one tick (~50 ms) — a fixed, machine-perfect reaction. Humans take 200+ ms; a randomized 80-160 ms window looks reactive without being fatally slow.", + "value": "20.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "20.0", + "high": "100.0", + "rolled": "20.0" + } + }, + { + "field": "swap", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Swap", + "desc": "None uses the held item; Normal switches hotbar; Silent swaps server-side.", + "value": "None", + "props": { + "options": "[None,Normal,Silent]" + } + }, + { + "field": "block", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Block", + "desc": "Covers with glowstone or obsidian.", + "value": "Glowstone", + "props": { + "options": "[Glowstone,Obsidian]" + } + }, + { + "field": "limit", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Limit", + "desc": "Caps how many cover blocks are placed per anchor.", + "value": "1", + "props": { + "min": "1", + "max": "5" + } + }, + { + "field": "fov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "FOV", + "desc": "Caps rotations at this yaw offset (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.SelfDestruct", + "name": "Self Destruct", + "desc": "Destructs the client to hopefully prevent detection when screenshared", + "category": "Misc", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.mace.ShieldDrain", + "name": "Shield Drain", + "desc": "Repeatedly hits a target's shield to drain its durability during mace combat", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "horizontalTargetDist", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Horizontal Target Dist", + "desc": "Searches for shielders within this horizontal distance (blocks).", + "value": "5.0", + "props": { + "min": "0.0", + "max": "6.0" + } + }, + { + "field": "maxRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Range", + "desc": "Ignores targets beyond this distance (blocks).", + "value": "4.5", + "props": { + "min": "3.0", + "max": "6.0" + } + }, + { + "field": "minFallDistance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Min Fall Distance", + "desc": "Drains only after falling this far (blocks). 0 = always.", + "value": "0.0", + "props": { + "min": "0.0", + "max": "50.0" + } + }, + { + "field": "onlyOnCrosshair", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Only On Crosshair", + "desc": "Drains only the player under your crosshair.", + "value": "false", + "props": {} + }, + { + "field": "requireMace", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Require Mace", + "desc": "Runs only while holding a mace; disables auto-swap.", + "value": "true", + "props": {} + }, + { + "field": "pauseOnGround", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Pause On Ground", + "desc": "Stops draining when you touch the ground.", + "value": "false", + "props": {} + }, + { + "field": "clicksPerTick", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Clicks Per Tick", + "desc": "Sends this many attacks per tick. 3 ≈ 60 CPS; 10 ≈ 200 CPS, blatant.", + "value": "2", + "props": { + "min": "1", + "max": "10" + } + }, + { + "field": "autoSwap", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Auto Swap", + "desc": "Switches to a mace when you are not holding one.", + "value": "true", + "props": {} + }, + { + "field": "silent", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent", + "desc": "Returns to the previous slot once the target stops shielding.", + "value": "false", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.ShieldRenderer", + "name": "Shield Renderer", + "desc": "Modifies the look of your and other peoples shields", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "overlay", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Overlay", + "desc": "Draws a colored overlay on shields to show their state.", + "value": "true", + "props": {} + }, + { + "field": "renderSelf", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render Self", + "desc": "Overlays your own shield too.", + "value": "true", + "props": {} + }, + { + "field": "renderMode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Render Mode", + "desc": "Shows overlays always, only while shields are up, or only when broken.", + "value": "Always", + "props": { + "options": "[Always,Normal,Broken]" + } + }, + { + "field": "xOffset", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "X Offset", + "desc": "Shifts the overlay along X (blocks).", + "value": "0.0", + "props": { + "min": "-1.0", + "max": "1.0" + } + }, + { + "field": "yOffset", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Y Offset", + "desc": "Shifts the overlay along Y (blocks).", + "value": "0.0", + "props": { + "min": "-1.0", + "max": "1.0" + } + }, + { + "field": "zOffset", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Z Offset", + "desc": "Shifts the overlay along Z (blocks).", + "value": "0.0", + "props": { + "min": "-1.0", + "max": "1.0" + } + }, + { + "field": "xScale", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "X Scale", + "desc": "Stretches the overlay along X (x).", + "value": "1.0", + "props": { + "min": "0.0", + "max": "2.0" + } + }, + { + "field": "yScale", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Y Scale", + "desc": "Stretches the overlay along Y (x).", + "value": "1.0", + "props": { + "min": "0.0", + "max": "2.0" + } + }, + { + "field": "zScale", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Z Scale", + "desc": "Stretches the overlay along Z (x).", + "value": "1.0", + "props": { + "min": "0.0", + "max": "2.0" + } + }, + { + "field": "defaultColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Default Color", + "desc": "Sets the intact-shield overlay color.", + "value": "java.awt.Color[r=0,g=255,b=0]", + "props": {} + }, + { + "field": "brokenColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Broken Color", + "desc": "Sets the broken-shield overlay color.", + "value": "java.awt.Color[r=255,g=0,b=0]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.movement.ShortPearl", + "name": "Short Pearl", + "desc": "Throws a pearl at your feet", + "category": "Movement", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Legit rotates your real camera; Silent rotates server-side only.", + "value": "Legit", + "props": { + "options": "[Legit,Silent]" + } + }, + { + "field": "minDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Min Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "200.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "switchBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Switch Back", + "desc": "Returns to the previous slot after the throw.", + "value": "true", + "props": {} + }, + { + "field": "pitch", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Pitch", + "desc": "Throws the pearl at this pitch (degrees).", + "value": "70.0", + "props": { + "min": "30.0", + "max": "90.0" + } + }, + { + "field": "smoothing", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Smoothing", + "desc": "Scales the camera rotation speed (x). Lower = slower, more human.", + "value": "0.5", + "props": { + "min": "0.1", + "max": "2.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.ShortWindCharge", + "name": "Short Wind Charge", + "desc": "Throws a wind charge at your feet", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Legit rotates your real camera; Silent rotates server-side only.", + "value": "Legit", + "props": { + "options": "[Legit,Silent]" + } + }, + { + "field": "minDelay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Min Delay", + "desc": "Waits a random time in this range between actions (ms).", + "value": "30.0", + "props": { + "min": "0.0", + "max": "200.0", + "low": "30.0", + "high": "50.0", + "rolled": "30.0" + } + }, + { + "field": "switchBack", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Switch Back", + "desc": "Returns to the previous slot after the throw.", + "value": "true", + "props": {} + }, + { + "field": "autoJump", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Auto Jump", + "desc": "Jumps as the wind charge is thrown.", + "value": "true", + "props": {} + }, + { + "field": "pitch1", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Pitch 1", + "desc": "Throws the wind charge at this pitch (degrees).", + "value": "40.0", + "props": { + "min": "30.0", + "max": "90.0" + } + }, + { + "field": "smoothing", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Smoothing", + "desc": "Scales the camera rotation speed (x). Lower = slower, more human.", + "value": "0.5", + "props": { + "min": "0.1", + "max": "2.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.SilentAim", + "name": "Silent Aim", + "desc": "Redirects missed hits to hit ones", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "playerOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Player Only", + "desc": "Aims at players only.", + "value": "true", + "props": {} + }, + { + "field": "weaponOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Weapon Only", + "desc": "Runs only while holding a sword or axe.", + "value": "false", + "props": {} + }, + { + "field": "continuousTracking", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Continuous Tracking", + "desc": "Tracks the closest target every tick instead of only snapping on hit.", + "value": "false", + "props": {} + }, + { + "field": "maxYaw", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Yaw", + "desc": "Caps silent aim at this yaw offset from your view (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + }, + { + "field": "maxPitch", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Pitch", + "desc": "Caps silent aim at this pitch offset from your view (degrees). Pitch is intrinsically clamped to ±90 so no seam-wrap folding is needed — a plain absolute delta. Default 90 is a no-op ceiling; tighten to reject aim vectors that would ship a suspicious head-snap up/down (e.g. crystalled feet directly below the crosshair).", + "value": "90.0", + "props": { + "min": "0.0", + "max": "90.0" + } + }, + { + "field": "aimPoints", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Aim Points", + "desc": "Anatomy regions the silent aim may point at. Each enabled region contributes a candidate: X/Z clamped to the hitbox (same math as vanilla's nearest-point) and Y sliced to that region's band; the region whose candidate lands closest to your eye wins. Head every hit is a Ghost / Vulcan / Grim AimEyeLock correlate, so Body is on by default alongside Head so the picker can prefer the tighter angle per attack. Enable Legs / Feet to open low-angle attacks on crouched targets or crystalled feet. Empty selection falls back to the eye vector (never breaks the module).", + "value": "", + "props": { + "options": "[Head,Neck,Body,Arms,Thighs,Legs,Feet]", + "selected": "[true,false,true,false,false,false,false]", + "indexByOption": "{Legs=5, Head=0, Arms=3, Neck=1, Thighs=4, Body=2, Feet=6}" + } + }, + { + "field": "renderDot", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Render Dot", + "desc": "Draws a dot where the silent aim points.", + "value": "false", + "props": {} + }, + { + "field": "dotSize", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Dot Size", + "desc": "Sets the aim dot's radius (blocks).", + "value": "0.1", + "props": { + "min": "0.02", + "max": "0.5" + } + }, + { + "field": "dotColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Dot Color", + "desc": "Sets the aim dot color.", + "value": "java.awt.Color[r=255,g=64,b=64]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.spear.SpearDamageIndicator", + "name": "Spear Damage Indicator", + "desc": "Shows how much damage you have accumulated for the spear", + "category": "Spear", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.spear.SpearMaceDoubleTap", + "name": "Spear Mace Double Tap", + "desc": "Double taps people with a spear then mace combination", + "category": "Spear", + "enabled": false, + "settings": [ + { + "field": "triggerFallDistance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Trigger Fall Distance", + "desc": "Swaps to the mace after falling this far (blocks).", + "value": "3.0", + "props": { + "min": "0.0", + "max": "20.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.movement.Sprint", + "name": "Sprint", + "desc": "Automatically sprints for you", + "category": "Movement", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.visual.StorageESP", + "name": "Storage ESP", + "desc": "Highlights storage blocks through walls", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "targets", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Targets", + "desc": "Glows these storage block types.", + "value": "", + "props": { + "options": "[Chests,Trapped Chests,Ender Chests,Shulker Boxes,Barrels,Hoppers,Dispensers,Droppers,Furnaces,Brewing Stands]", + "selected": "[true,true,true,true,true,false,false,false,false,false]", + "indexByOption": "{Trapped Chests=1, Ender Chests=2, Dispensers=6, Chests=0, Barrels=4, Furnaces=8, Shulker Boxes=3, Hoppers=5, Droppers=7, Brewing Stands=9}" + } + }, + { + "field": "fill", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Fill", + "desc": "Fills blocks with the glow color instead of outline only.", + "value": "true", + "props": {} + }, + { + "field": "chestsColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Chests Color", + "desc": "Sets the chest glow color.", + "value": "java.awt.Color[r=255,g=165,b=0]", + "props": {} + }, + { + "field": "trappedChestsColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Trapped Chests Color", + "desc": "Sets the trapped chest glow color.", + "value": "java.awt.Color[r=220,g=50,b=50]", + "props": {} + }, + { + "field": "enderChestsColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Ender Chests Color", + "desc": "Sets the ender chest glow color.", + "value": "java.awt.Color[r=130,g=60,b=220]", + "props": {} + }, + { + "field": "shulkersColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Shulkers Color", + "desc": "Sets the shulker box glow color.", + "value": "java.awt.Color[r=235,g=100,b=235]", + "props": {} + }, + { + "field": "barrelsColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Barrels Color", + "desc": "Sets the barrel glow color.", + "value": "java.awt.Color[r=180,g=140,b=90]", + "props": {} + }, + { + "field": "hoppersColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Hoppers Color", + "desc": "Sets the hopper glow color.", + "value": "java.awt.Color[r=160,g=160,b=160]", + "props": {} + }, + { + "field": "dispensersColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Dispensers Color", + "desc": "Sets the dispenser glow color.", + "value": "java.awt.Color[r=120,g=120,b=120]", + "props": {} + }, + { + "field": "droppersColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Droppers Color", + "desc": "Sets the dropper glow color.", + "value": "java.awt.Color[r=140,g=110,b=90]", + "props": {} + }, + { + "field": "furnacesColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Furnaces Color", + "desc": "Sets the furnace glow color.", + "value": "java.awt.Color[r=220,g=90,b=30]", + "props": {} + }, + { + "field": "brewingStandsColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Brewing Stands Color", + "desc": "Sets the brewing stand glow color.", + "value": "java.awt.Color[r=80,g=200,b=80]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.StreamerMode", + "name": "Streamer Mode", + "desc": "Hides everyones names on your screen", + "category": "Misc", + "enabled": false, + "settings": [ + { + "field": "excludeFriends", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Exclude Friends", + "desc": "Keeps friend names unmasked.", + "value": "false", + "props": {} + }, + { + "field": "prefix", + "setClass": "dev.zprestige.prestige.TextSetting", + "name": "Prefix", + "desc": "Starts every alias with this text.", + "value": "PrestigeClient", + "props": { + "placeholder": "Prefix" + } + }, + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Numbered counts aliases up; Random generates fresh ones.", + "value": "Numbered", + "props": { + "options": "[Numbered,Random]" + } + }, + { + "field": "includeSelf", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Include Self", + "desc": "Replaces your own name too.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.SwapHit", + "name": "Swap Hit", + "desc": "Briefly swaps to a sword to hit, then swaps back to your previous slot", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "totemOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Totem Only", + "desc": "Swaps only while holding a totem.", + "value": "false", + "props": {} + }, + { + "field": "swapDelay", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Swap Delay", + "desc": "Waits this long between the sword swap and the hit (ms).", + "value": "50.0", + "props": { + "min": "0.0", + "max": "300.0" + } + }, + { + "field": "swapBackDelay", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Swap Back Delay", + "desc": "Waits this long between the hit and the swap back (ms).", + "value": "50.0", + "props": { + "min": "0.0", + "max": "300.0" + } + }, + { + "field": "shieldAware", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Shield Aware", + "desc": "If the target is actively shielding into you, a sword swap does 0 damage AND wastes the disable-shield stun an axe would apply. When on, skip the sword swap in that case (or divert to Prefer Axe below).", + "value": "true", + "props": {} + }, + { + "field": "preferAxe", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Prefer Axe", + "desc": "Instead of skipping when the target is shielding, swap to an axe hotbar slot so the hit disables the shield + applies its 5s cooldown. Falls back to skip if no axe is in the hotbar.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.TargetRenderer", + "name": "Target Renderer", + "desc": "Highlights your target during combat", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Draws the target effect as a ghost or a square.", + "value": "Ghost", + "props": { + "options": "[Ghost,Square]" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.misc.Teams", + "name": "Teams", + "desc": "Prevents you from attacking teammates in certain game modes", + "category": "Misc", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.visual.TotemAnimation", + "name": "Totem Animation", + "desc": "Increases the speed of totem animations", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "speed", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Speed", + "desc": "Sets the totem pop animation speed (x).", + "value": "1", + "props": { + "min": "0", + "max": "5" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.TotemHit", + "name": "Totem Hit", + "desc": "More knockback when hitting players with totems", + "category": "Combat", + "enabled": false, + "settings": [] + }, + { + "class": "dev.zprestige.prestige.module.visual.Trails", + "name": "Trails", + "desc": "Leaves a trail behind players", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "selfOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Self Only", + "desc": "Draws your own trail only.", + "value": "true", + "props": {} + }, + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Draws footsteps, a ring, or particles.", + "value": "Footsteps", + "props": { + "options": "[Footsteps,Ring,Particles]" + } + }, + { + "field": "duration", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Duration", + "desc": "Keeps each trail point visible this long (ms).", + "value": "1500", + "props": { + "min": "200", + "max": "5000" + } + }, + { + "field": "size", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Size", + "desc": "Scales the trail (x).", + "value": "1.0", + "props": { + "min": "0.2", + "max": "3.0" + } + }, + { + "field": "themeColor", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Theme Color", + "desc": "Uses the menu theme color.", + "value": "true", + "props": {} + }, + { + "field": "color", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Color", + "desc": "Sets the trail color when not using the theme.", + "value": "java.awt.Color[r=131,g=118,b=252]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.Trajectories", + "name": "Trajectories", + "desc": "Shows trajectories of certain items", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "render", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Render", + "desc": "Predicts all projectiles, or only crossbows, bows, or pearls.", + "value": "All", + "props": { + "options": "[All,Crossbow,Bow,Bows,Pearl]" + } + }, + { + "field": "color", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Color", + "desc": "Sets the color of the trajectory beam and impact rings.", + "value": "java.awt.Color[r=131,g=118,b=252]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.Triggerbot", + "name": "Triggerbot", + "desc": "Attacks entities when looking at them", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "targets", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Targets", + "desc": "Attacks players, crystals, or anything.", + "value": "", + "props": { + "options": "[Any,Players,Crystals]", + "selected": "[false,true,true]", + "indexByOption": "{Any=0, Players=1, Crystals=2}" + } + }, + { + "field": "stickyTarget", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Sticky Target", + "desc": "Locks the first player hit until they die or leave range.", + "value": "false", + "props": {} + }, + { + "field": "stickyRange", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Sticky Range", + "desc": "Distance at which a locked sticky target is released. Was hardcoded 5.0 — expose it so users can tighten (kite-heavy fights, avoid re-lock over a wall) or loosen (long-reach setups). Range 3–8: 3 is roughly a sword swing, 8 covers a mace / spear-reach extension.", + "value": "5.0", + "props": { + "min": "3.0", + "max": "8.0" + } + }, + { + "field": "swordSettings", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Sword Settings", + "desc": "Toggles sword rules: weapon only, crit timing, invisibles, crit only.", + "value": "", + "props": { + "options": "[Weapon Only,Criticals Timing,Attack Invisibles,Crit Only]", + "selected": "[true,true,false,false]", + "indexByOption": "{Attack Invisibles=2, Crit Only=3, Criticals Timing=1, Weapon Only=0}" + } + }, + { + "field": "crystalSettings", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Crystal Settings", + "desc": "Toggles crystal rules: crystal only, on-ground only, pause on kill.", + "value": "", + "props": { + "options": "[Crystal Only,On Ground Only,Pause On Kill]", + "selected": "[true,true,true]", + "indexByOption": "{On Ground Only=1, Crystal Only=0, Pause On Kill=2}" + } + }, + { + "field": "requireLeftClick", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Require Left Click", + "desc": "Fires only while left click is held.", + "value": "false", + "props": {} + }, + { + "field": "pauseInScreen", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Pause In Screen", + "desc": "Pauses while a screen is open.", + "value": "true", + "props": {} + }, + { + "field": "ignoreFriends", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Ignore Friends", + "desc": "Skips players on your Socials friend list. Off = Triggerbot will happily attack friends whose name matches your list (previous behavior — no socials guard existed).", + "value": "true", + "props": {} + }, + { + "field": "debugTargets", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Debug Targets", + "desc": "When a crosshair entity is rejected, prints its class + which gate failed to chat (rate-limited per entity).", + "value": "false", + "props": {} + }, + { + "field": "delay", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Delay", + "desc": "Waits a random time in this range after seeing the target (ms).", + "value": "0.0", + "props": { + "min": "0.0", + "max": "500.0", + "low": "0.0", + "high": "0.0", + "rolled": "0.0" + } + }, + { + "field": "cooldown", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Cooldown", + "desc": "Fires within this attack-cooldown window (%). 80–100 is the default.", + "value": "80.0", + "props": { + "min": "0.0", + "max": "100.0", + "low": "80.0", + "high": "100.0", + "rolled": "80.0" + } + }, + { + "field": "tpsSync", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "TPS Sync", + "desc": "Raises the cooldown threshold on laggy servers to avoid double swings.", + "value": "true", + "props": {} + }, + { + "field": "missChance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Miss Chance", + "desc": "Percentage chance for a fireable player acquisition to be missed. A missed player is not retried until the crosshair leaves or switches target, or Require Left Click is released. Crystals are never missed. 5–15% is a plausible human miss rate.", + "value": "0.0", + "props": { + "min": "0.0", + "max": "25.0" + } + }, + { + "field": "customCooldown", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Custom Cooldown", + "desc": "Millisecond gate that replaces the vanilla attack-cooldown check when Weapon Only is OFF. Before this, holding a shovel / totem / bow / fist against a player let Triggerbot fire every tick because the cooldown branch was gated on `weapon`. Rolls a random ms threshold in this window per fire (jitter matches AutoShieldBreaker's breakCooldown pattern — a fixed threshold is trivially fingerprintable). Crystals bypass this gate entirely.", + "value": "100.0", + "props": { + "min": "0.0", + "max": "1000.0", + "low": "100.0", + "high": "200.0", + "rolled": "100.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.TwoDESP", + "name": "Two DESP", + "desc": "Draws 2D boxes around players", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "showInvisibles", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Show Invisibles", + "desc": "Draws boxes for invisible players too.", + "value": "true", + "props": {} + }, + { + "field": "style", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Style", + "desc": "Draws a full box, corner brackets, or side brackets.", + "value": "Corners", + "props": { + "options": "[Box,Corners,Brackets]" + } + }, + { + "field": "rounding", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Rounding", + "desc": "Rounds box corners by this radius (px).", + "value": "2.0", + "props": { + "min": "0.0", + "max": "8.0" + } + }, + { + "field": "lineWidth", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Line Width", + "desc": "Sets border stroke thickness (px).", + "value": "0.75", + "props": { + "min": "0.5", + "max": "1.5" + } + }, + { + "field": "features", + "setClass": "dev.zprestige.prestige.MultiSetting", + "name": "Features", + "desc": "Toggles overlay elements: fill, glow, gradient, health, name, distance.", + "value": "", + "props": { + "options": "[Fill,Glow,Gradient,Health Bar,Name Tag,Distance,Blur Labels]", + "selected": "[true,true,true,true,true,true,true]", + "indexByOption": "{Fill=0, Gradient=2, Name Tag=4, Blur Labels=6, Health Bar=3, Glow=1, Distance=5}" + } + }, + { + "field": "fillAlpha", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Fill Alpha", + "desc": "Sets fill tint opacity (0–0.4).", + "value": "0.12", + "props": { + "min": "0.0", + "max": "0.4" + } + }, + { + "field": "glowStrength", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Glow Strength", + "desc": "Extends the glow this far outward (px).", + "value": "8.0", + "props": { + "min": "2.0", + "max": "20.0" + } + }, + { + "field": "animated", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Animated", + "desc": "Oscillates the gradient over time.", + "value": "true", + "props": {} + }, + { + "field": "animationSpeed", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Animation Speed", + "desc": "Sets the gradient breathing speed (x).", + "value": "1.4", + "props": { + "min": "0.3", + "max": "4.0" + } + }, + { + "field": "healthPosition", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Health Position", + "desc": "Docks the health bar left, right, bottom, or top.", + "value": "Left", + "props": { + "options": "[Left,Right,Bottom,Top]" + } + }, + { + "field": "healthText", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Health Text", + "desc": "Overlays numeric HP on the health bar.", + "value": "true", + "props": {} + }, + { + "field": "healthShine", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Health Shine", + "desc": "Sweeps an animated highlight along the health bar.", + "value": "true", + "props": {} + }, + { + "field": "fadeSpeed", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Fade Speed", + "desc": "Fades boxes in and out at this speed (x).", + "value": "14.0", + "props": { + "min": "3.0", + "max": "30.0" + } + }, + { + "field": "maxDistance", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Max Distance", + "desc": "Hides boxes for players beyond this distance (blocks).", + "value": "120", + "props": { + "min": "10", + "max": "300" + } + }, + { + "field": "limit", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Limit", + "desc": "Caps rendered boxes at this count (nearest players first).", + "value": "30", + "props": { + "min": "1", + "max": "200" + } + }, + { + "field": "menuColor", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Menu Color", + "desc": "Uses the menu accent color for the box.", + "value": "true", + "props": {} + }, + { + "field": "boxColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Box Color", + "desc": "Sets the border color when not using the menu accent.", + "value": "java.awt.Color[r=131,g=118,b=252]", + "props": {} + }, + { + "field": "gradientColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Gradient Color", + "desc": "Sets the gradient's bottom color.", + "value": "java.awt.Color[r=255,g=106,b=200]", + "props": {} + }, + { + "field": "friendColor", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Friend Color", + "desc": "Sets the box color for friends.", + "value": "java.awt.Color[r=120,g=220,b=255]", + "props": {} + }, + { + "field": "healthHigh", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Health High", + "desc": "Sets the health bar color at full health.", + "value": "java.awt.Color[r=120,g=245,b=140]", + "props": {} + }, + { + "field": "healthLow", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Health Low", + "desc": "Sets the health bar color at low health.", + "value": "java.awt.Color[r=255,g=74,b=74]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.movement.Velocity", + "name": "Velocity", + "desc": "Reduces knockback you take", + "category": "Movement", + "enabled": false, + "settings": [ + { + "field": "chance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Chance", + "desc": "Rolls this chance on each knockback reduction (%).", + "value": "60.0", + "props": { + "min": "0.0", + "max": "100.0" + } + }, + { + "field": "ignoreExplosions", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Ignore Explosions", + "desc": "Skips reduction while flying away from explosions.", + "value": "true", + "props": {} + }, + { + "field": "vertical", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Vertical", + "desc": "Takes a random share in this range of vertical knockback (%).", + "value": "80.0", + "props": { + "min": "0.0", + "max": "100.0", + "low": "80.0", + "high": "100.0", + "rolled": "80.0" + } + }, + { + "field": "horizontal", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Horizontal", + "desc": "Takes a random share in this range of horizontal knockback (%).", + "value": "80.0", + "props": { + "min": "0.0", + "max": "100.0", + "low": "80.0", + "high": "100.0", + "rolled": "80.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.movement.WTap", + "name": "W Tap", + "desc": "Releases W and holds it again to reset server-side sprinting for more knockback", + "category": "Movement", + "enabled": false, + "settings": [ + { + "field": "chance", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Chance", + "desc": "Rolls this chance on each W-tap (%).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "100.0" + } + }, + { + "field": "holdLength", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Hold Length", + "desc": "Releases W for a random time in this range (ms).", + "value": "100.0", + "props": { + "min": "0.0", + "max": "400.0", + "low": "100.0", + "high": "200.0", + "rolled": "100.0" + } + }, + { + "field": "reaction", + "setClass": "dev.zprestige.prestige.RangeSetting", + "name": "Reaction", + "desc": "Waits a random reaction time in this range after the hit (ms).", + "value": "10.0", + "props": { + "min": "0.0", + "max": "50.0", + "low": "10.0", + "high": "30.0", + "rolled": "10.0" + } + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.Weather", + "name": "Weather", + "desc": "Renders custom weather effects", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "mode", + "setClass": "dev.zprestige.prestige.EnumSetting", + "name": "Mode", + "desc": "Spawns rain, snow, fireflies, or embers.", + "value": "Rain", + "props": { + "options": "[Rain,Snow,Fireflies,Embers]" + } + }, + { + "field": "density", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Density", + "desc": "Caps particles at this count. Higher = denser, more GPU.", + "value": "200", + "props": { + "min": "10", + "max": "1500" + } + }, + { + "field": "radius", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Radius", + "desc": "Spawns particles within this distance (blocks).", + "value": "50", + "props": { + "min": "5", + "max": "100" + } + }, + { + "field": "speed", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Speed", + "desc": "Multiplies particle speed (x).", + "value": "1.0", + "props": { + "min": "0.1", + "max": "5.0" + } + }, + { + "field": "size", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Size", + "desc": "Multiplies particle size (x).", + "value": "3.0", + "props": { + "min": "0.1", + "max": "5.0" + } + }, + { + "field": "themeColor", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Theme Color", + "desc": "Uses menu theme shades for particles.", + "value": "true", + "props": {} + }, + { + "field": "color", + "setClass": "dev.zprestige.prestige.ColorSetting", + "name": "Color", + "desc": "Sets the particle color when not using the theme.", + "value": "java.awt.Color[r=255,g=255,b=255]", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.mace.WindChargeAura", + "name": "Wind Charge Aura", + "desc": "Automatically hits wind charges around you", + "category": "Mace", + "enabled": false, + "settings": [ + { + "field": "reach", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Reach", + "desc": "Attacks within this eye-to-hitbox distance (blocks). Server caps at 3.0.", + "value": "2.95", + "props": { + "min": "1.0", + "max": "3.0" + } + }, + { + "field": "humanizedAim", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Humanized Aim", + "desc": "Adds a small distance-scaled yaw/pitch jitter to the attack rotation so every hit doesn't ship the exact eye-vector angle. Same jitter KillAura uses; auto-scales spread by 1/distance and clamps pitch to ±89.9 for Grim BadPacketsN.", + "value": "true", + "props": {} + }, + { + "field": "maxYaw", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Max Yaw", + "desc": "Caps rotations at this yaw offset from your view (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + }, + { + "field": "inAirOnly", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "In Air Only", + "desc": "Only attacks wind charges while you are airborne.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.visual.XRay", + "name": "XRay", + "desc": "See ores and valuables through walls", + "category": "Visual", + "enabled": false, + "settings": [ + { + "field": "fullBright", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Full Bright", + "desc": "Fully lights every block. Some anticheats flag it; off keeps only ore glow.", + "value": "true", + "props": {} + } + ] + }, + { + "class": "dev.zprestige.prestige.module.combat.XbowCart", + "name": "Xbow Cart", + "desc": "Places a minecart and detonates it with a charged crossbow", + "category": "Combat", + "enabled": false, + "settings": [ + { + "field": "switchDelay", + "setClass": "dev.zprestige.prestige.IntSetting", + "name": "Switch Delay", + "desc": "Waits this many ticks between rail, cart, fire, and crossbow steps.", + "value": "2", + "props": { + "min": "0", + "max": "20" + } + }, + { + "field": "silentAim", + "setClass": "dev.zprestige.prestige.BoolSetting", + "name": "Silent Aim", + "desc": "Aims at placements and the shot server-side; your camera never moves.", + "value": "true", + "props": {} + }, + { + "field": "silentAimFov", + "setClass": "dev.zprestige.prestige.FloatSetting", + "name": "Silent Aim FOV", + "desc": "Caps silent aim at this yaw offset per tick (degrees).", + "value": "180.0", + "props": { + "min": "0.0", + "max": "180.0" + } + } + ] } - ] - } - ] -} \ No newline at end of file + ] +} diff --git a/src/main/resources/prestige_ui/old_names.tsv b/src/main/resources/prestige_ui/old_names.tsv deleted file mode 100644 index 9011e5b..0000000 --- a/src/main/resources/prestige_ui/old_names.tsv +++ /dev/null @@ -1,540 +0,0 @@ -dev.zprestige.prestige.dV dev.zprestige.prestige.Module -dev.zprestige.prestige.i dev.zprestige.prestige.Category -dev.zprestige.prestige.dK dev.zprestige.prestige.Setting -dev.zprestige.prestige.dU dev.zprestige.prestige.SettingHolder -dev.zprestige.prestige.dM dev.zprestige.prestige.BoolSetting -dev.zprestige.prestige.dN dev.zprestige.prestige.ColorSetting -dev.zprestige.prestige.dO dev.zprestige.prestige.FloatSetting -dev.zprestige.prestige.dP dev.zprestige.prestige.IntSetting -dev.zprestige.prestige.dQ dev.zprestige.prestige.RangeSetting -dev.zprestige.prestige.dR dev.zprestige.prestige.EnumSetting -dev.zprestige.prestige.dS dev.zprestige.prestige.MultiSetting -dev.zprestige.prestige.dL dev.zprestige.prestige.KeybindSetting -dev.zprestige.prestige.dT dev.zprestige.prestige.TextSetting -dev.zprestige.prestige.bO dev.zprestige.prestige.EventBus -dev.zprestige.prestige.cJ dev.zprestige.prestige.ModuleManager -dev.zprestige.prestige.e_ dev.zprestige.prestige.MenuModule -dev.zprestige.prestige.q dev.zprestige.prestige.Gamemode -dev.zprestige.prestige.bP dev.zprestige.prestige.Subscribe -dev.zprestige.prestige.cy dev.zprestige.prestige.ListenerEntry -dev.zprestige.prestige.dW dev.zprestige.prestige.module.combat.AimAssist -dev.zprestige.prestige.dX dev.zprestige.prestige.module.visual.Ambience -dev.zprestige.prestige.dY dev.zprestige.prestige.module.combat.AnchorExploder -dev.zprestige.prestige.dZ dev.zprestige.prestige.module.combat.AnchorMacro -dev.zprestige.prestige.d0 dev.zprestige.prestige.module.combat.AnchorPearlCatch -dev.zprestige.prestige.d1 dev.zprestige.prestige.module.combat.AnchorPlacer -dev.zprestige.prestige.d2 dev.zprestige.prestige.module.visual.Animations -dev.zprestige.prestige.d3 dev.zprestige.prestige.module.combat.AntiAction -dev.zprestige.prestige.d4 dev.zprestige.prestige.module.combat.AntiBot -dev.zprestige.prestige.d5 dev.zprestige.prestige.module.visual.AntiResourcePack -dev.zprestige.prestige.d6 dev.zprestige.prestige.module.misc.AntiTrap -dev.zprestige.prestige.d7 dev.zprestige.prestige.module.combat.AntiWeb -dev.zprestige.prestige.d8 dev.zprestige.prestige.module.combat.AutoAnchor -dev.zprestige.prestige.d9 dev.zprestige.prestige.module.misc.AutoArmor -dev.zprestige.prestige.d_ dev.zprestige.prestige.module.combat.AutoCart -dev.zprestige.prestige.ea dev.zprestige.prestige.module.misc.AutoClicker -dev.zprestige.prestige.eb dev.zprestige.prestige.module.combat.AutoCrystal -dev.zprestige.prestige.ec dev.zprestige.prestige.module.combat.AutoDrain -dev.zprestige.prestige.ed dev.zprestige.prestige.module.combat.AutoElytra -dev.zprestige.prestige.ee dev.zprestige.prestige.module.combat.AutoHitCrystal -dev.zprestige.prestige.ef dev.zprestige.prestige.module.movement.AutoJumpReset -dev.zprestige.prestige.eg dev.zprestige.prestige.module.misc.AutoLoot -dev.zprestige.prestige.eh dev.zprestige.prestige.module.mace.AutoMace -dev.zprestige.prestige.ei dev.zprestige.prestige.module.combat.AutoObbyCrystal -dev.zprestige.prestige.ej dev.zprestige.prestige.module.mace.AutoPearlCatch -dev.zprestige.prestige.ek dev.zprestige.prestige.module.misc.AutoPickaxe -dev.zprestige.prestige.el dev.zprestige.prestige.module.misc.AutoPot -dev.zprestige.prestige.em dev.zprestige.prestige.module.mace.AutoReMace -dev.zprestige.prestige.en dev.zprestige.prestige.module.combat.AutoSafeCart -dev.zprestige.prestige.eo dev.zprestige.prestige.module.combat.AutoShield -dev.zprestige.prestige.ep dev.zprestige.prestige.module.combat.AutoShieldBreaker -dev.zprestige.prestige.eq dev.zprestige.prestige.module.movement.AutoShortPearl -dev.zprestige.prestige.er dev.zprestige.prestige.module.misc.AutoText -dev.zprestige.prestige.es dev.zprestige.prestige.module.misc.AutoTool -dev.zprestige.prestige.et dev.zprestige.prestige.module.combat.AutoTotem -dev.zprestige.prestige.eu dev.zprestige.prestige.module.combat.Backtrack -dev.zprestige.prestige.ev dev.zprestige.prestige.module.mace.BreachSwap -dev.zprestige.prestige.ew dev.zprestige.prestige.module.combat.CartAura -dev.zprestige.prestige.ex dev.zprestige.prestige.module.combat.CartPearlCatch -dev.zprestige.prestige.ey dev.zprestige.prestige.module.misc.CartRefill -dev.zprestige.prestige.ez dev.zprestige.prestige.module.misc.CartStealer -dev.zprestige.prestige.eA dev.zprestige.prestige.module.misc.ChestStealer -dev.zprestige.prestige.eB dev.zprestige.prestige.module.combat.CobwebPlacer -dev.zprestige.prestige.eC dev.zprestige.prestige.module.misc.Criticals -dev.zprestige.prestige.eD dev.zprestige.prestige.module.misc.CrystalOptimizer -dev.zprestige.prestige.eE dev.zprestige.prestige.module.mace.DiagonalPearlCatch -dev.zprestige.prestige.eF dev.zprestige.prestige.module.combat.DoubleAnchor -dev.zprestige.prestige.eG dev.zprestige.prestige.module.visual.ESP -dev.zprestige.prestige.eH dev.zprestige.prestige.module.mace.ElytraWindCharge -dev.zprestige.prestige.eI dev.zprestige.prestige.module.misc.EnemyFaker -dev.zprestige.prestige.eJ dev.zprestige.prestige.module.spear.ExtendedReach -dev.zprestige.prestige.eK dev.zprestige.prestige.module.movement.FakeLag -dev.zprestige.prestige.eL dev.zprestige.prestige.module.movement.FastBridge -dev.zprestige.prestige.eM dev.zprestige.prestige.module.misc.FastEXP -dev.zprestige.prestige.eN dev.zprestige.prestige.module.mace.FastPearlCatch -dev.zprestige.prestige.eO dev.zprestige.prestige.module.misc.FastPlace -dev.zprestige.prestige.eP dev.zprestige.prestige.module.visual.FreeLook -dev.zprestige.prestige.eQ dev.zprestige.prestige.module.movement.Freecam -dev.zprestige.prestige.eR dev.zprestige.prestige.module.misc.Friends -dev.zprestige.prestige.eS dev.zprestige.prestige.module.combat.GhostPlace -dev.zprestige.prestige.eT dev.zprestige.prestige.module.visual.HealthIndicators -dev.zprestige.prestige.eU dev.zprestige.prestige.module.visual.HitEffect -dev.zprestige.prestige.eV dev.zprestige.prestige.module.combat.HitFix -dev.zprestige.prestige.eW dev.zprestige.prestige.module.combat.HitFlick -dev.zprestige.prestige.eX dev.zprestige.prestige.module.combat.Hitboxes -dev.zprestige.prestige.eY dev.zprestige.prestige.module.visual.HudEditor -dev.zprestige.prestige.eZ dev.zprestige.prestige.module.combat.InstantCrossbow -dev.zprestige.prestige.e0 dev.zprestige.prestige.module.spear.InstantLunge -dev.zprestige.prestige.e1 dev.zprestige.prestige.module.combat.InstantShield -dev.zprestige.prestige.e2 dev.zprestige.prestige.module.visual.ItemESP -dev.zprestige.prestige.e3 dev.zprestige.prestige.module.visual.JumpCircles -dev.zprestige.prestige.e4 dev.zprestige.prestige.module.combat.KeepSprint -dev.zprestige.prestige.e5 dev.zprestige.prestige.module.misc.KeyPearl -dev.zprestige.prestige.e6 dev.zprestige.prestige.module.mace.KeyWindCharge -dev.zprestige.prestige.e7 dev.zprestige.prestige.module.combat.KillAura -dev.zprestige.prestige.e8 dev.zprestige.prestige.module.mace.MacePot -dev.zprestige.prestige.e9 dev.zprestige.prestige.module.mace.MacePrediction -dev.zprestige.prestige.fa dev.zprestige.prestige.module.misc.MiddleClickFriend -dev.zprestige.prestige.fb dev.zprestige.prestige.module.misc.NameHider -dev.zprestige.prestige.fc dev.zprestige.prestige.module.visual.NameTags -dev.zprestige.prestige.fd dev.zprestige.prestige.module.visual.NoBounce -dev.zprestige.prestige.fe dev.zprestige.prestige.module.movement.NoJumpDelay -dev.zprestige.prestige.ff dev.zprestige.prestige.module.combat.NoMissDelay -dev.zprestige.prestige.fg dev.zprestige.prestige.module.visual.OreSimulation -dev.zprestige.prestige.fh dev.zprestige.prestige.module.movement.Parkour -dev.zprestige.prestige.fi dev.zprestige.prestige.module.combat.PearlFollow -dev.zprestige.prestige.fj dev.zprestige.prestige.module.visual.PearlTrajectory -dev.zprestige.prestige.fk dev.zprestige.prestige.module.mace.PearlWindCharge -dev.zprestige.prestige.fl dev.zprestige.prestige.module.misc.PotionRefill -dev.zprestige.prestige.fm dev.zprestige.prestige.module.combat.PredictDoubleHand -dev.zprestige.prestige.fn dev.zprestige.prestige.module.misc.Reach -dev.zprestige.prestige.fo dev.zprestige.prestige.module.misc.Refill -dev.zprestige.prestige.fp dev.zprestige.prestige.module.visual.RenderOptimizer -dev.zprestige.prestige.fq dev.zprestige.prestige.module.misc.RightClicker -dev.zprestige.prestige.fr dev.zprestige.prestige.module.combat.SafeAnchor -dev.zprestige.prestige.fs dev.zprestige.prestige.module.misc.SelfDestruct -dev.zprestige.prestige.ft dev.zprestige.prestige.module.mace.ShieldDrain -dev.zprestige.prestige.fu dev.zprestige.prestige.module.visual.ShieldRenderer -dev.zprestige.prestige.fv dev.zprestige.prestige.module.movement.ShortPearl -dev.zprestige.prestige.fw dev.zprestige.prestige.module.mace.ShortWindCharge -dev.zprestige.prestige.fx dev.zprestige.prestige.module.combat.SilentAim -dev.zprestige.prestige.fy dev.zprestige.prestige.module.spear.SpearDamageIndicator -dev.zprestige.prestige.fz dev.zprestige.prestige.module.spear.SpearMaceDoubleTap -dev.zprestige.prestige.fA dev.zprestige.prestige.module.movement.Sprint -dev.zprestige.prestige.fB dev.zprestige.prestige.module.visual.StorageESP -dev.zprestige.prestige.fC dev.zprestige.prestige.module.misc.StreamerMode -dev.zprestige.prestige.fD dev.zprestige.prestige.module.combat.SwapHit -dev.zprestige.prestige.fE dev.zprestige.prestige.module.visual.TargetRenderer -dev.zprestige.prestige.fF dev.zprestige.prestige.module.misc.Teams -dev.zprestige.prestige.fG dev.zprestige.prestige.module.visual.TotemAnimation -dev.zprestige.prestige.fH dev.zprestige.prestige.module.combat.TotemHit -dev.zprestige.prestige.fI dev.zprestige.prestige.module.visual.Trails -dev.zprestige.prestige.fJ dev.zprestige.prestige.module.visual.Trajectories -dev.zprestige.prestige.fK dev.zprestige.prestige.module.combat.Triggerbot -dev.zprestige.prestige.fL dev.zprestige.prestige.module.visual.TwoDESP -dev.zprestige.prestige.fM dev.zprestige.prestige.module.movement.Velocity -dev.zprestige.prestige.fN dev.zprestige.prestige.module.movement.WTap -dev.zprestige.prestige.fO dev.zprestige.prestige.module.visual.Weather -dev.zprestige.prestige.fP dev.zprestige.prestige.module.mace.WindChargeAura -dev.zprestige.prestige.fQ dev.zprestige.prestige.module.visual.XRay -dev.zprestige.prestige.fR dev.zprestige.prestige.module.combat.XbowCart -dev.zprestige.prestige.A dev.zprestige.prestige.type.BlockBreakType -dev.zprestige.prestige.a0 dev.zprestige.prestige.event.TickEvent -dev.zprestige.prestige.a1 dev.zprestige.prestige.event.IntEvent -dev.zprestige.prestige.a2 dev.zprestige.prestige.event.FloatColorEvent -dev.zprestige.prestige.a3 dev.zprestige.prestige.event.FloatEvent -dev.zprestige.prestige.a4 dev.zprestige.prestige.event.TickEvent2 -dev.zprestige.prestige.a5 dev.zprestige.prestige.event.TickEvent3 -dev.zprestige.prestige.a6 dev.zprestige.prestige.event.TickEvent4 -dev.zprestige.prestige.a7 dev.zprestige.prestige.event.EntityBoolEvent -dev.zprestige.prestige.a8 dev.zprestige.prestige.event.EntityFloatEvent -dev.zprestige.prestige.a9 dev.zprestige.prestige.event.TickEvent5 -dev.zprestige.prestige.a_ dev.zprestige.prestige.event.IntEvent2 -dev.zprestige.prestige.a dev.zprestige.prestige.type.AnchorState -dev.zprestige.prestige.aA dev.zprestige.prestige.combat.DamageUtil -dev.zprestige.prestige.aa dev.zprestige.prestige.render.RenderHelper -dev.zprestige.prestige.aB dev.zprestige.prestige.world.WorldHelper -dev.zprestige.prestige.ab dev.zprestige.prestige.render.RenderHelper2 -dev.zprestige.prestige.aC dev.zprestige.prestige.render.RenderHelper3 -dev.zprestige.prestige.ac dev.zprestige.prestige.math.MathHelper -dev.zprestige.prestige.aD dev.zprestige.prestige.math.MathHelper2 -dev.zprestige.prestige.ad dev.zprestige.prestige.math.MathHelper3 -dev.zprestige.prestige.aE dev.zprestige.prestige.math.MathHelper4 -dev.zprestige.prestige.ae dev.zprestige.prestige.world.WorldHelper2 -dev.zprestige.prestige.aF dev.zprestige.prestige.social.AltManager -dev.zprestige.prestige.af dev.zprestige.prestige.render.RenderHelper4 -dev.zprestige.prestige.aG dev.zprestige.prestige.render.ESPUtil -dev.zprestige.prestige.ag dev.zprestige.prestige.inventory.ArmorUtil -dev.zprestige.prestige.aH dev.zprestige.prestige.event.Event -dev.zprestige.prestige.ah dev.zprestige.prestige.render.RenderHelper5 -dev.zprestige.prestige.aI dev.zprestige.prestige.event.PlayerEvent -dev.zprestige.prestige.ai dev.zprestige.prestige.combat.TargetManager -dev.zprestige.prestige.aJ dev.zprestige.prestige.event.TickEvent6 -dev.zprestige.prestige.aj dev.zprestige.prestige.combat.AutoArmorHelper -dev.zprestige.prestige.aK dev.zprestige.prestige.event.EntityEvent -dev.zprestige.prestige.ak dev.zprestige.prestige.math.AutoCrystalHelper -dev.zprestige.prestige.aL dev.zprestige.prestige.event.TickEvent7 -dev.zprestige.prestige.al dev.zprestige.prestige.math.AutoObbyCrystalHelper -dev.zprestige.prestige.aM dev.zprestige.prestige.event.TickEvent8 -dev.zprestige.prestige.am dev.zprestige.prestige.render.AutoTotemHelper -dev.zprestige.prestige.aN dev.zprestige.prestige.event.TickEvent9 -dev.zprestige.prestige.an dev.zprestige.prestige.render.RenderHelper6 -dev.zprestige.prestige.aO dev.zprestige.prestige.event.TickEvent10 -dev.zprestige.prestige.ao dev.zprestige.prestige.world.WorldUtil2 -dev.zprestige.prestige.aP dev.zprestige.prestige.event.BlockPosBlockEvent -dev.zprestige.prestige.ap dev.zprestige.prestige.render.RenderHelper7 -dev.zprestige.prestige.aQ dev.zprestige.prestige.event.TickEvent11 -dev.zprestige.prestige.aq dev.zprestige.prestige.render.RenderHelper8 -dev.zprestige.prestige.aR dev.zprestige.prestige.event.EntityEvent2 -dev.zprestige.prestige.ar dev.zprestige.prestige.render.RenderHelper9 -dev.zprestige.prestige.aS dev.zprestige.prestige.event.TickEvent12 -dev.zprestige.prestige.as dev.zprestige.prestige.world.OreSimulationHelper -dev.zprestige.prestige.aT dev.zprestige.prestige.event.DoubleEvent -dev.zprestige.prestige.at dev.zprestige.prestige.render.RenderHelper10 -dev.zprestige.prestige.aU dev.zprestige.prestige.event.TickEvent13 -dev.zprestige.prestige.au dev.zprestige.prestige.combat.AimManager -dev.zprestige.prestige.aV dev.zprestige.prestige.event.TickEvent14 -dev.zprestige.prestige.av dev.zprestige.prestige.world.CobwebPlacerHelper -dev.zprestige.prestige.aW dev.zprestige.prestige.event.EntityEvent3 -dev.zprestige.prestige.aw dev.zprestige.prestige.config.ConfigManager -dev.zprestige.prestige.aX dev.zprestige.prestige.event.EntityEvent4 -dev.zprestige.prestige.ax dev.zprestige.prestige.render.RenderHelper11 -dev.zprestige.prestige.aY dev.zprestige.prestige.event.FloatDoubleEvent -dev.zprestige.prestige.ay dev.zprestige.prestige.render.RenderHelper12 -dev.zprestige.prestige.aZ dev.zprestige.prestige.event.TickEvent15 -dev.zprestige.prestige.az dev.zprestige.prestige.render.RenderHelper13 -dev.zprestige.prestige.B dev.zprestige.prestige.type.CartState -dev.zprestige.prestige.b0 dev.zprestige.prestige.math.HitEffectHelper -dev.zprestige.prestige.b1 dev.zprestige.prestige.world.PlacementCheck -dev.zprestige.prestige.b2 dev.zprestige.prestige.math.MathUtil -dev.zprestige.prestige.b3 dev.zprestige.prestige.math.MathUtil2 -dev.zprestige.prestige.b4 dev.zprestige.prestige.hud.HudElement -dev.zprestige.prestige.b5 dev.zprestige.prestige.hud.CartHelperElement -dev.zprestige.prestige.b6 dev.zprestige.prestige.hud.CooldownIndicatorElement -dev.zprestige.prestige.b7 dev.zprestige.prestige.hud.CrosshairElement -dev.zprestige.prestige.b8 dev.zprestige.prestige.hud.FPSElement -dev.zprestige.prestige.b9 dev.zprestige.prestige.hud.KeybindsElement -dev.zprestige.prestige.b_ dev.zprestige.prestige.hud.LatencyElement -dev.zprestige.prestige.b dev.zprestige.prestige.type.ScoopState -dev.zprestige.prestige.bA dev.zprestige.prestige.event.StringEvent -dev.zprestige.prestige.ba dev.zprestige.prestige.event.TickEvent16 -dev.zprestige.prestige.bB dev.zprestige.prestige.event.ColorEvent -dev.zprestige.prestige.bb dev.zprestige.prestige.event.EntityEvent5 -dev.zprestige.prestige.bC dev.zprestige.prestige.event.TickEvent17 -dev.zprestige.prestige.bc dev.zprestige.prestige.event.StringEvent2 -dev.zprestige.prestige.bD dev.zprestige.prestige.event.BoolEvent -dev.zprestige.prestige.bd dev.zprestige.prestige.event.FloatEvent2 -dev.zprestige.prestige.bE dev.zprestige.prestige.event.IntEvent3 -dev.zprestige.prestige.be dev.zprestige.prestige.event.IntEvent4 -dev.zprestige.prestige.bF dev.zprestige.prestige.event.TickEvent18 -dev.zprestige.prestige.bf dev.zprestige.prestige.event.FloatPositionEvent -dev.zprestige.prestige.bG dev.zprestige.prestige.event.TickEvent19 -dev.zprestige.prestige.bg dev.zprestige.prestige.event.PacketEvent -dev.zprestige.prestige.bH dev.zprestige.prestige.event.TickEvent20 -dev.zprestige.prestige.bh dev.zprestige.prestige.event.PacketEvent2 -dev.zprestige.prestige.bI dev.zprestige.prestige.event.FloatEvent3 -dev.zprestige.prestige.bi dev.zprestige.prestige.event.TickEvent21 -dev.zprestige.prestige.bJ dev.zprestige.prestige.event.TickEvent22 -dev.zprestige.prestige.bj dev.zprestige.prestige.event.TickEvent23 -dev.zprestige.prestige.bK dev.zprestige.prestige.event.DoubleEvent2 -dev.zprestige.prestige.bk dev.zprestige.prestige.event.FloatEvent4 -dev.zprestige.prestige.bL dev.zprestige.prestige.event.DoubleEvent3 -dev.zprestige.prestige.bl dev.zprestige.prestige.event.TickEvent24 -dev.zprestige.prestige.bM dev.zprestige.prestige.event.LongEvent -dev.zprestige.prestige.bm dev.zprestige.prestige.event.FloatMatrixEvent -dev.zprestige.prestige.bN dev.zprestige.prestige.event.BlockBoolEvent -dev.zprestige.prestige.bn dev.zprestige.prestige.event.PlayerStringEvent -dev.zprestige.prestige.bo dev.zprestige.prestige.event.TickEvent25 -dev.zprestige.prestige.bp dev.zprestige.prestige.event.ItemEvent -dev.zprestige.prestige.bQ dev.zprestige.prestige.reflect.FieldValue -dev.zprestige.prestige.bq dev.zprestige.prestige.event.EntityEvent6 -dev.zprestige.prestige.bR dev.zprestige.prestige.reflect.MethodValue -dev.zprestige.prestige.br dev.zprestige.prestige.event.TickEvent26 -dev.zprestige.prestige.bS dev.zprestige.prestige.render.GpuBuffer -dev.zprestige.prestige.bs dev.zprestige.prestige.event.FloatEvent5 -dev.zprestige.prestige.bT dev.zprestige.prestige.render.TextRenderer -dev.zprestige.prestige.bt dev.zprestige.prestige.event.TickEvent27 -dev.zprestige.prestige.bU dev.zprestige.prestige.render.Framebuffer -dev.zprestige.prestige.bu dev.zprestige.prestige.event.TickEvent28 -dev.zprestige.prestige.bV dev.zprestige.prestige.render.RenderHelper14 -dev.zprestige.prestige.bv dev.zprestige.prestige.event.TickEvent29 -dev.zprestige.prestige.bW dev.zprestige.prestige.render.FontRenderer -dev.zprestige.prestige.bw dev.zprestige.prestige.event.TickEvent30 -dev.zprestige.prestige.bX dev.zprestige.prestige.math.MathHelper5 -dev.zprestige.prestige.bx dev.zprestige.prestige.event.TickEvent31 -dev.zprestige.prestige.bY dev.zprestige.prestige.network.PacketQueue -dev.zprestige.prestige.by dev.zprestige.prestige.event.LivingEvent -dev.zprestige.prestige.bZ dev.zprestige.prestige.render.RenderHelper15 -dev.zprestige.prestige.bz dev.zprestige.prestige.event.BoolPositionEvent -dev.zprestige.prestige.C dev.zprestige.prestige.reflect.MethodHandleCache -dev.zprestige.prestige.c0 dev.zprestige.prestige.world.OreColorUtil -dev.zprestige.prestige.c1 dev.zprestige.prestige.render.RenderLayerUtil -dev.zprestige.prestige.c2 dev.zprestige.prestige.render.VertexBufferProvider -dev.zprestige.prestige.c3 dev.zprestige.prestige.network.NetworkUtil -dev.zprestige.prestige.c4 dev.zprestige.prestige.math.PearlTrajectoryHelper -dev.zprestige.prestige.c5 dev.zprestige.prestige.math.MathUtil3 -dev.zprestige.prestige.c6 dev.zprestige.prestige.network.NetworkUtil2 -dev.zprestige.prestige.c7 dev.zprestige.prestige.world.RaycastUtil -dev.zprestige.prestige.c8 dev.zprestige.prestige.world.PositionUtil -dev.zprestige.prestige.c9 dev.zprestige.prestige.render.VertexBuffer -dev.zprestige.prestige.c_ dev.zprestige.prestige.combat.CombatHelper -dev.zprestige.prestige.c dev.zprestige.prestige.type.AutoAnchorState -dev.zprestige.prestige.cA dev.zprestige.prestige.render.Font -dev.zprestige.prestige.ca dev.zprestige.prestige.hud.ModuleListElement -dev.zprestige.prestige.cB dev.zprestige.prestige.render.RenderContract -dev.zprestige.prestige.cb dev.zprestige.prestige.hud.ModuleNotificationsElement -dev.zprestige.prestige.cC dev.zprestige.prestige.render.FontManager -dev.zprestige.prestige.cc dev.zprestige.prestige.hud.OffscreenArrowElement -dev.zprestige.prestige.cD dev.zprestige.prestige.config.ConfigHelper -dev.zprestige.prestige.cd dev.zprestige.prestige.hud.PotionDisplayElement -dev.zprestige.prestige.cE dev.zprestige.prestige.config.ConfigHelper2 -dev.zprestige.prestige.ce dev.zprestige.prestige.hud.ResourcesElement -dev.zprestige.prestige.cF dev.zprestige.prestige.world.WorldContract -dev.zprestige.prestige.cf dev.zprestige.prestige.hud.TPSElement -dev.zprestige.prestige.cG dev.zprestige.prestige.render.GlPrimitiveTable -dev.zprestige.prestige.cg dev.zprestige.prestige.hud.TargetElement -dev.zprestige.prestige.cH dev.zprestige.prestige.render.RenderHelper16 -dev.zprestige.prestige.ch dev.zprestige.prestige.hud.TimeElement -dev.zprestige.prestige.cI dev.zprestige.prestige.render.RenderHelper17 -dev.zprestige.prestige.ci dev.zprestige.prestige.hud.WatermarkElement -dev.zprestige.prestige.cj dev.zprestige.prestige.hud.WebsiteElement -dev.zprestige.prestige.cK dev.zprestige.prestige.render.RenderHelper18 -dev.zprestige.prestige.ck dev.zprestige.prestige.render.RenderHelper19 -dev.zprestige.prestige.cL dev.zprestige.prestige.render.RenderHelper20 -dev.zprestige.prestige.cl dev.zprestige.prestige.render.RenderHelper21 -dev.zprestige.prestige.cM dev.zprestige.prestige.util.BindManager -dev.zprestige.prestige.cm dev.zprestige.prestige.event.EventManager -dev.zprestige.prestige.cN dev.zprestige.prestige.combat.NameTags -dev.zprestige.prestige.cn dev.zprestige.prestige.combat.NameTagsUtil -dev.zprestige.prestige.cO dev.zprestige.prestige.inventory.ItemLabel -dev.zprestige.prestige.co dev.zprestige.prestige.inventory.InventoryUtil2 -dev.zprestige.prestige.cP dev.zprestige.prestige.annotation.Chainable -dev.zprestige.prestige.cp dev.zprestige.prestige.render.RenderHelper22 -dev.zprestige.prestige.cQ dev.zprestige.prestige.annotation.NativeId -dev.zprestige.prestige.cq dev.zprestige.prestige.network.PacketManager -dev.zprestige.prestige.cR dev.zprestige.prestige.util.TpsTimer -dev.zprestige.prestige.cr dev.zprestige.prestige.inventory.InventoryUtil -dev.zprestige.prestige.cS dev.zprestige.prestige.util.ClientUtil -dev.zprestige.prestige.cs dev.zprestige.prestige.inventory.ItemESPHelper -dev.zprestige.prestige.cT dev.zprestige.prestige.render.RenderHelper23 -dev.zprestige.prestige.ct dev.zprestige.prestige.math.JumpCirclesHelper -dev.zprestige.prestige.cU dev.zprestige.prestige.reflect.ReflectionBase -dev.zprestige.prestige.cu dev.zprestige.prestige.render.RenderUtil2 -dev.zprestige.prestige.cV dev.zprestige.prestige.reflect.FieldAccessor -dev.zprestige.prestige.cv dev.zprestige.prestige.render.RenderUtil3 -dev.zprestige.prestige.cW dev.zprestige.prestige.reflect.MethodAccessor -dev.zprestige.prestige.cw dev.zprestige.prestige.input.MouseManager -dev.zprestige.prestige.cX dev.zprestige.prestige.reflect.FieldSpec -dev.zprestige.prestige.cx dev.zprestige.prestige.render.RenderUtil4 -dev.zprestige.prestige.cY dev.zprestige.prestige.reflect.MethodSpec -dev.zprestige.prestige.cZ dev.zprestige.prestige.render.ESPHelper -dev.zprestige.prestige.cz dev.zprestige.prestige.render.RenderContract2 -dev.zprestige.prestige.D dev.zprestige.prestige.world.WorldHelper3 -dev.zprestige.prestige.d dev.zprestige.prestige.type.BowMode -dev.zprestige.prestige.dA dev.zprestige.prestige.render.RenderState -dev.zprestige.prestige.da dev.zprestige.prestige.config.ConfigUtil -dev.zprestige.prestige.dB dev.zprestige.prestige.render.MatrixStack -dev.zprestige.prestige.db dev.zprestige.prestige.config.ConfigHelper3 -dev.zprestige.prestige.dC dev.zprestige.prestige.render.RenderBatch -dev.zprestige.prestige.dc dev.zprestige.prestige.render.ShaderBase -dev.zprestige.prestige.dD dev.zprestige.prestige.render.Renderer2D -dev.zprestige.prestige.dd dev.zprestige.prestige.render.RenderTarget -dev.zprestige.prestige.dE dev.zprestige.prestige.render.RenderHelper24 -dev.zprestige.prestige.de dev.zprestige.prestige.render.PostShader -dev.zprestige.prestige.dF dev.zprestige.prestige.render.RenderContract3 -dev.zprestige.prestige.df dev.zprestige.prestige.render.AuraOutlineShader -dev.zprestige.prestige.dG dev.zprestige.prestige.world.WorldUtil -dev.zprestige.prestige.dg dev.zprestige.prestige.render.ChamsOutlineShader -dev.zprestige.prestige.dH dev.zprestige.prestige.combat.RotationManager -dev.zprestige.prestige.dh dev.zprestige.prestige.render.OutlineShader -dev.zprestige.prestige.dI dev.zprestige.prestige.math.MathHelper6 -dev.zprestige.prestige.di dev.zprestige.prestige.render.RainbowOutlineShader -dev.zprestige.prestige.dJ dev.zprestige.prestige.render.SafeAnchorHelper -dev.zprestige.prestige.dj dev.zprestige.prestige.render.RoundedOutlinePosColorShader -dev.zprestige.prestige.dk dev.zprestige.prestige.render.RoundedPosColorShader -dev.zprestige.prestige.dl dev.zprestige.prestige.render.RoundedTextureShader -dev.zprestige.prestige.dm dev.zprestige.prestige.render.TextureUtil -dev.zprestige.prestige.dn dev.zprestige.prestige.render.RenderUtil5 -dev.zprestige.prestige.dp dev.zprestige.prestige.render.RenderUtil -dev.zprestige.prestige.dq dev.zprestige.prestige.render.RenderContract4 -dev.zprestige.prestige.dr dev.zprestige.prestige.render.RenderContract5 -dev.zprestige.prestige.ds dev.zprestige.prestige.render.RenderContract6 -dev.zprestige.prestige.dt dev.zprestige.prestige.render.DrawMode -dev.zprestige.prestige.du dev.zprestige.prestige.render.UniformCache -dev.zprestige.prestige.dv dev.zprestige.prestige.render.ColorUniform -dev.zprestige.prestige.dw dev.zprestige.prestige.render.ColorValue -dev.zprestige.prestige.dx dev.zprestige.prestige.util.Timer -dev.zprestige.prestige.dy dev.zprestige.prestige.render.RenderPass -dev.zprestige.prestige.dz dev.zprestige.prestige.render.DrawContext -dev.zprestige.prestige.E dev.zprestige.prestige.world.WorldHelper4 -dev.zprestige.prestige.e dev.zprestige.prestige.type.RailState -dev.zprestige.prestige.F dev.zprestige.prestige.world.WorldHelper5 -dev.zprestige.prestige.f0 dev.zprestige.prestige.combat.TargetTracker -dev.zprestige.prestige.f1 dev.zprestige.prestige.combat.CombatUtil -dev.zprestige.prestige.f2 dev.zprestige.prestige.render.RenderHelper25 -dev.zprestige.prestige.f3 dev.zprestige.prestige.combat.CombatUtil2 -dev.zprestige.prestige.f4 dev.zprestige.prestige.render.RenderHelper26 -dev.zprestige.prestige.f5 dev.zprestige.prestige.render.RenderHelper27 -dev.zprestige.prestige.f6 dev.zprestige.prestige.network.PingManager -dev.zprestige.prestige.f7 dev.zprestige.prestige.math.TrailsHelper -dev.zprestige.prestige.f8 dev.zprestige.prestige.math.TrailsHelper2 -dev.zprestige.prestige.f9 dev.zprestige.prestige.combat.TwoDESPHelper -dev.zprestige.prestige.f_ dev.zprestige.prestige.math.Point3D -dev.zprestige.prestige.f dev.zprestige.prestige.type.CrystalState -dev.zprestige.prestige.fS dev.zprestige.prestige.render.ShaderProgram -dev.zprestige.prestige.fT dev.zprestige.prestige.render.Shader -dev.zprestige.prestige.fU dev.zprestige.prestige.render.RenderUtil6 -dev.zprestige.prestige.fV dev.zprestige.prestige.social.FriendManager -dev.zprestige.prestige.fW dev.zprestige.prestige.render.Uniform -dev.zprestige.prestige.fX dev.zprestige.prestige.render.RenderHelper28 -dev.zprestige.prestige.fY dev.zprestige.prestige.render.RenderHelper29 -dev.zprestige.prestige.fZ dev.zprestige.prestige.render.StorageESPHelper -dev.zprestige.prestige.G dev.zprestige.prestige.world.WorldHelper6 -dev.zprestige.prestige.g0 dev.zprestige.prestige.data.IntBoolData -dev.zprestige.prestige.g1 dev.zprestige.prestige.render.RenderCache -dev.zprestige.prestige.g2 dev.zprestige.prestige.util.LruCache -dev.zprestige.prestige.g3 dev.zprestige.prestige.combat.PearlFollowHelper -dev.zprestige.prestige.g4 dev.zprestige.prestige.combat.PearlTrajectoryHelper -dev.zprestige.prestige.g5 dev.zprestige.prestige.world.TrajectoriesHelper -dev.zprestige.prestige.g6 dev.zprestige.prestige.combat.TrajectoriesHelper -dev.zprestige.prestige.g7 dev.zprestige.prestige.gui.BaseScreen -dev.zprestige.prestige.g8 dev.zprestige.prestige.gui.HudEditorScreen -dev.zprestige.prestige.g9 dev.zprestige.prestige.gui.ClickGuiScreen -dev.zprestige.prestige.g_ dev.zprestige.prestige.gui.InventoryScreenOverride -dev.zprestige.prestige.g dev.zprestige.prestige.type.ArmorState -dev.zprestige.prestige.gA dev.zprestige.prestige.data.ModuleStringFloatData -dev.zprestige.prestige.ga dev.zprestige.prestige.render.RenderHelper30 -dev.zprestige.prestige.gB dev.zprestige.prestige.data.FontFloatData -dev.zprestige.prestige.gb dev.zprestige.prestige.math.MathUtil4 -dev.zprestige.prestige.gC dev.zprestige.prestige.data.VertexIntData -dev.zprestige.prestige.gc dev.zprestige.prestige.math.MathUtil5 -dev.zprestige.prestige.gD dev.zprestige.prestige.data.StringData -dev.zprestige.prestige.gd dev.zprestige.prestige.render.RenderHelper31 -dev.zprestige.prestige.gE dev.zprestige.prestige.data.LongData -dev.zprestige.prestige.ge dev.zprestige.prestige.render.VertexFormat -dev.zprestige.prestige.gF dev.zprestige.prestige.data.ConsumerData -dev.zprestige.prestige.gf dev.zprestige.prestige.render.VertexAttribute -dev.zprestige.prestige.gG dev.zprestige.prestige.data.VecIntDoubleData -dev.zprestige.prestige.gg dev.zprestige.prestige.math.WeatherHelper -dev.zprestige.prestige.gH dev.zprestige.prestige.data.FloatDoubleIntData -dev.zprestige.prestige.gh dev.zprestige.prestige.inventory.InventoryUtil3 -dev.zprestige.prestige.gI dev.zprestige.prestige.data.PassConsumerData -dev.zprestige.prestige.gi dev.zprestige.prestige.data.VecIntData -dev.zprestige.prestige.gJ dev.zprestige.prestige.data.IntData -dev.zprestige.prestige.gj dev.zprestige.prestige.data.VecBoolData -dev.zprestige.prestige.gK dev.zprestige.prestige.data.MatrixCameraData -dev.zprestige.prestige.gk dev.zprestige.prestige.data.VecData -dev.zprestige.prestige.gL dev.zprestige.prestige.data.VectorData -dev.zprestige.prestige.gl dev.zprestige.prestige.data.VecBoolData2 -dev.zprestige.prestige.gM dev.zprestige.prestige.data.VectorFloatData -dev.zprestige.prestige.gm dev.zprestige.prestige.data.VecBoolIntData -dev.zprestige.prestige.gN dev.zprestige.prestige.data.BoolIntData -dev.zprestige.prestige.gn dev.zprestige.prestige.data.VecData2 -dev.zprestige.prestige.gO dev.zprestige.prestige.data.IntData2 -dev.zprestige.prestige.go dev.zprestige.prestige.data.FloatData -dev.zprestige.prestige.gP dev.zprestige.prestige.data.BoolData -dev.zprestige.prestige.gp dev.zprestige.prestige.data.LongData2 -dev.zprestige.prestige.gQ dev.zprestige.prestige.data.IntBoolData2 -dev.zprestige.prestige.gq dev.zprestige.prestige.data.DoubleData -dev.zprestige.prestige.gR dev.zprestige.prestige.data.BoolIntData2 -dev.zprestige.prestige.gr dev.zprestige.prestige.data.VecDoubleData -dev.zprestige.prestige.gS dev.zprestige.prestige.data.ShaderData -dev.zprestige.prestige.gs dev.zprestige.prestige.data.LongData3 -dev.zprestige.prestige.gT dev.zprestige.prestige.data.BoolData2 -dev.zprestige.prestige.gt dev.zprestige.prestige.data.BufferData -dev.zprestige.prestige.gU dev.zprestige.prestige.data.IntSupplierData -dev.zprestige.prestige.gu dev.zprestige.prestige.data.LongData4 -dev.zprestige.prestige.gV dev.zprestige.prestige.data.ConsumerData2 -dev.zprestige.prestige.gv dev.zprestige.prestige.data.VecIntData2 -dev.zprestige.prestige.gW dev.zprestige.prestige.data.IntData3 -dev.zprestige.prestige.gw dev.zprestige.prestige.data.ModuleStringBoolData -dev.zprestige.prestige.gX dev.zprestige.prestige.data.BoolData3 -dev.zprestige.prestige.gx dev.zprestige.prestige.data.DoubleBoolData -dev.zprestige.prestige.gY dev.zprestige.prestige.data.DrawFloatData -dev.zprestige.prestige.gy dev.zprestige.prestige.reflect.ReflectDescriptor -dev.zprestige.prestige.gZ dev.zprestige.prestige.data.BufferQuadIntData -dev.zprestige.prestige.gz dev.zprestige.prestige.render.GlState -dev.zprestige.prestige.H dev.zprestige.prestige.render.RenderHelper32 -dev.zprestige.prestige.h dev.zprestige.prestige.type.FireState -dev.zprestige.prestige.ha dev.zprestige.prestige.render.VertexSink -dev.zprestige.prestige.hB dev.zprestige.prestige.mixin.EntityMixin -dev.zprestige.prestige.hb dev.zprestige.prestige.render.RenderHelper33 -dev.zprestige.prestige.hc dev.zprestige.prestige.render.BufferBuilder -dev.zprestige.prestige.hD dev.zprestige.prestige.mixin.EntityRendererMixin -dev.zprestige.prestige.hd dev.zprestige.prestige.mixin.AbstractBlockStateMixin -dev.zprestige.prestige.hF dev.zprestige.prestige.mixin.GameRendererMixin -dev.zprestige.prestige.hf dev.zprestige.prestige.mixin.AbstractClientPlayerEntityMixin -dev.zprestige.prestige.hH dev.zprestige.prestige.mixin.HeightContextMixin -dev.zprestige.prestige.hh dev.zprestige.prestige.mixin.FogRendererMixin -dev.zprestige.prestige.hJ dev.zprestige.prestige.mixin.HeldItemRendererMixin -dev.zprestige.prestige.hj dev.zprestige.prestige.mixin.BlockMixin -dev.zprestige.prestige.hL dev.zprestige.prestige.mixin.InGameHudMixin -dev.zprestige.prestige.hl dev.zprestige.prestige.mixin.CameraMixin -dev.zprestige.prestige.hN dev.zprestige.prestige.mixin.InGameOverlayRendererMixin -dev.zprestige.prestige.hn dev.zprestige.prestige.mixin.ChunkOcclusionDataBuilderMixin -dev.zprestige.prestige.hP dev.zprestige.prestige.mixin.InactivityFpsLimiterMixin -dev.zprestige.prestige.hp dev.zprestige.prestige.mixin.ClientConnectionMixin -dev.zprestige.prestige.hR dev.zprestige.prestige.mixin.ItemStackMixin -dev.zprestige.prestige.hr dev.zprestige.prestige.mixin.ClientPlayNetworkHandlerMixin -dev.zprestige.prestige.hT dev.zprestige.prestige.mixin.KeyboardMixin -dev.zprestige.prestige.ht dev.zprestige.prestige.mixin.ClientPlayerEntityMixin -dev.zprestige.prestige.hV dev.zprestige.prestige.mixin.KeyboardInputMixin -dev.zprestige.prestige.hv dev.zprestige.prestige.mixin.ClientPlayerInteractionManagerMixin -dev.zprestige.prestige.hX dev.zprestige.prestige.mixin.LightmapTextureManagerMixin -dev.zprestige.prestige.hx dev.zprestige.prestige.mixin.ClientWorldMixin -dev.zprestige.prestige.hZ dev.zprestige.prestige.mixin.LivingEntityMixin -dev.zprestige.prestige.hz dev.zprestige.prestige.mixin.MinecraftClientMixin -dev.zprestige.prestige.I dev.zprestige.prestige.render.RenderHelper34 -dev.zprestige.prestige.iB dev.zprestige.prestige.mixin.MinecraftClientMixin2 -dev.zprestige.prestige.ib dev.zprestige.prestige.mixin.LivingEntityRendererMixin -dev.zprestige.prestige.iD dev.zprestige.prestige.mixin.SkyRenderingMixin -dev.zprestige.prestige.id dev.zprestige.prestige.mixin.MinecraftClientMixin3 -dev.zprestige.prestige.iF dev.zprestige.prestige.mixin.TextDisplayEntityRendererMixin -dev.zprestige.prestige.if dev.zprestige.prestige.mixin.ModelCommandRendererMixin -dev.zprestige.prestige.iH dev.zprestige.prestige.mixin.TextVisitFactoryMixin -dev.zprestige.prestige.ih dev.zprestige.prestige.mixin.MouseMixin -dev.zprestige.prestige.iJ dev.zprestige.prestige.mixin.WorldMixin -dev.zprestige.prestige.ij dev.zprestige.prestige.mixin.NamespaceResourceManagerMixin -dev.zprestige.prestige.iL dev.zprestige.prestige.mixin.WorldChunkMixin -dev.zprestige.prestige.il dev.zprestige.prestige.mixin.ParticleManagerMixin -dev.zprestige.prestige.iN dev.zprestige.prestige.mixin.WorldRendererMixin -dev.zprestige.prestige.in dev.zprestige.prestige.mixin.PlayerEntityMixin -dev.zprestige.prestige.ip dev.zprestige.prestige.mixin.PlayerListEntryMixin -dev.zprestige.prestige.ir dev.zprestige.prestige.mixin.PostEffectProcessorMixin -dev.zprestige.prestige.it dev.zprestige.prestige.mixin.ReloadableResourceManagerImplMixin -dev.zprestige.prestige.iv dev.zprestige.prestige.mixin.ScreenMixin -dev.zprestige.prestige.ix dev.zprestige.prestige.mixin.ServerWorldMixin -dev.zprestige.prestige.iz dev.zprestige.prestige.mixin.MinecraftClientMixin4 -dev.zprestige.prestige.J dev.zprestige.prestige.gui.GuiHelper -dev.zprestige.prestige.j dev.zprestige.prestige.type.PlaceState -dev.zprestige.prestige.K dev.zprestige.prestige.world.WorldHelper7 -dev.zprestige.prestige.k dev.zprestige.prestige.type.PearlState -dev.zprestige.prestige.L dev.zprestige.prestige.world.WorldHelper8 -dev.zprestige.prestige.l dev.zprestige.prestige.type.DoubleAnchorState -dev.zprestige.prestige.M dev.zprestige.prestige.inventory.InventoryHelper -dev.zprestige.prestige.m dev.zprestige.prestige.type.GlPrimitive -dev.zprestige.prestige.N dev.zprestige.prestige.render.RenderHelper35 -dev.zprestige.prestige.n dev.zprestige.prestige.type.Easing -dev.zprestige.prestige.O dev.zprestige.prestige.combat.CombatHelper2 -dev.zprestige.prestige.o dev.zprestige.prestige.type.ShaderMode -dev.zprestige.prestige.P dev.zprestige.prestige.combat.CombatHelper3 -dev.zprestige.prestige.p dev.zprestige.prestige.type.PearlStage -dev.zprestige.prestige.Q dev.zprestige.prestige.render.RenderHelper36 -dev.zprestige.prestige.R dev.zprestige.prestige.render.RenderHelper37 -dev.zprestige.prestige.r dev.zprestige.prestige.type.PacketResult -dev.zprestige.prestige.S dev.zprestige.prestige.render.RenderHelper38 -dev.zprestige.prestige.s dev.zprestige.prestige.type.AnimationMode -dev.zprestige.prestige.T dev.zprestige.prestige.network.NetworkHelper -dev.zprestige.prestige.t dev.zprestige.prestige.type.KillAuraState -dev.zprestige.prestige.U dev.zprestige.prestige.network.NetworkHelper2 -dev.zprestige.prestige.u dev.zprestige.prestige.type.SettingFlag -dev.zprestige.prestige.V dev.zprestige.prestige.render.RenderHelper39 -dev.zprestige.prestige.v dev.zprestige.prestige.type.TrajectoryType -dev.zprestige.prestige.W dev.zprestige.prestige.render.RenderHelper40 -dev.zprestige.prestige.w dev.zprestige.prestige.type.Axis -dev.zprestige.prestige.X dev.zprestige.prestige.world.WorldHelper9 -dev.zprestige.prestige.x dev.zprestige.prestige.type.NotificationType -dev.zprestige.prestige.Y dev.zprestige.prestige.world.WorldHelper10 -dev.zprestige.prestige.y dev.zprestige.prestige.type.EventPhase -dev.zprestige.prestige.Z dev.zprestige.prestige.render.RenderHelper41 -dev.zprestige.prestige.z dev.zprestige.prestige.type.BlendMode