#pragma once
using namespace std;
#include "net.minecraft.world.level.h"

class LevelType 
{
public:
	static LevelType *levelTypes[16];// = new LevelType[16];
	static LevelType *lvl_normal;// = new LevelType(0, "default", 1).setHasReplacement();
	static LevelType *lvl_flat;// = new LevelType(1, "flat");
	static LevelType *lvl_largeBiomes;// = new LevelType(2, "largeBiomes");
	static LevelType *lvl_normal_1_1;// = new LevelType(8, "default_1_1", 0).setSelectableByUser(false);

	static void staticCtor();

private:
	wstring m_generatorName;
	int m_version;
	bool m_selectable;
	bool m_replacement;

	LevelType(int id, wstring generatorName);
	LevelType(int id, wstring generatorName, int version); 
	void init(int id, wstring generatorName, int version);
public:
	wstring getGeneratorName();
	wstring getDescriptionId();
	int getVersion();
	LevelType *getReplacementForVersion(int oldVersion);
private:
	LevelType *setSelectableByUser(bool selectable);
public:
	bool isSelectable();
private:
	LevelType *setHasReplacement();
public:
	bool hasReplacement();
	static LevelType *getLevelType(wstring name);
};
