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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/*
* This file is part of OneConfig.
* OneConfig - Next Generation Config Library for Minecraft: Java Edition
* Copyright (C) 2021, 2022 Polyfrost.
* <https://polyfrost.cc> <https://github.com/Polyfrost/>
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* OneConfig is licensed under the terms of version 3 of the GNU Lesser
* General Public License as published by the Free Software Foundation, AND
* under the Additional Terms Applicable to OneConfig, as published by Polyfrost,
* either version 1.0 of the Additional Terms, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License. If not, see <https://www.gnu.org/licenses/>. You should
* have also received a copy of the Additional Terms Applicable
* to OneConfig, as published by Polyfrost. If not, see
* <https://polyfrost.cc/legal/oneconfig/additional-terms>
*/
package cc.polyfrost.oneconfig.platform;
import java.util.ServiceLoader;
/**
* Contains various platform-specific utilities for OneConfig.
* <p>
* This is meant for internal usage, however other mods may use these (unless otherwise stated).
*/
public interface Platform {
static Platform getInstance() {
return PlatformHolder.INSTANCE.platform;
}
static MousePlatform getMousePlatform() {
return PlatformHolder.INSTANCE.mousePlatform;
}
static LoaderPlatform getLoaderPlatform() {
return PlatformHolder.INSTANCE.loaderPlatform;
}
static ServerPlatform getServerPlatform() {
return PlatformHolder.INSTANCE.serverPlatform;
}
static GLPlatform getGLPlatform() {
return PlatformHolder.INSTANCE.glPlatform;
}
static GuiPlatform getGuiPlatform() {
return PlatformHolder.INSTANCE.guiPlatform;
}
static I18nPlatform getI18nPlatform() {
return PlatformHolder.INSTANCE.i18nPlatform;
}
static NanoVGPlatform getNanoVGPlatform() {
return PlatformHolder.INSTANCE.nvgPlatform;
}
boolean isCallingFromMinecraftThread();
int getMinecraftVersion();
boolean isDevelopmentEnvironment();
Loader getLoader();
class PlatformHolder {
private PlatformHolder() {
}
static PlatformHolder INSTANCE = new PlatformHolder();
Platform platform = ServiceLoader.load(Platform.class, Platform.class.getClassLoader()).iterator().next();
MousePlatform mousePlatform = ServiceLoader.load(MousePlatform.class, MousePlatform.class.getClassLoader()).iterator().next();
LoaderPlatform loaderPlatform = ServiceLoader.load(LoaderPlatform.class, LoaderPlatform.class.getClassLoader()).iterator().next();
ServerPlatform serverPlatform = ServiceLoader.load(ServerPlatform.class, ServerPlatform.class.getClassLoader()).iterator().next();
GLPlatform glPlatform = ServiceLoader.load(GLPlatform.class, GLPlatform.class.getClassLoader()).iterator().next();
GuiPlatform guiPlatform = ServiceLoader.load(GuiPlatform.class, GuiPlatform.class.getClassLoader()).iterator().next();
I18nPlatform i18nPlatform = ServiceLoader.load(I18nPlatform.class, I18nPlatform.class.getClassLoader()).iterator().next();
NanoVGPlatform nvgPlatform = ServiceLoader.load(NanoVGPlatform.class, NanoVGPlatform.class.getClassLoader()).iterator().next();
}
enum Loader {
FORGE,
FABRIC
}
}
|