diff --git a/game/client/src/main/java/net/minecraft/client/Minecraft.java b/game/client/src/main/java/net/minecraft/client/Minecraft.java index 7e1b16e25..143abe392 100644 --- a/game/client/src/main/java/net/minecraft/client/Minecraft.java +++ b/game/client/src/main/java/net/minecraft/client/Minecraft.java @@ -740,36 +740,30 @@ public class Minecraft return VERSION; } - public static File getAppDir(String s) { - String homeDirPath = System.getProperty("user.home", "."); - File appDir; - - switch (getOs()) { - case linux: // Linux - case solaris: // Solaris - appDir = new File(homeDirPath, '.' + s + '/'); - break; - case windows: // Windows - String s2 = System.getenv("APPDATA"); - if (s2 != null) { - appDir = new File(s2, "." + s + '/'); - } else { - appDir = new File(homeDirPath, '.' + s + '/'); - } - break; - case macos: // macOS - appDir = new File(homeDirPath, "Library/Application Support/" + s); - break; - default: - appDir = new File(homeDirPath, s + '/'); - break; - } + public static @NotNull File getAppDir(String directoryName) { + final String userHome = System.getProperty("user.home"); + + File appDir = switch (getOs()) { + case linux -> { + final String xdgConfigHomeDirectory = System.getenv().getOrDefault("XDG_CONFIG_HOME", userHome + "/.local/share/"); + yield new File(xdgConfigHomeDirectory, directoryName + "/"); + } + + case windows -> { + final String appdataDirectory = System.getenv().getOrDefault("APPDATA", userHome); + yield new File(appdataDirectory, "." + directoryName + "/"); + } + + case macos -> new File(userHome, "Library/Application Support/" + directoryName); + + default -> new File(userHome, directoryName + "/"); + }; if (!appDir.exists() && !appDir.mkdirs()) { throw new RuntimeException("The working directory could not be created: " + appDir); - } else { - return appDir; } + + return appDir; } public static EnumOS getOs() { diff --git a/game/core/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrow.java b/game/core/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrow.java index 4a0c404fa..e5f377d52 100644 --- a/game/core/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrow.java +++ b/game/core/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrow.java @@ -150,7 +150,7 @@ public class ProjectileArrow extends Projectile { public void onHit(@NotNull HitResult hitResult) { if (hitResult instanceof HitResult.Entity hitEntity) { - if (hitEntity.entity.hurt(this.owner, this.damage, DamageType.COMBAT)) { + if (hitEntity.entity.hurt(this.owner != null ? this.owner : this, this.damage, DamageType.COMBAT)) { if (this.isOnFire()) hitEntity.entity.fireHurt(); if (!this.world.isClientSide) {