- add full parser/type-resolver support for Java method and constructor references
- infer SAM callback types for named JS script methods with conflict reporting
- surface argument-level SAM/type mismatch errors in method validation
Implements four new energy ability types:
- Energy Dome: Spherical barrier centered on caster that blocks incoming
energy projectiles. Configurable per-projectile-type damage multipliers,
HP/durability and duration modes. RING telegraph.
- Energy Wall: Placeable flat energy panel with configurable dimensions
and height offset (can float above ground). Optional launching mode
fires the wall forward with damage/knockback.
- Energy Shield: Held energy panel that follows the caster and rotates
with their look direction. Defensive blocking ability.
- Energy Slicer: Thin wide blade projectile (JJK Cleave inspired).
Extends AbstractEnergyProjectileAbility. Piercing by default.
Architecture:
- EnergyBarrierData: HP, duration, per-type damage multiplier map
- EnergyPanelData: Panel dimensions, height offset, launch properties
- AbstractEnergyBarrierAbility: Shared base for Dome/Wall/Shield
- EntityEnergyDome, EntityEnergyPanel, EntityEnergySlicer entities
- RenderEnergyDome, RenderEnergyPanel, RenderEnergySlicer renderers
with translucent inner/outer layers (voxel-blocky aesthetic)
- Projectile-barrier collision system in EntityAbilityProjectile
https://claude.ai/code/session_01EV9KpiykvW4rASz7ju5iTG
Introduce client-side trap presets and a visual "trigger reveal" for traps, plus related entity/renderer changes.
- AbilityTrap: add TrapPreset enum and applyTrapPresetDefaults; wire a SubGuiTrapPresetSelector hook to apply presets from the GUI; pass visibility into created trap entities.
- EntityAbilityZone: add visible flag, TRIGGER_FLASH_STATUS state, setEntityState usage to notify clients of triggers, handleHealthUpdate to start client-side flash, and adjust construction/serialization accordingly.
- RenderAbilityZone: implement trigger-reveal visuals (revealFade, triggerReveal) that briefly show a burst when traps trigger, skip rendering for invisible traps unless revealing, and tweak flash/timing logic.
- Minor cleanup: remove/condense comment blocks and refactor noisy helpers across AbilityZone/AbilityHazard, plus language entry update and new SubGuiTrapPresetSelector GUI class.
These changes enable preset application for traps and improve client-side feedback when traps trigger.
Perform more complete client-side checks before predicting currency deductions in GuiNPCTrader.handleMouseClick. The method now verifies that the item can be given to the player (canGivePlayerClient), that the slot is enabled, and that stock is available, mirroring server-side checks. When a client-side purchase is accepted, availableStock is decremented if applicable. Added a private canGivePlayerClient(ItemStack) helper to check cursor-stack compatibility and max stack size. These changes prevent the UI from showing incorrect balances for trades the server would reject.