Compare commits

...

4 Commits

5 changed files with 23 additions and 5 deletions

2
.gitignore vendored
View File

@ -118,3 +118,5 @@ run/
!gradle-wrapper.jar !gradle-wrapper.jar
/gradlew /gradlew
/gradlew.bat /gradlew.bat
local.gradle

View File

@ -46,4 +46,8 @@ shadowJar {
relocate 'com.sparkjava', 'eu.mhsl.lib.shadow.spark-core' relocate 'com.sparkjava', 'eu.mhsl.lib.shadow.spark-core'
mergeServiceFiles() mergeServiceFiles()
} }
if (file("local.gradle").exists()) {
apply from: "local.gradle"
}

View File

@ -107,6 +107,9 @@ public class Settings extends Appliance {
.filter(setting -> ((CategorizedSetting) setting).category().equals(category)) .filter(setting -> ((CategorizedSetting) setting).category().equals(category))
.toList(); .toList();
//skip empty category rows
if(categorizedSettings.isEmpty()) return;
for(int i = 0; i < categorizedSettings.size(); i++) { for(int i = 0; i < categorizedSettings.size(); i++) {
int slot = row.get() * 9 + i % 9; int slot = row.get() * 9 + i % 9;
inventory.setItem(slot, categorizedSettings.get(i).buildItem()); inventory.setItem(slot, categorizedSettings.get(i).buildItem());
@ -139,17 +142,23 @@ public class Settings extends Appliance {
int countOfUncategorized = (int) settings.stream() int countOfUncategorized = (int) settings.stream()
.filter(setting -> !(setting instanceof CategorizedSetting)) .filter(setting -> !(setting instanceof CategorizedSetting))
.count(); .count();
int rowsOfUncategorized = (int) Math.ceil((double) countOfUncategorized / 9);
return Arrays.stream(SettingCategory.values()) int rowsOfCategorized = Arrays.stream(SettingCategory.values())
.map(settingCategory -> settings.stream() .map(settingCategory -> settings.stream()
.filter(setting -> setting instanceof CategorizedSetting) .filter(setting -> setting instanceof CategorizedSetting)
.map(setting -> (CategorizedSetting) setting) .map(setting -> (CategorizedSetting) setting)
.filter(categorizedSetting -> categorizedSetting.category().equals(settingCategory)) .filter(categorizedSetting -> categorizedSetting.category().equals(settingCategory))
.count()) .count())
.map(itemCount -> itemCount + countOfUncategorized)
.map(itemCount -> (int) Math.ceil((double) itemCount / 9)) .map(itemCount -> (int) Math.ceil((double) itemCount / 9))
.reduce(Integer::sum) .reduce(Integer::sum)
.orElse(1) * 9; .orElse(1) * 9;
int rows = rowsOfUncategorized + rowsOfCategorized;
if(rows % 9 != 0) throw new IllegalStateException(
String.format("Failed to calculate settings inventory size. %d is not an multiple of 9", rows)
);
return rows;
} }
public void onSettingsClose(Player player) { public void onSettingsClose(Player player) {

View File

@ -66,8 +66,10 @@ public final class Main extends JavaPlugin {
}); });
Main.logger().info(String.format("Initialized %d appliances!", this.appliances.size())); Main.logger().info(String.format("Initialized %d appliances!", this.appliances.size()));
Main.logger().info("Starting HTTP API..."); if(Configuration.pluginConfig.getBoolean("httpServerEnabled", true)) {
new HttpServer(); Main.logger().info("Starting HTTP API...");
new HttpServer();
}
this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
Main.logger().info("Startup complete!"); Main.logger().info("Startup complete!");

View File

@ -1,4 +1,5 @@
plugin: plugin:
httpServerEnabled: true
disabledAppliances: disabledAppliances:
- NameOfApplianceClass - NameOfApplianceClass