diff --git a/Blueberry-API/src/main/java/net/blueberrymc/client/gui/BlueberryGuiComponents.java b/Blueberry-API/src/main/java/net/blueberrymc/client/gui/BlueberryGuiComponents.java index 1435c80d..840c331b 100644 --- a/Blueberry-API/src/main/java/net/blueberrymc/client/gui/BlueberryGuiComponents.java +++ b/Blueberry-API/src/main/java/net/blueberrymc/client/gui/BlueberryGuiComponents.java @@ -2,11 +2,14 @@ import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.ApiStatus; /** * Blueberry common gui components */ public class BlueberryGuiComponents { + @ApiStatus.ScheduledForRemoval(inVersion = "1.5.0") + @Deprecated(forRemoval = true) public static final TextComponent EMPTY_TEXT = new TextComponent(""); public static final ResourceLocation GUI_ICONS_LOCATION = new ResourceLocation("blueberry", "textures/gui/icons.png"); } diff --git a/Blueberry-API/src/main/java/net/blueberrymc/client/gui/screens/ModListScreen.java b/Blueberry-API/src/main/java/net/blueberrymc/client/gui/screens/ModListScreen.java index c55d3f6f..5fdbb885 100644 --- a/Blueberry-API/src/main/java/net/blueberrymc/client/gui/screens/ModListScreen.java +++ b/Blueberry-API/src/main/java/net/blueberrymc/client/gui/screens/ModListScreen.java @@ -58,7 +58,7 @@ protected void init() { this.minecraft.setScreen(this.previousScreen); this.minecraft.setScreen(new ModListScreen(this.previousScreen)); })); - this.addRenderableWidget(new Button(this.width / 2 - 50, this.height - 38, 96, 20, new TranslatableComponent("structure_block.mode.load"), (button) -> + this.addRenderableWidget(new Button(this.width / 2 - 50, this.height - 38, 96, 20, BlueberryText.text("blueberry", "gui.screens.mods.load"), (button) -> this.minecraft.setScreen(FileDialogScreen.create( this, FileDialogScreenOptions diff --git a/Blueberry-API/src/main/java/net/blueberrymc/common/bml/client/gui/screens/ModLoadingProblemScreen.java b/Blueberry-API/src/main/java/net/blueberrymc/common/bml/client/gui/screens/ModLoadingProblemScreen.java index 2b721181..90df3d1d 100644 --- a/Blueberry-API/src/main/java/net/blueberrymc/common/bml/client/gui/screens/ModLoadingProblemScreen.java +++ b/Blueberry-API/src/main/java/net/blueberrymc/common/bml/client/gui/screens/ModLoadingProblemScreen.java @@ -1,8 +1,8 @@ package net.blueberrymc.common.bml.client.gui.screens; import com.mojang.blaze3d.vertex.PoseStack; -import net.blueberrymc.client.gui.BlueberryGuiComponents; import net.blueberrymc.client.gui.screens.BlueberryScreen; +import net.blueberrymc.common.resources.BlueberryCommonComponents; import net.blueberrymc.common.resources.BlueberryText; import net.blueberrymc.common.Blueberry; import net.blueberrymc.common.bml.loading.ModLoadingError; @@ -132,7 +132,7 @@ private void select() { @Override public @NotNull Component getNarration() { - return BlueberryGuiComponents.EMPTY_TEXT; + return BlueberryCommonComponents.EMPTY_TEXT; } } } diff --git a/Blueberry-API/src/main/java/net/blueberrymc/common/resources/BlueberryCommonComponents.java b/Blueberry-API/src/main/java/net/blueberrymc/common/resources/BlueberryCommonComponents.java index b539f042..a1b3f25c 100644 --- a/Blueberry-API/src/main/java/net/blueberrymc/common/resources/BlueberryCommonComponents.java +++ b/Blueberry-API/src/main/java/net/blueberrymc/common/resources/BlueberryCommonComponents.java @@ -1,7 +1,10 @@ package net.blueberrymc.common.resources; +import net.minecraft.network.chat.TextComponent; + public class BlueberryCommonComponents { public static final BlueberryText MULTIPLAYER_COMPATIBLE = new BlueberryText("blueberry", "multiplayer.compatible"); public static final BlueberryText MULTIPLAYER_INCOMPATIBLE = new BlueberryText("blueberry", "multiplayer.incompatible"); public static final BlueberryText MULTIPLAYER_VANILLA = new BlueberryText("blueberry", "multiplayer.vanilla"); + public static final TextComponent EMPTY_TEXT = new TextComponent(""); } diff --git a/Blueberry-API/src/main/java/net/blueberrymc/common/resources/BlueberryText.java b/Blueberry-API/src/main/java/net/blueberrymc/common/resources/BlueberryText.java index 1bd66d59..f2d5e205 100644 --- a/Blueberry-API/src/main/java/net/blueberrymc/common/resources/BlueberryText.java +++ b/Blueberry-API/src/main/java/net/blueberrymc/common/resources/BlueberryText.java @@ -11,6 +11,8 @@ import net.minecraft.client.Minecraft; import net.minecraft.network.chat.BaseComponent; import net.minecraft.util.GsonHelper; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -35,6 +37,11 @@ public BlueberryText(@NotNull String namespace, @NotNull String path, @Nullable this.args = arguments != null ? Arrays.asList(arguments) : null; } + @Contract("_, _, _ -> new") + public static @NotNull BlueberryText text(@NotNull String namespace, @NotNull String path, @Nullable Object@Nullable... arguments) { + return new BlueberryText(namespace, path, arguments); + } + @NotNull public String getNamespace() { return namespace; @@ -122,8 +129,13 @@ public String getContents() { return text; } + /** + * @deprecated This method will be removed in 1.5.0 due to Minecraft changes. + */ @NotNull @Override + @ApiStatus.ScheduledForRemoval(inVersion = "1.5.0") + @Deprecated(forRemoval = true) public BaseComponent plainCopy() { return new BlueberryText(this.namespace, this.path); } @@ -133,6 +145,15 @@ public BlueberryText cloneWithArgs(@Nullable Object@Nullable... args) { return new BlueberryText(namespace, path, args); } + @Override + public @NotNull String toString() { + return "BlueberryText{" + + "namespace='" + namespace + '\'' + + ", path='" + path + '\'' + + ", args=" + args + + '}'; + } + static { CustomComponentSerializer.registerSerializer(BlueberryText.class, new Serializer()); } diff --git a/Blueberry-API/src/main/java/net/blueberrymc/util/Util.java b/Blueberry-API/src/main/java/net/blueberrymc/util/Util.java index 967ff9c3..07c686ac 100644 --- a/Blueberry-API/src/main/java/net/blueberrymc/util/Util.java +++ b/Blueberry-API/src/main/java/net/blueberrymc/util/Util.java @@ -6,6 +6,7 @@ import joptsimple.OptionSpec; import net.blueberrymc.common.Blueberry; import net.blueberrymc.common.util.VoidSafeExecutor; +import net.blueberrymc.common.util.function.ThrowableSupplier; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -231,4 +232,16 @@ public static Package getPackageRecursively(@NotNull ClassLoader cl, @NotNull St } return pkg; } + + @NotNull + @Contract(pure = true) + public static T required(@NotNull ThrowableSupplier supplier) { + try { + T value = supplier.get(); + if (value == null) throw new IllegalStateException("Supplier returned null"); + return value; + } catch (Exception throwable) { + throw new RuntimeException(throwable); + } + } } diff --git a/Blueberry-API/src/main/resources/assets/blueberry/lang/en_us.json b/Blueberry-API/src/main/resources/assets/blueberry/lang/en_us.json index 68f84f94..f8eb728c 100644 --- a/Blueberry-API/src/main/resources/assets/blueberry/lang/en_us.json +++ b/Blueberry-API/src/main/resources/assets/blueberry/lang/en_us.json @@ -5,6 +5,7 @@ "gui.screens.mods.refresh": "Refresh", "gui.screens.mods.reload": "Reload", "gui.screens.mods.recompile": "Recompile", + "gui.screens.mods.load": "Load", "gui.screens.mods.enable": "Enable", "gui.screens.mods.disable": "Disable", "gui.screens.mods.config": "Config", diff --git a/Blueberry-API/src/main/resources/assets/blueberry/lang/ja_jp.json b/Blueberry-API/src/main/resources/assets/blueberry/lang/ja_jp.json index 3a29a13d..f629fd5b 100644 --- a/Blueberry-API/src/main/resources/assets/blueberry/lang/ja_jp.json +++ b/Blueberry-API/src/main/resources/assets/blueberry/lang/ja_jp.json @@ -3,6 +3,7 @@ "gui.screens.mods.refresh": "再読み込み", "gui.screens.mods.reload": "リロード", "gui.screens.mods.recompile": "再コンパイル", + "gui.screens.mods.load": "読み込み", "gui.screens.mods.enable": "有効化", "gui.screens.mods.disable": "無効化", "gui.screens.mods.config": "設定",