From ecc912a523abb15ae48848bebd6dbc0ec9edc6f7 Mon Sep 17 00:00:00 2001 From: RettichLP Date: Tue, 14 Jul 2026 15:24:26 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Add=20`StockMarketCommand`=20and=20implemen?= =?UTF-8?q?t=20handling=20for=20"App-Men=C3=BC"=20and=20"Telefon"=20intera?= =?UTF-8?q?ctions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ucutils/command/StockMarketCommand.java | 24 +++++++++++++++++++ .../de/rettichlp/ucutils/common/Storage.java | 6 +++++ .../mixin/AbstractContainerScreenMixin.java | 19 +++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/main/java/de/rettichlp/ucutils/command/StockMarketCommand.java diff --git a/src/main/java/de/rettichlp/ucutils/command/StockMarketCommand.java b/src/main/java/de/rettichlp/ucutils/command/StockMarketCommand.java new file mode 100644 index 00000000..8999900d --- /dev/null +++ b/src/main/java/de/rettichlp/ucutils/command/StockMarketCommand.java @@ -0,0 +1,24 @@ +package de.rettichlp.ucutils.command; + +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import de.rettichlp.ucutils.common.registry.CommandBase; +import de.rettichlp.ucutils.common.registry.UCUtilsCommand; +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; +import org.jetbrains.annotations.NotNull; + +import static de.rettichlp.ucutils.UCUtils.commandService; +import static de.rettichlp.ucutils.UCUtils.storage; + +@UCUtilsCommand(label = "aktien") +public class StockMarketCommand extends CommandBase { + + @Override + public LiteralArgumentBuilder execute(@NotNull LiteralArgumentBuilder node) { + return node + .executes(_ -> { + storage.setStockMarketCommandRunning(true); + commandService.sendCommand("mobile"); + return 1; + }); + } +} diff --git a/src/main/java/de/rettichlp/ucutils/common/Storage.java b/src/main/java/de/rettichlp/ucutils/common/Storage.java index 2fe5d298..603972f3 100644 --- a/src/main/java/de/rettichlp/ucutils/common/Storage.java +++ b/src/main/java/de/rettichlp/ucutils/common/Storage.java @@ -107,6 +107,10 @@ public class Storage { @Setter private boolean premium = false; + @Getter + @Setter + private boolean stockMarketCommandRunning = false; + @Getter @Setter @Nullable @@ -163,6 +167,8 @@ public void print() { LOGGER.info("minecartEntityToHighlight: {}", this.minecartEntityToHighlight); // premium LOGGER.info("premium: {}", this.premium); + // stockMarketCommandRunning + LOGGER.info("stockMarketCommandRunning: {}", this.stockMarketCommandRunning); // summerTreasurePosition LOGGER.info("summerTreasurePosition: {}", this.summerTreasurePosition); // team diff --git a/src/main/java/de/rettichlp/ucutils/mixin/AbstractContainerScreenMixin.java b/src/main/java/de/rettichlp/ucutils/mixin/AbstractContainerScreenMixin.java index a8335575..c13c3249 100644 --- a/src/main/java/de/rettichlp/ucutils/mixin/AbstractContainerScreenMixin.java +++ b/src/main/java/de/rettichlp/ucutils/mixin/AbstractContainerScreenMixin.java @@ -92,9 +92,20 @@ protected AbstractContainerScreenMixin(Component title) { } } case "ᴀᴋᴛɪᴇɴᴍᴀʀᴋᴛ", "Handy-Aktien" -> { + storage.setStockMarketCommandRunning(false); extractStockMarketHighlight(graphics, mouseX, mouseY, a); extractStockMarketLegend(graphics, mouseX, mouseY, a); } + case "Telefon" -> { + if (storage.isStockMarketCommandRunning()) { + clickOnItemWithName("Apps", gameMode); + } + } + case "App-Menü" -> { + if (storage.isStockMarketCommandRunning()) { + clickOnItemWithName("Aktien", gameMode); + } + } default -> { if (commandService.isSuperUser()) { LOGGER.info("Screen opened: {}", title); @@ -207,6 +218,14 @@ private int getStoredAmount(@NonNull MenuAccess containerScreen, int slotId) return matcher.find() ? parseInt(matcher.group()) : 0; } + @Unique + private void clickOnItemWithName(String itemName, MultiPlayerGameMode gameMode) { + getMenu().slots.stream() + .filter(slot -> slot.getItem().getHoverName().getString().equals(itemName)) + .findFirst() + .ifPresent(slot -> gameMode.handleContainerInput(getMenu().containerId, slot.index, 0, PICKUP, player)); + } + private static class CompanyShareTooltipPositioner implements ClientTooltipPositioner { @Override From 20b0480b7f65b9591f799cae92dfe4a1a15ad5e1 Mon Sep 17 00:00:00 2001 From: RettichLP Date: Tue, 14 Jul 2026 15:35:44 +0200 Subject: [PATCH 2/3] Pathfinding: Add missing entries to README.md --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b6d26a35..bcb46529 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,11 @@ reibungsloser und angenehmer gestalten. - Beim Beten wird nach 15 Sekunden automatisch der zweite Befehl ausgeführt - Es gibt Benachrichtigungen, wenn ein Spieler den Server betritt oder verlässt, einen Report betritt oder verlässt, den Baumodus betritt oder verlässt und den Admindienst betritt oder verlässt +- Beim Anklicken eines Bankautomaten wird das verfügbare Geld (im Automaten) angezeigt +- Die Hitbox eines Spielers wird in der Fraktionsfarbe des Spielers angezeigt +- Der Aktienmarkt besitzt farbliche Hervorhebungen, die den Gewinn anzeigen +- Die Benachrichtigung, dass man ein Levelup kaufen kann, ist weniger penetrant und in die EXP-Nachricht integriert +- Sollte bei `/einzahlen` der Bankautomat nicht so viel Platz haben wie eingezahlt werden soll, wird ein zusätzlicher Button angezeigt, der so viel Geld einzahlt, bis der Bankautomat voll ist ### Auto @@ -42,7 +47,8 @@ Folgende Funktionen sind nur für Spieler ohne Premium-Rang verfügbar, da Spiel - Der Fraktionschat kann individuell eingefärbt werden - Für den Rettungsdienst gibt es im Herstellungs-Inventar für Medikamente einen Button, um die benötigte Anzahl an Stoffen in den Fraktionschat zu senden -- Für den Dealer und Schwarzmarkt wird (in der Übersicht) angezeigt, an welchem Ort der Händler gefunden wurde +- Für den Bluthändler, Dealer und Schwarzmarkt wird eine Nachricht angezeigt, wenn sich dieser in unmittelbarer Nähe befindet +- Für den Bluthändler, Dealer und Schwarzmarkt wird (in der Übersicht) angezeigt, an welchem Ort er gefunden wurde ### Jobs @@ -58,10 +64,10 @@ Folgende Funktionen sind nur für Spieler ohne Premium-Rang verfügbar, da Spiel ### Widgets -- Aktuelles Datum und Uhrzeit - Informationen über den PayDay (Dauer bis zum nächsten PayDay, Gehalt und Erfahrung) einschließlich Reichensteuer-Warnung - Status des Autos (offen/abgeschlossen) - Geld auf der Hand und auf der Bank +- Offene Notrufe ## Befehle From bc778fad3c6f6cf5750430cf67307d11da60e114 Mon Sep 17 00:00:00 2001 From: RettichLP Date: Tue, 14 Jul 2026 15:39:19 +0200 Subject: [PATCH 3/3] Add note about `/aktien` command functionality to README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bcb46529..5ae4f5b5 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,10 @@ reibungsloser und angenehmer gestalten. - Die Hitbox eines Spielers wird in der Fraktionsfarbe des Spielers angezeigt - Der Aktienmarkt besitzt farbliche Hervorhebungen, die den Gewinn anzeigen - Die Benachrichtigung, dass man ein Levelup kaufen kann, ist weniger penetrant und in die EXP-Nachricht integriert -- Sollte bei `/einzahlen` der Bankautomat nicht so viel Platz haben wie eingezahlt werden soll, wird ein zusätzlicher Button angezeigt, der so viel Geld einzahlt, bis der Bankautomat voll ist +- Sollte bei `/einzahlen` der Bankautomat nicht so viel Platz haben wie eingezahlt werden soll, wird ein zusätzlicher Button angezeigt, + 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 ### Auto @@ -36,6 +39,7 @@ reibungsloser und angenehmer gestalten. - Wenn man schleicht und ein Auto rechtsklickt, wird `/checkkfz` ausgeführt Folgende Funktionen sind nur für Spieler ohne Premium-Rang verfügbar, da Spieler mit Premium diese Funktion vom Server aus können: + - Das Auf-/Abschließen eines Fahrzeuges wurde teilweise automatisiert (automatisches Klicken des Items im Inventar) - Beim Rechtsklick auf das eigene Fahrzeug wird automatisch `/car lock` ausgeführt - Steigt man in ein Fahrzeug ein, wird dieses automatisch gestartet und abgeschlossen