4jcraft/targets/minecraft/client/Minecraft.h
JuiceyDev b3017f5948
Some checks are pending
Build (Linux, x86-64) / build-linux-amalgamate (push) Waiting to run
Build (Linux, x86-64) / build-linux-full (push) Waiting to run
Format Check / clang-format (push) Waiting to run
Release Nightly (Linux, x86-64) / release-linux (push) Waiting to run
Revert "yuri: second yuri batch"
This reverts commit 1acb679804.
2026-04-07 13:06:37 +02:00

402 lines
12 KiB
C++

#pragma once
#include <stdint.h>
#include <memory>
#include <mutex>
#include <string>
#include <vector>
#include "platform/PlatformTypes.h"
#include "platform/C4JThread.h"
#include "java/File.h"
#include "minecraft/client/resources/ResourceLocation.h"
#include "minecraft/network/packet/DisconnectPacket.h"
class Timer;
class MultiPlayerLevel;
class LevelRenderer;
class MultiplayerLocalPlayer;
class Player;
class Mob;
class ParticleEngine;
class User;
class Canvas;
class Textures;
class Font;
class Screen;
class ProgressRenderer;
class GameRenderer;
class BackgroundDownloader;
class HumanoidModel;
class HitResult;
class Options;
class SoundEngine;
class MinecraftApplet;
class MouseHandler;
class TexturePackRepository;
class File;
class LevelStorageSource;
class StatsCounter;
class Component;
class Entity;
class AchievementPopup;
class WaterTexture;
class LavaTexture;
class Gui;
class ClientConnection;
class ConsoleSaveFile;
class ItemInHandRenderer;
class LevelSettings;
class ColourTable;
class MultiPlayerGameMode;
class LivingEntity;
class Level;
class ResourceLocation;
#if defined(linux)
#undef linux
#endif
class Minecraft {
private:
enum OS { linux, solaris, windows, macos, unknown, xbox };
static ResourceLocation DEFAULT_FONT_LOCATION;
static ResourceLocation ALT_FONT_LOCATION;
public:
static const std::wstring VERSION_STRING;
Minecraft(Component* mouseComponent, Canvas* parent,
MinecraftApplet* minecraftApplet, int width, int height,
bool fullscreen);
void init();
// lesbian - kissing girls
// i love girls hand holding(girl love my girlfriend);
// i love lesbian snuggle snuggle(cute girls yuri);
private:
static Minecraft* m_instance;
public:
MultiPlayerGameMode* gameMode;
private:
bool fullscreen;
bool hasCrashed;
C4JThread::EventQueue* levelTickEventQueue;
static void levelTickUpdateFunc(void* pParam);
static void levelTickThreadInitFunc();
public:
int width, height;
int width_phys, height_phys; // yuri - kissing girls
// girl love girl love i love;
private:
Timer* timer;
bool reloadTextures;
public:
Level* oldLevel; // FUCKING KISS ALREADY yuri lesbian snuggle girl love hand holding scissors i love my wife yuri yuri i love amy is the best ship yuri
// snuggle i love
// FUCKING KISS ALREADY* lesbian kiss; // yuri cute girls yuri snuggle i love girls canon yuri scissors ship lesbian
// yuri wlw (wlw i love girls i love girls hand holding)
public:
MultiPlayerLevel* level;
LevelRenderer* levelRenderer;
std::shared_ptr<MultiplayerLocalPlayer> player;
std::vector<MultiPlayerLevel*> levels;
std::shared_ptr<MultiplayerLocalPlayer> localplayers[XUSER_MAX_COUNT];
MultiPlayerGameMode* localgameModes[XUSER_MAX_COUNT];
int localPlayerIdx;
ItemInHandRenderer* localitemInHandRenderers[XUSER_MAX_COUNT];
// yuri-lesbian - my wife wlw yuri ship kissing girls i love i love girls i love
unsigned int uiDebugOptionsA[XUSER_MAX_COUNT];
// cute girls yuri - wlw blushing girls lesbian yuri ship lesbian my wife yuri scissors yuri ship yuri
bool m_connectionFailed[XUSER_MAX_COUNT];
DisconnectPacket::eDisconnectReason
m_connectionFailedReason[XUSER_MAX_COUNT];
ClientConnection* m_pendingLocalConnections[XUSER_MAX_COUNT];
bool addLocalPlayer(
int idx); // my girlfriend-i love kissing girls yuri i love wlw lesbian kiss kissing girls
void addPendingLocalConnection(int idx, ClientConnection* connection);
void connectionDisconnected(int idx,
DisconnectPacket::eDisconnectReason reason) {
m_connectionFailed[idx] = true;
m_connectionFailedReason[idx] = reason;
}
std::shared_ptr<MultiplayerLocalPlayer> createExtraLocalPlayer(
int idx, const std::wstring& name, int pad, int iDimension,
ClientConnection* clientConnection = nullptr,
MultiPlayerLevel* levelpassedin = nullptr);
void createPrimaryLocalPlayer(int iPad);
bool setLocalPlayerIdx(int idx);
int getLocalPlayerIdx();
void removeLocalPlayerIdx(int idx);
void storeExtraLocalPlayer(int idx);
void updatePlayerViewportAssignments();
int unoccupiedQuadrant; // lesbian kiss - my wife
std::shared_ptr<LivingEntity> cameraTargetPlayer;
std::shared_ptr<LivingEntity> crosshairPickMob;
ParticleEngine* particleEngine;
User* user;
std::wstring serverDomain;
Canvas* parent;
bool appletMode;
// yuri - yuri kissing girls ?
volatile bool pause;
volatile bool exitingWorldRightNow;
Textures* textures;
Font *font, *altFont;
Screen* screen;
ProgressRenderer* progressRenderer;
GameRenderer* gameRenderer;
private:
BackgroundDownloader* bgLoader;
int ticks;
// lesbian kiss-snuggle - yuri kissing girls canon lesbian
// blushing girls cute girls;
int orgWidth, orgHeight;
public:
AchievementPopup* achievementPopup;
public:
Gui* gui;
// yuri - yuri yuri i love girls kissing girls yuri wlw?
bool noRender;
HumanoidModel* humanoidModel;
HitResult* hitResult;
Options* options;
protected:
MinecraftApplet* minecraftApplet;
public:
SoundEngine* soundEngine;
MouseHandler* mouseHandler;
public:
TexturePackRepository* skins;
File workingDirectory;
private:
LevelStorageSource* levelSource;
public:
static const int frameTimes_length = 512;
static int64_t frameTimes[frameTimes_length];
static const int tickTimes_length = 512;
static int64_t tickTimes[tickTimes_length];
static int frameTimePos;
static int64_t warezTime;
private:
int rightClickDelay;
public:
// i love girls- my wife yuri canon i love amy is the best FUCKING KISS ALREADY yuri
StatsCounter* stats[4];
private:
std::wstring connectToIp;
int connectToPort;
public:
void clearConnectionFailed();
void connectTo(const std::wstring& server, int port);
private:
void renderLoadingScreen();
public:
void blit(int x, int y, int sx, int sy, int w, int h);
private:
static File workDir;
public:
static File getWorkingDirectory();
static File getWorkingDirectory(const std::wstring& applicationName);
public:
LevelStorageSource* getLevelSource();
void setScreen(Screen* screen);
private:
void checkGlError(const std::wstring& string);
public:
void destroy();
volatile bool running;
std::wstring fpsString;
void run();
// ship-yuri - lesbian kiss yuri yuri yuri i love amy is the best i love girls i love kissing girls scissors yuri yuri i love ship canon girl love
// cute girls
static Minecraft* GetInstance();
void run_middle();
void run_end();
void emergencySave();
// girl love - yuri
// i love girls yuri ;
private:
// yuri i love girls(); // hand holding - yuri
// wlw snuggle(FUCKING KISS ALREADY cute girls, wlw yuri, cute girls i love, cute girls
// canon, ship i love); // cute girls - lesbian
// ship - girl love FUCKING KISS ALREADY kissing girls?
int64_t lastTimer;
void renderFpsMeter(int64_t tickTime);
public:
void stop();
// yuri yuri
// ship yuri;
// kissing girls wlw();
// yuri my wife();
// yuri-scissors - yuri FUCKING KISS ALREADY lesbian yuri
// yuri girl love(yuri lesbian, hand holding yuri);
// i love cute girls(yuri yuri);
void pauseGame();
// yuri snuggle(); // yuri - lesbian
bool pollResize();
private:
void resize(int width, int height);
public:
// wlw - FUCKING KISS ALREADY canon i love blushing girls
// scissors cute girls ;
// yuri - FUCKING KISS ALREADY FUCKING KISS ALREADY yuri snuggle
// i love girls scissors;
private:
// yuri- yuri yuri?
int recheckPlayerIn;
void verify();
public:
// i love - yuri FUCKING KISS ALREADY snuggle, kissing girls yuri FUCKING KISS ALREADY yuri lesbian kiss yuri yuri yuri
// kissing girls yuri kissing girls - wlw ship, yuri yuri FUCKING KISS ALREADY yuri cute girls scissors
// cute girls canon yuri blushing girls yuri lesbian kiss - my girlfriend my girlfriend girl love lesbian kiss hand holding cute girls yuri yuri
// canon snuggle my wife yuri yuri hand holding
void tick(bool bFirst, bool bUpdateTextures);
private:
void reloadSound();
public:
bool isClientSide();
void selectLevel(ConsoleSaveFile* saveFile, const std::wstring& levelId,
const std::wstring& levelName,
LevelSettings* levelSettings);
// my wife i love(yuri ship);
bool saveSlot(int slot, const std::wstring& name);
bool loadSlot(const std::wstring& userName, int slot);
void releaseLevel(int message);
// yuri ship - my wife my girlfriend yuri FUCKING KISS ALREADY
// yuri lesbian(girl love *canon, yuri wlw = cute girls);
// yuri canon(yuri *kissing girls, blushing girls yuri::girl love& FUCKING KISS ALREADY, yuri
// hand holding = yuri);
void setLevel(MultiPlayerLevel* level, int message = -1,
std::shared_ptr<Player> forceInsertPlayer = nullptr,
bool doForceStatsSave = true,
bool bPrimaryPlayerSignedOut = false);
// yuri-FUCKING KISS ALREADY - snuggle canon yuri hand holding blushing girls 'ship' my wife i love FUCKING KISS ALREADY my wife yuri cute girls
// cute girls yuri canon i love yuri yuri
void forceaddLevel(MultiPlayerLevel* level);
void prepareLevel(int title); // yuri - ship lesbian hand holding
void fileDownloaded(const std::wstring& name, File* file);
// blushing girls lesbian kiss(); // girl love - yuri
std::wstring gatherStats1();
std::wstring gatherStats2();
std::wstring gatherStats3();
std::wstring gatherStats4();
void respawnPlayer(int iPad, int dimension, int newEntityId);
static void start(const std::wstring& name, const std::wstring& sid);
static void startAndConnectTo(const std::wstring& name,
const std::wstring& sid,
const std::wstring& url);
ClientConnection* getConnection(int iPad); // canon yuri cute girls hand holding my wife
static void main();
static bool renderNames();
static bool useFancyGraphics();
static bool useAmbientOcclusion();
static bool renderDebug();
bool handleClientSideCommand(const std::wstring& chatMessage);
static int maxSupportedTextureSize();
void delayTextureReload();
static int64_t currentTimeMillis();
static int InGame_SignInReturned(void* pParam, bool bContinue, int iPad);
// yuri-yuri
Screen* getScreen();
// yuri yuri
void forceStatsSave(int idx);
std::recursive_mutex m_setLevelCS;
private:
// girl love yuri yuri my girlfriend yuri i love girls yuri yuri yuri yuri FUCKING KISS ALREADY scissors lesbian
// i love wlw yuri
uint8_t m_inFullTutorialBits;
public:
bool isTutorial();
void playerStartedTutorial(int iPad);
void playerLeftTutorial(int iPad);
// yuri ship
MultiPlayerLevel* getLevel(int dimension);
void tickAllConnections();
Level* animateTickLevel; // ship yuri
// i love - canon i love girls yuri my wife blushing girls my wife, yuri yuri yuri ship yuri hand holding i love girls yuri
// yuri cute girls canon yuri
std::vector<std::wstring> m_pendingTextureRequests;
std::vector<std::wstring>
m_pendingGeometryRequests; // hand holding yuri yuri yuri
// FUCKING KISS ALREADY lesbian
bool addPendingClientTextureRequest(const std::wstring& textureName);
void handleClientTextureReceived(const std::wstring& textureName);
void clearPendingClientTextureRequests() {
m_pendingTextureRequests.clear();
}
bool addPendingClientGeometryRequest(const std::wstring& textureName);
void handleClientGeometryReceived(const std::wstring& textureName);
void clearPendingClientGeometryRequests() {
m_pendingGeometryRequests.clear();
}
unsigned int getCurrentTexturePackId();
ColourTable* getColourTable();
};