From e13a5ad9789384dff522e555a1fc5dabf78a5606 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Wed, 3 Jul 2024 15:03:23 +0200 Subject: [PATCH] 1.20.1 port This will not receive any future updates --- .../picturesign/PictureSignClient.java | 2 +- .../mixin/MixinSignEditScreen.java | 10 +- .../picturesign/render/PictureRenderer.java | 11 ++- .../screen/PictureSignHelperScreen.java | 3 +- .../screen/TextIconButtonWidget.java | 98 +++++++++++++++++++ .../picturesign/util/GIFHandler.java | 2 +- gradle.properties | 10 +- settings.gradle | 2 +- 8 files changed, 118 insertions(+), 20 deletions(-) create mode 100644 common/src/main/java/eu/midnightdust/picturesign/screen/TextIconButtonWidget.java diff --git a/common/src/main/java/eu/midnightdust/picturesign/PictureSignClient.java b/common/src/main/java/eu/midnightdust/picturesign/PictureSignClient.java index 3b109ee..368f03b 100755 --- a/common/src/main/java/eu/midnightdust/picturesign/PictureSignClient.java +++ b/common/src/main/java/eu/midnightdust/picturesign/PictureSignClient.java @@ -23,6 +23,6 @@ public class PictureSignClient { PictureSignConfig.init(MOD_ID, PictureSignConfig.class); } public static Identifier id(String path) { - return Identifier.of(MOD_ID, path); + return new Identifier(MOD_ID, path); } } diff --git a/common/src/main/java/eu/midnightdust/picturesign/mixin/MixinSignEditScreen.java b/common/src/main/java/eu/midnightdust/picturesign/mixin/MixinSignEditScreen.java index 31207ec..933e03c 100644 --- a/common/src/main/java/eu/midnightdust/picturesign/mixin/MixinSignEditScreen.java +++ b/common/src/main/java/eu/midnightdust/picturesign/mixin/MixinSignEditScreen.java @@ -3,10 +3,10 @@ package eu.midnightdust.picturesign.mixin; import eu.midnightdust.picturesign.PictureSignClient; import eu.midnightdust.picturesign.config.PictureSignConfig; import eu.midnightdust.picturesign.screen.PictureSignHelperScreen; +import eu.midnightdust.picturesign.screen.TextIconButtonWidget; import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.AbstractSignEditScreen; -import net.minecraft.client.gui.widget.TextIconButtonWidget; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Final; @@ -30,7 +30,7 @@ public abstract class MixinSignEditScreen extends Screen { @Unique private static final Identifier PICTURESIGN_ICON_TEXTURE = id("icon/picturesign"); @Unique private static final Identifier CLIPBOARD_ICON_TEXTURE = id("icon/clipboard"); @Unique private static final Identifier TRASHBIN_ICON_TEXTURE = id("icon/trashbin"); - @Unique private static boolean switchScreen = false; + @Unique private static boolean picturesign$switchScreen = false; protected MixinSignEditScreen(Text title) { super(title); @@ -61,7 +61,7 @@ public abstract class MixinSignEditScreen extends Screen { this.addDrawableChild(trashbinBuilder); TextIconButtonWidget picturesignBuilder = TextIconButtonWidget.builder(Text.empty(), (buttonWidget) -> { - switchScreen = true; + picturesign$switchScreen = true; Objects.requireNonNull(client).setScreen(new PictureSignHelperScreen(this.blockEntity, front, false)); }, true).texture(PICTURESIGN_ICON_TEXTURE, 16, 16).dimension(20, 20).build(); picturesignBuilder.setPosition(this.width - 40, this.height - 40); @@ -70,8 +70,8 @@ public abstract class MixinSignEditScreen extends Screen { } @Inject(at = @At("HEAD"), method = "removed", cancellable = true) private void picturesign$removed(CallbackInfo ci) { - if (switchScreen) { - switchScreen = false; + if (picturesign$switchScreen) { + picturesign$switchScreen = false; ci.cancel(); } } diff --git a/common/src/main/java/eu/midnightdust/picturesign/render/PictureRenderer.java b/common/src/main/java/eu/midnightdust/picturesign/render/PictureRenderer.java index 893c009..e7394de 100755 --- a/common/src/main/java/eu/midnightdust/picturesign/render/PictureRenderer.java +++ b/common/src/main/java/eu/midnightdust/picturesign/render/PictureRenderer.java @@ -192,15 +192,16 @@ public class PictureRenderer { matrixStack.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(dimensions.zRot())); Matrix4f matrix4f = matrixStack.peek().getPositionMatrix(); - BufferBuilder buffer = tessellator.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR_TEXTURE_LIGHT); + BufferBuilder buffer = tessellator.getBuffer(); + buffer.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR_TEXTURE_LIGHT); - buffer.vertex(matrix4f, dimensions.width(), 0.0F, 1.0F).color(255, 255, 255, 255).texture(1.0F, 1.0F).light(l).overlay(overlay); + buffer.vertex(matrix4f, dimensions.width(), 0.0F, 1.0F).color(255, 255, 255, 255).texture(1.0F, 1.0F).light(l).overlay(overlay).next(); - buffer.vertex(matrix4f, dimensions.width(), dimensions.height(), 1.0F).color(255, 255, 255, 255).texture(1.0F, 0.0F).light(l).overlay(overlay); + buffer.vertex(matrix4f, dimensions.width(), dimensions.height(), 1.0F).color(255, 255, 255, 255).texture(1.0F, 0.0F).light(l).overlay(overlay).next(); - buffer.vertex(matrix4f, 0.0F, dimensions.height(), 1.0F).color(255, 255, 255, 255).texture(0.0F, 0.0F).light(l).overlay(overlay); + buffer.vertex(matrix4f, 0.0F, dimensions.height(), 1.0F).color(255, 255, 255, 255).texture(0.0F, 0.0F).light(l).overlay(overlay).next(); - buffer.vertex(matrix4f, 0.0F, 0.0F, 1.0F).color(255, 255, 255, 255).texture(0.0F, 1.0F).light(l).overlay(overlay); + buffer.vertex(matrix4f, 0.0F, 0.0F, 1.0F).color(255, 255, 255, 255).texture(0.0F, 1.0F).light(l).overlay(overlay).next(); BufferRenderer.drawWithGlobalProgram(buffer.end()); diff --git a/common/src/main/java/eu/midnightdust/picturesign/screen/PictureSignHelperScreen.java b/common/src/main/java/eu/midnightdust/picturesign/screen/PictureSignHelperScreen.java index f17d01e..334758c 100644 --- a/common/src/main/java/eu/midnightdust/picturesign/screen/PictureSignHelperScreen.java +++ b/common/src/main/java/eu/midnightdust/picturesign/screen/PictureSignHelperScreen.java @@ -21,7 +21,6 @@ import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.client.gui.widget.SliderWidget; import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.client.gui.widget.TextIconButtonWidget; import net.minecraft.client.render.DiffuseLighting; import net.minecraft.client.render.OverlayTexture; import net.minecraft.client.render.TexturedRenderLayers; @@ -385,7 +384,7 @@ public class PictureSignHelperScreen extends Screen { else { MatrixStack matrices = context.getMatrices(); matrices.scale(4.5F, 4.5F, 1.0F); - context.drawTexture(Identifier.ofVanilla("textures/gui/hanging_signs/" + this.signType.name() + ".png"), -8, -8, 0.0F, 0.0F, 16, 16, 16, 16); + context.drawTexture(new Identifier("textures/gui/hanging_signs/" + this.signType.name() + ".png"), -8, -8, 0.0F, 0.0F, 16, 16, 16, 16); } } diff --git a/common/src/main/java/eu/midnightdust/picturesign/screen/TextIconButtonWidget.java b/common/src/main/java/eu/midnightdust/picturesign/screen/TextIconButtonWidget.java new file mode 100644 index 0000000..d0f77fe --- /dev/null +++ b/common/src/main/java/eu/midnightdust/picturesign/screen/TextIconButtonWidget.java @@ -0,0 +1,98 @@ +package eu.midnightdust.picturesign.screen; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import org.jetbrains.annotations.Nullable; + +@Environment(EnvType.CLIENT) +public abstract class TextIconButtonWidget extends ButtonWidget { + protected final Identifier texture; + protected final int textureWidth; + protected final int textureHeight; + + TextIconButtonWidget(int width, int height, Text message, int textureWidth, int textureHeight, Identifier texture, ButtonWidget.PressAction onPress, @Nullable ButtonWidget.NarrationSupplier narrationSupplier) { + super(0, 0, width, height, message, onPress, narrationSupplier == null ? DEFAULT_NARRATION_SUPPLIER : narrationSupplier); + this.textureWidth = textureWidth; + this.textureHeight = textureHeight; + this.texture = texture; + } + + public static Builder builder(Text text, ButtonWidget.PressAction onPress, boolean hideLabel) { + return new Builder(text, onPress, hideLabel); + } + + @Environment(EnvType.CLIENT) + public static class Builder { + private final Text text; + private final ButtonWidget.PressAction onPress; + private final boolean hideText; + private int width = 150; + private int height = 20; + @Nullable + private Identifier texture; + private int textureWidth; + private int textureHeight; + @Nullable + ButtonWidget.NarrationSupplier narrationSupplier; + + public Builder(Text text, ButtonWidget.PressAction onPress, boolean hideText) { + this.text = text; + this.onPress = onPress; + this.hideText = hideText; + } + + public Builder width(int width) { + this.width = width; + return this; + } + + public Builder dimension(int width, int height) { + this.width = width; + this.height = height; + return this; + } + + public Builder texture(Identifier texture, int width, int height) { + this.texture = texture; + this.textureWidth = width; + this.textureHeight = height; + return this; + } + + public Builder narration(ButtonWidget.NarrationSupplier narrationSupplier) { + this.narrationSupplier = narrationSupplier; + return this; + } + + public TextIconButtonWidget build() { + if (this.texture == null) { + throw new IllegalStateException("Sprite not set"); + } else { + this.texture = new Identifier(texture.getNamespace(), "textures/gui/sprites/"+texture.getPath() +".png"); + return new IconOnly(this.width, this.height, this.text, this.textureWidth, this.textureHeight, this.texture, this.onPress, this.narrationSupplier); + } + } + } + + @Environment(EnvType.CLIENT) + public static class IconOnly extends TextIconButtonWidget { + protected IconOnly(int i, int j, Text text, int k, int l, Identifier identifier, ButtonWidget.PressAction pressAction, @Nullable ButtonWidget.NarrationSupplier narrationSupplier) { + super(i, j, text, k, l, identifier, pressAction, narrationSupplier); + } + @Override + public void renderButton(DrawContext context, int mouseX, int mouseY, float delta) { + super.renderButton(context, mouseX, mouseY, delta); + int i = this.getX() + this.getWidth() / 2 - this.textureWidth / 2; + int j = this.getY() + this.getHeight() / 2 - this.textureHeight / 2; + context.drawTexture(this.texture, i, j, 0, 0, this.textureWidth, this.textureHeight, this.textureWidth, this.textureHeight); + } + + public void drawMessage(DrawContext context, TextRenderer textRenderer, int color) { + } + } +} diff --git a/common/src/main/java/eu/midnightdust/picturesign/util/GIFHandler.java b/common/src/main/java/eu/midnightdust/picturesign/util/GIFHandler.java index 59381ed..ec01369 100644 --- a/common/src/main/java/eu/midnightdust/picturesign/util/GIFHandler.java +++ b/common/src/main/java/eu/midnightdust/picturesign/util/GIFHandler.java @@ -55,7 +55,7 @@ public class GIFHandler { } public int getTexture() { return player.getRenderer().texture(tick, - (MathAPI.tickToMs(client.getRenderTickCounter().getTickDelta(true))), true); + (MathAPI.tickToMs(client.getTickDelta())), true); } public boolean isWorking() { if (player != null && player.getException() != null) player.getException().fillInStackTrace(); diff --git a/gradle.properties b/gradle.properties index 2ecb9d1..1112125 100755 --- a/gradle.properties +++ b/gradle.properties @@ -1,24 +1,24 @@ org.gradle.jvmargs=-Xmx2048M -minecraft_version=1.21 -yarn_mappings=1.21+build.2 +minecraft_version=1.20.1 +yarn_mappings=1.20.1+build.10 enabled_platforms=fabric,neoforge archives_base_name=picturesign -mod_version=2.0.0-pre.3 +mod_version=2.0.0-1.20.1 maven_group=eu.midnightdust release_type=beta curseforge_id=432008 modrinth_id=YQnwl5Vv -midnightlib_version=1.5.7 +midnightlib_version=1.4.1 watermedia_version=2.0.64 iris_version=1.6.17+1.20.4 # The latest Iris version causes the build to fail, but we don't need that anyway fabric_loader_version=0.15.11 -fabric_api_version=0.100.1+1.21 +fabric_api_version=0.92.2+1.20.1 neoforge_version=21.0.14-beta yarn_mappings_patch_neoforge_version = 1.21+build.4 diff --git a/settings.gradle b/settings.gradle index 5011340..36d21a6 100755 --- a/settings.gradle +++ b/settings.gradle @@ -10,6 +10,6 @@ pluginManagement { include("common") include("fabric") //include("quilt") -include("neoforge") +//include("neoforge") rootProject.name = "picturesign"