diff --git a/gradle.properties b/gradle.properties index 29cccd5..ce1a362 100755 --- a/gradle.properties +++ b/gradle.properties @@ -3,16 +3,16 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use - minecraft_version=21w19a - yarn_mappings=21w19a+build.9 + minecraft_version=1.17-pre1 + yarn_mappings=1.17-pre1+build.4 loader_version=0.11.3 # Mod Properties - mod_version = 0.2.1 + mod_version = 0.2.2 maven_group = eu.midnightdust archives_base_name = midnightlib # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version=0.34.4+1.17 - mod_menu_version = 2.0.0-beta.4 + fabric_version=0.34.8+1.17 + mod_menu_version = 2.0.0-mnd diff --git a/src/main/java/eu/midnightdust/core/mixin/MixinOptionsScreen.java b/src/main/java/eu/midnightdust/core/mixin/MixinOptionsScreen.java index 473a700..865778b 100755 --- a/src/main/java/eu/midnightdust/core/mixin/MixinOptionsScreen.java +++ b/src/main/java/eu/midnightdust/core/mixin/MixinOptionsScreen.java @@ -25,6 +25,6 @@ public class MixinOptionsScreen extends Screen { @Inject(at = @At("HEAD"),method = "init") private void midnightlib$init(CallbackInfo ci) { if (MidnightLibConfig.config_screen_list) - this.addButton(new TexturedButtonWidget(this.width / 2 + 158, this.height / 6 - 12, 20, 20, 0, 0, 20, MIDNIGHTLIB_ICON_TEXTURE, 32, 64, (buttonWidget) -> Objects.requireNonNull(client).openScreen(new MidnightConfigOverviewScreen(this)), new TranslatableText("narrator.button.midnightlib"))); + this.addDrawableChild(new TexturedButtonWidget(this.width / 2 + 158, this.height / 6 - 12, 20, 20, 0, 0, 20, MIDNIGHTLIB_ICON_TEXTURE, 32, 64, (buttonWidget) -> Objects.requireNonNull(client).openScreen(new MidnightConfigOverviewScreen(this)), new TranslatableText("narrator.button.midnightlib"))); } } diff --git a/src/main/java/eu/midnightdust/core/screen/MidnightConfigOverviewScreen.java b/src/main/java/eu/midnightdust/core/screen/MidnightConfigOverviewScreen.java index dfe8927..1dbb3eb 100755 --- a/src/main/java/eu/midnightdust/core/screen/MidnightConfigOverviewScreen.java +++ b/src/main/java/eu/midnightdust/core/screen/MidnightConfigOverviewScreen.java @@ -6,6 +6,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.Element; +import net.minecraft.client.gui.Selectable; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ScreenTexts; import net.minecraft.client.gui.widget.*; @@ -25,19 +26,16 @@ public class MidnightConfigOverviewScreen extends Screen { @Override protected void init() { - super.init(); - - this.addButton(new ButtonWidget(this.width / 2 - 100, this.height - 28, 200, 20, ScreenTexts.DONE, (button) -> { - Objects.requireNonNull(client).openScreen(parent); - })); + this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height - 28, 200, 20, ScreenTexts.DONE, (button) -> Objects.requireNonNull(client).openScreen(parent))); this.list = new MidnightOverviewListWidget(this.client, this.width, this.height, 32, this.height - 32, 25); - this.children.add(this.list); + this.addSelectableChild(this.list); MidnightConfig.configClass.forEach((modid, configClass) -> { list.addButton(new ButtonWidget(this.width / 2 - 100, this.height - 28, 200, 20, new TranslatableText(modid +".midnightconfig.title"), (button) -> { Objects.requireNonNull(client).openScreen(MidnightConfig.getScreen(this,modid)); })); }); + super.init(); } @Override public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { @@ -45,9 +43,9 @@ public class MidnightConfigOverviewScreen extends Screen { this.list.render(matrices, mouseX, mouseY, delta); int stringWidth = title.getString().length() + 47; - super.render(matrices, mouseX, mouseY, delta); if (MidnightConfig.useTooltipForTitle) renderTooltip(matrices, title, width/2 - stringWidth, 27); else drawCenteredText(matrices, textRenderer, title, width / 2, 15, 0xFFFFFF); + super.render(matrices, mouseX, mouseY, delta); } @Environment(EnvType.CLIENT) public static class MidnightOverviewListWidget extends ElementListWidget { @@ -61,19 +59,19 @@ public class MidnightConfigOverviewScreen extends Screen { @Override public int getScrollbarPositionX() { return this.width -7; } - public void addButton(AbstractButtonWidget button) { + public void addButton(ClickableWidget button) { this.addEntry(OverviewButtonEntry.create(button)); } @Override public int getRowWidth() { return 400; } } public static class OverviewButtonEntry extends ElementListWidget.Entry { - private final List buttons = new ArrayList<>(); + private final List buttons = new ArrayList<>(); - private OverviewButtonEntry(AbstractButtonWidget button) { + private OverviewButtonEntry(ClickableWidget button) { this.buttons.add(button); } - public static OverviewButtonEntry create(AbstractButtonWidget button) { + public static OverviewButtonEntry create(ClickableWidget button) { return new OverviewButtonEntry(button); } public void render(MatrixStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { @@ -85,5 +83,9 @@ public class MidnightConfigOverviewScreen extends Screen { public List children() { return buttons; } + + public List method_37025() { + return buttons; + } } } \ No newline at end of file diff --git a/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java b/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java index faa91f9..e922563 100755 --- a/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java +++ b/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java @@ -11,6 +11,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.gui.Element; +import net.minecraft.client.gui.Selectable; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ScreenTexts; import net.minecraft.client.gui.widget.*; @@ -30,9 +31,11 @@ import java.util.function.Function; import java.util.function.Predicate; import java.util.regex.Pattern; -// MidnightConfig v1.0.1 +// MidnightConfig v1.0.2 // Single class config library - feel free to copy! // Changelog: +// - 1.0.2: +// - Update to 21w20a // - 1.0.1: // - Fixed buttons not working in fullscreen // - 1.0.0: @@ -43,7 +46,7 @@ import java.util.regex.Pattern; // - Fresh New Design /** Based on https://github.com/Minenash/TinyConfig - * Credits to Minenash */ + * Credits to Minenash */ @SuppressWarnings("unchecked") public class MidnightConfig { @@ -200,7 +203,7 @@ public class MidnightConfig { protected void init() { super.init(); - this.addButton(new ButtonWidget(this.width / 2 - 154, this.height - 28, 150, 20, ScreenTexts.CANCEL, button -> { + this.addDrawableChild(new ButtonWidget(this.width / 2 - 154, this.height - 28, 150, 20, ScreenTexts.CANCEL, button -> { try { gson.fromJson(Files.newBufferedReader(path), configClass.get(modid)); } catch (Exception e) { write(modid); } @@ -216,7 +219,7 @@ public class MidnightConfig { Objects.requireNonNull(client).openScreen(parent); })); - ButtonWidget done = this.addButton(new ButtonWidget(this.width / 2 + 4, this.height - 28, 150, 20, ScreenTexts.DONE, (button) -> { + ButtonWidget done = this.addDrawableChild(new ButtonWidget(this.width / 2 + 4, this.height - 28, 150, 20, ScreenTexts.DONE, (button) -> { for (EntryInfo info : entries) if (info.id.equals(modid)) { try { @@ -228,7 +231,7 @@ public class MidnightConfig { })); this.list = new MidnightConfigListWidget(this.client, this.width, this.height, 32, this.height - 32, 25); - this.children.add(this.list); + this.addSelectableChild(this.list); for (EntryInfo info : entries) { if (info.id.equals(modid)) { TranslatableText name = new TranslatableText(translationPrefix + info.field.getName()); @@ -265,14 +268,13 @@ public class MidnightConfig { this.list.render(matrices, mouseX, mouseY, delta); int stringWidth = (int) (title.getString().length() * 2.75f); - super.render(matrices, mouseX, mouseY, delta); if (useTooltipForTitle) renderTooltip(matrices, title, width/2 - stringWidth, 27); else drawCenteredText(matrices, textRenderer, title, width / 2, 15, 0xFFFFFF); for (EntryInfo info : entries) { if (info.id.equals(modid)) { if (list.getHoveredButton(mouseX,mouseY).isPresent()) { - AbstractButtonWidget buttonWidget = list.getHoveredButton(mouseX,mouseY).get(); + ClickableWidget buttonWidget = list.getHoveredButton(mouseX,mouseY).get(); Text text = ButtonEntry.buttonsWithText.get(buttonWidget); TranslatableText name = new TranslatableText(this.translationPrefix + info.field.getName()); String key = translationPrefix + info.field.getName() + ".tooltip"; @@ -287,6 +289,7 @@ public class MidnightConfig { } } } + super.render(matrices,mouseX,mouseY,delta); } } @Environment(EnvType.CLIENT) @@ -301,16 +304,16 @@ public class MidnightConfig { @Override public int getScrollbarPositionX() { return this.width -7; } - public void addButton(AbstractButtonWidget button, AbstractButtonWidget resetButton, Text text) { + public void addButton(ClickableWidget button, ClickableWidget resetButton, Text text) { this.addEntry(ButtonEntry.create(button, text, resetButton)); } @Override public int getRowWidth() { return 10000; } - public Optional getHoveredButton(double mouseX, double mouseY) { + public Optional getHoveredButton(double mouseX, double mouseY) { for (ButtonEntry buttonEntry : this.children()) { - for (AbstractButtonWidget abstractButtonWidget : buttonEntry.buttons) { - if (abstractButtonWidget.isMouseOver(mouseX, mouseY)) { - return Optional.of(abstractButtonWidget); + for (ClickableWidget ClickableWidget : buttonEntry.buttons) { + if (ClickableWidget.isMouseOver(mouseX, mouseY)) { + return Optional.of(ClickableWidget); } } } @@ -319,13 +322,13 @@ public class MidnightConfig { } public static class ButtonEntry extends ElementListWidget.Entry { private static final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; - private final List buttons = new ArrayList<>(); - private final List resetButtons = new ArrayList<>(); + private final List buttons = new ArrayList<>(); + private final List resetButtons = new ArrayList<>(); private final List texts = new ArrayList<>(); - private final List buttonsWithResetButtons = new ArrayList<>(); - public static final Map buttonsWithText = new HashMap<>(); + private final List buttonsWithResetButtons = new ArrayList<>(); + public static final Map buttonsWithText = new HashMap<>(); - private ButtonEntry(AbstractButtonWidget button, Text text, AbstractButtonWidget resetButton) { + private ButtonEntry(ClickableWidget button, Text text, ClickableWidget resetButton) { buttonsWithText.put(button,text); this.buttons.add(button); this.resetButtons.add(resetButton); @@ -333,15 +336,15 @@ public class MidnightConfig { this.buttonsWithResetButtons.add(button); this.buttonsWithResetButtons.add(resetButton); } - public static ButtonEntry create(AbstractButtonWidget button, Text text, AbstractButtonWidget resetButton) { + public static ButtonEntry create(ClickableWidget button, Text text, ClickableWidget resetButton) { return new ButtonEntry(button, text, resetButton); } public void render(MatrixStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { - this.buttons.forEach((button) -> { + this.buttons.forEach(button -> { button.y = y; button.render(matrices, mouseX, mouseY, tickDelta); }); - this.texts.forEach((text) -> DrawableHelper.drawTextWithShadow(matrices,textRenderer, text,12,y+5,0xFFFFFF)); + this.texts.forEach(text -> DrawableHelper.drawTextWithShadow(matrices,textRenderer, text,12,y+5,0xFFFFFF)); this.resetButtons.forEach((button) -> { button.y = y; button.render(matrices, mouseX, mouseY, tickDelta); @@ -350,6 +353,10 @@ public class MidnightConfig { public List children() { return buttonsWithResetButtons; } + + public List method_37025() { + return buttonsWithResetButtons; + } } @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index b291cf2..f83535a 100755 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ ], "depends": { - "fabric": "*" + "fabric-renderer-registries-v1": "*" }, "custom": { diff --git a/src/main/resources/midnightcore.mixins.json b/src/main/resources/midnightcore.mixins.json index 2c229b3..1ccff9c 100755 --- a/src/main/resources/midnightcore.mixins.json +++ b/src/main/resources/midnightcore.mixins.json @@ -1,7 +1,7 @@ { "required": true, "package": "eu.midnightdust.core.mixin", - "compatibilityLevel": "JAVA_8", + "compatibilityLevel": "JAVA_16", "client": [ "MixinOptionsScreen" ], diff --git a/src/main/resources/midnighthats.mixins.json b/src/main/resources/midnighthats.mixins.json index 043137e..5300b4f 100755 --- a/src/main/resources/midnighthats.mixins.json +++ b/src/main/resources/midnighthats.mixins.json @@ -1,7 +1,7 @@ { "required": true, "package": "eu.midnightdust.hats.mixin", - "compatibilityLevel": "JAVA_8", + "compatibilityLevel": "JAVA_16", "client": [ "PlayerEntityRendererMixin" ],