Files
Client_Old/src/main/java/de/winniepat/citrus/Client.java
T
2026-05-01 18:54:57 +02:00

164 lines
6.0 KiB
Java

package de.winniepat.citrus;
import de.winniepat.citrus.beta.*;
import de.winniepat.citrus.cosmetics.*;
import de.winniepat.citrus.cosmetics.capes.*;
import de.winniepat.citrus.cosmetics.capes.sync.*;
import de.winniepat.citrus.client.*;
import de.winniepat.citrus.cosmetics.halo.HaloFeatureRenderer;
import de.winniepat.citrus.cosmetics.hat.HatFeatureRenderer;
import de.winniepat.citrus.cosmetics.wings.WingsFeatureRenderer;
import de.winniepat.citrus.cosmetics.wings.sync.*;
import de.winniepat.citrus.draggui.*;
import de.winniepat.citrus.gui.*;
import de.winniepat.citrus.managers.*;
import de.winniepat.citrus.utils.*;
import icyllis.modernui.mc.MuiModApi;
import net.fabricmc.fabric.api.client.rendering.v1.LivingEntityFeatureRendererRegistrationCallback;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.render.entity.PlayerEntityRenderer;
import org.slf4j.*;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.*;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
import java.io.*;
public class Client {
public static final Logger logger = LoggerFactory.getLogger(Client.class);
public static final String CLIENT_BUILD = "0.1";
public static final String clientInfo = "Citrus 1.21-" + CLIENT_BUILD + " | Minecraft 1.21";
public static final File CONFIG_DIR = new File(FabricLoader.getInstance().getGameDir().toFile(),"citrus");
public static final boolean debug = true;
public static final boolean betaFeaturesEnabled = false;
public static final String API_URL = "https://api.citrus-client.de";
public static final String CDN_URL = "https://cdn.citrus-client.de";
public static final String BETA_URL = "https://beta.citrus-client.de";
private static BetaManager betaManager;
protected void init() throws IOException {
betaManager = BetaManager.getInstance();
betaManager.initialize();
ClientCommands.register();
ClientKeybinds.register();
CosmeticCommands.register();
CapeHandler.init();
ConfigManager.load();
HudConfig.load();
HudRenderer.register();
TestScreen.registerRenderer();
CapeSyncManager.init();
WingSyncManager.init();
WingSyncManager.startAutoSync();
WallpaperManager.init();
ClientRegistrationManager.register();
FriendManager.init();
ChatSound.init();
debugLog(SecurityUtils.getDailyKey());
RefreshUtil.start();
ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> {
ClientRegistrationManager.register();
client.execute(FriendManager::updateServerStatus);
});
ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> FriendManager.updateServerStatus());
ClientLifecycleEvents.CLIENT_STOPPING.register(client -> ClientRegistrationManager.unregister());
ClientTickEvents.END_CLIENT_TICK.register(client -> {
if (client.world == null || client.player == null) return;
PlayerCapeTracker.tick();
while (ClientKeybinds.OPEN_CAPE_SCREEN.wasPressed() && client.player != null) {
CapeHandler.reloadCapes();
client.setScreen(new CapeSelectionScreen());
}
while (ClientKeybinds.OPEN_COSMETICS_SCREEN.wasPressed() && client.player != null) {
client.setScreen(new CosmeticScreen());
if (client.world != null || client.player != null){
PlayerCosmeticTracker.tick();
}
}
while (ClientKeybinds.OPEN_FRIENDS_SCREEN.wasPressed() && client.player != null) {
FriendManager.refresh();
client.setScreen(MuiModApi.get().createScreen(new FriendsFragment(), null, client.currentScreen));
}
while (ClientKeybinds.OPEN_DRAGGUI.wasPressed()) {
client.setScreen(MuiModApi.get().createScreen(new HudEditorFragment(), null, client.currentScreen));
}
while (ClientKeybinds.REFRESH_CLIENT.wasPressed() && client.player != null) {
RankManager.refreshRankIfChanged();
CapeHandler.reloadCapes();
CapeHandler.retryFailedCapes();
assert MinecraftClient.getInstance().player != null;
MinecraftClient.getInstance().player.sendMessage(Text.literal("Refreshed Client"), false);
}
while (ClientKeybinds.TOGGLE_FULLBRIGHT.wasPressed()) {
FullbrightManager.toggle(client);
}
while (ClientKeybinds.OPEN_MODULETOGGLE.wasPressed()) {
client.setScreen(new ModuleToggleScreen());
}
while (ClientKeybinds.REFRESH_CLIENT.wasPressed()) {
ClientRegistrationManager.forceUpdateOnlineUsers();
CapeHandler.refreshCapeList();
CapeHandler.retryFailedCapes();
}
if (client.world != null && client.player != null) {
PlayerWingTracker.tick();
}
ZoomManager.setZooming(ClientKeybinds.ZOOM_KEY.isPressed());
});
LivingEntityFeatureRendererRegistrationCallback.EVENT.register((entityType, entityRenderer, registrationHelper, context) -> {
if (entityRenderer instanceof PlayerEntityRenderer playerRenderer) {
registrationHelper.register(new WingsFeatureRenderer(playerRenderer));
registrationHelper.register(new HatFeatureRenderer(playerRenderer));
registrationHelper.register(new HaloFeatureRenderer(playerRenderer));
Client.debugLog("Registered cosmetic renderers for player");
}
});
CosmeticSyncManager.init();
}
public static void debugLog(String message) {
if (debug) {
logger.info("[Citrus] [DEBUG] {}", message);
}
}
public static BetaManager getBetaManager() {
return betaManager;
}
}