Commit Graph
40 Commits
Author SHA1 Message Date
froslanz eed627a677 capture projection/view matrices for world-to-screen projection
MatrixCapture keeps the matrices from the level render pass so 2d
overlays (nametags) can project world positions onto the gui-scaled
screen.
2026-10-24 19:13:22 -04:00
froslanz 18095e351d add CrystalAura combat module
Places and breaks end crystals around the nearest non-friend player,
ported from telaviv's CatAura: damage-sorted target calc with min/self
damage and anti-suicide gates, place modes (Normal/AirPlace/Support/
AutoSurroundAnchor), break delays with inhibit and anti-weakness,
silent or normal auto-switch, rotation via the rotation manager, and a
box render of the current placement.

Dropped the dead AntiFeetPlace toggle (never read upstream) and the
unused Sequence setting.
2026-10-24 18:31:25 -04:00
froslanz 453ac20c4c port crystal damage and placement helpers from telaviv
CrystalUtil computes explosion exposure/damage with armor, enchants and
resistance reductions; BlockUtil covers placement sides, strict
directions and sight traces; TargetUtil picks the nearest non-friend
player in range.
2026-10-24 18:28:05 -04:00
froslanz 5e2a86d0cd add Server HUD module
Shows the address of the server the player is on (mc.getCurrentServer),
or Singleplayer when hosting a local world.
2026-10-24 17:22:21 -04:00
froslanz 53db883d04 add TPS HUD module
Shows the server's tps from ServerManager, which already measures it
from the vanilla time-sync packet (20 ticks per packet).
2026-10-24 17:21:37 -04:00
froslanz 3d2383766e remove the HUDScale slider
FontSize already scales the hud's text, and the extra pose scaling
complicated every hit test, drag clamp and glyph raster. HUD elements
draw unscaled again; FrosFont keeps per-gui-scale raster states so a
window scale change still never clears the glyph cache.
2026-10-24 17:20:05 -04:00
froslanz 53630c5ea3 Armor HUD: vertical or horizontal layout
Adds an Alignment setting (default Vertical, so existing config is
unchanged). Vertical stacks each piece in a column (icon + percent
side by side); Horizontal lays pieces across, icon on top with the
percent centered underneath. Element bounds track the flow so drag,
snap and hover use the right footprint in both orientations.
2026-10-24 14:17:46 -04:00
froslanz a5622036f0 fix invisible text for colors without an alpha channel
FrosFont.flush passed colors to AWT as RGBA, so vanilla-style rgb
constants like 0x55FF55 got alpha 0 and drew fully transparent - this
made the Armor HUD's durability percentages (green/yellow/red) never
show. Alpha-less colors now draw opaque, matching vanilla's own
treatment of ChatFormatting-style colors.
2026-10-24 13:52:35 -04:00
froslanz 2f5c54e675 GUIScale only scales HUD modules; renamed to HUDScale
- ClickGui and the hud editor widget panel are unscaled again (raw mouse,
  scroll step 10)
- FrosFont rasterizes per ui-scale state: hud rendering sets a context
  scale so its glyphs stay 1:1 device pixels, clickgui text keeps its
  own raster; the glyph cache is keyed by scale so switching between
  the two contexts never invalidates either
- scale changes no longer clear the glyph cache, only font/size changes do
2026-10-24 13:13:02 -04:00
froslanz 6593a3f089 add Armor HUD module showing worn armor durability
lists the four worn armor pieces helmet-to-boots, skipping empty slots.
with Icons on (default) each row draws the item icon with its durability
percentage beside it, vertically centered; with Icons off it draws the
item's hover name plus the percentage as plain text. the percentage is
colored by condition (green >= 60%, yellow >= 30%, red below) and shows
a dash for items without durability. width/height track the drawn rows
so the editor box matches, falling back to the constructor size when
nothing is equipped
2026-10-24 12:57:42 -04:00
froslanz accbc69521 drop font file loading, resolve fonts by name only
the Font setting already accepts java logical fonts and any installed
system family by typing it, so the fros/fonts folder machinery was
dead weight: file resolution, the auto-created directory, and the
2-second retry for files dropped in later are all gone. an unknown
name now just logs "Font '<name>' not found" once per change and falls
back to the vanilla font. the empty fros/fonts directory was removed
from the game dir as well
2026-10-22 14:59:41 -04:00
froslanz df5d90fb9d Merge remote main: README typo fix 2026-10-22 14:30:10 -04:00
froslanz 6e8746c9d1 show [+]/[-] badges on module toggle notifications
toggling a module now announces "[+] Name" in green for enabled and
"[-] Name" in red for disabled instead of the trailing on/off wording.
visual range notifications keep the shared "{gray} name message" format
2026-10-22 13:52:50 -04:00
froslanz ad51d15805 fixed typo 2026-10-22 18:38:47 +01:00
froslanz f0398c7011 remove the MinecraftFont toggle and always draw text shadows
the toggle existed to switch back to the vanilla font, but disabling it
left every label without a shadow which read as a bug. the setting,
its visibility hooks and FrosFont's vanilla-mode read are gone; Font
and FontSize now always apply, and every label draws its shadow in both
the custom font and the vanilla fallback path. a stale MinecraftFont key
in old configs is ignored by the loader and disappears on next save.
chat and command output keep the untouched vanilla font without shadows
2026-10-22 13:23:25 -04:00
froslanz 7fc42b34d8 darken colored text segments when rasterizing shadows
the shadow pass only darkened the base color, so any segment with an
explicit color code (the watermark's accent from {global}, the slider
value's section-7 gray) punched through at full brightness, drawing a
colored ghost one pixel off the text. shadow rasters now pass the
original color plus a shadow flag, and every segment is darkened at
flush time with the vanilla rule ((c & 0xFCFCFC) >> 2, alpha kept), so
accent text gets a dark accent shadow and gray gets a dark gray one
2026-10-22 13:19:07 -04:00
froslanz 9b6a55d66c snap dragged hud elements to each other and to a grid
while dragging in the hud editor each axis first attracts to the closest
edge or center of any other enabled hud element within 4 gui units, and
otherwise rounds onto a 4px grid so layouts stay tidy. positions are
re-clamped to the screen after snapping and the snap is computed from the
raw pointer position each frame so there is no feedback jitter while
dragging past an alignment
2026-10-22 12:57:02 -04:00
froslanz 3568996138 center clickgui text by the font's cap band instead of vanilla offsets
button labels, panel titles and the color picker's copy/paste text used
y offsets hand-tuned for vanilla's 9px line box, so the custom font's
14px line box rendered text ~4px too low, poking out below 15px buttons
and over the header accent line. FrosFont now measures the distance from
line top to the middle of the cap band (glyph 'A' visual bounds) and all
labels center on that via FrosFont.visualCenter()/Item.textY(). the
vanilla fallback lands on the exact old offsets, so nothing moves when
fonts are disabled, and the legacy getTextOffset() hack is gone
2026-10-22 12:54:00 -04:00
froslanz ebd0a76f0c tie text shadows to the custom font being active
HUD text, clickgui buttons, panel titles and the hud editor labels all
go through FrosFont's default draw now, which renders a drop shadow
only while the custom font is loaded. disabling fonts (MinecraftFont
toggle, or a missing font file falling back) renders everything flat,
matching the vanilla look, in both the hud and the clickgui
2026-10-22 12:27:52 -04:00
froslanz 6ab84a1051 add GUIScale slider for the client's own hud and clickgui
new 0.5x-2.0x slider in the ClickGui settings scales the clickgui, the
hud editor panel and every hud module about its own anchor. mouse
coordinates are divided back into layout units on entry so dragging,
sliders and hover checks keep working, hud hit boxes and drag clamping
use the scaled extents, and the font rasterizer follows the ui scale so
text stays one texel per screen pixel at any scale factor
2026-10-22 12:26:26 -04:00
froslanz 1f69a3ecb4 render font glyphs at device resolution to fix pixelation
glyphs were rasterized at gui-space size and then magnified by the
gui scale with nearest-neighbour sampling, making every custom font
blocky. rasters are now built at font-size * gui-scale (one texel per
screen pixel) and drawn through a 1/scale pose, so text is 1:1 and
antialiased at any gui scale. measurements convert back to gui units
and a gui scale change re-rasterizes everything
2026-10-22 11:53:39 -04:00
froslanz b682961856 add MinecraftFont setting to switch back to the vanilla font
toggling it on hides Font/FontSize and routes all client ui text back
through Minecraft's font renderer
2026-10-22 11:37:15 -04:00
froslanz 7b4fc41dba default the font to java's SansSerif logical font
resolves to a native generic sans on every os (Arial/Helvetica on
windows/mac, DejaVu/Liberation on linux); other installed system font
families can also be picked by name without dropping a file, files in
fros/fonts/ still take priority
2026-10-22 11:34:30 -04:00
froslanz e453c948cc defer font texture releases by 250ms
evicted glyph textures may still be referenced by the current frame's
queued gui draws, so release them only after the frame has flushed
2026-10-22 11:30:58 -04:00
froslanz 8eaec3cc4f cleaner clickgui panels
- solid panel body instead of see-through gray, 1px dark frame around
  each panel and a drop shadow behind it
- accent color line separating header from body
- text shadows on all gui text (panel titles, buttons, hud editor labels)
2026-10-22 11:28:55 -04:00
froslanz 30ccc6ea5a add custom font support for all client ui
- new FrosFont renderer: loads ttf/otf from fros/fonts/, rasterizes
  text to cached textures, falls back to the vanilla font when unset
- Font/FontSize settings in ClickGui (fontSize only shows when a font
  is set); missing files retry automatically every 2s
- all gui buttons, panels and hud modules now render through it
- handles section codes and styled components (watermark accent color)
2026-10-22 11:22:47 -04:00
froslanz d1cb9c8d3a remove gap between arraylist name and module info
info now sits tight against the name, separated only by a single
space character
2026-10-22 10:52:59 -04:00
froslanz 0df0d9334b fix arraylist shifting when module info appears
names are anchored to name widths only so dynamic info (killaura
target) can no longer move the whole list; info now sits directly on
the opposite side of its name
2026-10-22 10:14:36 -04:00
froslanz 7c44258b9b add VisualRange enter/exit notifications to Notifications
uses the radar hud's Range setting so notifications match exactly
what the radar shows
2026-10-22 09:51:12 -04:00
froslanz 4ff4902981 fix config loading, add arraylist module info
- fullbright no longer crashes during config load (mc.options is null
  while the game is still starting, which aborted loading every module
  registered after fullbright - including killaura's keybind)
- one broken module no longer aborts loading the rest
- fix "is a directory" IOException on every startup (commandmanager
  had no file name, so it resolved to the config folder itself)
- arraylist: alignment/sort options, module info shown on the opposite
  side of the row, hides hud/disabled modules behind settings
- killaura: show target name as module info
2026-10-22 08:57:57 -04:00
froslanz 1c3e2ff39f add radar hud module 2026-10-22 07:52:26 -04:00
froslanz 2db60e4299 fullbright 2026-10-21 18:12:04 -04:00
froslanz f12abdb488 Merge branch 'dev' 2026-10-21 17:44:23 -04:00
froslanz df5b28e394 add stuff 2026-10-21 17:30:14 -04:00
froslanz d8f69a650a sons 2026-10-21 17:04:30 -04:00
froslanz 5e5594b05c update license and fabricmodjson 2026-10-21 16:52:18 -04:00
froslanz 131df5fb0a add client base 2026-10-21 16:41:54 -04:00
froslanz 7139a130f3 rm -rf oyvey 2026-10-21 16:37:51 -04:00
froslanz 29d37c6c5c First commit 2026-10-21 16:36:37 -04:00
froslanz 400a32be59 Add README.md release 2026-10-20 01:03:37 +01:00