From d68fa0c451578958c73b8885b73731da41bc2285 Mon Sep 17 00:00:00 2001 From: Maik Marschner Date: Thu, 1 Jan 2026 23:22:45 +0100 Subject: [PATCH 1/4] Fix the scenes directory picker not showing up if the scenes directory doesn't exist. Fixes #1729 --- .../chunky/ui/controller/SceneChooserController.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/chunky/src/java/se/llbit/chunky/ui/controller/SceneChooserController.java b/chunky/src/java/se/llbit/chunky/ui/controller/SceneChooserController.java index dc449f1c2..534926aea 100644 --- a/chunky/src/java/se/llbit/chunky/ui/controller/SceneChooserController.java +++ b/chunky/src/java/se/llbit/chunky/ui/controller/SceneChooserController.java @@ -113,10 +113,13 @@ public class SceneChooserController implements Initializable { new Tooltip("Open the directory where Chunky stores scene descriptions and renders.")); openSceneDirBtn.setOnAction(e -> controller.openDirectory(controller.getChunky().options.sceneDir)); - DirectoryChooser sceneDirectoryChooser = new DirectoryChooser(); - sceneDirectoryChooser.setTitle("Select directory for scene storage"); changeSceneDirBtn.setOnAction(e -> { - sceneDirectoryChooser.setInitialDirectory(controller.getChunky().options.sceneDir); + DirectoryChooser sceneDirectoryChooser = new DirectoryChooser(); + sceneDirectoryChooser.setTitle("Select directory for scene storage"); + File sceneDirectory = controller.getChunky().options.sceneDir; + if (sceneDirectory.isDirectory()) { + sceneDirectoryChooser.setInitialDirectory(sceneDirectory); + } File directory = sceneDirectoryChooser.showDialog(changeSceneDirBtn.getScene().getWindow()); if(directory != null && directory.canWrite()) { PersistentSettings.setSceneDirectory(directory); From 9d411cb2492d76a63a5b87549d0070604b969ee7 Mon Sep 17 00:00:00 2001 From: Maik Marschner Date: Thu, 1 Jan 2026 23:44:13 +0100 Subject: [PATCH 2/4] Do not show the camera tooltip if the window is not focused. Fixes #1597 --- chunky/src/java/se/llbit/chunky/ui/RenderCanvasFx.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/chunky/src/java/se/llbit/chunky/ui/RenderCanvasFx.java b/chunky/src/java/se/llbit/chunky/ui/RenderCanvasFx.java index d3e07e8ee..f552e96cb 100644 --- a/chunky/src/java/se/llbit/chunky/ui/RenderCanvasFx.java +++ b/chunky/src/java/se/llbit/chunky/ui/RenderCanvasFx.java @@ -440,6 +440,10 @@ public void setRenderListener(RenderStatusListener renderListener) { @Override public void sceneStatus(String status) { Platform.runLater(() -> { + if (!getScene().getWindow().isFocused()) { + return; + } + Point2D offset = localToScene(0, 0); tooltip.setText(status); tooltip.show(this, From 2b69ee256a23b2279fdcdb45c2eee71fff4f9c4a Mon Sep 17 00:00:00 2001 From: Maik Marschner Date: Thu, 1 Jan 2026 23:58:45 +0100 Subject: [PATCH 3/4] Do not resize the right control panel when resizing the left control panel. Fixes #1274 --- chunky/src/res/se/llbit/chunky/ui/Chunky.fxml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chunky/src/res/se/llbit/chunky/ui/Chunky.fxml b/chunky/src/res/se/llbit/chunky/ui/Chunky.fxml index 18e94ce37..c81b6a62f 100644 --- a/chunky/src/res/se/llbit/chunky/ui/Chunky.fxml +++ b/chunky/src/res/se/llbit/chunky/ui/Chunky.fxml @@ -67,7 +67,7 @@ - + From 6b862692ad1ef8c1f7bcaf14cd98c95ef7b99000 Mon Sep 17 00:00:00 2001 From: Maik Marschner Date: Fri, 2 Jan 2026 00:41:11 +0100 Subject: [PATCH 4/4] Fix entity face camera and face target buttons. Fixes #1162 Co-Authored-By: Peregrine05 <92183530+Peregrine05@users.noreply.github.com> --- chunky/src/java/se/llbit/chunky/entity/Poseable.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chunky/src/java/se/llbit/chunky/entity/Poseable.java b/chunky/src/java/se/llbit/chunky/entity/Poseable.java index 090bbbe52..058af65de 100644 --- a/chunky/src/java/se/llbit/chunky/entity/Poseable.java +++ b/chunky/src/java/se/llbit/chunky/entity/Poseable.java @@ -50,9 +50,9 @@ default void lookAt(Vector3 target) { dir.sub(face); dir.normalize(); double headYaw = getPose("head").y; - getPose().set("rotation", Json.of(FastMath.atan2(dir.x, dir.z) + Math.PI - headYaw)); double pitch = Math.asin(dir.y); - getPose().add("head", JsonUtil.vec3ToJson(new Vector3(pitch, headYaw, 0))); + getPose().set("head", JsonUtil.vec3ToJson(new Vector3(pitch, 0, 0))); + getPose().set("all", JsonUtil.vec3ToJson(new Vector3(0, FastMath.atan2(dir.x, dir.z) + Math.PI - headYaw, 0))); }