diff --git a/README.md b/README.md index 36f46526..a6ca221e 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,7 @@ und [The Rettington Companion](https://modrinth.com/mod/the-rettington-companion mit ✨ markiert) - Leichen werden leuchtend hervorgehoben, wenn man sich in der Nähe befindet (aktuell deaktiviert, da es gegen Server-Richtlinien verstößt) +- Es gibt eine Option, die für Polizei, FBI und Rettungsdienst die Sirene aktiviert, sobald man den Dienst betritt ### Jobs diff --git a/src/main/java/de/rettichlp/ucutils/common/configuration/options/MiscellaneousOptions.java b/src/main/java/de/rettichlp/ucutils/common/configuration/options/MiscellaneousOptions.java index 6abc14fd..f443d65e 100644 --- a/src/main/java/de/rettichlp/ucutils/common/configuration/options/MiscellaneousOptions.java +++ b/src/main/java/de/rettichlp/ucutils/common/configuration/options/MiscellaneousOptions.java @@ -24,6 +24,7 @@ public class MiscellaneousOptions { private boolean highlightCorpses = false; // feature rejected by UnicaCity team private boolean hideDolphins = false; private boolean blockMalleSound = false; + private boolean autoSiren = true; @Getter @AllArgsConstructor diff --git a/src/main/java/de/rettichlp/ucutils/common/gui/screens/options/MiscellaneousOptionsScreen.java b/src/main/java/de/rettichlp/ucutils/common/gui/screens/options/MiscellaneousOptionsScreen.java index c2042da8..94832015 100644 --- a/src/main/java/de/rettichlp/ucutils/common/gui/screens/options/MiscellaneousOptionsScreen.java +++ b/src/main/java/de/rettichlp/ucutils/common/gui/screens/options/MiscellaneousOptionsScreen.java @@ -31,6 +31,8 @@ public class MiscellaneousOptionsScreen extends OptionsScreen { private static final Component HIDE_DOLPHINS_TOOLTIP = translatable("ucutils.options.hide_dolphins.tooltip"); private static final Component BLOCK_MALLE_SOUND_NAME = translatable("ucutils.options.block_malle_sound.name"); private static final Component BLOCK_MALLE_SOUND_TOOLTIP = translatable("ucutils.options.block_malle_sound.tooltip"); + private static final Component AUTO_SIREN_NAME = translatable("ucutils.options.auto_siren.name"); + private static final Component AUTO_SIREN_TOOLTIP = translatable("ucutils.options.auto_siren.tooltip"); public MiscellaneousOptionsScreen(Screen parent) { super(parent, TEXT_MISCELLANEOUS); @@ -78,6 +80,11 @@ public void initBody() { toggleButton4.setTooltip(create(BLOCK_MALLE_SOUND_TOOLTIP)); gridLayoutRowHelper.addChild(toggleButton4); + ToggleButtonWidget toggleButton5 = new ToggleButtonWidget(AUTO_SIREN_NAME, miscellaneousOptions::autoSiren, miscellaneousOptions.autoSiren()); + toggleButton5.setWidth(150); + toggleButton5.setTooltip(create(AUTO_SIREN_TOOLTIP)); + gridLayoutRowHelper.addChild(toggleButton5); + gridLayout.arrangeElements(); gridLayout.visitWidgets(this::addRenderableWidget); } diff --git a/src/main/java/de/rettichlp/ucutils/listener/impl/faction/FactionListener.java b/src/main/java/de/rettichlp/ucutils/listener/impl/faction/FactionListener.java index de707ab9..10dd2c5f 100644 --- a/src/main/java/de/rettichlp/ucutils/listener/impl/faction/FactionListener.java +++ b/src/main/java/de/rettichlp/ucutils/listener/impl/faction/FactionListener.java @@ -42,6 +42,8 @@ @UCUtilsListener public class FactionListener implements IMessageReceiveListener, IMessageSendListener { + private static final Pattern DUTY_PATTERN = compile("^(Du bist nun als Arzt im Dienst!|Du hast den Dienst wieder angetreten\\.)$"); + private static final Pattern REINFORCEMENT_PATTERN = compile("^(?:(?.+)! )?(?.+) (?:\\[UC])?(?[a-zA-Z0-9_]+) benötigt Unterstützung in der Nähe von (?.+)! \\((?\\d+) Meter entfernt\\)$"); private static final Pattern REINFORCEMENT_BUTTON_PATTERN = compile("^§7» §c§lRoute anzeigen §8\\| §c§lUnterwegs$"); private static final Pattern REINFORCMENT_ON_THE_WAY_PATTERN = compile("^(?.+) (?:\\[UC])?(?[a-zA-Z0-9_]+) kommt zum Verstärkungsruf von (?:\\[UC])?(?[a-zA-Z0-9_]+)! \\((?\\d+) Meter entfernt\\)$"); @@ -69,6 +71,14 @@ public class FactionListener implements IMessageReceiveListener, IMessageSendLis @Override public boolean onMessageReceive(Component text, String message) { + Matcher dutyMatcher = DUTY_PATTERN.matcher(message); + if (dutyMatcher.find()) { + if (configuration.getOptions().miscellaneous().autoSiren()) { + commandService.sendCommand("sirene"); + } + return true; + } + Matcher reinforcementMatcher = REINFORCEMENT_PATTERN.matcher(message); if (reinforcementMatcher.find()) { String type = ofNullable(reinforcementMatcher.group("type")).orElse("Reinforcement"); diff --git a/src/main/resources/assets/ucutils/lang/de_de.json b/src/main/resources/assets/ucutils/lang/de_de.json index 3e84cf0a..a7dfb3fb 100644 --- a/src/main/resources/assets/ucutils/lang/de_de.json +++ b/src/main/resources/assets/ucutils/lang/de_de.json @@ -98,6 +98,8 @@ "ucutils.options.hide_dolphins.tooltip": "Verhindert das Spawnen von Delfinen während des öffnens einer Schatzkiste", "ucutils.options.block_malle_sound.name": "Malle-Sound blockieren", "ucutils.options.block_malle_sound.tooltip": "Verhindert das Abspielen des \"Malle, I love you\"-Sounds", + "ucutils.options.auto_siren.name": "Automatische Sirene", + "ucutils.options.auto_siren.tooltip": "Aktiviert automatisch die Sirene, wenn du in den Dienst gehst", "ucutils.options.check_unicacity_server.name": "UnicaCity Check", "ucutils.options.check_unicacity_server.tooltip": "Überprüft ob du auf UnicaCity spielst. Wenn aktiviert sind bestimmte Funktionen nur auf UnicaCity aktiviert um Probleme mit anderen Servern zu vermeiden.", "ucutils.options.faction_chat_color.name": "Farbe des Fraktionschats", diff --git a/src/main/resources/assets/ucutils/lang/en_gb.json b/src/main/resources/assets/ucutils/lang/en_gb.json index 25a9e8a6..8426d4de 100644 --- a/src/main/resources/assets/ucutils/lang/en_gb.json +++ b/src/main/resources/assets/ucutils/lang/en_gb.json @@ -98,6 +98,8 @@ "ucutils.options.hide_dolphins.tooltip": "Prevents dolphins from spawning while opening a treasure chest", "ucutils.options.block_malle_sound.name": "Block Malle sound", "ucutils.options.block_malle_sound.tooltip": "Prevents the \"Malle, I love you\" sound from playing", + "ucutils.options.auto_siren.name": "Auto siren", + "ucutils.options.auto_siren.tooltip": "Automatically activates the siren when you go on duty", "ucutils.options.check_unicacity_server.name": "Check for UnicaCity", "ucutils.options.check_unicacity_server.tooltip": "Checks if you are playing on the UnicaCity server. If enabled, certain features will only be available on the UnicaCity server to prevent issues on other servers.", "ucutils.options.faction_chat_color.name": "Faction chat color", diff --git a/src/main/resources/assets/ucutils/lang/en_us.json b/src/main/resources/assets/ucutils/lang/en_us.json index 15c13421..4a1ba921 100644 --- a/src/main/resources/assets/ucutils/lang/en_us.json +++ b/src/main/resources/assets/ucutils/lang/en_us.json @@ -98,6 +98,8 @@ "ucutils.options.hide_dolphins.tooltip": "Prevents dolphins from spawning while opening a treasure chest", "ucutils.options.block_malle_sound.name": "Block Malle sound", "ucutils.options.block_malle_sound.tooltip": "Prevents the \"Malle, I love you\" sound from playing", + "ucutils.options.auto_siren.name": "Auto siren", + "ucutils.options.auto_siren.tooltip": "Automatically activates the siren when you go on duty", "ucutils.options.check_unicacity_server.name": "Check for UnicaCity", "ucutils.options.check_unicacity_server.tooltip": "Checks if you are playing on the UnicaCity server. If enabled, certain features will only be available on the UnicaCity server to prevent issues on other servers.", "ucutils.options.faction_chat_color.name": "Faction chat color",