11package exposed .hydrogen .nightclub ;
22
3- import co .aikar .commands .BukkitCommandCompletionContext ;
43import co .aikar .commands .CommandCompletions ;
5- import co .aikar .commands .PaperCommandManager ;
6- import com .comphenix .protocol .ProtocolLibrary ;
7- import com .comphenix .protocol .ProtocolManager ;
4+ import co .aikar .commands .CommandManager ;
85import com .google .gson .Gson ;
96import com .google .gson .GsonBuilder ;
7+ import dev .hypera .chameleon .core .Chameleon ;
8+ import dev .hypera .chameleon .core .ChameleonPlugin ;
9+ import dev .hypera .chameleon .core .data .PluginData ;
1010import exposed .hydrogen .nightclub .commands .BeatmapCommand ;
1111import exposed .hydrogen .nightclub .commands .LightCommand ;
1212import exposed .hydrogen .nightclub .commands .LightUniverseCommand ;
13+ import exposed .hydrogen .nightclub .json .JSONUtils ;
1314import exposed .hydrogen .nightclub .json .LightJSONReader ;
1415import exposed .hydrogen .nightclub .json .LightJSONWriter ;
1516import exposed .hydrogen .nightclub .light .Light ;
1617import exposed .hydrogen .nightclub .light .LightUniverse ;
1718import exposed .hydrogen .nightclub .light .LightUniverseManager ;
18- import exposed .hydrogen .nightclub .light .data .LightData ;
1919import exposed .hydrogen .nightclub .light .data .LightPattern ;
2020import exposed .hydrogen .nightclub .light .data .LightType ;
2121import exposed .hydrogen .nightclub .light .event .LightChannel ;
2222import exposed .hydrogen .nightclub .light .event .LightSpeedChannel ;
23+ import exposed .hydrogen .nightclub .util .CrossCompatUtil ;
24+ import exposed .hydrogen .nightclub .wrapper .DebugMarkerFactory ;
25+ import exposed .hydrogen .nightclub .wrapper .DebugMarkerWrapper ;
26+ import exposed .hydrogen .nightclub .wrapper .LaserFactory ;
27+ import exposed .hydrogen .nightclub .wrapper .LaserWrapper ;
2328import lombok .Getter ;
29+ import lombok .Setter ;
2430import lombok .SneakyThrows ;
25- import org .bstats .bukkit .Metrics ;
26- import org .bukkit .plugin .java .JavaPlugin ;
31+ import org .jetbrains .annotations .NotNull ;
2732
2833import java .io .File ;
2934import java .util .ArrayList ;
30- import java .util .logging . Level ;
35+ import java .util .List ;
3136
3237import static exposed .hydrogen .nightclub .util .Util .getStringValuesFromArray ;
3338
3439
35- public final class Nightclub extends JavaPlugin {
40+ public final class Nightclub extends ChameleonPlugin {
3641 public static final String JSON_FILE_NAME = "lights.json" ;
3742 public static File DATA_FOLDER ;
43+ @ Getter private static Chameleon chameleon ;
3844 @ Getter private static Nightclub instance ;
3945 @ Getter private static LightJSONReader JSONreader ;
4046 @ Getter private static LightJSONWriter JSONwriter ;
4147 @ Getter private static Gson GSON ;
4248 @ Getter private static LightUniverseManager lightUniverseManager ;
43- @ Getter private static PaperCommandManager commandManager ;
44- @ Getter private static ProtocolManager protocolManager ;
49+ @ Getter private static final PluginData pluginData ;
50+ @ Getter @ Setter private static CrossCompatUtil crossCompatUtil ;
51+ @ Getter @ Setter private static DebugMarkerFactory <? extends DebugMarkerWrapper > markerFactory ;
52+ @ Getter @ Setter private static LaserFactory <? extends LaserWrapper > laserFactory ;
53+
54+ public Nightclub (@ NotNull Chameleon chamel ) {
55+ super (chamel );
56+ chameleon = chamel ;
57+ }
58+
4559
4660 @ SneakyThrows
4761 @ Override
4862 public void onEnable () {
4963 GSON = new GsonBuilder ()
5064 .setPrettyPrinting ()
5165 .registerTypeAdapter (LightUniverse .class , new LightUniverse .LightUniverseInstanceCreator ())
52- .registerTypeAdapter (Light .class , new Light .LightInstanceCreator ())
53- .registerTypeAdapter (LightData .class , new LightData .LightDataInstanceCreator ())
5466 .create ();
5567
56- protocolManager = ProtocolLibrary .getProtocolManager ();
68+ DATA_FOLDER = chameleon .getDataFolder ().toFile ();
69+
70+ DATA_FOLDER .mkdir ();
71+ JSONUtils .LIGHT_JSON .createNewFile ();
72+
5773 instance = this ;
5874 JSONreader = new LightJSONReader (GSON );
5975 JSONwriter = new LightJSONWriter (GSON );
6076
61- DATA_FOLDER = this .getDataFolder ();
62-
63- saveDefaultConfig ();
64-
65- if (!JSONwriter .createLightJSON ()) {
66- this .getLogger ().log (Level .SEVERE , "Could not create Light JSON file! Disabling" );
67- this .getServer ().getPluginManager ().disablePlugin (this );
68- }
69-
70- //register bstats
71- Metrics metrics = new Metrics (this , 12300 );
72-
7377 lightUniverseManager = new LightUniverseManager ();
78+ }
79+
80+ @ Override
81+ public void onDisable () {
82+ lightUniverseManager .save ();
83+ }
7484
75- commandManager = new PaperCommandManager (this );
85+ public static <T extends CommandManager <?,?,?,?,?,?>> void registerCommands (T commandManager ) {
86+ commandManager .registerCommand (new LightCommand ());
87+ commandManager .registerCommand (new BeatmapCommand ());
88+ commandManager .registerCommand (new LightUniverseCommand ());
89+ }
7690
77- CommandCompletions <BukkitCommandCompletionContext > completions = commandManager . getCommandCompletions ();
91+ public static void registerCompletions ( CommandCompletions <? > completions ) {
7892 completions .registerCompletion ("patterns" , c -> getStringValuesFromArray (LightPattern .values ()));
7993 completions .registerCompletion ("types" , c -> getStringValuesFromArray (LightType .values ()));
8094 completions .registerCompletion ("channels" , c -> getStringValuesFromArray (LightChannel .values ()));
8195 completions .registerCompletion ("speedchannels" , c -> getStringValuesFromArray (LightSpeedChannel .values ()));
82- completions .registerCompletion ("beatmaps" , c -> getStringValuesFromArray (new File (getDataFolder () .getAbsolutePath ()).listFiles (File ::isDirectory )));
96+ completions .registerCompletion ("beatmaps" , c -> getStringValuesFromArray (new File (DATA_FOLDER .getAbsolutePath ()).listFiles (File ::isDirectory )));
8397 // https://stackoverflow.com/questions/7909747/why-does-liststring-toarray-return-object-and-not-string-how-to-work-ar
8498 completions .registerCompletion ("universes" , c -> {
8599 if (getLightUniverseManager ().getUniverses () != null && !getLightUniverseManager ().getUniverses ().isEmpty ()) {
@@ -96,16 +110,20 @@ public void onEnable() {
96110 return getStringValuesFromArray (LightCommand .getLight ().getData ().getLightIDs ().toArray (new Integer [0 ]));
97111 } else return new ArrayList <>();
98112 });
99-
100- commandManager .registerCommand (new LightCommand ());
101- commandManager .registerCommand (new BeatmapCommand ());
102- commandManager .registerCommand (new LightUniverseCommand ());
103113 }
104114
105- @ Override
106- public void onDisable () {
107- // Plugin shutdown logic
108- lightUniverseManager .save ();
115+ static {
116+ pluginData = new PluginData (
117+ "Nightclub" ,
118+ "1.0.0" ,
119+ "Completely customizable lightshows for everyone" ,
120+ "hydrogen.exposed" ,
121+ List .of ("hydrogen" ),
122+ "Nightclub" ,
123+ List .of (PluginData .Platform .MINESTOM , PluginData .Platform .SPIGOT )
124+ );
109125 }
110126
127+ public static void main (String [] args ) {}
128+
111129}
0 commit comments