fixed error when opening settings and not all setting categories were used
This commit is contained in:
parent
90b623ea07
commit
a3729734cb
@ -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) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user