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