Skip to content

Commit d7b51c5

Browse files
Merge pull request #4 from tanishisherewithhh/master
Another mega update. Especially to ContextMenu.
2 parents 56e1f77 + 9fb56fb commit d7b51c5

File tree

82 files changed

+6349
-1360
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+6349
-1360
lines changed

.github/workflows/gradle.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535

3636
- name: capture build artifacts
3737
if: ${{ runner.os == 'Linux' && matrix.java == '21' }} # Only upload artifacts built from the latest java on one OS
38-
uses: actions/upload-artifact@v3
38+
uses: actions/upload-artifact@v4
3939
with:
4040
name: Dynamichud
4141
path: build/libs/

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,5 @@ run/
116116

117117
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
118118
!gradle-wrapper.jar
119+
120+
*.profileconfig.json

build.gradle

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id 'fabric-loom' version '1.7-SNAPSHOT'
2+
id 'fabric-loom' version '1.9-SNAPSHOT'
33
id 'maven-publish'
44
}
55

@@ -34,8 +34,6 @@ dependencies {
3434
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
3535

3636
modImplementation "dev.isxander:yet-another-config-lib:${project.yacl_version}"
37-
38-
modApi "com.terraformersmc:modmenu:11.0.1"
3937
}
4038

4139
processResources {

gradle.properties

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ org.gradle.parallel=true
44

55
# Fabric Properties
66
# check these on https://fabricmc.net/develop
7-
minecraft_version=1.21
8-
yarn_mappings=1.21+build.2
9-
loader_version=0.15.11
7+
minecraft_version=1.21.4
8+
yarn_mappings=1.21.4+build.1
9+
loader_version=0.16.9
1010

1111
# Mod Properties
12-
mod_version = 2.1.0
12+
# need versioning system
13+
mod_version = 3.0.0
1314
maven_group = com.tanishisherewith
1415
archives_base_name = dynamichud
1516

1617
# Dependencies
17-
fabric_version=0.100.3+1.21
18-
yacl_version=3.5.0+1.21-fabric
18+
fabric_version=0.111.0+1.21.4
19+
yacl_version=3.6.6+1.21.4-fabric
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
44
networkTimeout=10000
55
zipStoreBase=GRADLE_USER_HOME
66
zipStorePath=wrapper/dists
Lines changed: 8 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,22 @@
11
package com.tanishisherewith.dynamichud;
22

33
import com.tanishisherewith.dynamichud.config.GlobalConfig;
4-
import com.tanishisherewith.dynamichud.screens.AbstractMoveableScreen;
5-
import com.tanishisherewith.dynamichud.utils.BooleanPool;
6-
import com.tanishisherewith.dynamichud.widget.Widget;
7-
import com.tanishisherewith.dynamichud.widget.WidgetManager;
8-
import com.tanishisherewith.dynamichud.widget.WidgetRenderer;
9-
import com.tanishisherewith.dynamichud.widgets.TextWidget;
4+
import com.tanishisherewith.dynamichud.integration.IntegrationManager;
105
import net.fabricmc.api.ClientModInitializer;
11-
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
12-
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
6+
import net.fabricmc.api.EnvType;
7+
import net.fabricmc.api.Environment;
8+
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
139
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
14-
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
15-
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
16-
import net.fabricmc.loader.api.FabricLoader;
17-
import net.fabricmc.loader.api.metadata.ModMetadata;
1810
import net.minecraft.client.MinecraftClient;
19-
import net.minecraft.client.option.KeyBinding;
2011
import org.slf4j.Logger;
2112
import org.slf4j.LoggerFactory;
2213

23-
import java.io.File;
24-
import java.io.IOException;
25-
import java.util.ArrayList;
26-
import java.util.HashMap;
27-
import java.util.List;
28-
import java.util.Objects;
29-
14+
@Environment(EnvType.CLIENT)
3015
public class DynamicHUD implements ClientModInitializer {
31-
/**
32-
* This is a map to store the list of widgets for each widget file to be saved.
33-
* <p>
34-
* Allows saving widgets across different mods with same save file name.
35-
*/
36-
public static final HashMap<String, List<Widget>> FILE_MAP = new HashMap<>();
37-
public static final Logger logger = LoggerFactory.getLogger("DynamicHud");
38-
private static final List<WidgetRenderer> widgetRenderers = new ArrayList<>();
3916
public static MinecraftClient MC = MinecraftClient.getInstance();
17+
public static final Logger logger = LoggerFactory.getLogger("DynamicHud");
4018
public static String MOD_ID = "dynamichud";
4119

42-
public static void addWidgetRenderer(WidgetRenderer widgetRenderer) {
43-
widgetRenderers.add(widgetRenderer);
44-
}
45-
46-
public static List<WidgetRenderer> getWidgetRenderers() {
47-
return widgetRenderers;
48-
}
49-
5020
public static void printInfo(String msg) {
5121
logger.info(msg);
5222
}
@@ -55,133 +25,16 @@ public static void printWarn(String msg) {
5525
logger.warn(msg);
5626
}
5727

58-
/**
59-
* Opens the MovableScreen when the specified key is pressed.
60-
*
61-
* @param key The key to listen for
62-
* @param screen The AbstractMoveableScreen instance to use to set the screen
63-
*/
64-
public static void openDynamicScreen(KeyBinding key, AbstractMoveableScreen screen) {
65-
if (key.wasPressed()) {
66-
MC.setScreen(screen);
67-
}
68-
}
69-
7028
@Override
7129
public void onInitializeClient() {
72-
printInfo("Initialising DynamicHud");
73-
74-
// Add WidgetData of included widgets
75-
WidgetManager.registerCustomWidgets(
76-
TextWidget.DATA
77-
);
30+
printInfo("Initialising DynamicHUD");
7831

7932
//YACL load
8033
GlobalConfig.HANDLER.load();
8134

82-
printInfo("Integrating mods...");
83-
FabricLoader.getInstance()
84-
.getEntrypointContainers("dynamicHud", DynamicHudIntegration.class)
85-
.forEach(entrypoint -> {
86-
ModMetadata metadata = entrypoint.getProvider().getMetadata();
87-
String modId = metadata.getId();
88-
89-
printInfo(String.format("Supported mod with id %s was found!", modId));
90-
91-
AbstractMoveableScreen screen;
92-
KeyBinding binding;
93-
WidgetRenderer widgetRenderer;
94-
File widgetsFile;
95-
try {
96-
DynamicHudIntegration DHIntegration = entrypoint.getEntrypoint();
97-
98-
//Calls the init method
99-
DHIntegration.init();
100-
101-
//Gets the widget file to save and load the widgets from
102-
widgetsFile = DHIntegration.getWidgetsFile();
103-
104-
// Adds / loads widgets from file
105-
if (widgetsFile.exists()) {
106-
WidgetManager.loadWidgets(widgetsFile);
107-
} else {
108-
DHIntegration.addWidgets();
109-
}
110-
111-
//Calls the second init method
112-
DHIntegration.initAfter();
113-
114-
// Get the instance of AbstractMoveableScreen
115-
screen = Objects.requireNonNull( DHIntegration.getMovableScreen());
116-
117-
// Get the keybind to open the screen instance
118-
binding = DHIntegration.getKeyBind();
119-
120-
//Register custom widget datas by WidgetManager.registerCustomWidgets();
121-
DHIntegration.registerCustomWidgets();
122-
123-
//WidgetRenderer with widgets instance
124-
widgetRenderer = DHIntegration.getWidgetRenderer();
125-
addWidgetRenderer(widgetRenderer);
126-
127-
List<Widget> widgets = FILE_MAP.get(widgetsFile.getName());
128-
129-
if (widgets == null || widgets.isEmpty()) {
130-
FILE_MAP.put(widgetsFile.getName(), widgetRenderer.getWidgets());
131-
} else {
132-
widgets.addAll(widgetRenderer.getWidgets());
133-
FILE_MAP.put(widgetsFile.getName(), widgets);
134-
}
135-
136-
//Register events for rendering, saving, loading, and opening the hudEditor
137-
ClientTickEvents.START_CLIENT_TICK.register((client) -> openDynamicScreen(binding, screen));
138-
139-
/* === Saving === */
140-
141-
//When a player exits a world (SinglePlayer worlds) or a server stops
142-
ServerLifecycleEvents.SERVER_STOPPING.register(server -> saveWidgetsSafely(widgetsFile, FILE_MAP.get(widgetsFile.getName())));
143-
144-
// When a resource pack is reloaded.
145-
ServerLifecycleEvents.END_DATA_PACK_RELOAD.register((server, resourceManager, s) -> saveWidgetsSafely(widgetsFile, FILE_MAP.get(widgetsFile.getName())));
146-
147-
//When player disconnects
148-
ServerPlayConnectionEvents.DISCONNECT.register((handler, packetSender) -> saveWidgetsSafely(widgetsFile, FILE_MAP.get(widgetsFile.getName())));
149-
150-
//When minecraft closes
151-
ClientLifecycleEvents.CLIENT_STOPPING.register((minecraftClient) -> saveWidgetsSafely(widgetsFile, FILE_MAP.get(widgetsFile.getName())));
152-
153-
printInfo(String.format("Integration of mod %s was successful", modId));
154-
} catch (Throwable e) {
155-
if (e instanceof IOException) {
156-
logger.warn("An error has occurred while loading widgets of mod {}", modId, e);
157-
} else {
158-
logger.warn("Mod {} has improper implementation of DynamicHUD", modId, e);
159-
}
160-
}
161-
});
162-
printInfo("(DynamicHUD) Integration of mods found was successful");
163-
164-
165-
//Global config saving (YACL)
166-
ServerLifecycleEvents.SERVER_STOPPING.register(server -> GlobalConfig.HANDLER.save());
167-
ServerLifecycleEvents.END_DATA_PACK_RELOAD.register((server, resourceManager, s) -> GlobalConfig.HANDLER.save());
168-
ServerPlayConnectionEvents.DISCONNECT.register((handler, packetSender) -> GlobalConfig.HANDLER.save());
169-
ClientLifecycleEvents.CLIENT_STOPPING.register((minecraftClient) -> {
170-
GlobalConfig.HANDLER.save();
171-
});
172-
35+
IntegrationManager.integrate();
17336

17437
//In game screen render.
17538
HudRenderCallback.EVENT.register(new HudRender());
17639
}
177-
178-
private void saveWidgetsSafely(File widgetsFile, List<Widget> widgets) {
179-
try {
180-
WidgetManager.saveWidgets(widgetsFile, widgets);
181-
} catch (IOException e) {
182-
logger.error("Failed to save widgets. Widgets passed: {}", widgets);
183-
throw new RuntimeException(e);
184-
}
185-
}
186-
18740
}

src/main/java/com/tanishisherewith/dynamichud/DynamicHudTest.java

Lines changed: 0 additions & 99 deletions
This file was deleted.

src/main/java/com/tanishisherewith/dynamichud/HudRender.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.tanishisherewith.dynamichud;
22

3+
import com.tanishisherewith.dynamichud.integration.IntegrationManager;
34
import com.tanishisherewith.dynamichud.widget.WidgetRenderer;
45
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
56
import net.minecraft.client.gui.DrawContext;
@@ -9,11 +10,11 @@
910
* Using the fabric event {@link HudRenderCallback} to render widgets in the game HUD.
1011
* Mouse positions are passed in the negatives even though theoretically it's in the centre of the screen.
1112
*/
12-
public class HudRender implements HudRenderCallback{
13+
public class HudRender implements HudRenderCallback {
1314

1415
@Override
1516
public void onHudRender(DrawContext drawContext, RenderTickCounter tickCounter) {
16-
for (WidgetRenderer widgetRenderer : DynamicHUD.getWidgetRenderers()) {
17+
for (WidgetRenderer widgetRenderer : IntegrationManager.getWidgetRenderers()) {
1718
widgetRenderer.renderWidgets(drawContext, -120, -120);
1819
}
1920
}

0 commit comments

Comments
 (0)