From 74701a781734341df991a6283a5704cac473f105 Mon Sep 17 00:00:00 2001 From: hypherionmc Date: Wed, 15 Jan 2025 08:21:17 +0200 Subject: [PATCH] [FEAT] Expose extra APIs to Command API --- .../nojang/client/BridgedMinecraft.java | 23 +++++++++++++ .../commands/BridgedCommandSourceStack.java | 21 ++++++++++++ .../CraterLibModMenuIntegration.java | 11 +++++- .../nojang/client/BridgedMinecraft.java | 23 +++++++++++++ .../commands/BridgedCommandSourceStack.java | 9 +++++ .../CraterLibModMenuIntegration.java | 11 +++++- .../nojang/client/BridgedMinecraft.java | 23 +++++++++++++ .../commands/BridgedCommandSourceStack.java | 9 +++++ .../CraterLibModMenuIntegration.java | 11 +++++- .../nojang/client/BridgedMinecraft.java | 23 +++++++++++++ .../commands/BridgedCommandSourceStack.java | 9 +++++ .../CraterLibModMenuIntegration.java | 11 +++++- .../nojang/client/BridgedMinecraft.java | 23 +++++++++++++ .../commands/BridgedCommandSourceStack.java | 9 +++++ .../CraterLibModMenuIntegration.java | 11 +++++- .../nojang/client/BridgedMinecraft.java | 23 +++++++++++++ .../commands/BridgedCommandSourceStack.java | 9 +++++ .../CraterLibModMenuIntegration.java | 11 +++++- .../nojang/client/BridgedMinecraft.java | 23 +++++++++++++ .../commands/BridgedCommandSourceStack.java | 9 +++++ .../CraterLibModMenuIntegration.java | 11 +++++- .../nojang/client/BridgedMinecraft.java | 23 +++++++++++++ .../commands/BridgedCommandSourceStack.java | 9 +++++ .../CraterLibModMenuIntegration.java | 11 +++++- commit.sha | 2 +- .../nojang/client/BridgedMinecraft.java.patch | 4 +-- .../BridgedCommandSourceStack.java.patch | 34 ++++++++++++++++++- .../nojang/client/BridgedMinecraft.java.patch | 2 +- .../BridgedCommandSourceStack.java.patch | 2 +- .../nojang/client/BridgedMinecraft.java.patch | 2 +- .../BridgedCommandSourceStack.java.patch | 2 +- .../nojang/client/BridgedMinecraft.java.patch | 2 +- 32 files changed, 389 insertions(+), 17 deletions(-) diff --git a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java index 20a6a51..0349016 100644 --- a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java @@ -4,9 +4,13 @@ import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel; import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedServerData; import com.hypherionmc.craterlib.nojang.client.server.BridgedIntegratedServer; import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.Getter; +import net.kyori.adventure.text.Component; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.AlertScreen; +import net.minecraft.client.gui.screens.Screen; import org.jetbrains.annotations.Nullable; import java.io.File; @@ -78,6 +82,25 @@ public class BridgedMinecraft { return BridgedIntegratedServer.of(internal.getSingleplayerServer()); } + public void showWarningScreen(Component title, Component message) { + Screen currentScreen = internal.screen; + internal.setScreen( + new AlertScreen( + () -> internal.setScreen(currentScreen), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ) + ); + } + + public Screen buildWarningScreen(Component title, Component message, Screen parent) { + return new AlertScreen( + () -> internal.setScreen(parent), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ); + } + public int getServerPlayerCount () { if (internal.getConnection() == null) return 0; diff --git a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java index d50bf58..177c113 100644 --- a/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java @@ -1,5 +1,7 @@ package com.hypherionmc.craterlib.nojang.commands; +import com.hypherionmc.craterlib.CraterConstants; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.Component; @@ -20,6 +22,25 @@ public class BridgedCommandSourceStack { internal.sendFailure(ChatUtils.adventureToMojang(text)); } + public boolean isPlayer() { + try { + internal.getPlayerOrException(); + return true; + } catch (Exception ignored) { + return false; + } + } + + public BridgedPlayer getPlayer() { + try { + return BridgedPlayer.of(internal.getPlayerOrException()); + } catch (Exception e) { + CraterConstants.LOG.error("Failed to retrieve player", e); + } + + return null; + } + public CommandSourceStack toMojang() { return internal; } diff --git a/1.18.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java b/1.18.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java index b4f4429..b93256c 100644 --- a/1.18.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java +++ b/1.18.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java @@ -7,8 +7,13 @@ import com.hypherionmc.craterlib.core.config.ConfigController; import com.hypherionmc.craterlib.core.config.annotations.ClothScreen; import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.Style; +import net.kyori.adventure.text.format.TextDecoration; import java.util.HashMap; import java.util.Map; @@ -30,7 +35,11 @@ public class CraterLibModMenuIntegration implements ModMenuApi { if (watcher.getLeft().getClass().isAnnotationPresent(ClothScreen.class) && (ModloaderEnvironment.INSTANCE.isModLoaded("cloth_config") || ModloaderEnvironment.INSTANCE.isModLoaded("cloth-config") || ModloaderEnvironment.INSTANCE.isModLoaded("clothconfig"))) { configScreens.put(config.getModId(), screen -> ClothConfigScreenBuilder.buildConfigScreen(config, screen)); } else { - //configScreens.put(config.getModId(), screen -> new CraterConfigScreen(config, screen)); + configScreens.put(config.getModId(), screen -> BridgedMinecraft.getInstance().buildWarningScreen( + Component.text("Notice").style(Style.style(NamedTextColor.YELLOW).decorate(TextDecoration.BOLD)), + Component.text("This mod does not have a config screen, or Cloth Config is not installed"), + screen + )); } }); diff --git a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java index 37d8f76..4701f70 100644 --- a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java @@ -4,9 +4,13 @@ import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel; import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedServerData; import com.hypherionmc.craterlib.nojang.client.server.BridgedIntegratedServer; import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.Getter; +import net.kyori.adventure.text.Component; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.AlertScreen; +import net.minecraft.client.gui.screens.Screen; import org.jetbrains.annotations.Nullable; import java.io.File; @@ -78,6 +82,25 @@ public class BridgedMinecraft { return BridgedIntegratedServer.of(internal.getSingleplayerServer()); } + public void showWarningScreen(Component title, Component message) { + Screen currentScreen = internal.screen; + internal.setScreen( + new AlertScreen( + () -> internal.setScreen(currentScreen), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ) + ); + } + + public Screen buildWarningScreen(Component title, Component message, Screen parent) { + return new AlertScreen( + () -> internal.setScreen(parent), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ); + } + public int getServerPlayerCount () { if (internal.getConnection() == null) return 0; diff --git a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java index d50bf58..d6d5735 100644 --- a/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.nojang.commands; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.Component; @@ -20,6 +21,14 @@ public class BridgedCommandSourceStack { internal.sendFailure(ChatUtils.adventureToMojang(text)); } + public boolean isPlayer() { + return internal.isPlayer(); + } + + public BridgedPlayer getPlayer() { + return BridgedPlayer.of(internal.getPlayer()); + } + public CommandSourceStack toMojang() { return internal; } diff --git a/1.19.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java b/1.19.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java index b4f4429..b93256c 100644 --- a/1.19.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java +++ b/1.19.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java @@ -7,8 +7,13 @@ import com.hypherionmc.craterlib.core.config.ConfigController; import com.hypherionmc.craterlib.core.config.annotations.ClothScreen; import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.Style; +import net.kyori.adventure.text.format.TextDecoration; import java.util.HashMap; import java.util.Map; @@ -30,7 +35,11 @@ public class CraterLibModMenuIntegration implements ModMenuApi { if (watcher.getLeft().getClass().isAnnotationPresent(ClothScreen.class) && (ModloaderEnvironment.INSTANCE.isModLoaded("cloth_config") || ModloaderEnvironment.INSTANCE.isModLoaded("cloth-config") || ModloaderEnvironment.INSTANCE.isModLoaded("clothconfig"))) { configScreens.put(config.getModId(), screen -> ClothConfigScreenBuilder.buildConfigScreen(config, screen)); } else { - //configScreens.put(config.getModId(), screen -> new CraterConfigScreen(config, screen)); + configScreens.put(config.getModId(), screen -> BridgedMinecraft.getInstance().buildWarningScreen( + Component.text("Notice").style(Style.style(NamedTextColor.YELLOW).decorate(TextDecoration.BOLD)), + Component.text("This mod does not have a config screen, or Cloth Config is not installed"), + screen + )); } }); diff --git a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java index 37d8f76..4701f70 100644 --- a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java @@ -4,9 +4,13 @@ import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel; import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedServerData; import com.hypherionmc.craterlib.nojang.client.server.BridgedIntegratedServer; import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.Getter; +import net.kyori.adventure.text.Component; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.AlertScreen; +import net.minecraft.client.gui.screens.Screen; import org.jetbrains.annotations.Nullable; import java.io.File; @@ -78,6 +82,25 @@ public class BridgedMinecraft { return BridgedIntegratedServer.of(internal.getSingleplayerServer()); } + public void showWarningScreen(Component title, Component message) { + Screen currentScreen = internal.screen; + internal.setScreen( + new AlertScreen( + () -> internal.setScreen(currentScreen), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ) + ); + } + + public Screen buildWarningScreen(Component title, Component message, Screen parent) { + return new AlertScreen( + () -> internal.setScreen(parent), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ); + } + public int getServerPlayerCount () { if (internal.getConnection() == null) return 0; diff --git a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java index d50bf58..d6d5735 100644 --- a/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.nojang.commands; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.Component; @@ -20,6 +21,14 @@ public class BridgedCommandSourceStack { internal.sendFailure(ChatUtils.adventureToMojang(text)); } + public boolean isPlayer() { + return internal.isPlayer(); + } + + public BridgedPlayer getPlayer() { + return BridgedPlayer.of(internal.getPlayer()); + } + public CommandSourceStack toMojang() { return internal; } diff --git a/1.19.3/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java b/1.19.3/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java index b4f4429..b93256c 100644 --- a/1.19.3/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java +++ b/1.19.3/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java @@ -7,8 +7,13 @@ import com.hypherionmc.craterlib.core.config.ConfigController; import com.hypherionmc.craterlib.core.config.annotations.ClothScreen; import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.Style; +import net.kyori.adventure.text.format.TextDecoration; import java.util.HashMap; import java.util.Map; @@ -30,7 +35,11 @@ public class CraterLibModMenuIntegration implements ModMenuApi { if (watcher.getLeft().getClass().isAnnotationPresent(ClothScreen.class) && (ModloaderEnvironment.INSTANCE.isModLoaded("cloth_config") || ModloaderEnvironment.INSTANCE.isModLoaded("cloth-config") || ModloaderEnvironment.INSTANCE.isModLoaded("clothconfig"))) { configScreens.put(config.getModId(), screen -> ClothConfigScreenBuilder.buildConfigScreen(config, screen)); } else { - //configScreens.put(config.getModId(), screen -> new CraterConfigScreen(config, screen)); + configScreens.put(config.getModId(), screen -> BridgedMinecraft.getInstance().buildWarningScreen( + Component.text("Notice").style(Style.style(NamedTextColor.YELLOW).decorate(TextDecoration.BOLD)), + Component.text("This mod does not have a config screen, or Cloth Config is not installed"), + screen + )); } }); diff --git a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java index 57db3f9..8d19139 100644 --- a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java @@ -4,9 +4,13 @@ import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel; import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedServerData; import com.hypherionmc.craterlib.nojang.client.server.BridgedIntegratedServer; import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.Getter; +import net.kyori.adventure.text.Component; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.AlertScreen; +import net.minecraft.client.gui.screens.Screen; import org.jetbrains.annotations.Nullable; import java.io.File; @@ -78,6 +82,25 @@ public class BridgedMinecraft { return BridgedIntegratedServer.of(internal.getSingleplayerServer()); } + public void showWarningScreen(Component title, Component message) { + Screen currentScreen = internal.screen; + internal.setScreen( + new AlertScreen( + () -> internal.setScreen(currentScreen), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ) + ); + } + + public Screen buildWarningScreen(Component title, Component message, Screen parent) { + return new AlertScreen( + () -> internal.setScreen(parent), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ); + } + public int getServerPlayerCount () { if (internal.getConnection() == null) return 0; diff --git a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java index 5529824..d10b151 100644 --- a/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/1.20.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.nojang.commands; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.Component; @@ -20,6 +21,14 @@ public class BridgedCommandSourceStack { internal.sendFailure(ChatUtils.adventureToMojang(text)); } + public boolean isPlayer() { + return internal.isPlayer(); + } + + public BridgedPlayer getPlayer() { + return BridgedPlayer.of(internal.getPlayer()); + } + public CommandSourceStack toMojang() { return internal; } diff --git a/1.20.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java b/1.20.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java index b4f4429..b93256c 100644 --- a/1.20.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java +++ b/1.20.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java @@ -7,8 +7,13 @@ import com.hypherionmc.craterlib.core.config.ConfigController; import com.hypherionmc.craterlib.core.config.annotations.ClothScreen; import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.Style; +import net.kyori.adventure.text.format.TextDecoration; import java.util.HashMap; import java.util.Map; @@ -30,7 +35,11 @@ public class CraterLibModMenuIntegration implements ModMenuApi { if (watcher.getLeft().getClass().isAnnotationPresent(ClothScreen.class) && (ModloaderEnvironment.INSTANCE.isModLoaded("cloth_config") || ModloaderEnvironment.INSTANCE.isModLoaded("cloth-config") || ModloaderEnvironment.INSTANCE.isModLoaded("clothconfig"))) { configScreens.put(config.getModId(), screen -> ClothConfigScreenBuilder.buildConfigScreen(config, screen)); } else { - //configScreens.put(config.getModId(), screen -> new CraterConfigScreen(config, screen)); + configScreens.put(config.getModId(), screen -> BridgedMinecraft.getInstance().buildWarningScreen( + Component.text("Notice").style(Style.style(NamedTextColor.YELLOW).decorate(TextDecoration.BOLD)), + Component.text("This mod does not have a config screen, or Cloth Config is not installed"), + screen + )); } }); diff --git a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java index 57db3f9..8d19139 100644 --- a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java @@ -4,9 +4,13 @@ import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel; import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedServerData; import com.hypherionmc.craterlib.nojang.client.server.BridgedIntegratedServer; import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.Getter; +import net.kyori.adventure.text.Component; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.AlertScreen; +import net.minecraft.client.gui.screens.Screen; import org.jetbrains.annotations.Nullable; import java.io.File; @@ -78,6 +82,25 @@ public class BridgedMinecraft { return BridgedIntegratedServer.of(internal.getSingleplayerServer()); } + public void showWarningScreen(Component title, Component message) { + Screen currentScreen = internal.screen; + internal.setScreen( + new AlertScreen( + () -> internal.setScreen(currentScreen), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ) + ); + } + + public Screen buildWarningScreen(Component title, Component message, Screen parent) { + return new AlertScreen( + () -> internal.setScreen(parent), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ); + } + public int getServerPlayerCount () { if (internal.getConnection() == null) return 0; diff --git a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java index 5529824..d10b151 100644 --- a/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/1.20.4/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.nojang.commands; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.Component; @@ -20,6 +21,14 @@ public class BridgedCommandSourceStack { internal.sendFailure(ChatUtils.adventureToMojang(text)); } + public boolean isPlayer() { + return internal.isPlayer(); + } + + public BridgedPlayer getPlayer() { + return BridgedPlayer.of(internal.getPlayer()); + } + public CommandSourceStack toMojang() { return internal; } diff --git a/1.20.4/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java b/1.20.4/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java index b4f4429..b93256c 100644 --- a/1.20.4/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java +++ b/1.20.4/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java @@ -7,8 +7,13 @@ import com.hypherionmc.craterlib.core.config.ConfigController; import com.hypherionmc.craterlib.core.config.annotations.ClothScreen; import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.Style; +import net.kyori.adventure.text.format.TextDecoration; import java.util.HashMap; import java.util.Map; @@ -30,7 +35,11 @@ public class CraterLibModMenuIntegration implements ModMenuApi { if (watcher.getLeft().getClass().isAnnotationPresent(ClothScreen.class) && (ModloaderEnvironment.INSTANCE.isModLoaded("cloth_config") || ModloaderEnvironment.INSTANCE.isModLoaded("cloth-config") || ModloaderEnvironment.INSTANCE.isModLoaded("clothconfig"))) { configScreens.put(config.getModId(), screen -> ClothConfigScreenBuilder.buildConfigScreen(config, screen)); } else { - //configScreens.put(config.getModId(), screen -> new CraterConfigScreen(config, screen)); + configScreens.put(config.getModId(), screen -> BridgedMinecraft.getInstance().buildWarningScreen( + Component.text("Notice").style(Style.style(NamedTextColor.YELLOW).decorate(TextDecoration.BOLD)), + Component.text("This mod does not have a config screen, or Cloth Config is not installed"), + screen + )); } }); diff --git a/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java b/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java index 37d8f76..4701f70 100644 --- a/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java @@ -4,9 +4,13 @@ import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel; import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedServerData; import com.hypherionmc.craterlib.nojang.client.server.BridgedIntegratedServer; import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.Getter; +import net.kyori.adventure.text.Component; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.AlertScreen; +import net.minecraft.client.gui.screens.Screen; import org.jetbrains.annotations.Nullable; import java.io.File; @@ -78,6 +82,25 @@ public class BridgedMinecraft { return BridgedIntegratedServer.of(internal.getSingleplayerServer()); } + public void showWarningScreen(Component title, Component message) { + Screen currentScreen = internal.screen; + internal.setScreen( + new AlertScreen( + () -> internal.setScreen(currentScreen), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ) + ); + } + + public Screen buildWarningScreen(Component title, Component message, Screen parent) { + return new AlertScreen( + () -> internal.setScreen(parent), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ); + } + public int getServerPlayerCount () { if (internal.getConnection() == null) return 0; diff --git a/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java b/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java index 5529824..d10b151 100644 --- a/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.nojang.commands; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.Component; @@ -20,6 +21,14 @@ public class BridgedCommandSourceStack { internal.sendFailure(ChatUtils.adventureToMojang(text)); } + public boolean isPlayer() { + return internal.isPlayer(); + } + + public BridgedPlayer getPlayer() { + return BridgedPlayer.of(internal.getPlayer()); + } + public CommandSourceStack toMojang() { return internal; } diff --git a/1.20/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java b/1.20/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java index b4f4429..b93256c 100644 --- a/1.20/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java +++ b/1.20/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java @@ -7,8 +7,13 @@ import com.hypherionmc.craterlib.core.config.ConfigController; import com.hypherionmc.craterlib.core.config.annotations.ClothScreen; import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.Style; +import net.kyori.adventure.text.format.TextDecoration; import java.util.HashMap; import java.util.Map; @@ -30,7 +35,11 @@ public class CraterLibModMenuIntegration implements ModMenuApi { if (watcher.getLeft().getClass().isAnnotationPresent(ClothScreen.class) && (ModloaderEnvironment.INSTANCE.isModLoaded("cloth_config") || ModloaderEnvironment.INSTANCE.isModLoaded("cloth-config") || ModloaderEnvironment.INSTANCE.isModLoaded("clothconfig"))) { configScreens.put(config.getModId(), screen -> ClothConfigScreenBuilder.buildConfigScreen(config, screen)); } else { - //configScreens.put(config.getModId(), screen -> new CraterConfigScreen(config, screen)); + configScreens.put(config.getModId(), screen -> BridgedMinecraft.getInstance().buildWarningScreen( + Component.text("Notice").style(Style.style(NamedTextColor.YELLOW).decorate(TextDecoration.BOLD)), + Component.text("This mod does not have a config screen, or Cloth Config is not installed"), + screen + )); } }); diff --git a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java index 57db3f9..8d19139 100644 --- a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java @@ -4,9 +4,13 @@ import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel; import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedServerData; import com.hypherionmc.craterlib.nojang.client.server.BridgedIntegratedServer; import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.Getter; +import net.kyori.adventure.text.Component; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.AlertScreen; +import net.minecraft.client.gui.screens.Screen; import org.jetbrains.annotations.Nullable; import java.io.File; @@ -78,6 +82,25 @@ public class BridgedMinecraft { return BridgedIntegratedServer.of(internal.getSingleplayerServer()); } + public void showWarningScreen(Component title, Component message) { + Screen currentScreen = internal.screen; + internal.setScreen( + new AlertScreen( + () -> internal.setScreen(currentScreen), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ) + ); + } + + public Screen buildWarningScreen(Component title, Component message, Screen parent) { + return new AlertScreen( + () -> internal.setScreen(parent), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ); + } + public int getServerPlayerCount () { if (internal.getConnection() == null) return 0; diff --git a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java index 5529824..d10b151 100644 --- a/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/1.21.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.nojang.commands; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.Component; @@ -20,6 +21,14 @@ public class BridgedCommandSourceStack { internal.sendFailure(ChatUtils.adventureToMojang(text)); } + public boolean isPlayer() { + return internal.isPlayer(); + } + + public BridgedPlayer getPlayer() { + return BridgedPlayer.of(internal.getPlayer()); + } + public CommandSourceStack toMojang() { return internal; } diff --git a/1.21.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java b/1.21.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java index b4f4429..b93256c 100644 --- a/1.21.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java +++ b/1.21.2/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java @@ -7,8 +7,13 @@ import com.hypherionmc.craterlib.core.config.ConfigController; import com.hypherionmc.craterlib.core.config.annotations.ClothScreen; import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.Style; +import net.kyori.adventure.text.format.TextDecoration; import java.util.HashMap; import java.util.Map; @@ -30,7 +35,11 @@ public class CraterLibModMenuIntegration implements ModMenuApi { if (watcher.getLeft().getClass().isAnnotationPresent(ClothScreen.class) && (ModloaderEnvironment.INSTANCE.isModLoaded("cloth_config") || ModloaderEnvironment.INSTANCE.isModLoaded("cloth-config") || ModloaderEnvironment.INSTANCE.isModLoaded("clothconfig"))) { configScreens.put(config.getModId(), screen -> ClothConfigScreenBuilder.buildConfigScreen(config, screen)); } else { - //configScreens.put(config.getModId(), screen -> new CraterConfigScreen(config, screen)); + configScreens.put(config.getModId(), screen -> BridgedMinecraft.getInstance().buildWarningScreen( + Component.text("Notice").style(Style.style(NamedTextColor.YELLOW).decorate(TextDecoration.BOLD)), + Component.text("This mod does not have a config screen, or Cloth Config is not installed"), + screen + )); } }); diff --git a/1.21/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java b/1.21/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java index 57db3f9..8d19139 100644 --- a/1.21/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/1.21/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java @@ -4,9 +4,13 @@ import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel; import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedServerData; import com.hypherionmc.craterlib.nojang.client.server.BridgedIntegratedServer; import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; +import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.Getter; +import net.kyori.adventure.text.Component; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.AlertScreen; +import net.minecraft.client.gui.screens.Screen; import org.jetbrains.annotations.Nullable; import java.io.File; @@ -78,6 +82,25 @@ public class BridgedMinecraft { return BridgedIntegratedServer.of(internal.getSingleplayerServer()); } + public void showWarningScreen(Component title, Component message) { + Screen currentScreen = internal.screen; + internal.setScreen( + new AlertScreen( + () -> internal.setScreen(currentScreen), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ) + ); + } + + public Screen buildWarningScreen(Component title, Component message, Screen parent) { + return new AlertScreen( + () -> internal.setScreen(parent), + ChatUtils.adventureToMojang(title), + ChatUtils.adventureToMojang(message) + ); + } + public int getServerPlayerCount () { if (internal.getConnection() == null) return 0; diff --git a/1.21/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java b/1.21/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java index 5529824..d10b151 100644 --- a/1.21/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/1.21/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.nojang.commands; +import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import com.hypherionmc.craterlib.utils.ChatUtils; import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.Component; @@ -20,6 +21,14 @@ public class BridgedCommandSourceStack { internal.sendFailure(ChatUtils.adventureToMojang(text)); } + public boolean isPlayer() { + return internal.isPlayer(); + } + + public BridgedPlayer getPlayer() { + return BridgedPlayer.of(internal.getPlayer()); + } + public CommandSourceStack toMojang() { return internal; } diff --git a/1.21/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java b/1.21/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java index b4f4429..b93256c 100644 --- a/1.21/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java +++ b/1.21/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibModMenuIntegration.java @@ -7,8 +7,13 @@ import com.hypherionmc.craterlib.core.config.ConfigController; import com.hypherionmc.craterlib.core.config.annotations.ClothScreen; import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; +import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.Style; +import net.kyori.adventure.text.format.TextDecoration; import java.util.HashMap; import java.util.Map; @@ -30,7 +35,11 @@ public class CraterLibModMenuIntegration implements ModMenuApi { if (watcher.getLeft().getClass().isAnnotationPresent(ClothScreen.class) && (ModloaderEnvironment.INSTANCE.isModLoaded("cloth_config") || ModloaderEnvironment.INSTANCE.isModLoaded("cloth-config") || ModloaderEnvironment.INSTANCE.isModLoaded("clothconfig"))) { configScreens.put(config.getModId(), screen -> ClothConfigScreenBuilder.buildConfigScreen(config, screen)); } else { - //configScreens.put(config.getModId(), screen -> new CraterConfigScreen(config, screen)); + configScreens.put(config.getModId(), screen -> BridgedMinecraft.getInstance().buildWarningScreen( + Component.text("Notice").style(Style.style(NamedTextColor.YELLOW).decorate(TextDecoration.BOLD)), + Component.text("This mod does not have a config screen, or Cloth Config is not installed"), + screen + )); } }); diff --git a/commit.sha b/commit.sha index e59c320..d50d284 100644 --- a/commit.sha +++ b/commit.sha @@ -1 +1 @@ -5d0ad68c64a0ce008c9169967ba0cb9c10c960b8 \ No newline at end of file +4c3cc6b034dd6d3b78254d4cdea18a5634b13cbc \ No newline at end of file diff --git a/patches/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch b/patches/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch index 818e996..39801b5 100644 --- a/patches/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch +++ b/patches/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch @@ -1,6 +1,6 @@ --- a/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java -@@ -35,7 +35,7 @@ +@@ -39,7 +39,7 @@ } public boolean isRealmServer() { @@ -9,7 +9,7 @@ } public boolean isSinglePlayer() { -@@ -59,7 +59,7 @@ +@@ -63,7 +63,7 @@ } public UUID getPlayerId() { diff --git a/patches/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch b/patches/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch index bcb0d0f..a08f1d4 100644 --- a/patches/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch +++ b/patches/1.18.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch @@ -1,6 +1,13 @@ --- a/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java -@@ -13,7 +13,7 @@ +@@ -1,5 +1,6 @@ + package com.hypherionmc.craterlib.nojang.commands; + ++import com.hypherionmc.craterlib.CraterConstants; + import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; + import com.hypherionmc.craterlib.utils.ChatUtils; + import lombok.RequiredArgsConstructor; +@@ -14,7 +15,7 @@ private final CommandSourceStack internal; public void sendSuccess(Supplier supplier, boolean bl) { @@ -9,3 +16,28 @@ } public void sendFailure(Component text) { +@@ -22,11 +23,22 @@ + } + + public boolean isPlayer() { +- return internal.isPlayer(); ++ try { ++ internal.getPlayerOrException(); ++ return true; ++ } catch (Exception ignored) { ++ return false; ++ } + } + + public BridgedPlayer getPlayer() { +- return BridgedPlayer.of(internal.getPlayer()); ++ try { ++ return BridgedPlayer.of(internal.getPlayerOrException()); ++ } catch (Exception e) { ++ CraterConstants.LOG.error("Failed to retrieve player", e); ++ } ++ ++ return null; + } + + public CommandSourceStack toMojang() { diff --git a/patches/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch b/patches/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch index 121b734..2cec32a 100644 --- a/patches/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch +++ b/patches/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch @@ -1,6 +1,6 @@ --- a/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java -@@ -35,7 +35,7 @@ +@@ -39,7 +39,7 @@ } public boolean isRealmServer() { diff --git a/patches/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch b/patches/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch index bcb0d0f..6d95646 100644 --- a/patches/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch +++ b/patches/1.19.2/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch @@ -1,6 +1,6 @@ --- a/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java -@@ -13,7 +13,7 @@ +@@ -14,7 +14,7 @@ private final CommandSourceStack internal; public void sendSuccess(Supplier supplier, boolean bl) { diff --git a/patches/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch b/patches/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch index 121b734..2cec32a 100644 --- a/patches/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch +++ b/patches/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch @@ -1,6 +1,6 @@ --- a/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java -@@ -35,7 +35,7 @@ +@@ -39,7 +39,7 @@ } public boolean isRealmServer() { diff --git a/patches/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch b/patches/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch index bcb0d0f..6d95646 100644 --- a/patches/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch +++ b/patches/1.19.3/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java.patch @@ -1,6 +1,6 @@ --- a/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/nojang/commands/BridgedCommandSourceStack.java -@@ -13,7 +13,7 @@ +@@ -14,7 +14,7 @@ private final CommandSourceStack internal; public void sendSuccess(Supplier supplier, boolean bl) { diff --git a/patches/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch b/patches/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch index 121b734..2cec32a 100644 --- a/patches/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch +++ b/patches/1.20/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java.patch @@ -1,6 +1,6 @@ --- a/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/nojang/client/BridgedMinecraft.java -@@ -35,7 +35,7 @@ +@@ -39,7 +39,7 @@ } public boolean isRealmServer() {