Skip to content

Commit

Permalink
Fix empty categories being checked (SkyblockerMod#851)
Browse files Browse the repository at this point in the history
kevinthegreat1 authored Jul 26, 2024
1 parent 8288c1b commit 7704d0d
Showing 1 changed file with 6 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -85,7 +85,7 @@ void updateEntries() {

void updateButtons() {
for (Entry<AbstractWaypointEntry> entry : children()) {
if (entry instanceof WaypointCategoryEntry categoryEntry && categoryEntry.enabled.isChecked() != categoryEntry.category.waypoints().stream().allMatch(screen::isEnabled)) {
if (entry instanceof WaypointCategoryEntry categoryEntry && categoryEntry.enabled.isChecked() != categoryEntry.shouldBeChecked()) {
((CheckboxWidgetAccessor) categoryEntry.enabled).setChecked(!categoryEntry.enabled.isChecked());
} else if (entry instanceof WaypointEntry waypointEntry && waypointEntry.enabled.isChecked() != screen.isEnabled(waypointEntry.waypoint)) {
waypointEntry.enabled.onPress();
@@ -114,7 +114,7 @@ public WaypointCategoryEntry() {

public WaypointCategoryEntry(WaypointCategory category) {
this.category = category;
enabled = CheckboxWidget.builder(Text.literal(""), client.textRenderer).checked(!category.waypoints().isEmpty() && category.waypoints().stream().allMatch(screen::isEnabled)).callback((checkbox, checked) -> category.waypoints().forEach(waypoint -> screen.enabledChanged(waypoint, checked))).build();
enabled = CheckboxWidget.builder(Text.literal(""), client.textRenderer).checked(shouldBeChecked()).callback((checkbox, checked) -> category.waypoints().forEach(waypoint -> screen.enabledChanged(waypoint, checked))).build();
nameField = new TextFieldWidget(client.textRenderer, 70, 20, Text.literal("Name"));
nameField.setText(category.name());
nameField.setChangedListener(this::updateName);
@@ -153,6 +153,10 @@ public List<? extends Element> children() {
return children;
}

private boolean shouldBeChecked() {
return !category.waypoints().isEmpty() && category.waypoints().stream().allMatch(screen::isEnabled);
}

private void updateName(String name) {
int index = waypoints.indexOf(category);
category = category.withName(name);

0 comments on commit 7704d0d

Please sign in to comment.