diff --git a/.gitignore b/.gitignore index 74819ac..17867fe 100644 --- a/.gitignore +++ b/.gitignore @@ -118,3 +118,5 @@ run/ !gradle-wrapper.jar /gradlew /gradlew.bat + +local.gradle diff --git a/build.gradle b/build.gradle index 6d7f27f..64aa638 100644 --- a/build.gradle +++ b/build.gradle @@ -46,4 +46,8 @@ shadowJar { relocate 'com.sparkjava', 'eu.mhsl.lib.shadow.spark-core' mergeServiceFiles() -} \ No newline at end of file +} + +if (file("local.gradle").exists()) { + apply from: "local.gradle" +} diff --git a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/Settings.java b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/Settings.java index 002744a..bb31285 100644 --- a/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/Settings.java +++ b/common/src/main/java/eu/mhsl/craftattack/spawn/common/appliances/metaGameplay/settings/Settings.java @@ -107,6 +107,9 @@ public class Settings extends Appliance { .filter(setting -> ((CategorizedSetting) setting).category().equals(category)) .toList(); + //skip empty category rows + if(categorizedSettings.isEmpty()) return; + for(int i = 0; i < categorizedSettings.size(); i++) { int slot = row.get() * 9 + i % 9; inventory.setItem(slot, categorizedSettings.get(i).buildItem()); @@ -139,17 +142,23 @@ public class Settings extends Appliance { int countOfUncategorized = (int) settings.stream() .filter(setting -> !(setting instanceof CategorizedSetting)) .count(); + int rowsOfUncategorized = (int) Math.ceil((double) countOfUncategorized / 9); - return Arrays.stream(SettingCategory.values()) + int rowsOfCategorized = Arrays.stream(SettingCategory.values()) .map(settingCategory -> settings.stream() .filter(setting -> setting instanceof CategorizedSetting) .map(setting -> (CategorizedSetting) setting) .filter(categorizedSetting -> categorizedSetting.category().equals(settingCategory)) .count()) - .map(itemCount -> itemCount + countOfUncategorized) .map(itemCount -> (int) Math.ceil((double) itemCount / 9)) .reduce(Integer::sum) .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) { diff --git a/core/src/main/java/eu/mhsl/craftattack/core/Main.java b/core/src/main/java/eu/mhsl/craftattack/core/Main.java index d2d84f0..a232c7d 100644 --- a/core/src/main/java/eu/mhsl/craftattack/core/Main.java +++ b/core/src/main/java/eu/mhsl/craftattack/core/Main.java @@ -66,8 +66,10 @@ public final class Main extends JavaPlugin { }); Main.logger().info(String.format("Initialized %d appliances!", this.appliances.size())); - Main.logger().info("Starting HTTP API..."); - new HttpServer(); + if(Configuration.pluginConfig.getBoolean("httpServerEnabled", true)) { + Main.logger().info("Starting HTTP API..."); + new HttpServer(); + } this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); Main.logger().info("Startup complete!"); diff --git a/core/src/main/resources/config.yml b/core/src/main/resources/config.yml index cb8870b..57faf93 100644 --- a/core/src/main/resources/config.yml +++ b/core/src/main/resources/config.yml @@ -1,4 +1,5 @@ plugin: + httpServerEnabled: true disabledAppliances: - NameOfApplianceClass