mirror of
https://github.com/Shiewk/Widgets.git
synced 2026-04-28 11:34:17 +02:00
81 lines
3.0 KiB
Java
81 lines
3.0 KiB
Java
package de.shiewk.widgets.client;
|
|
|
|
import de.shiewk.widgets.ModWidget;
|
|
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 net.minecraft.util.profiler.Profilers;
|
|
|
|
public class WidgetRenderer implements ClientTickEvents.StartTick, ClientLifecycleEvents.ClientStarted, HudRenderCallback {
|
|
|
|
private static MinecraftClient client;
|
|
|
|
public void renderWidgets(DrawContext drawContext) {
|
|
if (client.options.hudHidden) return;
|
|
if (client.currentScreen instanceof EditWidgetPositionsScreen) return;
|
|
final Profiler profiler = Profilers.get();
|
|
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());
|
|
widget.render(
|
|
drawContext,
|
|
timeNano,
|
|
textRenderer,
|
|
widget.getX(windowWidth),
|
|
widget.getY(windowHeight)
|
|
);
|
|
profiler.pop();
|
|
}
|
|
profiler.pop();
|
|
}
|
|
|
|
@Override
|
|
public void onStartTick(MinecraftClient client) {
|
|
WidgetRenderer.client = client;
|
|
final Profiler profiler = Profilers.get();
|
|
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());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onHudRender(DrawContext drawContext, RenderTickCounter renderTickCounter) {
|
|
this.renderWidgets(drawContext);
|
|
}
|
|
}
|