Skip to content

Commit f49c778

Browse files
authored
Merge pull request #489 from UnicacityAddon/feature/command-for-mobile-stock-market
feature/command-for-mobile-stock-market
2 parents b3b0b95 + bc778fa commit f49c778

4 files changed

Lines changed: 61 additions & 2 deletions

File tree

README.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ reibungsloser und angenehmer gestalten.
2222
- Beim Beten wird nach 15 Sekunden automatisch der zweite Befehl ausgeführt
2323
- Es gibt Benachrichtigungen, wenn ein Spieler den Server betritt oder verlässt, einen Report betritt oder verlässt, den Baumodus
2424
betritt oder verlässt und den Admindienst betritt oder verlässt
25+
- Beim Anklicken eines Bankautomaten wird das verfügbare Geld (im Automaten) angezeigt
26+
- Die Hitbox eines Spielers wird in der Fraktionsfarbe des Spielers angezeigt
27+
- Der Aktienmarkt besitzt farbliche Hervorhebungen, die den Gewinn anzeigen
28+
- Die Benachrichtigung, dass man ein Levelup kaufen kann, ist weniger penetrant und in die EXP-Nachricht integriert
29+
- Sollte bei `/einzahlen` der Bankautomat nicht so viel Platz haben wie eingezahlt werden soll, wird ein zusätzlicher Button angezeigt,
30+
der so viel Geld einzahlt, bis der Bankautomat voll ist
31+
- Mit dem `/aktien` Befehl wird die Aktien-App auf dem Händy direkt geöffnet, sodass man nicht mehr manuell durch das Handy navigieren
32+
muss
2533

2634
### Auto
2735

@@ -31,6 +39,7 @@ reibungsloser und angenehmer gestalten.
3139
- Wenn man schleicht und ein Auto rechtsklickt, wird `/checkkfz` ausgeführt
3240

3341
Folgende Funktionen sind nur für Spieler ohne Premium-Rang verfügbar, da Spieler mit Premium diese Funktion vom Server aus können:
42+
3443
- Das Auf-/Abschließen eines Fahrzeuges wurde teilweise automatisiert (automatisches Klicken des Items im Inventar)
3544
- Beim Rechtsklick auf das eigene Fahrzeug wird automatisch `/car lock` ausgeführt
3645
- 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
4251
- Der Fraktionschat kann individuell eingefärbt werden
4352
- Für den Rettungsdienst gibt es im Herstellungs-Inventar für Medikamente einen Button, um die benötigte Anzahl an Stoffen in den
4453
Fraktionschat zu senden
45-
- Für den Dealer und Schwarzmarkt wird (in der Übersicht) angezeigt, an welchem Ort der Händler gefunden wurde
54+
- Für den Bluthändler, Dealer und Schwarzmarkt wird eine Nachricht angezeigt, wenn sich dieser in unmittelbarer Nähe befindet
55+
- Für den Bluthändler, Dealer und Schwarzmarkt wird (in der Übersicht) angezeigt, an welchem Ort er gefunden wurde
4656

4757
### Jobs
4858

@@ -58,10 +68,10 @@ Folgende Funktionen sind nur für Spieler ohne Premium-Rang verfügbar, da Spiel
5868

5969
### Widgets
6070

61-
- Aktuelles Datum und Uhrzeit
6271
- Informationen über den PayDay (Dauer bis zum nächsten PayDay, Gehalt und Erfahrung) einschließlich Reichensteuer-Warnung
6372
- Status des Autos (offen/abgeschlossen)
6473
- Geld auf der Hand und auf der Bank
74+
- Offene Notrufe
6575

6676
## Befehle
6777

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package de.rettichlp.ucutils.command;
2+
3+
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
4+
import de.rettichlp.ucutils.common.registry.CommandBase;
5+
import de.rettichlp.ucutils.common.registry.UCUtilsCommand;
6+
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
7+
import org.jetbrains.annotations.NotNull;
8+
9+
import static de.rettichlp.ucutils.UCUtils.commandService;
10+
import static de.rettichlp.ucutils.UCUtils.storage;
11+
12+
@UCUtilsCommand(label = "aktien")
13+
public class StockMarketCommand extends CommandBase {
14+
15+
@Override
16+
public LiteralArgumentBuilder<FabricClientCommandSource> execute(@NotNull LiteralArgumentBuilder<FabricClientCommandSource> node) {
17+
return node
18+
.executes(_ -> {
19+
storage.setStockMarketCommandRunning(true);
20+
commandService.sendCommand("mobile");
21+
return 1;
22+
});
23+
}
24+
}

src/main/java/de/rettichlp/ucutils/common/Storage.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ public class Storage {
107107
@Setter
108108
private boolean premium = false;
109109

110+
@Getter
111+
@Setter
112+
private boolean stockMarketCommandRunning = false;
113+
110114
@Getter
111115
@Setter
112116
@Nullable
@@ -163,6 +167,8 @@ public void print() {
163167
LOGGER.info("minecartEntityToHighlight: {}", this.minecartEntityToHighlight);
164168
// premium
165169
LOGGER.info("premium: {}", this.premium);
170+
// stockMarketCommandRunning
171+
LOGGER.info("stockMarketCommandRunning: {}", this.stockMarketCommandRunning);
166172
// summerTreasurePosition
167173
LOGGER.info("summerTreasurePosition: {}", this.summerTreasurePosition);
168174
// team

src/main/java/de/rettichlp/ucutils/mixin/AbstractContainerScreenMixin.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,20 @@ protected AbstractContainerScreenMixin(Component title) {
9292
}
9393
}
9494
case "ᴀᴋᴛɪᴇɴᴍᴀʀᴋᴛ", "Handy-Aktien" -> {
95+
storage.setStockMarketCommandRunning(false);
9596
extractStockMarketHighlight(graphics, mouseX, mouseY, a);
9697
extractStockMarketLegend(graphics, mouseX, mouseY, a);
9798
}
99+
case "Telefon" -> {
100+
if (storage.isStockMarketCommandRunning()) {
101+
clickOnItemWithName("Apps", gameMode);
102+
}
103+
}
104+
case "App-Menü" -> {
105+
if (storage.isStockMarketCommandRunning()) {
106+
clickOnItemWithName("Aktien", gameMode);
107+
}
108+
}
98109
default -> {
99110
if (commandService.isSuperUser()) {
100111
LOGGER.info("Screen opened: {}", title);
@@ -207,6 +218,14 @@ private int getStoredAmount(@NonNull MenuAccess<T> containerScreen, int slotId)
207218
return matcher.find() ? parseInt(matcher.group()) : 0;
208219
}
209220

221+
@Unique
222+
private void clickOnItemWithName(String itemName, MultiPlayerGameMode gameMode) {
223+
getMenu().slots.stream()
224+
.filter(slot -> slot.getItem().getHoverName().getString().equals(itemName))
225+
.findFirst()
226+
.ifPresent(slot -> gameMode.handleContainerInput(getMenu().containerId, slot.index, 0, PICKUP, player));
227+
}
228+
210229
private static class CompanyShareTooltipPositioner implements ClientTooltipPositioner {
211230

212231
@Override

0 commit comments

Comments
 (0)