Compare commits

...

4 Commits
1.18 ... 1.19.4

Author SHA1 Message Date
Jill 6c71aa8668
updated changelog 2023-03-28 20:29:34 +03:00
Jill 551e06f092
1.19.4 port
Co-authored-by: Pqtato <jay@pqtato.pw>
2023-03-28 20:21:41 +03:00
Jill 720ced2e96 add translations by MIPOHBOPOHIH 2022-11-11 15:04:22 +03:00
Jill a154072f03 quick 1.19.2 port 2022-11-10 14:22:53 +03:00
8 changed files with 111 additions and 112 deletions

View File

@ -1 +1,2 @@
Initial release
- Ported to 1.19.4 (thanks, [Pqtato](https://pqtato.neocities.org/)!)
- Mod Menu is no longer a strictly required dependency

View File

@ -16,7 +16,8 @@ repositories {
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
// for more information about repositories.
maven { url = "https://api.modrinth.com/maven" } // LazyDFU, Suggestion Tweaker
// no longer needed, see dependencies below
// maven { url = "https://api.modrinth.com/maven" } // LazyDFU, Suggestion Tweaker
maven { url = "https://maven.terraformersmc.com" } // Mod Menu
maven { url = "https://maven.shedaniel.me/" } // Cloth Config
}
@ -30,9 +31,11 @@ dependencies {
// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
modLocalRuntime("maven.modrinth:lazydfu:0.1.2") // lazydfu - improves start times
// lazydfu is no longer needed on 1.19.4+
//modLocalRuntime("maven.modrinth:lazydfu:0.1.2") // lazydfu - improves start times
//modLocalRuntime("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}") { exclude(group: "net.fabricmc.fabric-api") } // required for suggestion tweaker
modLocalRuntime("maven.modrinth:suggestion-tweaker:${project.suggestion_tweaker_version}") // suggestion tweaker - dev QOL, improves command suggestions
// does not function on 1.19.2
//modLocalRuntime("maven.modrinth:suggestion-tweaker:${project.suggestion_tweaker_version}") // suggestion tweaker - dev QOL, improves command suggestions
modApi("com.terraformersmc:modmenu:${project.modmenu_version}")

View File

@ -3,24 +3,24 @@ org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.18.2
accepted_minecraft_version=1.18,1.18.1,1.18.2
yarn_mappings=1.18.2+build.4
loader_version=0.14.10
minecraft_version=1.19.4
accepted_minecraft_version=1.19.4
yarn_mappings=1.19.4+build.1
loader_version=0.14.18
# Mod Properties
mod_version = 1.0+1.18
mod_version_friendly = 1.0 for 1.18.2
mod_version = 1.2+1.19.4
mod_version_friendly = 1.2 for 1.19.4
maven_group = zone.oat
archives_base_name = gmod-title-screen
# Dependencies
fabric_version=0.66.0+1.18.2
fabric_version=0.76.0+1.19.4
# https://modrinth.com/mod/modmenu
modmenu_version=3.2.3
modmenu_version=6.1.0-rc.4
# Dev environment
# https://modrinth.com/mod/suggestion-tweaker
suggestion_tweaker_version = 1.18.x-1.2.0
#suggestion_tweaker_version = 1.19.1-1.3.1
# https://modrinth.com/mod/cloth-config
cloth_config_version = 6.3.81
cloth_config_version = 10.0.96

View File

@ -3,32 +3,17 @@ package zone.oat.gmodtitlescreen;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.screen.narration.NarrationPart;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.tooltip.Tooltip;
import net.minecraft.client.gui.widget.PressableTextWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;
@Environment(EnvType.CLIENT)
public class PressableTextWithTooltipWidget extends PressableTextWidget {
protected final ButtonWidget.TooltipSupplier tooltipSupplier;
protected final Tooltip tooltip;
public PressableTextWithTooltipWidget(int x, int y, int width, int height, Text text, ButtonWidget.PressAction onPress, TextRenderer textRenderer, ButtonWidget.TooltipSupplier tooltipSupplier) {
public PressableTextWithTooltipWidget(int x, int y, int width, int height, Text text, PressAction onPress, TextRenderer textRenderer, Tooltip tooltip) {
super(x, y, width, height, text, onPress, textRenderer);
this.tooltipSupplier = tooltipSupplier;
}
@Override
public void renderTooltip(MatrixStack matrices, int mouseX, int mouseY) {
super.renderTooltip(matrices, mouseX, mouseY);
this.tooltipSupplier.onTooltip(this, matrices, mouseX, mouseY);
}
@Override
public void appendNarrations(NarrationMessageBuilder builder) {
super.appendNarrations(builder);
this.appendDefaultNarrations(builder);
this.tooltipSupplier.supply(text -> builder.put(NarrationPart.HINT, text));
this.tooltip = tooltip;
setTooltip(tooltip);
}
}

View File

@ -9,12 +9,14 @@ import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.SharedConstants;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawableHelper;
import net.minecraft.client.gui.screen.*;
import net.minecraft.client.gui.screen.ConfirmLinkScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
import net.minecraft.client.gui.screen.option.AccessibilityOptionsScreen;
import net.minecraft.client.gui.screen.option.LanguageOptionsScreen;
import net.minecraft.client.gui.screen.option.OptionsScreen;
import net.minecraft.client.gui.screen.world.SelectWorldScreen;
import net.minecraft.client.gui.tooltip.Tooltip;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.PressableTextWidget;
import net.minecraft.client.gui.widget.TexturedButtonWidget;
@ -22,13 +24,11 @@ import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.texture.TextureManager;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.Util;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec2f;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import org.jetbrains.annotations.Nullable;
import zone.oat.gmodtitlescreen.Mod;
import zone.oat.gmodtitlescreen.ModIdentifier;
@ -37,11 +37,10 @@ import zone.oat.gmodtitlescreen.PressableTextWithTooltipWidget;
import java.util.Random;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
@Environment(EnvType.CLIENT)
public class CustomTitleScreen extends Screen {
public static final Text VERSION_TEXT = new TranslatableText("menu.gmod-title-screen.version", SharedConstants.getGameVersion().getName(), FabricLoader.getInstance().getModContainer("gmod-title-screen").get().getMetadata().getVersion().getFriendlyString());
public static final Text VERSION_TEXT = Text.translatable("menu.gmod-title-screen.version", SharedConstants.getGameVersion().getName(), FabricLoader.getInstance().getModContainer("gmod-title-screen").get().getMetadata().getVersion().getFriendlyString());
private static final Identifier ACCESSIBILITY_ICON_TEXTURE = new Identifier("textures/gui/accessibility.png");
private final boolean isMinceraft;
@Nullable
@ -52,30 +51,6 @@ public class CustomTitleScreen extends Screen {
private PressableTextWidget version;
private class DisabledTooltipSupplier implements ButtonWidget.TooltipSupplier {
private final Text tooltip;
public DisabledTooltipSupplier(Text tooltip) {
this.tooltip = tooltip;
}
@Override
public void onTooltip(ButtonWidget button, MatrixStack matrices, int i, int j) {
if (!button.active) {
CustomTitleScreen.this.renderOrderedTooltip(
matrices,
CustomTitleScreen.this.client.textRenderer.wrapLines(this.tooltip, Math.max(CustomTitleScreen.this.width / 2 - 43, 170)),
i, j
);
}
}
@Override
public void supply(Consumer<Text> consumer) {
consumer.accept(this.tooltip);
}
}
private class SmallPressableTextWidget extends PressableTextWidget {
public SmallPressableTextWidget(int x, int y, int width, int height, Text text, PressAction onPress, TextRenderer textRenderer) {
super(x, y, width, height, text, onPress, textRenderer);
@ -97,9 +72,9 @@ public class CustomTitleScreen extends Screen {
int padding = 3;
RenderSystem.disableBlend();
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.setShader(GameRenderer::getPositionTexProgram);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
DrawableHelper.fill(matrices, version.x - padding, version.y - padding, version.x + version.getWidth() + padding * 2, version.y + version.getHeight() + padding * 2, 0xFF111111);
DrawableHelper.fill(matrices, version.getX() - padding, version.getY() - padding, version.getX() + version.getWidth() + padding * 2, version.getY() + version.getHeight() + padding * 2, 0xFF111111);
super.renderButton(matrices, mouseX, mouseY, delta);
@ -112,7 +87,7 @@ public class CustomTitleScreen extends Screen {
}
private void openLink(String url) {
this.client.setScreen(new ConfirmChatLinkScreen(openInBrowser -> {
this.client.setScreen(new ConfirmLinkScreen(openInBrowser -> {
if (openInBrowser) {
Util.getOperatingSystem().open(url);
}
@ -122,7 +97,7 @@ public class CustomTitleScreen extends Screen {
}
public CustomTitleScreen() {
super(new TranslatableText("narrator.screen.title"));
super(Text.translatable("narrator.screen.title"));
this.isMinceraft = (double)new Random().nextFloat() < 1.0E-4;
}
@ -189,46 +164,59 @@ public class CustomTitleScreen extends Screen {
int buttonSectionSpacing = 6;
this.addDrawableChild(new PressableTextWidget(
buttonsX,
buttonsY,
130,
buttonHeight,
new TranslatableText("menu.gmod-title-screen.singleplayer"),
button -> this.client.setScreen(new SelectWorldScreen(this)),
this.textRenderer
buttonsX,
buttonsY,
130,
buttonHeight,
Text.translatable("menu.gmod-title-screen.singleplayer"),
button -> this.client.setScreen(new SelectWorldScreen(this)),
this.textRenderer
));
this.addDrawableChild(new PressableTextWidget(
buttonsX,
buttonsY + buttonSpacing * 1,
130,
buttonHeight,
new TranslatableText("menu.gmod-title-screen.multiplayer"),
button -> {
this.client.setScreen(new MultiplayerScreen(this));
},
this.textRenderer
buttonsX,
buttonsY + buttonSpacing * 1,
130,
buttonHeight,
Text.translatable("menu.gmod-title-screen.multiplayer"),
button -> {
this.client.setScreen(new MultiplayerScreen(this));
},
this.textRenderer
));
boolean modsButtonActive = FabricLoader.getInstance().isModLoaded("modmenu");
var modsButton = this.addDrawableChild(new PressableTextWithTooltipWidget(
buttonsX,
buttonsY + buttonSpacing * 2 + buttonSectionSpacing,
98,
buttonHeight,
new TranslatableText("menu.gmod-title-screen.modmenu").formatted(modsButtonActive ? Formatting.RESET : Formatting.GRAY),
button -> this.client.setScreen(new ModsScreen(this)),
textRenderer,
new DisabledTooltipSupplier(new TranslatableText("menu.gmod-title-screen.modmenu.not-installed"))
));
modsButton.active = modsButtonActive;
if (modsButtonActive) {
var modsButton = this.addDrawableChild(new PressableTextWidget(
buttonsX,
buttonsY + buttonSpacing * 2 + buttonSectionSpacing,
98,
buttonHeight,
Text.translatable("menu.gmod-title-screen.modmenu"),
button -> this.client.setScreen(new ModsScreen(this)),
textRenderer
));
modsButton.active = true;
} else {
var modsButton = this.addDrawableChild(new PressableTextWithTooltipWidget(
buttonsX,
buttonsY + buttonSpacing * 2 + buttonSectionSpacing,
98,
buttonHeight,
Text.translatable("menu.gmod-title-screen.modmenu").formatted(Formatting.GRAY),
button -> {},
textRenderer,
Tooltip.of(Text.translatable("menu.gmod-title-screen.modmenu.not-installed"), Text.translatable("menu.gmod-title-screen.modmenu.not-installed"))
));
modsButton.active = false;
}
this.addDrawableChild(new PressableTextWidget(
buttonsX,
buttonsY + buttonSpacing * 3 + buttonSectionSpacing,
98,
buttonHeight,
new TranslatableText("menu.gmod-title-screen.dupes").formatted(Formatting.GRAY),
Text.translatable("menu.gmod-title-screen.dupes").formatted(Formatting.GRAY),
button -> {},
textRenderer
)).active = false;
@ -237,7 +225,7 @@ public class CustomTitleScreen extends Screen {
buttonsY + buttonSpacing * 4 + buttonSectionSpacing,
98,
buttonHeight,
new TranslatableText("menu.gmod-title-screen.demos").formatted(Formatting.GRAY),
Text.translatable("menu.gmod-title-screen.demos").formatted(Formatting.GRAY),
button -> {},
textRenderer
)).active = false;
@ -246,7 +234,7 @@ public class CustomTitleScreen extends Screen {
buttonsY + buttonSpacing * 5 + buttonSectionSpacing,
98,
buttonHeight,
new TranslatableText("menu.gmod-title-screen.saves").formatted(Formatting.GRAY),
Text.translatable("menu.gmod-title-screen.saves").formatted(Formatting.GRAY),
button -> {},
textRenderer
)).active = false;
@ -256,7 +244,7 @@ public class CustomTitleScreen extends Screen {
buttonsY + buttonSpacing * 6 + buttonSectionSpacing * 2,
98,
buttonHeight,
new TranslatableText("menu.gmod-title-screen.options"),
Text.translatable("menu.gmod-title-screen.options"),
button -> this.client.setScreen(new OptionsScreen(this, this.client.options)),
textRenderer
));
@ -266,7 +254,7 @@ public class CustomTitleScreen extends Screen {
buttonsY + buttonSpacing * 7 + buttonSectionSpacing * 3,
98,
buttonHeight,
new TranslatableText("menu.gmod-title-screen.quit"),
Text.translatable("menu.gmod-title-screen.quit"),
button -> this.client.scheduleStop(),
textRenderer
));
@ -284,7 +272,7 @@ public class CustomTitleScreen extends Screen {
256,
256,
button -> this.client.setScreen(new LanguageOptionsScreen(this, this.client.options, this.client.getLanguageManager())),
new TranslatableText("narrator.button.language")
Text.translatable("narrator.button.language")
)
);
this.addDrawableChild(new TexturedButtonWidget(
@ -299,7 +287,7 @@ public class CustomTitleScreen extends Screen {
32,
64,
button -> this.client.setScreen(new AccessibilityOptionsScreen(this, this.client.options)),
new TranslatableText("narrator.button.accessibility")
Text.translatable("narrator.button.accessibility")
));
version = this.addDrawableChild(
@ -318,21 +306,21 @@ public class CustomTitleScreen extends Screen {
SlideshowBackground.render(matrices, delta, this.width, this.height);
RenderSystem.disableBlend();
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.setShader(GameRenderer::getPositionTexProgram);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
int gradientWidth = (int)(this.width * 0.7);
matrices.push();
matrices.translate(gradientWidth/2f, this.height/2f, 0);
matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(-90f));
matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(-90f));
DrawableHelper.fillGradient(matrices, -(int)Math.floor(this.height/2f), -(int)Math.floor(gradientWidth/2f) - 1, (int)Math.ceil(this.height/2f), (int)Math.ceil(gradientWidth/2f), 0x7b000000, 0x00000000, 0);
matrices.pop();
DrawableHelper.fill(matrices, 0, this.height - 24, this.width, this.height, 0x70111111);
if (Mod.config.showGModLogo) {
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.setShader(GameRenderer::getPositionTexProgram);
//RenderSystem.defaultBlendFunc();
RenderSystem.enableBlend();
RenderSystem.blendFunc(GlStateManager.SrcFactor.ONE, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
@ -344,7 +332,7 @@ public class CustomTitleScreen extends Screen {
RenderSystem.disableBlend();
RenderSystem.defaultBlendFunc();
} else {
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.setShader(GameRenderer::getPositionTexProgram);
RenderSystem.setShaderTexture(0, MINECRAFT_TITLE_TEXTURE);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
if (this.isMinceraft) {
@ -371,11 +359,11 @@ public class CustomTitleScreen extends Screen {
if (this.splashText != null && Mod.config.showSplashText) {
matrices.push();
matrices.translate(getSplashTextX(), logoY + getLogoHeight() - 10, 0.0);
matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(-20.0F));
matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(-20.0F));
float h = 1.8F - MathHelper.abs(MathHelper.sin((float)(Util.getMeasuringTimeMs() % 1000L) / 1000.0F * (float) (Math.PI * 2)) * 0.1F);
h = h * 100.0F / (float)(this.textRenderer.getWidth(this.splashText) + 32);
matrices.scale(h, h, h);
drawCenteredText(matrices, this.textRenderer, this.splashText, 0, -8, 16776960);
drawCenteredTextWithShadow(matrices, this.textRenderer, this.splashText, 0, -8, 16776960);
matrices.pop();
}

View File

@ -10,7 +10,7 @@ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector2f;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.math.RotationAxis;
import zone.oat.gmodtitlescreen.ModIdentifier;
import java.util.concurrent.CompletableFuture;
@ -60,7 +60,7 @@ public class SlideshowBackground {
float baseScale = Math.max(width / (float) backgroundSize[0], height / (float) backgroundSize[1]);
Vector2f overscan = new Vector2f(backgroundSize[0] * baseScale - width, backgroundSize[1] * baseScale - height);
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.setShader(GameRenderer::getPositionTexProgram);
RenderSystem.setShaderTexture(0, bg);
RenderSystem.enableBlend();
RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
@ -71,7 +71,7 @@ public class SlideshowBackground {
matrices.translate(width / 2f, height / 2f, 0f);
matrices.scale(scale, scale, 1f);
matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(angle));
matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(angle));
drawTexture(
matrices,
(int) Math.floor(-overscan.getX()/2f - width/2f),

View File

@ -0,0 +1,22 @@
{
"menu.gmod-title-screen.singleplayer": "Начать новую игру",
"menu.gmod-title-screen.multiplayer": "Сетевая игра",
"menu.gmod-title-screen.options": "Настройки",
"menu.gmod-title-screen.modmenu": "Аддоны",
"menu.gmod-title-screen.modmenu.not-installed": "Скачайте мод меню, чтобы использовать это!",
"menu.gmod-title-screen.dupes": "Дюпы",
"menu.gmod-title-screen.demos": "Демо",
"menu.gmod-title-screen.saves": "Сохранения",
"menu.gmod-title-screen.quit": "Выйти",
"menu.gmod-title-screen.version": "Сейчас вы используете minecraft-%s branch. Нажмите сюда, чтобы узнать большее. ( %s )",
"title.gmod-title-screen.config": "GMod Title Screen Конфиг",
"category.gmod-title-screen.general": "Основные",
"text.autoconfig.gmod-title-screen.title": "GMod Title Screen Конфиг",
"text.autoconfig.gmod-title-screen.option.showGModLogo": "Показывать GMod логотип",
"text.autoconfig.gmod-title-screen.option.showSplashText": "Показывать сплеши",
"text.autoconfig.gmod-title-screen.option.showGModLogo.@Tooltip[0]": "Показывать иконку GMod вместо иконки Minecraft",
"text.autoconfig.gmod-title-screen.option.showGModLogo.@Tooltip[1]": "сделайте это более интересным"
}

View File

@ -32,7 +32,7 @@
"depends": {
"fabricloader": ">=0.14.6",
"fabric": "*",
"minecraft": "~1.18.2",
"minecraft": ["1.19.4"],
"java": ">=17",
"cloth-config": ">=6.0.0"
},