Better Player Locator BarСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (8)
release
Better Player Locator Bar v1.1.2
v1.1.226 окт. 2025 г.1,2 тыс.Minecraft: 1.21.2, 1.21.3fabric
Что нового
# Updated to 1.21.2 and 1.21.3!
release
Better Player Locator Bar v1.1.1
v1.1.126 окт. 2025 г.8 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
- Fixed some render issues and ordering
- Simplified code syntax
- Centralized methods
- Fixed render arrow mode
release
Better Player Locator Bar v1.1.0
v1.1.019 окт. 2025 г.277Minecraft: 1.21, 1.21.1fabric
Что нового
# Changelog
**Version: 1.1.0**
---
## Summary
Version 1.1.0 refactors the rendering architecture, introduces robust asset detection, improves client-server synchronization, adds death markers, enhances configuration capabilities, and fixes multiple bugs. Backwards compatibility with existing configs and use cases is preserved.
---
## Major Enhancements & Additions
### Rendering & Architecture
- Modular separation of rendering logic into:
- `RenderAddons`
- `RenderUtils`
- `TextureManager`
- `TextureAnimator`
- Introduction of `AssetScanner`:
- Scans the resource manager for textures under `sprites/hud/`
- Builds lists of available dot styles, arrow styles, icon borders, death marker types
- Caches texture dimensions to avoid repeated IO
- Death markers persistence:
- `Hud.deathMarkers` store marker data with timestamp and world position
- Configurable limit of death markers
- Automatic cleanup of old or out-of-range markers
- Hybrid mode operation:
- Handshake with server to detect mod presence
- Fallback to local mode if server unresponsive beyond timeout (e.g. `SERVER_TIMEOUT_MS`)
- Per-player overrides:
- In config, allow per-player settings: color, icon style, border style
---
## Detailed Changes per Component
### Main / Mod Initialization
- Register payload codecs for `HandshakePayload` and `PositionUpdatePayload` with `PayloadTypeRegistry`
- Initialize server module (`BetterPlayerLocatorBarServer`) on common side
- Add logging for handshake success/failure and mode switching events
### Client / Initialization
- On resource reload, call `AssetScanner.reload(...)`
- Instantiate `Hud` and register `HudRenderCallback`
- In `ClientPlayNetworking`, register receiver for handshake and position update
- Track `lastServerUpdateTime`; if exceeds threshold, switch to local mode
### HUD (BetterPlayerLocatorBarHud)
- Maintain maps:
- `playerPositions`
- `lastKnownPositions`
- `currentIconPositions`
- `lastPositionUpdateTime`
- `tick()` and `updateRenderCache()`:
- Filter players by distance and `maxVisibleIcons`
- Sort by closeness or priority if needed
- Easing & interpolation:
- If distance jump is large (e.g. > 75% of bar width), snap to target
- Else, advance position using `easeInOutQuad`
- Separate rendering methods:
- `renderPlayerIcon()`
- `renderDeathMarker()`
- `renderArrow()`
- `renderNameplate()`
- Hide logic:
- `shouldHideTarget()` checks for sneaking, invisibility, helmet usage
- Angle & FOV:
- Use `CONFIG.getFovMultiplier()` to adjust icon horizontal shift
- Alpha / fading:
- `calculateEdgeAlpha()` and `getDistanceAlpha()` for smooth fade near edges or by distance
- Texture selection:
- `getAdjustedTextureIndex(distance, config)` picks animation frame
### AssetScanner
- On `reload`, checks for presence of each expected texture (dots, outlines, arrows, markers, tags)
- Builds lists: `availableDots`, `availableArrows`, `availableDeathMarkers`, etc.
- Caches texture widths and heights via `NativeImage` to avoid repeated loads
### RenderAddons
- Central rendering of tinted icons, outlines, names, arrows, and death markers
- Supports override of head texture by UUID or name, with fallback to default skin
- `renderIcon()`, `renderArrow()`, `renderNameplate()` share common helper logic
- Outline rendering: darker border variants computed dynamically or via presets
### TextureManager
- Centralizes `Identifier` creation for texture paths
- Caches `Identifier` objects to reduce allocation overhead
- Standardized naming scheme:
- `sprites/hud/player_dots/{type}_{frame}.png`
- `sprites/hud/player_dots_outlines/...`
- `sprites/hud/arrows/{type}.png`
- `sprites/hud/death_markers_dots/{type}.png`
- `sprites/hud/tags/{style}.png`
### TextureAnimator
- Handles time-based frame switching for animated textures (if any)
- Maintains current frame, elapsed time, duration per frame
### Keybinds
- Register `SHOW_PLAYER_NAME` and `OPEN_CONFIG`
- `OPEN_CONFIG` opens `ConfigScreen` via `client.setScreen(...)`
### RenderUtils
- Utilities for rendering:
- `renderTintedTexture(...)`
- `drawNineSlicedTexture(...)`
- `withMatrixPush(...)`
- `setShaderColorRGBA(...)`
- `getTextureDimensions(...)` (delegates to `AssetScanner` cache)
### Network
- `HandshakePayload` contains fields: `serverHasMod`, `playerIsOp`
- `PositionUpdatePayload` contains:
- `positions()`: list of `(UUID, Vec3d)`
- `newPlayers()`: optional list of new player info
- `disconnectedPlayers()`: list of UUIDs
- Client receives payloads and updates internal maps in thread-safe manner (via `client.execute(...)`)
---
## Bug Fixes
- Prevent NPE in `AssetScanner` when a texture is missing (check `.isPresent()` first)
- Remove stale entries in `currentIconPositions` when players disconnect or markers expire
- Fix jumping icons when large remote deltas: implement snapping threshold
- Fix fallback logic when `textureHeadOverride` is non-UUID string; add resolution from `usercache.json`
- Clamp angle calculations so icons outside the horizontal range don’t render incorrectly
- Fix mod/mixin registration: ensure `BetterPlayerLocateBar.mixins.json` declared correctly
- Ensure name rendering only when Tab is held or always enabled via config
---
## Performance & Optimization
- Cache texture dimensions in `AssetScanner` to avoid repeating image loads
- Cache `Identifier` objects in `TextureManager`
- Pre-limit icon rendering count by `maxVisibleIcons` before layout computation
- Maintain intermediate render caches (`positionsToRenderCache`) to avoid recomputation each frame
- Asset scan only on resource reload, not every frame
- Minimize temporary allocations in loops (reuse collections, use `computeIfAbsent`, `subList`)
---
## Configuration & UX Enhancements
- Added config options:
- `deathMarkerInheritBorderColor`
- `deathMarkerBorderStyle`
- `assetScanner.textures` list
- `adjust_to_fov`, `fov_multiplier`
- ConfigScreen improvements:
- Renders real-time preview of names and icons
- Shows detected textures from `AssetScanner` in dropdowns
- HUD offset auto-applied if icons present (`shouldApplyHudOffset()` logic)
---
## Client-Server Integration
- Server module now actively gathers player positions at interval
- Client handshake verifies server mod and sets flags accordingly
- If server stops sending updates, client falls back to local mode
- `PositionUpdatePayload` sends full updates so client can reconstruct state
---
## Robustness & Edge Cases
- UUID parsing wrapped in try/catch to avoid crashes
- File I/O (e.g. `usercache.json`) wrapped with existence checks
- Clear logs in `Constants.LOGGER` for mode switching and error conditions
---
## Regression Risk & Testing
- Tested:
- Mode switching (server vs local)
- Name rendering via Tab
- Death markers creation and cleanup
- Asset detection when adding custom textures
- Edge cases:
- Player wearing helmet/skull — head override logic
- Invisible or sneaking players
- Large jumps in position between updates
---
## Previous Version (1.0.0) — Summary
- Basic HUD rendering of nearby players
- Automatic colors, simple interpolation
- Static icon style, no death markers
- Minimal configuration
---
## Notes
- This version emphasizes stability, modularity, and configurability
- If regressions occur, open issues with logs, steps to reproduce, and version info
release
Better Player Locator Bar v1.0.0a
v1.0.0a26 мая 2025 г.1,7 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed Fabric Loader incompatibility issue for newer versions
release
Better Player Locator Bar v1.0.0
v1.0.07 апр. 2025 г.802Minecraft: 1.21, 1.21.1fabric
Что нового
# Mod Changelog - Versions 1.21 & 1.21.1
## **UI & Visual Enhancements**
- Redesigned and improved **configuration screen**, offering a sleek and more intuitive interface.
- **Custom widgets** inspired by Mojang's existing UI elements for a seamless and familiar experience.
- Fully **restyled icons**, delivering a modern and polished look.
## **HUD Improvements**
- Enhanced **HUD interaction**—visibility of XP bar icons now dynamically affects the overall interface behavior.
## **Performance & Code Optimization**
- Major **code refactoring** to ensure optimal performance and efficiency across all systems.
beta
Better Player Locator Bar 0.2.1-BETA
0.2.1-BETA1 апр. 2025 г.278Minecraft: 1.21fabric
Что нового
## v0.2.1 - BETA | Network & Rendering Overhaul
### Core Changes
- Added dual-mode operation (Server Mode and Local Mode)
- Implemented automatic handshake system for mod detection
- Added 5-second timeout for server updates before switching to local mode
### Network Improvements
- New payload registration system compatible with Minecraft 1.21 / 1.21.1
- Server now initiates handshake when players join
- Improved network efficiency with 2-tick update intervals
### Rendering Fixes
- Complete rendering logic overhaul
- Fixed player position sorting and display issues
- Improved handling of edge cases in both modes
### New Features
- Added server compatibility detection
- Configurable distance-based fading
- Automatic fallback to local detection when needed
### Bug Fixes
- Fixed all compilation errors from previous version
- Resolved variable scope conflicts
- Corrected player visibility checks
- Fixed timeout detection logic
### Configuration Updates
- Added new config options for fade distances
- Added force local mode option
- Maintained backward compatibility with old configs
### Optimizations
- Reduced network overhead
- Improved client-side caching
- Better connection state handling
### Known Issues
- Player visibility may still be limited on some servers in local mode
- Initial detection may take 1-2 seconds after joining
### Migration Notes
- Servers need v0.2.1 - BETA for full functionality
- Clients automatically handle fallback to local mode
- Existing configs remain compatible but gain new options
beta
Better Player Locator Bar 0.2-BETA
0.2-BETA24 мар. 2025 г.132Minecraft: 1.21fabric
Что нового
### 🖥️ **Customizable Interface**
- **Rounded icons** representing players.
- **Dynamic colors** with join animations.
- **Stylized borders** with smooth gradients.
- **Smooth animations** using `lerp`.
- **Height indicator** (arrow showing if a player is above or below).
- **Progressive transparency** based on distance (fades at 100 blocks, nearly invisible at 5000).
- **Option to display the player’s head** instead of a colored icon.
### 🎮 **Enhanced User Experience**
- **Smooth movements** with interpolation.
- **"Show Names" mode when pressing `Tab`**.
- **Automatic adjustment of the experience and status bars** when interacting with the HUD.
### 📡 **Server Synchronization**
- **Real-time location tracking** of other players in the bar.
- **Detect nearby players** without needing a minimap.
- **Supports official and TL Skin skins**.
- **Persistent data storage** for players outside render distance.
### ⚙️ **Advanced Configuration**
- **Complete settings menu** (`F8`).
- **Modify some of active functions**.
- **Coming JSON configuration editor (Experimental and maybe not functional)**.
beta
Better Player Locator Bar 0.1-BETA
0.1-BETA18 мар. 2025 г.136Minecraft: 1.21fabric
Что нового
- HUD bar implementation above the experience bar.
- Player tracking system with position-based icon placement.
- Dynamic icon scaling based on distance and screen edges.
- Smooth animations for icon movement.
- Height difference indicators with arrows.
- Basic skin support (official skins only).
- Performance optimizations for real-time tracking.
> Full Changelog: [Changelog](https://github.com/bichal/BetterPlayerLocatorBar/commits/1.21)