Skip to content

Commit 94d9b97

Browse files
committed
add option to ignore chroma events
1 parent 1017a16 commit 94d9b97

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

src/main/java/com/ilm9001/nightclub/beatmap/BeatmapParser.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class BeatmapParser {
2121
* @return InfoData which includes bpm, artist, song folder and the beatmaps author.
2222
* Returns null if no info.dat file can be found.
2323
*/
24-
public static @Nullable InfoData getInfoData(String folder) {
24+
public static @Nullable InfoData getInfoData(String folder, boolean dontUseChroma) {
2525
File dataFolder = Nightclub.DATA_FOLDER;
2626
File infoFolder = new File(dataFolder + "/" + folder);
2727
@SuppressWarnings("ConstantConditions") // compiler warns about "infoFolder.listFiles() might be null". please tell me how.
@@ -77,7 +77,7 @@ public class BeatmapParser {
7777
secondaryColor = new Color(envColorLeft.get("r").getAsFloat(), envColorRight.get("g").getAsFloat(), envColorRight.get("b").getAsFloat());
7878
isChroma = true;
7979
}
80-
if (requirements != null && !isChroma) {
80+
if (requirements != null) {
8181
isChroma = requirements.contains(new JsonPrimitive("Chroma"))
8282
|| requirements.contains(new JsonPrimitive("Chroma Lighting Events"))
8383
|| requirements.contains(new JsonPrimitive("Chroma Special Events"));
@@ -102,7 +102,7 @@ public class BeatmapParser {
102102
.mapper(info.get("_levelAuthorName").getAsString())
103103
.songSubName(info.get("_songSubName").getAsString())
104104
.beatmapFileName(filename)
105-
.isChroma(isChroma)
105+
.isChroma(!dontUseChroma && isChroma)
106106
.primaryColor(primaryColor)
107107
.secondaryColor(secondaryColor)
108108
.build();
@@ -113,11 +113,11 @@ public class BeatmapParser {
113113
* @param name Folder where beatmap is (/name/ExpertPlus.dat/)
114114
* @return List of LightEvent's in the beatmap file. Returns an empty list if info file can't be found
115115
*/
116-
public static @NotNull List<LightEvent> getEvents(String name) {
116+
public static @NotNull List<LightEvent> getEvents(String name, boolean dontUseChroma) {
117117
File dataFolder = Nightclub.DATA_FOLDER;
118118
List<LightEvent> events = new ArrayList<>();
119119
JsonArray eventArray;
120-
InfoData info = BeatmapParser.getInfoData(name);
120+
InfoData info = BeatmapParser.getInfoData(name, dontUseChroma);
121121
if (info == null) {
122122
return new ArrayList<>();
123123
}

src/main/java/com/ilm9001/nightclub/beatmap/BeatmapPlayer.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,17 @@ public class BeatmapPlayer {
2323
private ScheduledExecutorService executorService;
2424
@Getter private boolean isPlaying;
2525

26+
public BeatmapPlayer(String name) {
27+
this(name, false);
28+
}
2629
/**
2730
* Constructor that defines a new Beatmap you can play from.
2831
*
2932
* @param name name of the folder the beatmap itself resides in (/name/ExpertPlus.dat)
3033
*/
31-
public BeatmapPlayer(String name) {
32-
info = BeatmapParser.getInfoData(name);
33-
events = BeatmapParser.getEvents(name);
34+
public BeatmapPlayer(String name, boolean dontUseChroma) {
35+
info = BeatmapParser.getInfoData(name, dontUseChroma);
36+
events = BeatmapParser.getEvents(name, dontUseChroma);
3437
this.name = name;
3538
playTo = new ArrayList<>();
3639
}

src/main/java/com/ilm9001/nightclub/commands/BeatmapCommand.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,12 @@ public static void onPlay(CommandSender sender, String[] args) {
3333
List<CommandError> errors = LightUniverseCommand.isUnloaded(args, 1);
3434
errors.add(Util.getStringValuesFromArray(new File(Nightclub.getInstance().getDataFolder().getAbsolutePath()).listFiles(File::isDirectory))
3535
.stream().noneMatch(beatmap -> args[0].equals(beatmap)) ? CommandError.INVALID_ARGUMENT : CommandError.VALID);
36+
errors.add(args.length >= 2 && !(args[1].toLowerCase().contains("true") || args[1].toLowerCase().contains("false")) ? CommandError.INVALID_ARGUMENT : CommandError.VALID);
3637
if (errors.stream().anyMatch(error -> error != CommandError.VALID)) {
3738
sender.sendMessage(formatErrors(errors));
3839
return;
3940
}
40-
player = new BeatmapPlayer(args[0]);
41+
player = new BeatmapPlayer(args[0], args.length >= 2 && Boolean.parseBoolean(args[1]));
4142
ArrayList<Player> playTo = new ArrayList<>(Bukkit.getOnlinePlayers());
4243
InfoData info = player.play(playTo);
4344
String playBackMessage = ChatColor.GOLD + "Now Playing: " + ChatColor.AQUA + info.getSongAuthorName() + " - " + info.getSongName() + " " + info.getSongSubName() + System.lineSeparator()

0 commit comments

Comments
 (0)