77import net .minecraft .world .phys .HitResult ;
88import net .minecraft .world .phys .Vec3 ;
99import org .jetbrains .annotations .Nullable ;
10+ import org .joml .Vector2d ;
11+ import org .joml .Vector2dc ;
12+ import org .joml .Vector2f ;
1013import org .joml .Vector4d ;
1114import org .joml .Vector4f ;
1215
13- public record WorldMouse (
16+ public record ProjectedCoordinates (
1417 Minecraft mc ,
1518 Vec3 cameraPos ,
1619 float width ,
1720 float height ,
18- Vec2d defaultScreenPos
21+ Vector2dc defaultScreenPos
1922) {
20- public static WorldMouse of (Minecraft mc , Vec3 cameraPos ) {
23+ public static ProjectedCoordinates of (Minecraft mc , Vec3 cameraPos ) {
2124 var width = mc .getWindow ().getGuiScaledWidth ();
2225 var height = mc .getWindow ().getGuiScaledHeight ();
2326
24- return new WorldMouse (
27+ return new ProjectedCoordinates (
2528 mc ,
2629 cameraPos ,
2730 width ,
2831 height ,
29- mc .screen == null ? new Vec2d (
32+ mc .screen == null ? new Vector2d (
3033 width * 0.5D ,
3134 height * 0.5D
32- ) : new Vec2d (
35+ ) : new Vector2d (
3336 mc .mouseHandler .xpos () * width / (double ) mc .getWindow ().getWidth (),
3437 mc .mouseHandler .ypos () * height / (double ) mc .getWindow ().getHeight ()
3538 )
3639 );
3740 }
3841
3942 @ Nullable
40- public Cursor clip (double maxDistance , ClipContext .Block blockClipContext , ClipContext .Fluid fluidClipContext , @ Nullable Vec2d screenPos , @ Nullable Entity clipEntity ) {
43+ public ClipPosition clip (double maxDistance , ClipContext .Block blockClipContext , ClipContext .Fluid fluidClipContext , @ Nullable Vector2dc screenPos , @ Nullable Entity clipEntity ) {
4144 if (screenPos == null ) {
4245 screenPos = defaultScreenPos ;
4346 }
@@ -63,16 +66,16 @@ public Cursor clip(double maxDistance, ClipContext.Block blockClipContext, ClipC
6366 return null ;
6467 }
6568
66- return new Cursor (hit );
69+ return new ClipPosition (hit );
6770 }
6871
6972 @ Nullable
70- public Cursor clipOutline () {
73+ public ClipPosition clipOutline () {
7174 return clip (1000D , ClipContext .Block .OUTLINE , ClipContext .Fluid .ANY , null , null );
7275 }
7376
7477 @ Nullable
75- public Cursor clipCollision () {
78+ public ClipPosition clipCollision () {
7679 return clip (1000D , ClipContext .Block .COLLIDER , ClipContext .Fluid .SOURCE_ONLY , null , null );
7780 }
7881
@@ -86,7 +89,7 @@ public Cursor clipCollision() {
8689 * @return Screen coordinates, or null if outside the screen
8790 */
8891 @ Nullable
89- public Vec2f screen (double worldX , double worldY , double worldZ , boolean allowOutside ) {
92+ public Vector2f screen (double worldX , double worldY , double worldZ , boolean allowOutside ) {
9093 double rx = worldX - cameraPos .x ;
9194 double ry = worldY - cameraPos .y ;
9295 double rz = worldZ - cameraPos .z ;
@@ -97,7 +100,7 @@ public Vec2f screen(double worldX, double worldY, double worldZ, boolean allowOu
97100 v .div (v .w );
98101
99102 if (allowOutside || v .z > 0F && v .z < 1F ) {
100- return new Vec2f (
103+ return new Vector2f (
101104 (0.5F + v .x * 0.5F ) * width ,
102105 (0.5F - v .y * 0.5F ) * height
103106 );
@@ -110,34 +113,34 @@ public Vec2f screen(double worldX, double worldY, double worldZ, boolean allowOu
110113 * @param worldX X position
111114 * @param worldY Y position
112115 * @param worldZ Z position
113- * @see WorldMouse #screen(double, double, double, boolean)
116+ * @see ProjectedCoordinates #screen(double, double, double, boolean)
114117 */
115118 @ Nullable
116- public Vec2f screen (double worldX , double worldY , double worldZ ) {
119+ public Vector2f screen (double worldX , double worldY , double worldZ ) {
117120 return screen (worldX , worldY , worldZ , false );
118121 }
119122
120123 /**
121124 * @param worldPos XYZ position
122125 * @param allowOutside Allow outside the screen
123- * @see WorldMouse #screen(double, double, double, boolean)
126+ * @see ProjectedCoordinates #screen(double, double, double, boolean)
124127 */
125128 @ Nullable
126- public Vec2f screen (Position worldPos , boolean allowOutside ) {
129+ public Vector2f screen (Position worldPos , boolean allowOutside ) {
127130 return screen (worldPos .x (), worldPos .y (), worldPos .z (), allowOutside );
128131 }
129132
130133 /**
131134 * @param worldPos XYZ position
132- * @see WorldMouse #screen(double, double, double, boolean)
135+ * @see ProjectedCoordinates #screen(double, double, double, boolean)
133136 */
134137 @ Nullable
135- public Vec2f screen (Position worldPos ) {
138+ public Vector2f screen (Position worldPos ) {
136139 return screen (worldPos .x (), worldPos .y (), worldPos .z (), false );
137140 }
138141
139142 /**
140- * Convert screen coordinates to world position. Use {@link WorldMouse #clip(double, ClipContext.Block, ClipContext.Fluid, Vec2d , Entity)} if you only care about current mouse position
143+ * Convert screen coordinates to world position. Use {@link ProjectedCoordinates #clip(double, ClipContext.Block, ClipContext.Fluid, Vector2dc , Entity)} if you only care about current mouse position
141144 *
142145 * @param x screen coordinate x-position
143146 * @param y screen coordinate y-position
0 commit comments