diff --git a/build.gradle b/build.gradle index da1d728..e0ee766 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.11-SNAPSHOT' + id 'fabric-loom' version "${loom_version}" id 'maven-publish' } @@ -12,11 +12,10 @@ base { repositories { - // Add repositories to retrieve artifacts from in here. - // You should only use this when depending on other mods because - // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. - // See https://docs.gradle.org/current/userguide/declaring_repositories.html - // for more information about repositories. + maven { + name = "Terraformers" + url = "https://maven.terraformersmc.com/" + } } dependencies { @@ -26,6 +25,8 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + modImplementation "com.terraformersmc:modmenu:${project.modmenu_version}" } processResources { diff --git a/gradle.properties b/gradle.properties index fa9bee3..ccc1cb1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,10 +5,12 @@ org.gradle.jvmargs=-Xmx1G minecraft_version=1.21.10 yarn_mappings=1.21.10+build.2 loader_version=0.17.3 +loom_version=1.12-SNAPSHOT # Mod Properties -mod_version=1.2 +mod_version=1.3 maven_group=com.kasetoatz archives_base_name=fastghast # Dependencies # check this on https://modmuss50.me/fabric.html -fabric_version=0.135.0+1.21.10 +fabric_version=0.136.0+1.21.10 +modmenu_version=16.0.0-rc.1 \ No newline at end of file diff --git a/src/main/java/com/kasetoatz/fastGhast/FastGhast.java b/src/main/java/com/kasetoatz/fastGhast/FastGhast.java index 9aba1db..8cef4c1 100644 --- a/src/main/java/com/kasetoatz/fastGhast/FastGhast.java +++ b/src/main/java/com/kasetoatz/fastGhast/FastGhast.java @@ -1,5 +1,8 @@ package com.kasetoatz.fastghast; +import com.kasetoatz.fastghast.configscreen.ConfigScreen; +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; import net.minecraft.entity.Leashable; @@ -10,7 +13,7 @@ import java.util.EnumSet; import static com.kasetoatz.fastghast.config.Config.load; -public class Fastghast implements ModInitializer +public class Fastghast implements ModInitializer, ModMenuApi { @Override public void onInitialize() @@ -23,4 +26,10 @@ public class Fastghast implements ModInitializer } }))); } + + @Override + public ConfigScreenFactory getModConfigScreenFactory() + { + return ConfigScreen::new; + } } diff --git a/src/main/java/com/kasetoatz/fastGhast/configscreen/ConfigScreen.java b/src/main/java/com/kasetoatz/fastGhast/configscreen/ConfigScreen.java new file mode 100644 index 0000000..5c17779 --- /dev/null +++ b/src/main/java/com/kasetoatz/fastGhast/configscreen/ConfigScreen.java @@ -0,0 +1,60 @@ +package com.kasetoatz.fastghast.configscreen; + +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.widget.ThreePartsLayoutWidget; +import net.minecraft.screen.ScreenTexts; +import net.minecraft.text.Text; + +public class ConfigScreen extends Screen +{ + private final Screen parent; + private final ThreePartsLayoutWidget layout = new ThreePartsLayoutWidget(this); + private OptionList body; + + public ConfigScreen(Screen parent) + { + super(Text.of("TEST SCREEN")); + this.parent = parent; + } + + @Override + protected void init() + { + this.layout.addHeader(this.title, this.textRenderer); + this.body = new OptionList(this.client, this.layout.getWidth(), this.layout.getContentHeight(), this.layout.getHeaderHeight(), 25); + this.addItems(); + this.layout.addBody(body); + this.layout.addFooter(ButtonWidget.builder(ScreenTexts.DONE, button -> this.close()).width(200).build()); + this.layout.forEachChild(this::addDrawableChild); + this.refreshWidgetPositions(); + } + + private void addItems() + { + for (int i = 0; i < 20; i++) + { + ButtonWidget widget = ButtonWidget.builder(Text.of("TEST"), button -> System.out.println("button pressed")).build(); + this.body.add(widget); + } + } + + @Override + protected void refreshWidgetPositions() + { + this.layout.refreshPositions(); + if (this.body != null) + { + this.body.position(this.width, this.layout); + } + } + + @Override + public void close() + { + if (this.client != null) + { + this.client.setScreen(this.parent); + } + } +} diff --git a/src/main/java/com/kasetoatz/fastGhast/configscreen/Option.java b/src/main/java/com/kasetoatz/fastGhast/configscreen/Option.java new file mode 100644 index 0000000..6f2df85 --- /dev/null +++ b/src/main/java/com/kasetoatz/fastGhast/configscreen/Option.java @@ -0,0 +1,40 @@ +package com.kasetoatz.fastghast.configscreen; + +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.Element; +import net.minecraft.client.gui.Selectable; +import net.minecraft.client.gui.widget.ClickableWidget; +import net.minecraft.client.gui.widget.ElementListWidget; + +import java.util.List; + +public class Option extends ElementListWidget.Entry