feat: register and activate player cosmetics

This commit is contained in:
2026-07-14 15:27:40 +02:00
parent b42e397365
commit 4bf4126121
@@ -4,14 +4,19 @@ package de.fullrisk.citrusDev.client;
import de.fullrisk.citrusDev.Config;
import de.fullrisk.citrusDev.UI.*;
import de.fullrisk.citrusDev.UIHelper.DraggableHud;
import de.fullrisk.citrusDev.client.cosmetic.PlayerCosmeticManager;
import de.fullrisk.citrusDev.client.cosmetic.PlayerCosmeticRenderLayer;
import de.fullrisk.citrusDev.helper.RankHelper;
import net.fabricmc.api.ClientModInitializer;
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.keymapping.v1.KeyMappingHelper;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.client.rendering.v1.LivingEntityRenderLayerRegistrationCallback;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.renderer.entity.player.AvatarRenderer;
import net.minecraft.resources.Identifier;
import net.minecraft.world.entity.EntityType;
import org.lwjgl.glfw.GLFW;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -25,9 +30,11 @@ public class CitrusDevClient implements ClientModInitializer {
public static final String API_URL = "https://citrus-api.winniepat.de";
private static KeyMapping openScreenKey;
private static boolean testCosmeticPending;
@Override
public void onInitializeClient() {
registerPlayerCosmetics();
Module_FPS.register();
Module_KeyStrokes.register();
Module_Coords.register();
@@ -36,7 +43,11 @@ public class CitrusDevClient implements ClientModInitializer {
ClientLifecycleEvents.CLIENT_STOPPING.register(client -> DiscordRPCManager.shutdown());
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> DiscordRPCManager.setIdle());
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> {
DiscordRPCManager.setIdle();
PlayerCosmeticManager.clear();
testCosmeticPending = false;
});
KeyMapping.Category category = KeyMapping.Category.register(
Identifier.fromNamespaceAndPath("citrus-dev", "general"));
@@ -47,12 +58,23 @@ public class CitrusDevClient implements ClientModInitializer {
category
));
ClientPlayConnectionEvents.JOIN.register((sender, client1, player) -> {
ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> {
RankHelper.fetchAllRanks();
if (client.player != null) {
PlayerCosmeticManager.enableTestCosmetic(client.player.getUUID());
} else {
testCosmeticPending = true;
}
});
ClientTickEvents.END_CLIENT_TICK.register(client -> {
if (testCosmeticPending && client.player != null) {
PlayerCosmeticManager.enableTestCosmetic(client.player.getUUID());
testCosmeticPending = false;
}
if (client.player != null && !client.isPaused()) {
PlaytimeTracker.tick();
QuestsPanel.tick();
@@ -80,9 +102,20 @@ public class CitrusDevClient implements ClientModInitializer {
});
}
private static void registerPlayerCosmetics() {
LivingEntityRenderLayerRegistrationCallback.EVENT.register(
(entityType, entityRenderer, registrationHelper, context) -> {
if (entityType == EntityType.PLAYER
&& entityRenderer instanceof AvatarRenderer<?> avatarRenderer) {
registrationHelper.register(new PlayerCosmeticRenderLayer(avatarRenderer));
}
}
);
}
public static void debugLog(String message) {
if (debug) {
logger.info("[Citrus] [DEBUG] {}", message);
}
}
}
}