Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ und [The Rettington Companion](https://modrinth.com/mod/the-rettington-companion
der so viel Geld einzahlt, bis der Bankautomat voll ist
- Mit dem `/aktien` Befehl wird die Aktien-App auf dem Händy direkt geöffnet, sodass man nicht mehr manuell durch das Handy navigieren
muss
- Kisten werden automatisch aus Mülleimern eingesammelt
- Gegenstände werden automatisch aus Mülleimern eingesammelt
- Es werden bestimmte Nachrichten im Chat ausgeblendet (konfigurierbar
über [The Rettington Companion](https://modrinth.com/mod/the-rettington-companion))
- Sollte ein Spieler abwesend sein, wird bei `/id` angezeigt wie lang dieser schon abwesend ist
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ public class MiscellaneousOptions {

private boolean showHydration = true;
private AtmInformationType atmInformationType = NONE;
private boolean autoCollectChestsFromTrashCans = false;
private boolean highlightCorpses = false; // feature rejected by UnicaCity team
private boolean hideDolphins = false;
private boolean blockMalleSound = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;

import java.util.HashSet;
import java.util.Set;

import static de.rettichlp.ucutils.common.configuration.options.Options.ReinforcementType.UNICACITYADDON;
import static net.minecraft.ChatFormatting.AQUA;
import static net.minecraft.ChatFormatting.BLUE;
Expand All @@ -18,6 +21,9 @@
import static net.minecraft.client.gui.components.Tooltip.create;
import static net.minecraft.network.chat.Component.empty;
import static net.minecraft.network.chat.Component.literal;
import static net.minecraft.world.item.Items.CHEST;
import static net.minecraft.world.item.Items.ENDER_CHEST;
import static net.minecraft.world.item.Items.TRAPPED_CHEST;

@Getter
@Setter
Expand All @@ -33,6 +39,7 @@ public class Options {

private boolean checkUnicacityServer = true;
private ReinforcementType reinforcementType = UNICACITYADDON;
private Set<String> autoCollectFromTrashCan = new HashSet<>(Set.of(CHEST.toString(), TRAPPED_CHEST.toString(), ENDER_CHEST.toString()));

@Getter
@AllArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@

import de.rettichlp.ucutils.common.configuration.options.MiscellaneousOptions;
import de.rettichlp.ucutils.common.gui.screens.OptionsScreen;
import de.rettichlp.ucutils.common.gui.screens.components.CyclingButtonEntry;
import de.rettichlp.ucutils.common.gui.screens.components.ToggleButtonWidget;
import net.minecraft.client.gui.layouts.LinearLayout;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.CycleButton;
import net.minecraft.client.gui.layouts.GridLayout;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;

import static de.rettichlp.ucutils.UCUtils.commandService;
import static de.rettichlp.ucutils.UCUtils.renderService;
import static net.minecraft.client.gui.layouts.LinearLayout.horizontal;
import static net.minecraft.client.gui.layouts.LinearLayout.vertical;
import static de.rettichlp.ucutils.UCUtils.configuration;
import static net.minecraft.client.gui.components.Tooltip.create;
import static net.minecraft.network.chat.CommonComponents.NEW_LINE;
import static net.minecraft.network.chat.Component.translatable;
import static net.minecraft.util.CommonColors.RED;
Expand All @@ -36,21 +38,47 @@ public MiscellaneousOptionsScreen(Screen parent) {

@Override
public void initBody() {
LinearLayout directionalLayoutWidget = this.layout.addToContents(vertical().spacing(4));
GridLayout gridLayout = this.layout.addToContents(new GridLayout());
gridLayout.columnSpacing(8).rowSpacing(4);
GridLayout.RowHelper gridLayoutRowHelper = gridLayout.createRowHelper(2);

LinearLayout directionalLayoutWidget1 = directionalLayoutWidget.addChild(horizontal().spacing(8));
renderService.addToggleButton(directionalLayoutWidget1, HYDRATION_NAME, HYDRATION_TOOLTIP, (options, value) -> options.miscellaneous().showHydration(value), options -> options.miscellaneous().showHydration(), 150);
renderService.addCyclingButton(directionalLayoutWidget1, BANK_INFORMATION_NAME, MiscellaneousOptions.AtmInformationType.values(), MiscellaneousOptions.AtmInformationType::getDisplayName, (options, value) -> options.miscellaneous().atmInformationType(value), options -> options.miscellaneous().atmInformationType(), 150);
MiscellaneousOptions miscellaneousOptions = configuration.getOptions().miscellaneous();

LinearLayout directionalLayoutWidget2 = directionalLayoutWidget.addChild(horizontal().spacing(8));
renderService.addToggleButton(directionalLayoutWidget2, AUTO_TRASH_CAN_NAME, AUTO_TRASH_CAN_TOOLTIP, (options, value) -> options.miscellaneous().autoCollectChestsFromTrashCans(value), options -> options.miscellaneous().autoCollectChestsFromTrashCans(), 150);
ToggleButtonWidget toggleButtonWidget = renderService.addToggleButton(directionalLayoutWidget2, HIGHLIGHT_CORPSES_NAME, HIGHLIGHT_CORPSES_TOOLTIP, (options, value) -> options.miscellaneous().highlightCorpses(value), options -> options.miscellaneous().highlightCorpses(), 150);
toggleButtonWidget.active = commandService.isSuperUser();
ToggleButtonWidget toggleButton1 = new ToggleButtonWidget(HYDRATION_NAME, miscellaneousOptions::showHydration, miscellaneousOptions.showHydration());
toggleButton1.setWidth(150);
toggleButton1.setTooltip(create(HYDRATION_TOOLTIP));
gridLayoutRowHelper.addChild(toggleButton1);

LinearLayout directionalLayoutWidget3 = directionalLayoutWidget.addChild(horizontal().spacing(8));
renderService.addToggleButton(directionalLayoutWidget3, HIDE_DOLPHINS_NAME, HIDE_DOLPHINS_TOOLTIP, (options, value) -> options.miscellaneous().hideDolphins(value), options -> options.miscellaneous().hideDolphins(), 150);
renderService.addToggleButton(directionalLayoutWidget3, BLOCK_MALLE_SOUND_NAME, BLOCK_MALLE_SOUND_TOOLTIP, (options, value) -> options.miscellaneous().blockMalleSound(value), options -> options.miscellaneous().blockMalleSound(), 150);
CycleButton<MiscellaneousOptions.AtmInformationType> cycleButton1 = CycleButton.builder(MiscellaneousOptions.AtmInformationType::getDisplayName, miscellaneousOptions.atmInformationType())
.withValues(MiscellaneousOptions.AtmInformationType.values())
.withTooltip(CyclingButtonEntry::getTooltip)
.create(BANK_INFORMATION_NAME, (_, value) -> miscellaneousOptions.atmInformationType(value));
cycleButton1.setWidth(150);
gridLayoutRowHelper.addChild(cycleButton1);

directionalLayoutWidget.visitWidgets(this::addRenderableWidget);
Button button1 = Button.builder(AUTO_TRASH_CAN_NAME, _ -> this.minecraft.gui.setScreen(new TrashCanOptionsScreen(this)))
.tooltip(create(AUTO_TRASH_CAN_TOOLTIP))
.width(150)
.build();
gridLayoutRowHelper.addChild(button1);

ToggleButtonWidget toggleButton2 = new ToggleButtonWidget(HIGHLIGHT_CORPSES_NAME, miscellaneousOptions::highlightCorpses, miscellaneousOptions.highlightCorpses());
toggleButton2.setWidth(150);
toggleButton2.setTooltip(create(HIGHLIGHT_CORPSES_TOOLTIP));
toggleButton2.active = commandService.isSuperUser();
gridLayoutRowHelper.addChild(toggleButton2);

ToggleButtonWidget toggleButton3 = new ToggleButtonWidget(HIDE_DOLPHINS_NAME, miscellaneousOptions::hideDolphins, miscellaneousOptions.hideDolphins());
toggleButton3.setWidth(150);
toggleButton3.setTooltip(create(HIDE_DOLPHINS_TOOLTIP));
gridLayoutRowHelper.addChild(toggleButton3);

ToggleButtonWidget toggleButton4 = new ToggleButtonWidget(BLOCK_MALLE_SOUND_NAME, miscellaneousOptions::blockMalleSound, miscellaneousOptions.blockMalleSound());
toggleButton4.setWidth(150);
toggleButton4.setTooltip(create(BLOCK_MALLE_SOUND_TOOLTIP));
gridLayoutRowHelper.addChild(toggleButton4);

gridLayout.arrangeElements();
gridLayout.visitWidgets(this::addRenderableWidget);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

import de.rettichlp.ucutils.common.configuration.options.SoundOptions;
import de.rettichlp.ucutils.common.gui.screens.OptionsScreen;
import net.minecraft.client.gui.layouts.LinearLayout;
import de.rettichlp.ucutils.common.gui.screens.components.CyclingButtonEntry;
import de.rettichlp.ucutils.common.gui.screens.components.ToggleButtonWidget;
import net.minecraft.client.gui.components.CycleButton;
import net.minecraft.client.gui.layouts.GridLayout;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;

import static de.rettichlp.ucutils.UCUtils.renderService;
import static net.minecraft.client.gui.layouts.LinearLayout.horizontal;
import static net.minecraft.client.gui.layouts.LinearLayout.vertical;
import static de.rettichlp.ucutils.UCUtils.configuration;
import static net.minecraft.client.gui.components.Tooltip.create;
import static net.minecraft.network.chat.Component.translatable;

public class SoundOptionsScreen extends OptionsScreen {
Expand All @@ -34,24 +36,59 @@ public SoundOptionsScreen(Screen parent) {

@Override
public void initBody() {
LinearLayout directionalLayoutWidget = this.layout.addToContents(vertical().spacing(4));
GridLayout gridLayout = this.layout.addToContents(new GridLayout());
gridLayout.columnSpacing(8).rowSpacing(4);
GridLayout.RowHelper gridLayoutRowHelper = gridLayout.createRowHelper(2);

LinearLayout directionalLayoutWidget1 = directionalLayoutWidget.addChild(horizontal().spacing(8));
renderService.addCyclingButton(directionalLayoutWidget1, SOUND_BANK_ROBBERY_NAME, SoundOptions.StateSelect.values(), SoundOptions.StateSelect::getDisplayName, (options, e) -> options.sound().bankRobbery(e), options -> options.sound().bankRobbery(), 150);
renderService.addCyclingButton(directionalLayoutWidget1, SOUND_BOMB_NAME, SoundOptions.StateSelect.values(), SoundOptions.StateSelect::getDisplayName, (options, e) -> options.sound().bomb(e), options -> options.sound().bomb(), 150);
SoundOptions soundOptions = configuration.getOptions().sound();

LinearLayout directionalLayoutWidget2 = directionalLayoutWidget.addChild(horizontal().spacing(8));
renderService.addToggleButton(directionalLayoutWidget2, SOUND_CONTRACT_SET_NAME, SOUND_CONTRACT_SET_TOOLTIP, (options, value) -> options.sound().contractSet(value), options -> options.sound().contractSet(), 150);
renderService.addToggleButton(directionalLayoutWidget2, SOUND_CONTRACT_FULFILLED_NAME, SOUND_CONTRACT_FULFILLED_TOOLTIP, (options, value) -> options.sound().contractFulfilled(value), options -> options.sound().contractFulfilled(), 150);
CycleButton<SoundOptions.StateSelect> cycleButton1 = CycleButton.builder(SoundOptions.StateSelect::getDisplayName, soundOptions.bankRobbery())
.withValues(SoundOptions.StateSelect.values())
.withTooltip(CyclingButtonEntry::getTooltip)
.create(SOUND_BANK_ROBBERY_NAME, (_, value) -> soundOptions.bankRobbery(value));
cycleButton1.setWidth(150);
gridLayoutRowHelper.addChild(cycleButton1);

LinearLayout directionalLayoutWidget3 = directionalLayoutWidget.addChild(horizontal().spacing(8));
renderService.addToggleButton(directionalLayoutWidget3, SOUND_SERVICE_NAME, SOUND_SERVICE_TOOLTIP, (options, value) -> options.sound().service(value), options -> options.sound().service(), 150);
renderService.addCyclingButton(directionalLayoutWidget3, SOUND_FIRE_NAME, SoundOptions.MedicSelect.values(), SoundOptions.MedicSelect::getDisplayName, (options, e) -> options.sound().fire(e), options -> options.sound().fire(), 150);
CycleButton<SoundOptions.StateSelect> cycleButton2 = CycleButton.builder(SoundOptions.StateSelect::getDisplayName, soundOptions.bomb())
.withValues(SoundOptions.StateSelect.values())
.withTooltip(CyclingButtonEntry::getTooltip)
.create(SOUND_BOMB_NAME, (_, value) -> soundOptions.bomb(value));
cycleButton2.setWidth(150);
gridLayoutRowHelper.addChild(cycleButton2);

LinearLayout directionalLayoutWidget4 = directionalLayoutWidget.addChild(horizontal().spacing(8));
renderService.addToggleButton(directionalLayoutWidget4, SOUND_REPORT_NAME, SOUND_REPORT_TOOLTIP, (options, value) -> options.sound().report(value), options -> options.sound().report(), 150);
renderService.addToggleButton(directionalLayoutWidget4, SOUND_NOTIFICATION_NAME, SOUND_NOTIFICATION_TOOLTIP, (options, value) -> options.sound().notification(value), options -> options.sound().notification(), 150);
ToggleButtonWidget toggleButton1 = new ToggleButtonWidget(SOUND_CONTRACT_SET_NAME, soundOptions::contractSet, soundOptions.contractSet());
toggleButton1.setWidth(150);
toggleButton1.setTooltip(create(SOUND_CONTRACT_SET_TOOLTIP));
gridLayoutRowHelper.addChild(toggleButton1);

directionalLayoutWidget.visitWidgets(this::addRenderableWidget);
ToggleButtonWidget toggleButton2 = new ToggleButtonWidget(SOUND_CONTRACT_FULFILLED_NAME, soundOptions::contractFulfilled, soundOptions.contractFulfilled());
toggleButton2.setWidth(150);
toggleButton2.setTooltip(create(SOUND_CONTRACT_FULFILLED_TOOLTIP));
gridLayoutRowHelper.addChild(toggleButton2);

ToggleButtonWidget toggleButton3 = new ToggleButtonWidget(SOUND_SERVICE_NAME, soundOptions::service, soundOptions.service());
toggleButton3.setWidth(150);
toggleButton3.setTooltip(create(SOUND_SERVICE_TOOLTIP));
gridLayoutRowHelper.addChild(toggleButton3);

CycleButton<SoundOptions.MedicSelect> cycleButton3 = CycleButton.builder(SoundOptions.MedicSelect::getDisplayName, soundOptions.fire())
.withValues(SoundOptions.MedicSelect.values())
.withTooltip(CyclingButtonEntry::getTooltip)
.create(SOUND_FIRE_NAME, (_, value) -> soundOptions.fire(value));
cycleButton3.setWidth(150);
gridLayoutRowHelper.addChild(cycleButton3);

ToggleButtonWidget toggleButton4 = new ToggleButtonWidget(SOUND_REPORT_NAME, soundOptions::report, soundOptions.report());
toggleButton4.setWidth(150);
toggleButton4.setTooltip(create(SOUND_REPORT_TOOLTIP));
gridLayoutRowHelper.addChild(toggleButton4);

ToggleButtonWidget toggleButton5 = new ToggleButtonWidget(SOUND_NOTIFICATION_NAME, soundOptions::notification, soundOptions.notification());
toggleButton5.setWidth(150);
toggleButton5.setTooltip(create(SOUND_NOTIFICATION_TOOLTIP));
gridLayoutRowHelper.addChild(toggleButton5);

gridLayout.arrangeElements();
gridLayout.visitWidgets(this::addRenderableWidget);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package de.rettichlp.ucutils.common.gui.screens.options;

import de.rettichlp.ucutils.common.gui.screens.OptionsScreen;
import de.rettichlp.ucutils.common.gui.screens.components.ToggleButtonWidget;
import net.minecraft.client.gui.layouts.GridLayout;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
import org.jspecify.annotations.NonNull;

import java.util.Collection;
import java.util.Set;
import java.util.function.Consumer;

import static de.rettichlp.ucutils.UCUtils.configuration;
import static net.minecraft.network.chat.Component.translatable;
import static net.minecraft.world.item.Items.APPLE;
import static net.minecraft.world.item.Items.CARROT;
import static net.minecraft.world.item.Items.CHEST;
import static net.minecraft.world.item.Items.ENDER_CHEST;
import static net.minecraft.world.item.Items.PAPER;
import static net.minecraft.world.item.Items.POTATO;
import static net.minecraft.world.item.Items.ROTTEN_FLESH;
import static net.minecraft.world.item.Items.TRAPPED_CHEST;

public class TrashCanOptionsScreen extends OptionsScreen {

public static final Component TEXT_TRASH_CAN = translatable("ucutils.options.auto_trash_can.name");

private static final Set<String> CHEST_ITEMS = Set.of(CHEST.toString(), TRAPPED_CHEST.toString(), ENDER_CHEST.toString());

public TrashCanOptionsScreen(Screen parent) {
super(parent, TEXT_TRASH_CAN);
}

@Override
public void initBody() {
GridLayout gridLayout = this.layout.addToContents(new GridLayout());
gridLayout.columnSpacing(8).rowSpacing(4);
GridLayout.RowHelper gridLayoutRowHelper = gridLayout.createRowHelper(2);

Set<String> autoCollectFromTrashCan = configuration.getOptions().autoCollectFromTrashCan();

addToggleButton(gridLayoutRowHelper, translatable("block.minecraft.chest"), autoCollectFromTrashCan.containsAll(CHEST_ITEMS), value -> {
if (value) {
autoCollectFromTrashCan.addAll(CHEST_ITEMS);
} else {
autoCollectFromTrashCan.removeAll(CHEST_ITEMS);
}
});
addToggleButton(gridLayoutRowHelper, translatable("item.minecraft.apple"), autoCollectFromTrashCan.contains(APPLE.toString()), value -> setItemState(autoCollectFromTrashCan, APPLE.toString(), value));
addToggleButton(gridLayoutRowHelper, translatable("item.minecraft.carrot"), autoCollectFromTrashCan.contains(CARROT.toString()), value -> setItemState(autoCollectFromTrashCan, CARROT.toString(), value));
addToggleButton(gridLayoutRowHelper, translatable("item.minecraft.paper"), autoCollectFromTrashCan.contains(PAPER.toString()), value -> setItemState(autoCollectFromTrashCan, PAPER.toString(), value));
addToggleButton(gridLayoutRowHelper, translatable("item.minecraft.potato"), autoCollectFromTrashCan.contains(POTATO.toString()), value -> setItemState(autoCollectFromTrashCan, POTATO.toString(), value));
addToggleButton(gridLayoutRowHelper, translatable("item.minecraft.rotten_flesh"), autoCollectFromTrashCan.contains(ROTTEN_FLESH.toString()), value -> setItemState(autoCollectFromTrashCan, ROTTEN_FLESH.toString(), value));

gridLayout.arrangeElements();
gridLayout.visitWidgets(this::addRenderableWidget);
}

private void addToggleButton(GridLayout.@NonNull RowHelper gridLayoutRowHelper, Component name, boolean currentValue, Consumer<Boolean> setter) {
ToggleButtonWidget toggleButton = new ToggleButtonWidget(name, setter, currentValue);
toggleButton.setWidth(150);
gridLayoutRowHelper.addChild(toggleButton);
}

private void setItemState(Collection<String> autoCollectFromTrashCan, String item, boolean value) {
if (value) {
autoCollectFromTrashCan.add(item);
} else {
autoCollectFromTrashCan.remove(item);
}
}
}
Loading