diff --git a/README.md b/README.md index b6d26a35..5ae4f5b5 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,14 @@ 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 +- 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 @@ -31,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 @@ -42,7 +51,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 +68,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 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