164 lines
6.0 KiB
Java
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;
|
|
}
|
|
} |