1
mirror of https://github.com/Shiewk/Widgets.git synced 2026-04-28 11:34:17 +02:00

Initial Commit (1.0)

This commit is contained in:
Shy
2024-09-07 18:54:20 +02:00
commit 6ef0f3758d
42 changed files with 2893 additions and 0 deletions
@@ -0,0 +1,78 @@
package de.shiewk.widgets.client;
import de.shiewk.widgets.ModWidget;
import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.client.screen.EditWidgetPositionsScreen;
import de.shiewk.widgets.client.screen.WidgetConfigScreen;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderTickCounter;
import net.minecraft.util.Util;
import net.minecraft.util.profiler.Profiler;
import static de.shiewk.widgets.WidgetUtils.translateToScreen;
public class WidgetRenderer implements HudRenderCallback, ClientTickEvents.StartTick, ClientLifecycleEvents.ClientStarted {
private static MinecraftClient client;
@Override
public void onHudRender(DrawContext drawContext, RenderTickCounter tickCounter) {
if (client.options.hudHidden) return;
if (client.currentScreen instanceof EditWidgetPositionsScreen) return;
final Profiler profiler = client.getProfiler();
profiler.push("widgets");
final TextRenderer textRenderer = client.textRenderer;
final long timeNano = Util.getMeasuringTimeNano();
final int windowWidth = drawContext.getScaledWindowWidth();
final int windowHeight = drawContext.getScaledWindowHeight();
final ObjectArrayList<ModWidget> enabled = WidgetManager.enabled;
for (int i = 0, enabledSize = enabled.size(); i < enabledSize; i++) {
final ModWidget widget = enabled.get(i);
profiler.push(widget.getId().toString());
final WidgetSettings settings = widget.getSettings();
widget.render(
drawContext,
timeNano,
textRenderer,
(int) Math.round(Math.min(translateToScreen(settings.posX, windowWidth), windowWidth - widget.width())),
(int) Math.round(Math.min(translateToScreen(settings.posY, windowHeight), windowHeight - widget.height()))
);
profiler.pop();
}
profiler.pop();
}
@Override
public void onStartTick(MinecraftClient client) {
final Profiler profiler = (WidgetRenderer.client = client).getProfiler();
profiler.push("widgets");
final ObjectArrayList<ModWidget> enabled = WidgetManager.enabled;
for (int i = 0, enabledSize = enabled.size(); i < enabledSize; i++) {
final ModWidget widget = enabled.get(i);
profiler.push(widget.getId().toString());
widget.tick();
profiler.pop();
}
profiler.pop();
if (WidgetsModClient.configKeyBinding.wasPressed()){
client.setScreen(new WidgetConfigScreen(client.currentScreen));
}
}
@Override
public void onClientStarted(MinecraftClient client) {
for (ModWidget widget : WidgetManager.getAllWidgets()) {
widget.onSettingsChanged(widget.getSettings());
}
}
}