Skip to content

Commit 4c63112

Browse files
authored
Merge pull request #2 from dev-hydrogen/chameleon
Use chameleonframework, and make cross-compatible with spigot and minestom
2 parents fb101a9 + 81329d5 commit 4c63112

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1238
-392
lines changed

Assemble/pom.xml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<parent>
7+
<groupId>exposed.hydrogen</groupId>
8+
<artifactId>Nightclub</artifactId>
9+
<version>${revision}</version>
10+
</parent>
11+
12+
<groupId>exposed.hydrogen.nightclub</groupId>
13+
<artifactId>Nightclub-all</artifactId>
14+
<packaging>jar</packaging>
15+
16+
<name>Nightclub-all</name>
17+
<description>Includes all nightclub modules</description>
18+
19+
<build>
20+
<plugins>
21+
<plugin>
22+
<groupId>org.apache.maven.plugins</groupId>
23+
<artifactId>maven-compiler-plugin</artifactId>
24+
<version>3.8.1</version>
25+
<configuration>
26+
<source>${java.version}</source>
27+
<target>${java.version}</target>
28+
<compilerArgs>
29+
<arg>-parameters</arg>
30+
</compilerArgs>
31+
</configuration>
32+
</plugin>
33+
<plugin>
34+
<groupId>org.apache.maven.plugins</groupId>
35+
<artifactId>maven-shade-plugin</artifactId>
36+
<version>3.3.1-SNAPSHOT</version>
37+
<configuration>
38+
<dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml
39+
</dependencyReducedPomLocation>
40+
<relocations>
41+
<relocation>
42+
<pattern>co.aikar.commands</pattern>
43+
<shadedPattern>exposed.hydrogen.acf</shadedPattern>
44+
</relocation>
45+
<relocation>
46+
<pattern>co.aikar.locales</pattern>
47+
<shadedPattern>exposed.hydrogen.locales</shadedPattern>
48+
</relocation>
49+
<relocation>
50+
<pattern>org.bstats</pattern>
51+
<shadedPattern>exposed.hydrogen.bstats</shadedPattern>
52+
</relocation>
53+
</relocations>
54+
</configuration>
55+
<executions>
56+
<execution>
57+
<phase>package</phase>
58+
<goals>
59+
<goal>shade</goal>
60+
</goals>
61+
</execution>
62+
</executions>
63+
</plugin>
64+
</plugins>
65+
</build>
66+
67+
<dependencies>
68+
<dependency>
69+
<groupId>exposed.hydrogen.nightclub</groupId>
70+
<artifactId>Core</artifactId>
71+
<version>${revision}</version>
72+
<scope>compile</scope>
73+
</dependency>
74+
<dependency>
75+
<groupId>exposed.hydrogen.nightclub</groupId>
76+
<artifactId>Spigot</artifactId>
77+
<version>${revision}</version>
78+
<scope>compile</scope>
79+
</dependency>
80+
<dependency>
81+
<groupId>exposed.hydrogen.nightclub</groupId>
82+
<artifactId>Minestom</artifactId>
83+
<version>${revision}</version>
84+
<scope>compile</scope>
85+
</dependency>
86+
</dependencies>
87+
</project>

Core/pom.xml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="http://maven.apache.org/POM/4.0.0"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<parent>
8+
<artifactId>Nightclub</artifactId>
9+
<groupId>exposed.hydrogen</groupId>
10+
<version>${revision}</version>
11+
</parent>
12+
13+
<groupId>exposed.hydrogen.nightclub</groupId>
14+
<artifactId>Core</artifactId>
15+
16+
<name>Nightclub-core</name>
17+
<description>Music visualiser plugin for minecraft utilizing beat saber beatmaps</description>
18+
19+
<repositories>
20+
<repository>
21+
<id>spigotmc-repo</id>
22+
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
23+
</repository>
24+
<repository>
25+
<id>sonatype</id>
26+
<url>https://oss.sonatype.org/content/groups/public/</url>
27+
</repository>
28+
<repository>
29+
<id>dmulloy2-repo</id>
30+
<url>https://repo.dmulloy2.net/repository/public/</url>
31+
</repository>
32+
<repository>
33+
<id>hypera-snapshots</id>
34+
<url>https://repo.hypera.dev/snapshots/</url>
35+
</repository>
36+
</repositories>
37+
38+
<dependencies>
39+
<dependency>
40+
<groupId>dev.hypera.chameleon</groupId>
41+
<artifactId>core</artifactId>
42+
<version>0.4.0-SNAPSHOT</version>
43+
</dependency>
44+
<dependency>
45+
<groupId>dev.hypera.chameleon</groupId>
46+
<artifactId>feature-configuration</artifactId>
47+
<version>0.4.0-SNAPSHOT</version>
48+
</dependency>
49+
<dependency>
50+
<groupId>co.aikar</groupId>
51+
<artifactId>acf-core</artifactId>
52+
<version>0.5.0-SNAPSHOT</version>
53+
</dependency>
54+
<dependency>
55+
<groupId>org.apache.commons</groupId>
56+
<artifactId>commons-math3</artifactId>
57+
<version>3.6.1</version>
58+
</dependency>
59+
</dependencies>
60+
</project>

src/main/java/exposed/hydrogen/nightclub/Nightclub.java renamed to Core/src/main/java/exposed/hydrogen/nightclub/Nightclub.java

Lines changed: 55 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,99 @@
11
package exposed.hydrogen.nightclub;
22

3-
import co.aikar.commands.BukkitCommandCompletionContext;
43
import 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;
85
import com.google.gson.Gson;
96
import 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;
1010
import exposed.hydrogen.nightclub.commands.BeatmapCommand;
1111
import exposed.hydrogen.nightclub.commands.LightCommand;
1212
import exposed.hydrogen.nightclub.commands.LightUniverseCommand;
13+
import exposed.hydrogen.nightclub.json.JSONUtils;
1314
import exposed.hydrogen.nightclub.json.LightJSONReader;
1415
import exposed.hydrogen.nightclub.json.LightJSONWriter;
1516
import exposed.hydrogen.nightclub.light.Light;
1617
import exposed.hydrogen.nightclub.light.LightUniverse;
1718
import exposed.hydrogen.nightclub.light.LightUniverseManager;
18-
import exposed.hydrogen.nightclub.light.data.LightData;
1919
import exposed.hydrogen.nightclub.light.data.LightPattern;
2020
import exposed.hydrogen.nightclub.light.data.LightType;
2121
import exposed.hydrogen.nightclub.light.event.LightChannel;
2222
import 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;
2328
import lombok.Getter;
29+
import lombok.Setter;
2430
import lombok.SneakyThrows;
25-
import org.bstats.bukkit.Metrics;
26-
import org.bukkit.plugin.java.JavaPlugin;
31+
import org.jetbrains.annotations.NotNull;
2732

2833
import java.io.File;
2934
import java.util.ArrayList;
30-
import java.util.logging.Level;
35+
import java.util.List;
3136

3237
import 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
}

src/main/java/exposed/hydrogen/nightclub/beatmap/BeatmapParser.java renamed to Core/src/main/java/exposed/hydrogen/nightclub/beatmap/BeatmapParser.java

File renamed without changes.

src/main/java/exposed/hydrogen/nightclub/beatmap/BeatmapPlayer.java renamed to Core/src/main/java/exposed/hydrogen/nightclub/beatmap/BeatmapPlayer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import exposed.hydrogen.nightclub.Nightclub;
55
import exposed.hydrogen.nightclub.light.Light;
66
import exposed.hydrogen.nightclub.light.event.LightChannel;
7+
import exposed.hydrogen.nightclub.util.CrossCompatPlayer;
78
import lombok.Getter;
8-
import org.bukkit.entity.Player;
99

1010
import java.awt.*;
1111
import java.util.ArrayList;
@@ -18,7 +18,7 @@
1818

1919
public class BeatmapPlayer {
2020
private final List<LightEvent> events;
21-
private List<Player> playTo;
21+
private List<CrossCompatPlayer> playTo;
2222
private final InfoData info;
2323
private final String name;
2424
private ScheduledExecutorService executorService;
@@ -46,7 +46,7 @@ public BeatmapPlayer(String name, boolean dontUseChroma) {
4646
* @param playTo List of Players that should hear the music, lasers will still be shown normally to anyone in range.
4747
* @return Info of the beatmap file, for example if you wanted to broadcast the song name to all players.
4848
*/
49-
public InfoData play(List<Player> playTo) {
49+
public InfoData play(List<CrossCompatPlayer> playTo) {
5050
List<LightChannel> channelList = Arrays.asList(LightChannel.values());
5151
this.playTo = playTo;
5252
executorService = Executors.newScheduledThreadPool(1);
@@ -67,7 +67,7 @@ public InfoData play(List<Player> playTo) {
6767
channelList.forEach(LightChannel::terminatePlayback);
6868
};
6969
executorService.schedule(task, events.get(events.size() - 1).getTime() + 5000000, TimeUnit.MICROSECONDS);
70-
Nightclub.getInstance().getLogger().info(info.toString());
70+
Nightclub.getChameleon().getLogger().info(info.toString());
7171
return info;
7272
}
7373

src/main/java/exposed/hydrogen/nightclub/beatmap/InfoData.java renamed to Core/src/main/java/exposed/hydrogen/nightclub/beatmap/InfoData.java

File renamed without changes.

src/main/java/exposed/hydrogen/nightclub/beatmap/LightEvent.java renamed to Core/src/main/java/exposed/hydrogen/nightclub/beatmap/LightEvent.java

File renamed without changes.

0 commit comments

Comments
 (0)