1+ package fr .sandro642 .github .hook ;
2+
3+ import org .bukkit .plugin .Plugin ;
4+
5+ /**
6+ * MCSupport est une classe utilitaire pour gérer les hooks liés à Minecraft.
7+ * Elle permet de vérifier si le projet est un projet Minecraft et de gérer les ressources associées.
8+ * @author Sandro642
9+ * @version 1.0
10+ */
11+ public class MCSupport {
12+
13+ /**
14+ * Création de l'instance unique de MCSupport.
15+ */
16+ private static MCSupport instance ;
17+
18+ /**
19+ * Instance unique du plugin Minecraft.
20+ * Utilisée pour stocker la variable du plugin Minecraft.
21+ */
22+ private Plugin pluginSingleton ;
23+
24+ /**
25+ * Constructeur privé pour empêcher l'instanciation directe.
26+ */
27+ private MCSupport () {
28+ // Constructeur privé pour le pattern Singleton
29+ }
30+
31+ /**
32+ * Méthode permettant de vérifier si le projet est un projet Minecraft.
33+ * Elle vérifie si le chemin du fichier de configuration contient le chemin des ressources Minecraft.
34+ *
35+ * @return true si c'est un projet Minecraft, false sinon.
36+ */
37+ public boolean isMCProject () {
38+ try {
39+
40+ String fileLocation = (String ) fr .sandro642 .github .ConnectorAPI .StoreAndRetrieve ().store .get (fr .sandro642 .github .ConnectorAPI .StoreAndRetrieve ().FILE_LOCATION_KEY );
41+ return fileLocation != null && fileLocation .contains (fr .sandro642 .github .jobs .misc .ResourceType .MC_RESOURCES .getPath ());
42+ } catch (Exception e ) {
43+ // En cas d'erreur, considérer que ce n'est pas un projet MC
44+ return false ;
45+ }
46+ }
47+
48+ /**
49+ * Méthode permettant de définir la variable du plugin Minecraft.
50+ * Elle doit être appelée dans un projet Minecraft pour initialiser le plugin.
51+ *
52+ * @param plugin Le plugin Minecraft à définir.
53+ * @return L'instance du plugin définie.
54+ * @throws IllegalStateException Si la méthode n'est pas appelée dans un projet Minecraft.
55+ * @throws IllegalArgumentException Si le plugin fourni est null.
56+ */
57+ public Plugin setPluginVariable (Plugin plugin ) {
58+ if (plugin == null ) {
59+ throw new IllegalArgumentException ("Plugin cannot be null." );
60+ }
61+ this .pluginSingleton = plugin ;
62+ return this .pluginSingleton ;
63+ }
64+
65+ /**
66+ * Méthode permettant d'obtenir le chemin du path du plugin Minecraft.
67+ * Elle doit être appelée dans un projet Minecraft pour récupérer le chemin du dossier de données du plugin.
68+ *
69+ * @return Le chemin du dossier de données du plugin.
70+ * @throws IllegalStateException Si la méthode n'est pas appelée dans un projet Minecraft ou si le plugin n'est pas initialisé.
71+ */
72+ public String getPluginPath () {
73+
74+ if (pluginSingleton == null ) {
75+ throw new IllegalStateException ("Plugin variable is not set. Please call setPluginVariable first." );
76+ }
77+
78+ return pluginSingleton .getDataFolder ().getAbsolutePath ();
79+ }
80+
81+ /**
82+ * Méthode permettant de vérifier si le plugin est initialisé.
83+ *
84+ * @return true si le plugin est initialisé, false sinon.
85+ */
86+ public boolean isPluginInitialized () {
87+ return pluginSingleton != null ;
88+ }
89+
90+ /**
91+ * Méthode permettant d'obtenir l'instance du plugin (si initialisé).
92+ *
93+ * @return L'instance du plugin ou null si non initialisé.
94+ */
95+ public Plugin getPlugin () {
96+ return pluginSingleton ;
97+ }
98+
99+ /**
100+ * Méthode permettant de réinitialiser l'instance du plugin.
101+ * Utile pour les tests ou le rechargement.
102+ */
103+ public void resetPlugin () {
104+ this .pluginSingleton = null ;
105+ }
106+
107+ /**
108+ * Méthode permettant d'obtenir l'instance unique de MCSupport.
109+ *
110+ * @return L'instance unique de MCSupport.
111+ */
112+ public static MCSupport getInstance () {
113+ if (instance == null ) {
114+ synchronized (MCSupport .class ) {
115+ if (instance == null ) {
116+ instance = new MCSupport ();
117+ }
118+ }
119+ }
120+ return instance ;
121+ }
122+ }
0 commit comments