summaryrefslogtreecommitdiffstats
path: root/api/logic/minecraft/ProfileStrategy.h
blob: 09a09f24ec8114620bd7fb6ce04936adddeffe75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#pragma once

#include "ProfileUtils.h"
#include "ProfilePatch.h"

class MinecraftProfile;

class ProfileStrategy
{
	friend class MinecraftProfile;
public:
	virtual ~ProfileStrategy(){};

	/// load the patch files into the profile
	virtual void load() = 0;

	/// reset the order of patches
	virtual bool resetOrder() = 0;

	/// save the order of patches, given the order
	virtual bool saveOrder(ProfileUtils::PatchOrder order) = 0;

	/// install a list of jar mods into the instance
	virtual bool installJarMods(QStringList filepaths) = 0;

	/// install a custom jar (replaces the one from the Minecraft component)
	virtual bool installCustomJar(QString filepath) = 0;

	/// remove any files or records that constitute the version patch
	virtual bool removePatch(ProfilePatchPtr jarMod) = 0;

	/// make the patch custom, if possible
	virtual bool customizePatch(ProfilePatchPtr patch) = 0;

	/// revert the custom patch to 'vanilla', if possible
	virtual bool revertPatch(ProfilePatchPtr patch) = 0;
protected:
	MinecraftProfile *profile;
};