diff --git a/build.gradle b/build.gradle index b6fa9583..98e8fcae 100644 --- a/build.gradle +++ b/build.gradle @@ -118,7 +118,7 @@ publishMods { // TODO: Migrate to something else def tag = providers.environmentVariable("TAG").getOrElse("release") - type = tag == "beta" ? BETA : (tag == "alpha" ? ALPHA : STABLE) + type = tag.endsWith("-beta") ? BETA : (tag.endsWith("-alpha") ? ALPHA : STABLE) def createOptions = (String projectName) -> { publishOptions { diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/snbt/config/StringMapValue.java b/common/src/main/java/dev/ftb/mods/ftblibrary/snbt/config/StringMapValue.java new file mode 100644 index 00000000..61aed052 --- /dev/null +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/snbt/config/StringMapValue.java @@ -0,0 +1,37 @@ +package dev.ftb.mods.ftblibrary.snbt.config; + +import dev.ftb.mods.ftblibrary.snbt.SNBTCompoundTag; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; +import java.util.Map; + +public class StringMapValue extends BaseValue> { + public StringMapValue(@Nullable SNBTConfig c, String n, Map def) { + super(c, n, def); + super.set(new HashMap<>(def)); + } + + @Override + public void write(SNBTCompoundTag tag) { + Map map = get(); + SNBTCompoundTag mapTag = new SNBTCompoundTag(); + + for (Map.Entry entry : map.entrySet()) { + mapTag.putString(entry.getKey(), entry.getValue()); + } + + tag.put(key, mapTag); + } + + @Override + public void read(SNBTCompoundTag tag) { + Map map = new HashMap<>(); + + for (String key : tag.getAllKeys()) { + map.put(key, tag.getString(key)); + } + + set(map); + } +} diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java index 6b1e374d..0108132f 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java @@ -35,6 +35,7 @@ public abstract class BaseScreen extends Panel { private long lastClickTime = 0L; private final Deque modalPanels; private Widget focusedWidget = null; + private boolean renderBlur = true; public BaseScreen() { super(null); @@ -104,6 +105,20 @@ public boolean onInit() { return true; } + /** + * @return if the GUI should render a blur effect behind it + */ + public boolean shouldRenderBlur() { + return renderBlur; + } + + /** + * @param renderBlur sets if the GUI should render a blur effect behind it + */ + public void setRenderBlur(boolean renderBlur) { + this.renderBlur = renderBlur; + } + /** * Should the GUI automatically close when Escape (or the inventory key - E by default) is pressed? Override this * to return false if you need to implement custom close behaviour, e.g. a confirmation screen for unsaved changes. @@ -338,6 +353,8 @@ public void drawBackground(GuiGraphics graphics, Theme theme, int x, int y, int theme.drawGui(graphics, x, y, w, h, WidgetType.NORMAL); } + + public boolean drawDefaultBackground(GuiGraphics graphics) { return true; } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java index 4b197671..415856cc 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java @@ -150,6 +150,14 @@ public void renderBackground(GuiGraphics matrixStack, int x, int y, float partia } } + + @Override + protected void renderBlurredBackground(float f) { + if(wrappedGui.shouldRenderBlur()) { + super.renderBlurredBackground(f); + } + } + @Override public void tick() { super.tick(); diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/util/TextComponentUtils.java b/common/src/main/java/dev/ftb/mods/ftblibrary/util/TextComponentUtils.java index c5fb858f..cb8835dc 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/util/TextComponentUtils.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/util/TextComponentUtils.java @@ -3,6 +3,9 @@ import dev.architectury.injectables.annotations.ExpectPlatform; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.Level; public class TextComponentUtils { @ExpectPlatform @@ -15,4 +18,12 @@ public static Component hotkeyTooltip(String txt) { .append(Component.literal(txt).withStyle(ChatFormatting.GRAY)) .append(Component.literal("]").withStyle(ChatFormatting.DARK_GRAY)); } + + public static Component translatedDimension(ResourceKey key) { + return translatedDimension(key.location()); + } + + public static Component translatedDimension(ResourceLocation dimId) { + return Component.translatableWithFallback(dimId.toLanguageKey("dimension"), dimId.toString()); + } } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/util/client/ClientTextComponentUtils.java b/common/src/main/java/dev/ftb/mods/ftblibrary/util/client/ClientTextComponentUtils.java index ce7ce758..43184b81 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/util/client/ClientTextComponentUtils.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/util/client/ClientTextComponentUtils.java @@ -3,6 +3,7 @@ import dev.ftb.mods.ftblibrary.util.CustomComponentParser; import dev.ftb.mods.ftblibrary.util.StringUtils; import dev.ftb.mods.ftblibrary.util.TextComponentParser; +import net.minecraft.client.gui.Font; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.*; @@ -10,6 +11,8 @@ import java.util.List; import java.util.function.Function; +import static net.minecraft.network.chat.CommonComponents.ELLIPSIS; + public class ClientTextComponentUtils { private static final Function DEFAULT_STRING_TO_COMPONENT = ClientTextComponentUtils::defaultStringToComponent; @@ -59,4 +62,15 @@ private static Component defaultStringToComponent(String s) { return parse(I18n.get(s)); } + + public static FormattedText ellipsize(Font font, FormattedText text, int maxWidth) { + final int strWidth = font.width(text); + final int ellipsisWidth = font.width(ELLIPSIS); + if (strWidth > maxWidth) { + return ellipsisWidth >= maxWidth ? + font.substrByWidth(text, maxWidth) : + FormattedText.composite(font.substrByWidth(text, maxWidth - ellipsisWidth), ELLIPSIS); + } + return text; + } } diff --git a/common/src/main/resources/assets/ftblibrary/lang/en_us.json b/common/src/main/resources/assets/ftblibrary/lang/en_us.json index dbf765af..8d3f7d76 100644 --- a/common/src/main/resources/assets/ftblibrary/lang/en_us.json +++ b/common/src/main/resources/assets/ftblibrary/lang/en_us.json @@ -93,5 +93,10 @@ "ftblibrary.panel.position.right": "Right", "ftblibrary.panel.position.bottom_left": "Bottom Left", "ftblibrary.panel.position.bottom": "Bottom", - "ftblibrary.panel.position.bottom_right": "Bottom Right" + "ftblibrary.panel.position.bottom_right": "Bottom Right", + "dimension.minecraft.overworld": "Overworld", + "dimension.minecraft.the_nether": "The Nether", + "dimension.minecraft.the_end": "The End", + "dimension.hyperbox.hyperbox": "Hyperbox", + "dimension.ae2.spatial_storage": "AE2 Spatial Storage" } diff --git a/gradle.properties b/gradle.properties index d9c9e3fe..ad511ad3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.daemon=false # Mod mod_id=ftblibrary readable_name=FTB Library -mod_version=2100.1.2 +mod_version=2100.1.3 mod_author=FTB Team # Maven @@ -16,7 +16,7 @@ minecraft_version=1.21 # Deps forge_version=49.0.31 -neoforge_version=21.0.40-beta +neoforge_version=21.0.109-beta neoforge_loader_version=4 fabric_loader_version=0.15.11 fabric_api_version=0.100.1+1.21